60 lines
1.3 KiB
Go
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.")
|
|
}
|