package main import ( "flag" "log" "dhcp-dns-manager/internal/config" "dhcp-dns-manager/internal/db" "dhcp-dns-manager/internal/dhcp" "dhcp-dns-manager/internal/dns" "dhcp-dns-manager/internal/web" ) func main() { configPath := flag.String("config", "configs/config.json", "Path to configuration file") flag.Parse() // Load configuration cfg, err := config.LoadConfig(*configPath) if err != nil { log.Fatalf("Failed to load config: %v", err) } // Initialize database database, err := db.InitDB(cfg.Database.Path) if err != nil { log.Fatalf("Failed to initialize database: %v", err) } // Initialize DHCP server dhcpServer := dhcp.NewServer(&cfg.DHCP, database) if err := dhcpServer.Start(); err != nil { log.Printf("Warning: DHCP server failed to start: %v", err) } else { log.Println("DHCP server started") } // Initialize DNS server dnsServer := dns.NewServer(&cfg.DNS, database) if err := dnsServer.Start(); err != nil { log.Printf("Warning: DNS server failed to start: %v", err) } else { log.Println("DNS server started") } // Initialize Config Manager configManager, err := web.NewConfigManager(*configPath) if err != nil { log.Fatalf("Failed to initialize config manager: %v", err) } // Initialize Web server webServer := web.NewServer(&cfg.Web, database, dhcpServer, dnsServer, configManager) log.Printf("Starting web interface on %s:%d", cfg.Web.Host, cfg.Web.Port) if err := webServer.Start(); err != nil { log.Fatalf("Web server failed to start: %v", err) } }