package main import ( "fmt" "github.com/gin-gonic/gin" "io" "log" "onvif-agent/config" "onvif-agent/constant" "onvif-agent/integration/zabbixagent" "onvif-agent/router" "os" "time" ) func main() { /** * Logging */ date := time.Now().Format("2006-01-02") f, err := os.OpenFile(fmt.Sprintf("/var/log/%s/%s.log", constant.AppName, date), os.O_RDWR|os.O_CREATE|os.O_APPEND, os.ModePerm) if err != nil { log.Fatalf("Error opening file: %v", err) } defer func(f *os.File) { err := f.Close() if err != nil { log.Fatalf("Error closing file: %v", err) } }(f) writer := io.MultiWriter(os.Stdout, f) log.SetOutput(writer) log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile) /** * Load config */ if err := config.LoadConfig(); err != nil { log.Fatalf("Error loading config: %v", err) } /** * Web server */ go func() { r := gin.Default() router.SetupRoutes(r) addr := fmt.Sprintf("%s:%d", config.Config.App.Host, config.Config.App.Port) if err := r.Run(addr); err != nil { fmt.Println("Failed to start server:", err) } }() /** * Zabbix agent */ go func() { zabbixagent.Run() }() select {} }