Archived
49 lines
1.2 KiB
Go
49 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"log"
|
|
"net/http"
|
|
"os"
|
|
)
|
|
|
|
func main() {
|
|
log.SetFlags(log.LstdFlags | log.Lshortfile)
|
|
|
|
configPath := flag.String("config", "", "Path to config file (or set CONFIG_FILE env var)")
|
|
flag.Parse()
|
|
|
|
if *configPath == "" {
|
|
*configPath = os.Getenv("CONFIG_FILE")
|
|
}
|
|
if *configPath == "" {
|
|
log.Fatal("Config file path required: use -config flag or CONFIG_FILE env var")
|
|
}
|
|
|
|
config, err := LoadConfig(*configPath)
|
|
if err != nil {
|
|
log.Fatalf("Failed to load configuration: %v", err)
|
|
}
|
|
|
|
// Ensure data directory exists
|
|
if err := os.MkdirAll(config.DataDir, 0755); err != nil {
|
|
log.Fatalf("Failed to create data directory %s: %v", config.DataDir, err)
|
|
}
|
|
|
|
storage := NewStorage(config.DataDir)
|
|
propagator := NewPropagator(config.Peers)
|
|
handler := NewHandler(config, storage, propagator)
|
|
|
|
http.Handle("/data", handler)
|
|
|
|
addr := ":" + config.ListenPort
|
|
log.Printf("Starting server on %s", addr)
|
|
log.Printf("Configured files: %d", len(config.Files))
|
|
log.Printf("Peers: %v", config.Peers)
|
|
log.Printf("Data directory: %s", config.DataDir)
|
|
|
|
if err := http.ListenAndServe(addr, nil); err != nil {
|
|
log.Fatalf("Server failed: %v", err)
|
|
}
|
|
}
|