package main import ( "log" "net/http" "git.misaka.ren/M1saka/zhanlu_proxy/internal/config" "git.misaka.ren/M1saka/zhanlu_proxy/internal/server" "git.misaka.ren/M1saka/zhanlu_proxy/internal/store" ) func main() { cfg, err := config.Load() if err != nil { log.Fatal(err) } st, err := store.Open(cfg.DBPath) if err != nil { log.Fatalf("open store: %v", err) } defer st.Close() // Credential precedence at startup: environment variables > db row. if cfg.Credentials.Validate() != nil && !cfg.Credentials.HasAPIKey() { if dbCreds, derr := st.LoadCredentials(); derr == nil && (dbCreds.HasAPIKey() || dbCreds.Validate() == nil) { cfg.Credentials = dbCreds } } h := server.New(cfg, st) log.Printf("zhanlu proxy listening on %s", cfg.ListenAddr) log.Printf("login page: http://127.0.0.1%s/login", cfg.ListenAddr) if err := http.ListenAndServe(cfg.ListenAddr, h); err != nil { log.Fatal(err) } }