75 lines
1.9 KiB
Go
75 lines
1.9 KiB
Go
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)
|
|
}
|
|
}
|