main.go raw
1 package main
2
3 import (
4 "flag"
5 "log"
6 "net/http"
7 "os"
8
9 "github.com/mlekudev/gitea-nostr-auth/internal/config"
10 "github.com/mlekudev/gitea-nostr-auth/internal/handler"
11 "github.com/mlekudev/gitea-nostr-auth/internal/nostr"
12 "github.com/mlekudev/gitea-nostr-auth/internal/oauth2"
13 )
14
15 func main() {
16 configPath := flag.String("config", "config.yaml", "path to config file")
17 flag.Parse()
18
19 cfg, err := config.Load(*configPath)
20 if err != nil {
21 // Try environment variables if config file not found
22 if os.IsNotExist(err) {
23 cfg = config.FromEnv()
24 } else {
25 log.Fatalf("failed to load config: %v", err)
26 }
27 }
28
29 store := oauth2.NewMemoryStore()
30 fetcher := nostr.NewFetcher(cfg.Nostr.FallbackRelays)
31 router := handler.NewRouter(cfg, store, fetcher)
32
33 addr := cfg.Server.Address()
34 log.Printf("Starting nostr-oauth2-server on %s", addr)
35 log.Printf("Base URL: %s", cfg.Server.BaseURL)
36 log.Printf("Fallback relays: %v", cfg.Nostr.FallbackRelays)
37
38 if err := http.ListenAndServe(addr, router); err != nil {
39 log.Fatalf("server error: %v", err)
40 }
41 }
42