package main // #cgo LDFLAGS: -L/usr/local/lib /usr/local/lib/libavcodec.a /usr/local/lib/libavformat.a /usr/local/lib/llibavutil.a /usr/local/lib/llibswscale.a -llibswresample.a -llibavdevice -llibavfilter import ( "fmt" "os" "strings" "gitlab.com/ics_cinnamon/voicegateway/icsapp" "gitlab.com/ics_cinnamon/voicegateway/icsconf" "gitlab.com/ics_cinnamon/voicegateway/icserror" "gitlab.com/ics_cinnamon/voicegateway/icslog" "gitlab.com/ics_cinnamon/voicegateway/icssvc" "gitlab.com/ics_cinnamon/voicegateway/icsutil" ) func main() { service := icssvc.NewService() /////////////////////////////////// //Demonize service //check Voice Gateway pid file - ICSVSIM_ROOT/voicegateway.pid //if already running, terminate self. /* if icsutil.CheckPID() { service.ShowServiceInfo() fmt.Println("Voice Gateway Already Running. Terminating...") os.Exit(0) } */ /* //deamonize pid, derr := icsutil.Deamonize() if derr != nil { service.ShowServiceInfo() icserror.ICSERRDeamonize.SetError(derr) fmt.Println("voice Gateway:", icserror.ICSERRDeamonize) os.Exit(0) return } fmt.Println("PID", pid) */ //////////////////////// //get Voice Gateway home dir isStop := false var homeDir string for _, e := range os.Environ() { s := strings.SplitN(e, "=", 2) if strings.Compare(s[0], "ICSVSIM_ROOT") == 0 { homeDir = s[1] //service.SetHomeDir(s[1]) isStop = true break } } if !isStop { icserror.ICSERRNotFoundHome.PrintWithCaller(1) return } //configuration configFile := fmt.Sprintf("%s/config/icsvsim.xml", homeDir) //configFile := fmt.Sprintf("%s/config/icsvg.xml", service.GetHomeDir()) //fmt.Println("Config file:", configFile) conf, confErr := icsconf.OpenConfig(configFile, homeDir) if confErr != nil { confErr.PrintWithCaller(0) return } if confErr := service.SetIcsConfig(conf); confErr != nil { confErr.PrintWithCaller(0) } icsLog, lerr := icslog.NewIcsLog( &conf.LogConfig, icslog.GetLogLevelID(conf.LogConfig.Level), icslog.GetLogOutputID(conf.LogConfig.Output), conf.LogConfig.Path, conf.LogConfig.Disklimit, ) if lerr != nil { lerr.PrintWithCaller(0) } service.SetIcsLog(icsLog) //create log watcher go service.LogWatcher() info := service.ShowServiceInfo() info += fmt.Sprintf("iComsys Voice Gateway Home: %s\n", homeDir) fmt.Printf("iComsys Voice Gateway Home: %s\n", homeDir) //wd, err := os.Getwd() logpath := conf.LogConfig.Path info += fmt.Sprintf("Available Disk Space [%s]: %d MB\n", logpath, icsutil.GetDiskAvailableSpace(logpath)/1024/1024) fmt.Printf("Available Disk Space [%s]: %d MB\n", logpath, icsutil.GetDiskAvailableSpace(logpath)/1024/1024) info += conf.ShowConfig() //check license expiration //fmt.Println("Remain Expiration Months:", conf.GetRemainExpire()) app := icsapp.Init(conf) //fmt.Printf("Service Started - %d\n================================\n", pid) info = "\n" + info icsLog.Print(icslog.LOG_LEVEL_INFO, -1, info) icsLog.Print(icslog.LOG_LEVEL_INFO, -1, "Service Started") icsLog.Print(icslog.LOG_LEVEL_INFO, -1, "================================") ///////////////////////////////// //icsutil.CloseSTDIO() ///////////////////////////////// execerr := app.Execute() if execerr != nil { execerr.PrintWithCaller(1) os.Exit(1) } /* deviceName := conf.GetDeviceName() pcap := icspcap.New() //pcap.SetFilter("") packetSource, pcapErr := pcap.Init(deviceName) //packetSource, icserr := pcap.Init("wlp1s0") if pcapErr != nil { if pcapErr.Equal(icserror.ICSERRPCAPOpenLive) { fmt.Printf("Device Name: %s\n", deviceName) } pcapErr.Print() return } fmt.Println("Filter:", pcap.GetFilter()) if err := pcap.Run(packetSource); err != nil { err.Print() } defer pcap.Close() */ }