package main import ( "computer-network/config" "computer-network/server" "fmt" "os" "os/signal" "syscall" ) func main() { fmt.Println("=== Simple Web Server ===") fmt.Println() cfg, err := config.Load("config.json") if err != nil { fmt.Printf("Warning: Could not load config file: %v\n", err) fmt.Println("Using default configuration.") cfg, _ = config.Load("") } fmt.Printf("Configuration loaded:\n") fmt.Printf(" HTTP Port: %d\n", cfg.GetPort()) fmt.Printf(" Admin Port: %d\n", cfg.GetAdminPort()) fmt.Printf(" Root Directory: %s\n", cfg.GetRootDir()) fmt.Println() webServer := server.NewServer(cfg) err = webServer.Start() if err != nil { fmt.Printf("Failed to start web server: %v\n", err) return } adminServer := server.NewAdminServer(cfg) adminServer.SetWebServer(webServer) err = adminServer.Start() if err != nil { fmt.Printf("Failed to start admin server: %v\n", err) webServer.Stop() return } fmt.Println("\nServer is running. Press Ctrl+C to stop.\n") sigChan := make(chan os.Signal, 1) signal.Notify(sigChan, os.Interrupt, syscall.SIGTERM) <-sigChan fmt.Println("\nShutting down server...") adminServer.Stop() webServer.Stop() cfg.Save("config.json") fmt.Println("Server stopped. Configuration saved.") }