diff --git a/backend/cmd/api/main.go b/backend/cmd/api/main.go new file mode 100644 index 00000000..9417d9a2 --- /dev/null +++ b/backend/cmd/api/main.go @@ -0,0 +1,49 @@ +package main + +import ( + "fmt" + "log" + + "github.com/Wikid82/CaddyProxyManagerPlus/backend/internal/api/handlers" + "github.com/Wikid82/CaddyProxyManagerPlus/backend/internal/api/routes" + "github.com/Wikid82/CaddyProxyManagerPlus/backend/internal/config" + "github.com/Wikid82/CaddyProxyManagerPlus/backend/internal/database" + "github.com/Wikid82/CaddyProxyManagerPlus/backend/internal/server" + "github.com/Wikid82/CaddyProxyManagerPlus/backend/internal/version" +) + +func main() { + log.Printf("starting %s backend on version %s", version.Name, version.Full()) + + cfg, err := config.Load() + if err != nil { + log.Fatalf("load config: %v", err) + } + + db, err := database.Connect(cfg.DatabasePath) + if err != nil { + log.Fatalf("connect database: %v", err) + } + + router := server.NewRouter(cfg.FrontendDir) + + // Pass config to routes for auth service and certificate service + if err := routes.Register(router, db, cfg); err != nil { + log.Fatalf("register routes: %v", err) + } + + // Register import handler with config dependencies + routes.RegisterImportHandler(router, db, cfg.CaddyBinary, cfg.ImportDir) + + // Check for mounted Caddyfile on startup + if err := handlers.CheckMountedImport(db, cfg.ImportCaddyfile, cfg.CaddyBinary, cfg.ImportDir); err != nil { + log.Printf("WARNING: failed to process mounted Caddyfile: %v", err) + } + + addr := fmt.Sprintf(":%s", cfg.HTTPPort) + log.Printf("starting %s backend on %s", version.Name, addr) + + if err := router.Run(addr); err != nil { + log.Fatalf("server error: %v", err) + } +}