You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

143 lines
3.7 KiB
Go

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 - ICSVG_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], "ICSVG_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/icsvg.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()
*/
}