Add authentication server, dev CLI, Docker multi-service setup, and cross-platform improvements

This commit is contained in:
Ilya Groshev
2026-04-21 16:49:44 +03:00
parent 43d6527b42
commit a3fbb1aeba
121 changed files with 4523 additions and 2888 deletions
+53
View File
@@ -0,0 +1,53 @@
package main
import (
"crypto/rand"
"database/sql"
"encoding/hex"
"flag"
"log"
"net/http"
_ "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)")
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 := NewAuthStore(db)
if err != nil {
log.Fatalf("init auth store: %v", err)
}
tok := NewTokenService(hmacSecret)
h := NewHandlers(store, tok)
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)
}
}