mirror of Walter-Sparrow / lunar-tear
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 56 lines 1.5 kB view raw
1package main 2 3import ( 4 "crypto/rand" 5 "database/sql" 6 "encoding/hex" 7 "flag" 8 "log" 9 "net/http" 10 11 "lunar-tear/server/internal/auth" 12 13 _ "modernc.org/sqlite" 14) 15 16func main() { 17 listen := flag.String("listen", "0.0.0.0:3000", "HTTP listen address (host:port)") 18 dbPath := flag.String("db", "db/auth.db", "SQLite database path for auth users") 19 secret := flag.String("secret", "", "HMAC secret for tokens (auto-generated if empty)") 20 noRegister := flag.Bool("no-register", false, "Disallow new account registrations for clients, when present. Default = false") 21 flag.Parse() 22 23 hmacSecret := []byte(*secret) 24 if len(hmacSecret) == 0 { 25 hmacSecret = make([]byte, 32) 26 if _, err := rand.Read(hmacSecret); err != nil { 27 log.Fatalf("generate secret: %v", err) 28 } 29 log.Printf("generated HMAC secret: %s", hex.EncodeToString(hmacSecret)) 30 log.Printf("pass --secret=%s to reuse across restarts", hex.EncodeToString(hmacSecret)) 31 } 32 33 db, err := sql.Open("sqlite", *dbPath) 34 if err != nil { 35 log.Fatalf("open database: %v", err) 36 } 37 defer db.Close() 38 39 store, err := auth.NewAuthStore(db) 40 if err != nil { 41 log.Fatalf("init auth store: %v", err) 42 } 43 44 tok := auth.NewTokenService(hmacSecret) 45 h := NewHandlers(store, tok, *noRegister) 46 47 mux := http.NewServeMux() 48 mux.HandleFunc("/", h.HandleOAuth) 49 mux.HandleFunc("/me", h.HandleMe) 50 mux.HandleFunc("/check-username", h.HandleCheckUsername) 51 52 log.Printf("auth server listening on %s", *listen) 53 if err := http.ListenAndServe(*listen, mux); err != nil { 54 log.Fatalf("listen: %v", err) 55 } 56}