Files
2026-03-30 22:05:57 +08:00

60 lines
1.3 KiB
Go

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