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" "path/filepath" "runtime" "time" ) func main() { /** * Logging */ date := time.Now().Format("2006-01-02") logFile := fmt.Sprintf("%s.log", date) var logFilePath string if runtime.GOOS == "linux" { logFilePath = fmt.Sprintf("/var/log/%s/%s", constant.AppName, logFile) } else { logFilePath = filepath.Join("log", logFile) } f, err := os.OpenFile(logFilePath, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) if err != nil { log.Fatalf("Error opening file: %v", err) } defer f.Close() 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 {} err = zabbixagent.Launch() if err != nil { return } panic(err) }