Experimental gui.
This commit is contained in:
74
experimental/daemon/main.go
Normal file
74
experimental/daemon/main.go
Normal file
@@ -0,0 +1,74 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
|
||||
"wild-cloud-central/internal/config"
|
||||
"wild-cloud-central/internal/handlers"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// Create application instance
|
||||
app := handlers.NewApp()
|
||||
|
||||
// Initialize data directory
|
||||
if err := app.DataManager.Initialize(); err != nil {
|
||||
log.Fatalf("Failed to initialize data directory: %v", err)
|
||||
}
|
||||
|
||||
// Load configuration if it exists
|
||||
paths := app.DataManager.GetPaths()
|
||||
if cfg, err := config.Load(paths.ConfigFile); err != nil {
|
||||
log.Printf("No configuration found, starting with empty config: %v", err)
|
||||
} else {
|
||||
app.Config = cfg
|
||||
log.Printf("Configuration loaded successfully")
|
||||
}
|
||||
|
||||
// Set up HTTP router
|
||||
router := mux.NewRouter()
|
||||
setupRoutes(app, router)
|
||||
|
||||
// Use default server settings if config is empty
|
||||
host := "0.0.0.0"
|
||||
port := 5055
|
||||
if app.Config != nil && app.Config.Server.Host != "" {
|
||||
host = app.Config.Server.Host
|
||||
}
|
||||
if app.Config != nil && app.Config.Server.Port != 0 {
|
||||
port = app.Config.Server.Port
|
||||
}
|
||||
|
||||
addr := fmt.Sprintf("%s:%d", host, port)
|
||||
log.Printf("Starting wild-cloud-central server on %s", addr)
|
||||
|
||||
if err := http.ListenAndServe(addr, router); err != nil {
|
||||
log.Fatal("Server failed to start:", err)
|
||||
}
|
||||
}
|
||||
|
||||
func setupRoutes(app *handlers.App, router *mux.Router) {
|
||||
// Add CORS middleware
|
||||
router.Use(app.CORSMiddleware)
|
||||
|
||||
// API v1 routes
|
||||
router.HandleFunc("/api/v1/health", app.HealthHandler).Methods("GET")
|
||||
router.HandleFunc("/api/v1/config", app.GetConfigHandler).Methods("GET")
|
||||
router.HandleFunc("/api/v1/config", app.UpdateConfigHandler).Methods("PUT")
|
||||
router.HandleFunc("/api/v1/config", app.CreateConfigHandler).Methods("POST")
|
||||
router.HandleFunc("/api/v1/config/yaml", app.GetConfigYamlHandler).Methods("GET")
|
||||
router.HandleFunc("/api/v1/config/yaml", app.UpdateConfigYamlHandler).Methods("PUT")
|
||||
router.HandleFunc("/api/v1/dnsmasq/config", app.GetDnsmasqConfigHandler).Methods("GET")
|
||||
router.HandleFunc("/api/v1/dnsmasq/restart", app.RestartDnsmasqHandler).Methods("POST")
|
||||
router.HandleFunc("/api/v1/pxe/assets", app.DownloadPXEAssetsHandler).Methods("POST")
|
||||
|
||||
// UI-specific endpoints
|
||||
router.HandleFunc("/api/status", app.StatusHandler).Methods("GET")
|
||||
|
||||
// Serve static files
|
||||
router.PathPrefix("/").Handler(http.FileServer(http.Dir("./static/")))
|
||||
}
|
Reference in New Issue
Block a user