func main() { flag.Parse() common.LoadTemplates() if *accessLogPath != "" { var err error accessLog, err = os.OpenFile(*accessLogPath, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0644) if err != nil { log.Fatal(err) } } fmt.Println("Debian Code Search webapp") health.StartChecking() http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { // Check if a static file was requested with full name name := filepath.Join(*staticPath, r.URL.Path) if _, err := os.Stat(name); err == nil { http.ServeFile(w, r, name) return } // Or maybe /faq, which resolves to /faq.html name = name + ".html" if _, err := os.Stat(name); err == nil { http.ServeFile(w, r, name) return } http.ServeFile(w, r, filepath.Join(*staticPath, "index.html")) }) http.HandleFunc("/favicon.ico", http.NotFound) http.HandleFunc("/goroutinez", goroutinez.Goroutinez) http.HandleFunc("/search", Search) http.HandleFunc("/show", show.Show) http.HandleFunc("/memprof", func(w http.ResponseWriter, r *http.Request) { fmt.Println("writing memprof") if *memprofile != "" { f, err := os.Create(*memprofile) if err != nil { log.Fatal(err) } pprof.WriteHeapProfile(f) f.Close() return } }) http.HandleFunc("/results/", ResultsHandler) http.HandleFunc("/perpackage-results/", PerPackageResultsHandler) http.HandleFunc("/queryz", QueryzHandler) http.Handle("/instantws", websocket.Handler(InstantServer)) http.Handle("/metrics", prometheus.Handler()) log.Fatal(http.ListenAndServe(*listenAddress, nil)) }
func main() { flag.Parse() common.LoadTemplates() fmt.Println("Debian Code Search webapp") search.OpenTimingFiles() health.StartChecking() http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { // Check if a static file was requested with full name name := filepath.Join(*staticPath, r.URL.Path) if _, err := os.Stat(name); err == nil { http.ServeFile(w, r, name) return } // Or maybe /faq, which resolves to /faq.html name = name + ".html" if _, err := os.Stat(name); err == nil { http.ServeFile(w, r, name) return } index.Index(w, r) }) http.HandleFunc("/favicon.ico", http.NotFound) http.HandleFunc("/varz", varz.Varz) http.HandleFunc("/goroutinez", goroutinez.Goroutinez) http.HandleFunc("/search", search.Search) http.HandleFunc("/show", show.Show) http.HandleFunc("/memprof", func(w http.ResponseWriter, r *http.Request) { fmt.Println("writing memprof") if *memprofile != "" { f, err := os.Create(*memprofile) if err != nil { log.Fatal(err) } pprof.WriteHeapProfile(f) f.Close() return } }) log.Fatal(http.ListenAndServe(*listenAddress, nil)) }
func main() { flag.Parse() common.Init(*tlsCertPath, *tlsKeyPath, *staticPath) if *accessLogPath != "" { var err error accessLog, err = os.OpenFile(*accessLogPath, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0644) if err != nil { log.Fatal(err) } } if *clickLogPath != "" { var err error clickLog, err = os.OpenFile(*clickLogPath, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0644) if err != nil { log.Fatal(err) } } fmt.Println("Debian Code Search webapp") health.StartChecking() http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { // Check if a static file was requested with full name name := filepath.Join(*staticPath, r.URL.Path) if r.URL.Path == "/" { name = filepath.Join(*staticPath, "index.html") } if _, err := os.Stat(name); err == nil { http.ServeFile(w, r, name) return } // Or maybe /faq, which resolves to /faq.html name = name + ".html" if _, err := os.Stat(name); err == nil { http.ServeFile(w, r, name) return } if err := common.Templates.ExecuteTemplate(w, "index.html", map[string]interface{}{ "criticalcss": common.CriticalCss, "version": common.Version, }); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } }) http.HandleFunc("/favicon.ico", http.NotFound) http.HandleFunc("/goroutinez", goroutinez.Goroutinez) http.HandleFunc("/search", Search) http.HandleFunc("/show", show.Show) http.HandleFunc("/memprof", func(w http.ResponseWriter, r *http.Request) { fmt.Println("writing memprof") if *memprofile != "" { f, err := os.Create(*memprofile) if err != nil { log.Fatal(err) } pprof.WriteHeapProfile(f) f.Close() return } }) http.HandleFunc("/results/", ResultsHandler) http.HandleFunc("/perpackage-results/", PerPackageResultsHandler) http.HandleFunc("/queryz", QueryzHandler) http.HandleFunc("/track", Track) http.HandleFunc("/events/", EventsHandler) // Used by the service worker. http.HandleFunc("/placeholder.html", func(w http.ResponseWriter, r *http.Request) { if err := common.Templates.ExecuteTemplate(w, "placeholder.html", map[string]interface{}{ "criticalcss": common.CriticalCss, "version": common.Version, "q": "%q%", "q_escaped": "%q_escaped%", }); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } }) http.Handle("/instantws", websocket.Handler(InstantServer)) http.Handle("/metrics", prometheus.Handler()) if *listenAddressTLS != "" { go log.Fatal(http.ListenAndServeTLS(*listenAddressTLS, *tlsCertPath, *tlsKeyPath, nil)) } log.Fatal(http.ListenAndServe(*listenAddress, nil)) }