package main import ( "flag" "github.com/gobuffalo/packr" "io" "log" "net/http" "os" "os/signal" "time" ) func main() { Logger = log.New(io.Writer(os.Stdout), "", log.Lshortfile|log.LstdFlags) var port string var address string flag.StringVar(&port, "port", "443", "serve port") flag.StringVar(&address, "listen", "", "listen address") flag.StringVar(&configPath, "config", "config.conf", "config path") flag.Parse() parsecService = new(ParsecService) ReadConfig() c := make(chan os.Signal) signal.Notify(c, os.Interrupt, os.Kill) go func() { <-c //阻塞直至有信号传入 Logger.Println("Saving config") SaveConfig() Logger.Println("Save config done,exit now.") os.Exit(0) }() go func() { ticker := time.NewTicker(time.Minute) for range ticker.C { <-ticker.C SaveConfig() Logger.Println("Saving config") ticker.Reset(time.Minute) } }() http.HandleFunc("/v1/auth", authHandler) http.HandleFunc("/v2/auth", authHandler) http.HandleFunc("/me", meHandler) http.HandleFunc("/friend-requests", friendHandler) http.HandleFunc("/v2/hosts", hostsHandler) http.HandleFunc("/exit-codes", exitHandler) http.HandleFunc("/metrics", metricsHandler) http.HandleFunc("/events", eventsHandler) http.HandleFunc("/", serviceHandler) http.HandleFunc("/admin/config", configHandler) http.HandleFunc("/admin/external", externalHandler) http.HandleFunc("/admin/addUser", addUserHandler) http.HandleFunc("/admin/editUser", editUserHandler) http.HandleFunc("/admin/removeUser", removeUserHandler) http.HandleFunc("/admin/public", publicHandler) http.HandleFunc("/admin/assign", assignHandler) http.HandleFunc("/admin/trim", trimHandler) box := packr.NewBox("web") http.Handle("/data/", http.FileServer(box)) err := http.ListenAndServeTLS(address+":"+port, "cert.crt", "private.key", nil) //err := http.ListenAndServe(":"+port, nil) if err != nil { Logger.Println(err) } }