파일
CNBUGS AI 8ad4c3576d Fix DHCP client unable to get IP and config not persisting
- 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
2026-04-24 16:03:54 +08:00

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)
}
}