Files
lunar-tear/server/cmd/auth-server/main.go
T
AnyUnion 5645740099
Build and Push Docker images to Docker Hub / build-and-push (push) Has been cancelled
Add --no-register flag and register-account CLI
Author: https://github.com/REUSS-dev
2026-05-04 17:14:27 +03:00

57 lines
1.5 KiB
Go

package main
import (
"crypto/rand"
"database/sql"
"encoding/hex"
"flag"
"log"
"net/http"
"lunar-tear/server/internal/auth"
_ "modernc.org/sqlite"
)
func main() {
listen := flag.String("listen", "0.0.0.0:3000", "HTTP listen address (host:port)")
dbPath := flag.String("db", "db/auth.db", "SQLite database path for auth users")
secret := flag.String("secret", "", "HMAC secret for tokens (auto-generated if empty)")
noRegister := flag.Bool("no-register", false, "Disallow new account registrations for clients, when present. Default = false")
flag.Parse()
hmacSecret := []byte(*secret)
if len(hmacSecret) == 0 {
hmacSecret = make([]byte, 32)
if _, err := rand.Read(hmacSecret); err != nil {
log.Fatalf("generate secret: %v", err)
}
log.Printf("generated HMAC secret: %s", hex.EncodeToString(hmacSecret))
log.Printf("pass --secret=%s to reuse across restarts", hex.EncodeToString(hmacSecret))
}
db, err := sql.Open("sqlite", *dbPath)
if err != nil {
log.Fatalf("open database: %v", err)
}
defer db.Close()
store, err := auth.NewAuthStore(db)
if err != nil {
log.Fatalf("init auth store: %v", err)
}
tok := auth.NewTokenService(hmacSecret)
h := NewHandlers(store, tok, *noRegister)
mux := http.NewServeMux()
mux.HandleFunc("/", h.HandleOAuth)
mux.HandleFunc("/me", h.HandleMe)
mux.HandleFunc("/check-username", h.HandleCheckUsername)
log.Printf("auth server listening on %s", *listen)
if err := http.ListenAndServe(*listen, mux); err != nil {
log.Fatalf("listen: %v", err)
}
}