package main import ( "embed" "log" "os" "os/signal" "syscall" "time" "streamcore-edge/agent" ) //go:embed mediamtx/* var mediamtxFS embed.FS const ( defaultOriginURL = "http://127.0.0.1:8080" heartbeatInterval = 10 * time.Second ) func main() { log.SetFlags(log.LstdFlags | log.Lshortfile) cfg := agent.Config{ NodeName: "edge-node", OriginURL: getEnv("STREAMCORE_ORIGIN", defaultOriginURL), DiscoveryURL: getEnv("STREAMCORE_DISCOVERY_URL", ""), HlsPort: 8889, ApiPort: 9998, Subnet: getEnv("STREAMCORE_SUBNET", "0.0.0.0/0"), DataDir: getEnv("STREAMCORE_DATA_DIR", ""), Weight: 100, } if cfg.DataDir == "" { home, _ := os.UserHomeDir() if home == "" { home = os.TempDir() } cfg.DataDir = home + "/.streamcore-edge" } ag, err := agent.New(cfg, mediamtxFS) if err != nil { log.Fatalf("Failed to initialize agent: %v", err) } if err := ag.Start(); err != nil { log.Fatalf("Failed to start agent: %v", err) } log.Println("Edge agent started") runTray(ag) sigCh := make(chan os.Signal, 1) signal.Notify(sigCh, syscall.SIGINT, syscall.SIGTERM) <-sigCh log.Println("Shutting down...") ag.Stop() } func getEnv(key, def string) string { if v := os.Getenv(key); v != "" { return v } return def }