8ad4c3576d
- Fixed verifyAssignment being too strict for new clients - Fixed parseRequestedIP string conversion bug - Fixed response sent to 0.0.0.0 instead of broadcast address - Added SO_BROADCAST support for UDP socket - Fixed session persistence after page refresh (localStorage) - Added in-memory session store for auth middleware - Added config reloader so DHCP server picks up web UI changes dynamically
58 خطوط
1.5 KiB
Go
58 خطوط
1.5 KiB
Go
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)
|
|
}
|
|
}
|