parsec/parsec.go
2023-06-02 15:41:51 +08:00

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)
}
}