main.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package main
  2. import (
  3. "flag"
  4. "log"
  5. "dhcp-dns-manager/internal/config"
  6. "dhcp-dns-manager/internal/db"
  7. "dhcp-dns-manager/internal/dhcp"
  8. "dhcp-dns-manager/internal/dns"
  9. "dhcp-dns-manager/internal/web"
  10. )
  11. func main() {
  12. configPath := flag.String("config", "configs/config.json", "Path to configuration file")
  13. flag.Parse()
  14. // Load configuration
  15. cfg, err := config.LoadConfig(*configPath)
  16. if err != nil {
  17. log.Fatalf("Failed to load config: %v", err)
  18. }
  19. // Initialize database
  20. database, err := db.InitDB(cfg.Database.Path)
  21. if err != nil {
  22. log.Fatalf("Failed to initialize database: %v", err)
  23. }
  24. // Initialize DHCP server
  25. dhcpServer := dhcp.NewServer(&cfg.DHCP, database)
  26. if err := dhcpServer.Start(); err != nil {
  27. log.Printf("Warning: DHCP server failed to start: %v", err)
  28. } else {
  29. log.Println("DHCP server started")
  30. }
  31. // Initialize DNS server
  32. dnsServer := dns.NewServer(&cfg.DNS, database)
  33. if err := dnsServer.Start(); err != nil {
  34. log.Printf("Warning: DNS server failed to start: %v", err)
  35. } else {
  36. log.Println("DNS server started")
  37. }
  38. // Initialize Config Manager
  39. configManager, err := web.NewConfigManager(*configPath)
  40. if err != nil {
  41. log.Fatalf("Failed to initialize config manager: %v", err)
  42. }
  43. // Initialize Web server
  44. webServer := web.NewServer(&cfg.Web, database, dhcpServer, dnsServer, configManager)
  45. log.Printf("Starting web interface on %s:%d", cfg.Web.Host, cfg.Web.Port)
  46. if err := webServer.Start(); err != nil {
  47. log.Fatalf("Web server failed to start: %v", err)
  48. }
  49. }