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