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.
548 lines
17 KiB
Go
548 lines
17 KiB
Go
package icsconf
|
|
|
|
import (
|
|
"encoding/xml"
|
|
"fmt"
|
|
"os"
|
|
"strings"
|
|
"sync"
|
|
|
|
"gitlab.com/ics_cinnamon/voicegateway/icserror"
|
|
)
|
|
|
|
type IcsConfig struct {
|
|
XMLName xml.Name `xml:"ICSVSIM"`
|
|
Version string `xml:"version,attr"`
|
|
InfoConfig InfoConfig `xml:"INFO"`
|
|
LicenseConfig LicenseConfig `xml:"LICENSE"`
|
|
LogConfig LogConfig `xml:"LOG"`
|
|
CommandConfig CommandConfig `xml:"COMMAND"`
|
|
CallEventConfig CallEventConfig `xml:"CALLEVENT"`
|
|
SIPConfig SIPConfig `xml:"SIP"`
|
|
AgentConfig []AgentConfig `xml:"AGENT"`
|
|
VoiceAgentConfig VoiceAgentConfig `xml:"VOICEAGENT"`
|
|
PbxConfig PbxConfig `xml:"PBX"`
|
|
SimLoopCount int `xml:"SIMLOOP"`
|
|
Representative Representative `xml:"REPRESENTATIVE"`
|
|
CallEndInfo CallEndInfo `xml:"CALLENDINFO"`
|
|
HomeDir string
|
|
}
|
|
|
|
type InfoConfig struct {
|
|
Product string `xml:"PRODUCT"`
|
|
TenentID string `xml:"TENENTID"`
|
|
ServerID int `xml:"SERVERID"`
|
|
ServerIP string `xml:"SERVERIP"`
|
|
}
|
|
|
|
type LicenseConfig struct {
|
|
Key string `xml:"KEY"`
|
|
Channels int `xml:"CHANNELS"`
|
|
Expire int `xml:"EXPIRE"`
|
|
}
|
|
|
|
type LogConfig struct {
|
|
Path string `xml:"PATH"`
|
|
Disklimit int `xml:"DISKLIMIT"`
|
|
Level string `xml:"LEVEL"`
|
|
Output string `xml:"OUTPUT"`
|
|
RotateConfig RotateConfig `xml:"ROTATE"`
|
|
DelConfig DelConfig `xml:"DELPERIOD"`
|
|
HomeDir string
|
|
}
|
|
|
|
type DelConfig struct {
|
|
DelDay int `xml:"day,attr"`
|
|
DelHour int `xml:"hour,attr"`
|
|
}
|
|
|
|
type RotateConfig struct {
|
|
Size string `xml:"size,attr"`
|
|
Num string `xml:"num,attr"`
|
|
YesNo string `xml:"yesno,attr"`
|
|
}
|
|
|
|
type CommandConfig struct {
|
|
Value string `xml:"value,attr"`
|
|
Transport string `xml:"transport,attr"`
|
|
Port int `xml:"port,attr"`
|
|
}
|
|
|
|
type AgentConfig struct {
|
|
Name string `xml:"name,attr"`
|
|
Value string `xml:"value,attr"`
|
|
RegisterConfig RegisterConfig `xml:"REGISTER"`
|
|
OptionsConfig OptionsConfig `xml:"OPTIONS"`
|
|
MediaConfig MediaConfig `xml:"MEDIA"`
|
|
}
|
|
|
|
type RegisterConfig struct {
|
|
RegisterValue string `xml:"value,attr"`
|
|
RegisterTransport string `xml:"transport,attr"`
|
|
RegisterExpire int `xml:"expire,attr"`
|
|
RegisterUserName string `xml:"username,attr"`
|
|
}
|
|
|
|
type OptionsConfig struct {
|
|
OptionsValue string `xml:"value,attr"`
|
|
OptionsInterval int `xml:"interval,attr"`
|
|
}
|
|
|
|
type MediaConfig struct {
|
|
Media string `xml:"m,attr"`
|
|
Port int `xml:"port,attr"`
|
|
Format string `xml:"format,attr"`
|
|
}
|
|
|
|
type CallEventConfig struct {
|
|
Value string `xml:"value,attr"`
|
|
Production string `xml:"production,attr"`
|
|
Version string `xml:"version,attr"`
|
|
}
|
|
|
|
type SIPConfig struct {
|
|
Value string `xml:"value,attr"`
|
|
Transport string `xml:"transport,attr"`
|
|
Port int `xml:"port,attr"`
|
|
SIPProxy string `xml:"proxy,attr"`
|
|
}
|
|
|
|
type Representative struct {
|
|
Value bool `xml:"value,attr"`
|
|
Name string `xml:"name,attr"`
|
|
}
|
|
|
|
type CallEndInfo struct {
|
|
Value bool `xml:"value,attr"`
|
|
Loop int `xml:"loopCount,attr"`
|
|
}
|
|
|
|
type PbxConfig struct {
|
|
PbxIp string `xml:"IP"`
|
|
PbxPort int `xml:"PORT"`
|
|
}
|
|
|
|
type VoiceAgentConfig struct {
|
|
AgentInfo []AgentInfo `xml:"AGENT"`
|
|
MyAddr MyAddr `xml:"SERVER"`
|
|
}
|
|
|
|
type AgentInfo struct {
|
|
Name string `xml:"name,attr"`
|
|
Action string `xml:"action,attr"`
|
|
Port int `xml:"port,attr"`
|
|
VoicePort int `xml:"voiceport,attr"`
|
|
IP string `xml:"ip,attr"`
|
|
}
|
|
|
|
type MyAddr struct {
|
|
ServerPort int `xml:"port,attr"`
|
|
BasePort int `xml:"baseport,attr"`
|
|
PortRange int `xml:"range,attr"`
|
|
ServerIP string `xml:",chardata"`
|
|
}
|
|
|
|
var gIcsConfig *IcsConfig
|
|
var onceConfig sync.Once
|
|
|
|
func OpenConfig(ConfigFileName string, homeDir string) (*IcsConfig, *icserror.IcsError) {
|
|
var gerr *icserror.IcsError = nil
|
|
|
|
onceConfig.Do(func() {
|
|
fi, err := os.Open(ConfigFileName)
|
|
if err != nil {
|
|
icserror.ICSERRCONFOpenFile.SetError(err)
|
|
gerr = icserror.ICSERRCONFOpenFile
|
|
return
|
|
}
|
|
defer fi.Close()
|
|
|
|
FI, _ := os.Stat(ConfigFileName)
|
|
FileLength := FI.Size()
|
|
|
|
configdata := make([]byte, FileLength)
|
|
cnt, err := fi.Read(configdata)
|
|
if cnt == 0 || err != nil {
|
|
icserror.ICSERRCONFFileNotFound.SetError(err)
|
|
gerr = icserror.ICSERRCONFFileNotFound
|
|
return
|
|
}
|
|
|
|
gIcsConfig = &IcsConfig{}
|
|
gIcsConfig.HomeDir = homeDir
|
|
|
|
err = xml.Unmarshal([]byte(configdata), gIcsConfig)
|
|
if err != nil {
|
|
icserror.ICSERRCONFUnmarshal.SetError(err)
|
|
gerr = icserror.ICSERRCONFUnmarshal
|
|
gIcsConfig = nil
|
|
return
|
|
}
|
|
|
|
if !strings.HasPrefix(gIcsConfig.LogConfig.Path, "/") {
|
|
gIcsConfig.LogConfig.Path = fmt.Sprintf("%s/%s", homeDir, gIcsConfig.LogConfig.Path)
|
|
}
|
|
//default setting
|
|
if gIcsConfig.LogConfig.DelConfig.DelDay == 0 {
|
|
gIcsConfig.LogConfig.DelConfig.DelHour = 90
|
|
}
|
|
if gIcsConfig.LogConfig.DelConfig.DelHour == 0 {
|
|
gIcsConfig.LogConfig.DelConfig.DelHour = 2
|
|
}
|
|
|
|
gIcsConfig.LogConfig.HomeDir = homeDir
|
|
})
|
|
|
|
if gerr != nil {
|
|
return nil, gerr
|
|
}
|
|
|
|
return gIcsConfig, nil
|
|
}
|
|
|
|
func ReloadConfig(ConfigFileName string, homeDir string) (*IcsConfig, *icserror.IcsError) {
|
|
fi, err := os.Open(ConfigFileName)
|
|
if err != nil {
|
|
icserror.ICSERRCONFOpenFile.SetError(err)
|
|
return nil, icserror.ICSERRCONFOpenFile
|
|
}
|
|
defer fi.Close()
|
|
|
|
FI, _ := os.Stat(ConfigFileName)
|
|
FileLength := FI.Size()
|
|
|
|
configdata := make([]byte, FileLength)
|
|
cnt, err := fi.Read(configdata)
|
|
if cnt == 0 || err != nil {
|
|
icserror.ICSERRCONFFileNotFound.SetError(err)
|
|
return nil, icserror.ICSERRCONFFileNotFound
|
|
}
|
|
|
|
gIcsConfig = &IcsConfig{}
|
|
gIcsConfig.HomeDir = homeDir
|
|
|
|
err = xml.Unmarshal([]byte(configdata), gIcsConfig)
|
|
if err != nil {
|
|
icserror.ICSERRCONFUnmarshal.SetError(err)
|
|
return nil, icserror.ICSERRCONFUnmarshal
|
|
}
|
|
|
|
if !strings.HasPrefix(gIcsConfig.LogConfig.Path, "/") {
|
|
gIcsConfig.LogConfig.Path = fmt.Sprintf("%s/%s", homeDir, gIcsConfig.LogConfig.Path)
|
|
}
|
|
//default setting
|
|
if gIcsConfig.LogConfig.DelConfig.DelDay == 0 {
|
|
gIcsConfig.LogConfig.DelConfig.DelHour = 90
|
|
}
|
|
if gIcsConfig.LogConfig.DelConfig.DelHour == 0 {
|
|
gIcsConfig.LogConfig.DelConfig.DelHour = 2
|
|
}
|
|
|
|
gIcsConfig.LogConfig.HomeDir = homeDir
|
|
|
|
return gIcsConfig, nil
|
|
}
|
|
|
|
func (c IcsConfig) GetChannelNum() int {
|
|
return c.LicenseConfig.Channels
|
|
}
|
|
|
|
func (c IcsConfig) GetExpire() int {
|
|
return c.LicenseConfig.Expire
|
|
}
|
|
|
|
func (c IcsConfig) GetPbxIp() string {
|
|
return c.PbxConfig.PbxIp
|
|
}
|
|
|
|
func (c IcsConfig) GetHomeDir() string {
|
|
return c.HomeDir
|
|
}
|
|
|
|
func (c IcsConfig) GetChannelID() string {
|
|
return c.InfoConfig.TenentID
|
|
}
|
|
|
|
func (c IcsConfig) GetServerID() int {
|
|
return c.InfoConfig.ServerID
|
|
}
|
|
|
|
func (c IcsConfig) GetServerIP() string {
|
|
return c.VoiceAgentConfig.MyAddr.ServerIP
|
|
}
|
|
|
|
//from LogConfig struct
|
|
func (c LogConfig) GetHomeDir() string {
|
|
return c.HomeDir
|
|
}
|
|
|
|
func (c *IcsConfig) SetHomeDir(homeDir string) {
|
|
c.HomeDir = homeDir
|
|
}
|
|
|
|
func GetIcsConfig() *IcsConfig {
|
|
return gIcsConfig
|
|
}
|
|
|
|
func (c IcsConfig) ShowConfig() string {
|
|
fmt.Printf("Licensed Channel number : %d\n", c.LicenseConfig.Channels)
|
|
agentlen := len(c.VoiceAgentConfig.AgentInfo)
|
|
for iter1 := 0; iter1 < agentlen; iter1++ {
|
|
fmt.Printf("Voice Agent [%s] %s:%d|%d action: %s\n",
|
|
c.VoiceAgentConfig.AgentInfo[iter1].Name,
|
|
c.VoiceAgentConfig.AgentInfo[iter1].IP,
|
|
c.VoiceAgentConfig.AgentInfo[iter1].Port,
|
|
c.VoiceAgentConfig.AgentInfo[iter1].VoicePort,
|
|
c.VoiceAgentConfig.AgentInfo[iter1].Action)
|
|
}
|
|
fmt.Printf("PBX Address : %s:%d\n\n", c.PbxConfig.PbxIp, c.PbxConfig.PbxPort)
|
|
fmt.Printf("Log Level : %s\n", c.LogConfig.Level)
|
|
fmt.Printf("Log Path : %s\n", c.LogConfig.Path)
|
|
fmt.Printf("Log Disk Space Size : %dMB\n", c.LogConfig.Disklimit)
|
|
fmt.Printf("Log Del Day : %d\n", c.LogConfig.DelConfig.DelDay)
|
|
fmt.Printf("Log Del Hour : %d\n", c.LogConfig.DelConfig.DelHour)
|
|
fmt.Printf("Log Output : %s\n", c.LogConfig.Output)
|
|
fmt.Printf("Log Rotate : %s\n", c.LogConfig.RotateConfig.YesNo)
|
|
fmt.Printf("Log Rotate File Size : %sMB\n", c.LogConfig.RotateConfig.Size)
|
|
fmt.Printf("Log Rotate File Number : %s\n\n", c.LogConfig.RotateConfig.Num)
|
|
fmt.Printf("CallEvent Value: %s\n", c.CallEventConfig.Value)
|
|
fmt.Printf("CallEvent Production: %s\n", c.CallEventConfig.Production)
|
|
fmt.Printf("CallEvent Version: %s\n", c.CallEventConfig.Version)
|
|
fmt.Printf("Log Del Day : %d\n", c.LogConfig.DelConfig.DelDay)
|
|
fmt.Printf("Log Del Hour : %d\n", c.LogConfig.DelConfig.DelHour)
|
|
fmt.Printf("SIP Value: %s\n", c.SIPConfig.Value)
|
|
fmt.Printf("SIP Transport: %s\n", c.SIPConfig.Transport)
|
|
fmt.Printf("SIP Port: %d\n", c.SIPConfig.Port)
|
|
fmt.Printf("SIP Proxy: %s\n\n", c.SIPConfig.SIPProxy)
|
|
/*
|
|
for iter := 0; iter < len(c.AgentConfig); iter++ {
|
|
fmt.Printf("==========================\n")
|
|
fmt.Printf("Agent Name: %s, Use? %s\n", c.AgentConfig[iter].Name, c.AgentConfig[iter].Value)
|
|
fmt.Printf("Agent Media media: %s\n", c.AgentConfig[iter].MediaConfig.Media)
|
|
fmt.Printf("Agent Media Port: %d\n", c.AgentConfig[iter].MediaConfig.Port)
|
|
fmt.Printf("Agent Media Format: %s\n", c.AgentConfig[iter].MediaConfig.Format)
|
|
fmt.Printf("Register value: %s\n", c.AgentConfig[iter].RegisterConfig.RegisterValue)
|
|
fmt.Printf("Register Transport: %s\n", c.AgentConfig[iter].RegisterConfig.RegisterTransport)
|
|
fmt.Printf("Register Expire: %d\n", c.AgentConfig[iter].RegisterConfig.RegisterExpire)
|
|
fmt.Printf("Register Username: %s\n", c.AgentConfig[iter].RegisterConfig.RegisterUserName)
|
|
fmt.Printf("Options Use? %s\n", c.AgentConfig[iter].OptionsConfig.OptionsValue)
|
|
fmt.Printf("Options Interval: %d\n\n", c.AgentConfig[iter].OptionsConfig.OptionsInterval)
|
|
}
|
|
*/
|
|
|
|
confmsg := fmt.Sprintf("Licensed Channel number : %d\n", c.LicenseConfig.Channels)
|
|
/*
|
|
confmsg += fmt.Sprintf("iComsys Voice Agent Address : %s[%d:%d]\n",
|
|
c.VoiceAgentConfig.AgentAddr.VoiceAgentIP, c.VoiceAgentConfig.AgentAddr.CallSignalPort, c.VoiceAgentConfig.AgentAddr.VoicePort)
|
|
*/
|
|
confmsg += fmt.Sprintf("PBX Address : %s:%d\n\n", c.PbxConfig.PbxIp, c.PbxConfig.PbxPort)
|
|
confmsg += fmt.Sprintf("Log Level : %s\n", c.LogConfig.Level)
|
|
confmsg += fmt.Sprintf("Log Path : %s\n", c.LogConfig.Path)
|
|
confmsg += fmt.Sprintf("Log Disk Space Size : %dMB\n", c.LogConfig.Disklimit)
|
|
confmsg += fmt.Sprintf("Log Del Day : %d\n", c.LogConfig.DelConfig.DelDay)
|
|
confmsg += fmt.Sprintf("Log Del Hour : %d\n", c.LogConfig.DelConfig.DelHour)
|
|
confmsg += fmt.Sprintf("Log Output : %s\n", c.LogConfig.Output)
|
|
confmsg += fmt.Sprintf("Log Rotate : %s\n", c.LogConfig.RotateConfig.YesNo)
|
|
confmsg += fmt.Sprintf("Log Rotate File Size : %sMB\n", c.LogConfig.RotateConfig.Size)
|
|
confmsg += fmt.Sprintf("Log Rotate File Number : %s\n\n", c.LogConfig.RotateConfig.Num)
|
|
confmsg += fmt.Sprintf("CallEvent Production: %s\n", c.CallEventConfig.Production)
|
|
confmsg += fmt.Sprintf("CallEvent Version: %s\n", c.CallEventConfig.Version)
|
|
confmsg += fmt.Sprintf("SIP Transport: %s\n", c.SIPConfig.Transport)
|
|
confmsg += fmt.Sprintf("SIP Port: %d\n", c.SIPConfig.Port)
|
|
confmsg += fmt.Sprintf("SIP Proxy: %s\n", c.SIPConfig.SIPProxy)
|
|
for iter := 0; iter < len(c.AgentConfig); iter++ {
|
|
confmsg += fmt.Sprintf("=========================\nAgent Name: %s, Use? %s\n", c.AgentConfig[iter].Name, c.AgentConfig[iter].Value)
|
|
confmsg += fmt.Sprintf("Agent Media media: %s\n", c.AgentConfig[iter].MediaConfig.Media)
|
|
confmsg += fmt.Sprintf("Agent Media Port: %d\n", c.AgentConfig[iter].MediaConfig.Port)
|
|
confmsg += fmt.Sprintf("Agent Media Format: %s\n", c.AgentConfig[iter].MediaConfig.Format)
|
|
confmsg += fmt.Sprintf("Register value: %s\n", c.AgentConfig[iter].RegisterConfig.RegisterValue)
|
|
confmsg += fmt.Sprintf("Register Transport: %s\n", c.AgentConfig[iter].RegisterConfig.RegisterTransport)
|
|
confmsg += fmt.Sprintf("Register Expire: %d\n", c.AgentConfig[iter].RegisterConfig.RegisterExpire)
|
|
confmsg += fmt.Sprintf("Register Username: %s\n\n", c.AgentConfig[iter].RegisterConfig.RegisterUserName)
|
|
}
|
|
|
|
return confmsg
|
|
}
|
|
|
|
//////////////////////////////////////////
|
|
/////////////// simulator ////////////////
|
|
//////////////////////////////////////////
|
|
|
|
type SimConfig struct {
|
|
XMLName xml.Name `xml:"SIMVC"`
|
|
Version string `xml:"version,attr"`
|
|
IsCaller string `xml:"ISCALLER"`
|
|
Repeat int `xml:"REPEAT"`
|
|
Channels int `xml:"CHANNELS"`
|
|
TargetPhoneConfig TargetPhoneConfig `xml:"TARGET"`
|
|
SimPhoneConfig SimPhoneConfig `xml:"SIM"`
|
|
InOut string `xml:"INOUT"`
|
|
LogConfig LogConfig `xml:"LOG"`
|
|
RegiCount int `xml:"REGICOUNT"`
|
|
MediaConfig []SimMediaConfig `xml:"MEDIA"`
|
|
HomeDir string
|
|
}
|
|
|
|
type TargetPhoneConfig struct {
|
|
TargetIP string `xml:"ip,attr"`
|
|
TSIPPort int `xml:"sipport,attr"`
|
|
TRTPPort int `xml:"rtpport,attr"`
|
|
}
|
|
|
|
type SimPhoneConfig struct {
|
|
MYIP string `xml:"myip,attr"`
|
|
SIPPort int `xml:"sipport,attr"`
|
|
RTPPort int `xml:"rtpport,attr"`
|
|
}
|
|
|
|
type SimMediaConfig struct {
|
|
Media string `xml:"m,attr"`
|
|
Port int `xml:"port,attr"`
|
|
Format string `xml:"format,attr"`
|
|
}
|
|
|
|
type SimScenarioConfig struct {
|
|
XMLName xml.Name `xml:"SIMSCEN"`
|
|
Version string `xml:"version,attr"`
|
|
ScenarioCount int `xml:"SCENARIOCOUNT"`
|
|
SipOrder SipOrder `xml:"ORDER"`
|
|
}
|
|
|
|
type SipOrder struct {
|
|
Order []string `xml:"METHOD"`
|
|
StopTime int `xml:"STOPTIME"`
|
|
}
|
|
|
|
func OpenSimConfig(ConfigFileName string, homeDir string) (*SimConfig, *icserror.IcsError) {
|
|
fi, err := os.Open(ConfigFileName)
|
|
if err != nil {
|
|
icserror.ICSERRCONFOpenFile.SetError(err)
|
|
return nil, icserror.ICSERRCONFOpenFile
|
|
}
|
|
defer fi.Close()
|
|
|
|
FI, _ := os.Stat(ConfigFileName)
|
|
FileLength := FI.Size()
|
|
|
|
configdata := make([]byte, FileLength)
|
|
cnt, err := fi.Read(configdata)
|
|
if cnt == 0 || err != nil {
|
|
icserror.ICSERRCONFFileNotFound.SetError(err)
|
|
return nil, icserror.ICSERRCONFFileNotFound
|
|
}
|
|
|
|
conf := SimConfig{}
|
|
conf.HomeDir = homeDir
|
|
|
|
err = xml.Unmarshal([]byte(configdata), &conf)
|
|
if err != nil {
|
|
icserror.ICSERRCONFUnmarshal.SetError(err)
|
|
return nil, icserror.ICSERRCONFUnmarshal
|
|
}
|
|
|
|
/*
|
|
fmt.Printf("Configuration> xml name: %s, version: %s\n", conf.XMLName.Local, conf.Version)
|
|
fmt.Println(conf.LicenseConfig)
|
|
fmt.Println(conf.LogConfig)
|
|
fmt.Println(conf.LogConfig.RotateConfig)
|
|
fmt.Println(conf.CaptureConfig)
|
|
*/
|
|
|
|
conf.LogConfig.HomeDir = homeDir
|
|
|
|
gSimConfig = &conf
|
|
|
|
return &conf, nil
|
|
}
|
|
|
|
func OpenSimScenarioConfig(ConfigFileName string, homeDir string) (*SimScenarioConfig, *icserror.IcsError) {
|
|
fi, err := os.Open(ConfigFileName)
|
|
if err != nil {
|
|
icserror.ICSERRCONFOpenFile.SetError(err)
|
|
return nil, icserror.ICSERRCONFOpenFile
|
|
}
|
|
defer fi.Close()
|
|
|
|
FI, _ := os.Stat(ConfigFileName)
|
|
FileLength := FI.Size()
|
|
|
|
configdata := make([]byte, FileLength)
|
|
cnt, err := fi.Read(configdata)
|
|
if cnt == 0 || err != nil {
|
|
icserror.ICSERRCONFFileNotFound.SetError(err)
|
|
return nil, icserror.ICSERRCONFFileNotFound
|
|
}
|
|
|
|
SimScenarioConf := SimScenarioConfig{}
|
|
|
|
err = xml.Unmarshal([]byte(configdata), &SimScenarioConf)
|
|
if err != nil {
|
|
icserror.ICSERRCONFUnmarshal.SetError(err)
|
|
return nil, icserror.ICSERRCONFUnmarshal
|
|
}
|
|
|
|
fmt.Println()
|
|
|
|
gSimScenarioConfig = &SimScenarioConf
|
|
return &SimScenarioConf, nil
|
|
}
|
|
|
|
func (c SimConfig) GetSimChannels() int {
|
|
return c.Channels
|
|
}
|
|
|
|
func (c SimConfig) GetSimTargetIP() string {
|
|
return c.TargetPhoneConfig.TargetIP
|
|
}
|
|
|
|
func (c SimConfig) GetSimTargetPort() int {
|
|
return c.TargetPhoneConfig.TSIPPort
|
|
}
|
|
|
|
func (c SimConfig) ShowConfig() string {
|
|
fmt.Printf("Home Path : %s\n", c.HomeDir)
|
|
fmt.Printf("INOUT : %s\n", c.InOut)
|
|
fmt.Printf("Channel number : %d\n", c.Channels)
|
|
fmt.Printf("Repeat number : %d\n", c.Repeat)
|
|
fmt.Printf("iComsys SIM Phone Address : %s\n", c.SimPhoneConfig.MYIP)
|
|
fmt.Printf("iComsys Target Phone Address : %s\n", c.GetSimTargetIP())
|
|
fmt.Printf("Log Level : %s\n", c.LogConfig.Level)
|
|
fmt.Printf("Log Path : %s\n", c.LogConfig.Path)
|
|
fmt.Printf("Log Disk Space Limitation : %dMB\n", c.LogConfig.Disklimit)
|
|
fmt.Printf("Log Output : %s\n", c.LogConfig.Output)
|
|
fmt.Printf("Log Rotate : %s\n", c.LogConfig.RotateConfig.YesNo)
|
|
fmt.Printf("Log Rotate File Size : %s\n", c.LogConfig.RotateConfig.Size)
|
|
fmt.Printf("Log Rotate File Number : %s\n", c.LogConfig.RotateConfig.Num)
|
|
fmt.Printf("SIP Port: %d\n", c.SimPhoneConfig.SIPPort)
|
|
fmt.Printf("RTP Port: %d\n", c.SimPhoneConfig.RTPPort)
|
|
|
|
confmsg := ""
|
|
confmsg += fmt.Sprintf("Home Path : %s\n", c.HomeDir)
|
|
confmsg += fmt.Sprintf("Caller : %s\n", c.IsCaller)
|
|
confmsg += fmt.Sprintf("Channel number : %d\n", c.Channels)
|
|
confmsg += fmt.Sprintf("iComsys SIM Phone Address : %s\n", c.SimPhoneConfig.MYIP)
|
|
confmsg += fmt.Sprintf("iComsys Target Phone Address : %s\n", c.GetSimTargetIP())
|
|
confmsg += fmt.Sprintf("Log Level : %s\n", c.LogConfig.Level)
|
|
confmsg += fmt.Sprintf("Log Path : %s\n", c.LogConfig.Path)
|
|
confmsg += fmt.Sprintf("Log Disk Space Limitation : %dMB\n", c.LogConfig.Disklimit)
|
|
confmsg += fmt.Sprintf("Log Output : %s\n", c.LogConfig.Output)
|
|
confmsg += fmt.Sprintf("Log Rotate : %s\n\n", c.LogConfig.RotateConfig.YesNo)
|
|
confmsg += fmt.Sprintf("Log Rotate File Size : %s\n", c.LogConfig.RotateConfig.Size)
|
|
confmsg += fmt.Sprintf("Log Rotate File Number : %s\n", c.LogConfig.RotateConfig.Num)
|
|
confmsg += fmt.Sprintf("SIP Port: %d\n", c.SimPhoneConfig.SIPPort)
|
|
confmsg += fmt.Sprintf("RTP Port: %d\n\n", c.SimPhoneConfig.RTPPort)
|
|
|
|
return confmsg
|
|
}
|
|
|
|
var gSimConfig *SimConfig
|
|
var gSimScenarioConfig *SimScenarioConfig
|
|
|
|
func GetSimConfig() *SimConfig {
|
|
return gSimConfig
|
|
}
|
|
|
|
func GetSimScenarioConfig() *SimScenarioConfig {
|
|
return gSimScenarioConfig
|
|
}
|