|
@@ -6,14 +6,12 @@ import (
|
|
|
"encoding/binary"
|
|
"encoding/binary"
|
|
|
"fmt"
|
|
"fmt"
|
|
|
"io"
|
|
"io"
|
|
|
- "log"
|
|
|
|
|
"net"
|
|
"net"
|
|
|
"pbx-api-gin/internal/app/ami/action"
|
|
"pbx-api-gin/internal/app/ami/action"
|
|
|
"pbx-api-gin/internal/app/stc/active"
|
|
"pbx-api-gin/internal/app/stc/active"
|
|
|
msgdata "pbx-api-gin/internal/app/stc/data"
|
|
msgdata "pbx-api-gin/internal/app/stc/data"
|
|
|
"pbx-api-gin/internal/app/stc/priority"
|
|
"pbx-api-gin/internal/app/stc/priority"
|
|
|
alstatus "pbx-api-gin/internal/app/stc/sendstatus"
|
|
alstatus "pbx-api-gin/internal/app/stc/sendstatus"
|
|
|
- "pbx-api-gin/pkg/lfshook"
|
|
|
|
|
"pbx-api-gin/pkg/utils"
|
|
"pbx-api-gin/pkg/utils"
|
|
|
"strconv"
|
|
"strconv"
|
|
|
"sync"
|
|
"sync"
|
|
@@ -56,7 +54,7 @@ func HandleStcCmd(ctx context.Context, conn net.Conn) {
|
|
|
for {
|
|
for {
|
|
|
packet, err := msgdata.ExtractPacket(&buf)
|
|
packet, err := msgdata.ExtractPacket(&buf)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- log.Printf("parse error: %v, resetting buffer", err)
|
|
|
|
|
|
|
+ utils.LoggerDebug.Printf("Parse error: %v, resetting buffer", err)
|
|
|
buf.Reset() // 解析失败,清空避免污染
|
|
buf.Reset() // 解析失败,清空避免污染
|
|
|
break
|
|
break
|
|
|
}
|
|
}
|
|
@@ -129,13 +127,13 @@ func processHeartbeat(info []byte) {
|
|
|
func processPacket(packet []byte) {
|
|
func processPacket(packet []byte) {
|
|
|
|
|
|
|
|
if len(packet) < 6 {
|
|
if len(packet) < 6 {
|
|
|
- lfshook.NewLogger().Logger.Infof("Get data wrong length from STC !")
|
|
|
|
|
|
|
+ utils.LoggerDebug.Printf("Get data wrong length from STC !")
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//for recv data log debug
|
|
//for recv data log debug
|
|
|
if packet[5] != 0x03 && packet[5] != 0x0c && packet[5] != 0x01 {
|
|
if packet[5] != 0x03 && packet[5] != 0x0c && packet[5] != 0x01 {
|
|
|
- lfshook.NewLogger().Logger.Infof("Get data from STC:%x", packet)
|
|
|
|
|
|
|
+ utils.LoggerDebug.Printf("Get data from STC:%x", packet)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//check if the cmd type is avtive
|
|
//check if the cmd type is avtive
|
|
@@ -147,7 +145,7 @@ func processPacket(packet []byte) {
|
|
|
//check if Master role
|
|
//check if Master role
|
|
|
if !active.Master {
|
|
if !active.Master {
|
|
|
if tagLog == 0 {
|
|
if tagLog == 0 {
|
|
|
- lfshook.NewLogger().Logger.Infof("=========Not Master Role Ignore data !=============")
|
|
|
|
|
|
|
+ utils.LoggerDebug.Printf("Not Master Role , Ignore all data from STC !")
|
|
|
tagLog = 1
|
|
tagLog = 1
|
|
|
}
|
|
}
|
|
|
return
|
|
return
|
|
@@ -239,9 +237,9 @@ func processPacket(packet []byte) {
|
|
|
|
|
|
|
|
if active.QueueTimer != nil {
|
|
if active.QueueTimer != nil {
|
|
|
if active.QueueTimer.Stop() {
|
|
if active.QueueTimer.Stop() {
|
|
|
- lfshook.NewLogger().Logger.Infof("=========Release PAD timer true !============")
|
|
|
|
|
|
|
+ utils.LoggerDebug.Printf("Stop PAD timer true !")
|
|
|
} else {
|
|
} else {
|
|
|
- lfshook.NewLogger().Logger.Infof("=========Release PAD timer false ! ============")
|
|
|
|
|
|
|
+ utils.LoggerDebug.Printf("Stop PAD timer false !")
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -266,9 +264,9 @@ func processPacket(packet []byte) {
|
|
|
|
|
|
|
|
if active.QueueTimer != nil {
|
|
if active.QueueTimer != nil {
|
|
|
if active.QueueTimer.Stop() {
|
|
if active.QueueTimer.Stop() {
|
|
|
- lfshook.NewLogger().Logger.Infof("=========Release PAD timer true !============")
|
|
|
|
|
|
|
+ utils.LoggerDebug.Printf("Stop PAD timer true !")
|
|
|
} else {
|
|
} else {
|
|
|
- lfshook.NewLogger().Logger.Infof("=========Release PAD timer false ! ============")
|
|
|
|
|
|
|
+ utils.LoggerDebug.Printf("Stop PAD timer false !")
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -354,31 +352,31 @@ func Active(data [3]byte) {
|
|
|
master := int(data[1])
|
|
master := int(data[1])
|
|
|
TrainInfo := int(data[2])
|
|
TrainInfo := int(data[2])
|
|
|
|
|
|
|
|
- lfshook.NewLogger().Logger.Infof("=====active======cab=%s Master=%d=====data:%x======", active.CabNum, master, data)
|
|
|
|
|
|
|
+ utils.LoggerDebug.Printf("CabNumber:%s Active:%x Master:%x Train devide & radiofault :%x", active.CabNum, Signal, master, TrainInfo)
|
|
|
|
|
|
|
|
//Set Master
|
|
//Set Master
|
|
|
if master == 1 && active.CabNum == "1" {
|
|
if master == 1 && active.CabNum == "1" {
|
|
|
|
|
|
|
|
active.Master = true
|
|
active.Master = true
|
|
|
- lfshook.NewLogger().Logger.Infof("=====cab1 Master")
|
|
|
|
|
|
|
+ //lfshook.NewLogger().Logger.Infof("=====cab1 Master")
|
|
|
if !utils.CheckAsterisk() {
|
|
if !utils.CheckAsterisk() {
|
|
|
- lfshook.NewLogger().Infof("Check asterisk , if not running , run cmd /usr/sbin/asterisk !")
|
|
|
|
|
|
|
+ utils.LoggerDebug.Printf("Check asterisk , not running , run cmd /usr/sbin/asterisk !")
|
|
|
utils.ExecCmdAsync("/usr/sbin/asterisk")
|
|
utils.ExecCmdAsync("/usr/sbin/asterisk")
|
|
|
time.Sleep(3 * time.Second)
|
|
time.Sleep(3 * time.Second)
|
|
|
}
|
|
}
|
|
|
} else if master == 8 && active.CabNum == "8" {
|
|
} else if master == 8 && active.CabNum == "8" {
|
|
|
|
|
|
|
|
active.Master = true
|
|
active.Master = true
|
|
|
- lfshook.NewLogger().Logger.Infof("=====cab8 Master")
|
|
|
|
|
|
|
+ //utils.LoggerDebug.Printf("=====cab8 Master")
|
|
|
if !utils.CheckAsterisk() {
|
|
if !utils.CheckAsterisk() {
|
|
|
- lfshook.NewLogger().Infof("Check asterisk , if not running , run cmd /usr/sbin/asterisk !")
|
|
|
|
|
|
|
+ utils.LoggerDebug.Printf("Check asterisk , not running , run cmd /usr/sbin/asterisk !")
|
|
|
utils.ExecCmdAsync("/usr/sbin/asterisk")
|
|
utils.ExecCmdAsync("/usr/sbin/asterisk")
|
|
|
time.Sleep(3 * time.Second)
|
|
time.Sleep(3 * time.Second)
|
|
|
}
|
|
}
|
|
|
} else if master == 8 && active.CabNum == "1" {
|
|
} else if master == 8 && active.CabNum == "1" {
|
|
|
|
|
|
|
|
- lfshook.NewLogger().Logger.Infof("=====cab1 slave check stop asterisk")
|
|
|
|
|
if utils.CheckAsterisk() {
|
|
if utils.CheckAsterisk() {
|
|
|
|
|
+ utils.LoggerDebug.Printf("Master 8, cab1 ; Check asterisk , running , run cmd /etc/init.d/asterisk stop PBX !")
|
|
|
utils.ExecCmd("/etc/init.d/asterisk", "stop", "PBX")
|
|
utils.ExecCmd("/etc/init.d/asterisk", "stop", "PBX")
|
|
|
}
|
|
}
|
|
|
} else if master == 1 && active.CabNum == "8" {
|
|
} else if master == 1 && active.CabNum == "8" {
|
|
@@ -408,7 +406,7 @@ func Active(data [3]byte) {
|
|
|
} else {
|
|
} else {
|
|
|
active.RadioFault = 0
|
|
active.RadioFault = 0
|
|
|
}
|
|
}
|
|
|
- lfshook.NewLogger().Logger.Infof("==RadioFault1:%x==RadioFault1:%x=DevideInfo:%x", RadioFault1, RadioFault8, DevideInfo)
|
|
|
|
|
|
|
+ utils.LoggerDebug.Printf("RadioFault1:%x RadioFault1:%x DevideInfo:%x", RadioFault1, RadioFault8, DevideInfo)
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -583,13 +581,13 @@ func AlarmHandleICP(data []byte) {
|
|
|
//PAD---->Chanspy(WEq)-->ICP1;PAD--->Call---->ICP2
|
|
//PAD---->Chanspy(WEq)-->ICP1;PAD--->Call---->ICP2
|
|
|
if handler == 0x01 {
|
|
if handler == 0x01 {
|
|
|
if _, loaded := suppressedExts.LoadOrStore(key, struct{}{}); loaded {
|
|
if _, loaded := suppressedExts.LoadOrStore(key, struct{}{}); loaded {
|
|
|
- lfshook.NewLogger().Logger.Infof("Suppressed duplicate ICP Alarm (handler=0x01) for exten: %s within 4 seconds", exten)
|
|
|
|
|
|
|
+ utils.LoggerDebug.Printf("Suppressed duplicate ICP Alarm (handler=0x01) for PAD:%s within 4 seconds", exten)
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
time.AfterFunc(4*time.Second, func() {
|
|
time.AfterFunc(4*time.Second, func() {
|
|
|
suppressedExts.Delete(key)
|
|
suppressedExts.Delete(key)
|
|
|
- lfshook.NewLogger().Logger.Debugf("Suppression released for key: %s", key)
|
|
|
|
|
|
|
+ utils.LoggerDebug.Printf("Suppression released for key: %s", key)
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -601,7 +599,8 @@ func AlarmHandleICP(data []byte) {
|
|
|
alstatus.PaStatus("", "PAD", "start")
|
|
alstatus.PaStatus("", "PAD", "start")
|
|
|
priority.PADStart = 1
|
|
priority.PADStart = 1
|
|
|
}
|
|
}
|
|
|
- lfshook.NewLogger().Logger.Infof("================ ICP Answer PAD ================:%s ", exten)
|
|
|
|
|
|
|
+ utils.LoggerDebug.Printf("ICP Answer PAD:%s .", exten)
|
|
|
|
|
+
|
|
|
if active.ActivedCab == "1" {
|
|
if active.ActivedCab == "1" {
|
|
|
action.Dial("0402", "0511", "pad-rule-pacus", "ani1", exten, "1") // PACUs dial ICP1
|
|
action.Dial("0402", "0511", "pad-rule-pacus", "ani1", exten, "1") // PACUs dial ICP1
|
|
|
//goto ami event ConfbridgeJoin, ICP answer PAD
|
|
//goto ami event ConfbridgeJoin, ICP answer PAD
|
|
@@ -613,10 +612,11 @@ func AlarmHandleICP(data []byte) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
case 0x02: //hold 重新放回队列里面
|
|
case 0x02: //hold 重新放回队列里面
|
|
|
|
|
+ utils.LoggerDebug.Printf("ICP Hold PAD-ICP PAD:%s !", exten)
|
|
|
active.NotifyPaiu(exten, "hold")
|
|
active.NotifyPaiu(exten, "hold")
|
|
|
err := action.RedirectInQueue(exten, "0300", "queues-icp-redirect", "1")
|
|
err := action.RedirectInQueue(exten, "0300", "queues-icp-redirect", "1")
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- lfshook.NewLogger().Info(err)
|
|
|
|
|
|
|
+ utils.LoggerDebug.Printf("RedirectInQueue err:%+v", err)
|
|
|
}
|
|
}
|
|
|
action.InterruptRunningTask("")
|
|
action.InterruptRunningTask("")
|
|
|
time.Sleep(time.Millisecond * 100) //wait endpoimt release
|
|
time.Sleep(time.Millisecond * 100) //wait endpoimt release
|
|
@@ -624,7 +624,7 @@ func AlarmHandleICP(data []byte) {
|
|
|
|
|
|
|
|
case 0x03: //hangup
|
|
case 0x03: //hangup
|
|
|
//NotifyPaiu(exten, "hangup")
|
|
//NotifyPaiu(exten, "hangup")
|
|
|
- lfshook.NewLogger().Logger.Infof("============ Hangup PAD-ICP =============== ")
|
|
|
|
|
|
|
+ utils.LoggerDebug.Printf("STC Hangup PAD-ICP !")
|
|
|
action.Hangup(exten) //Pad
|
|
action.Hangup(exten) //Pad
|
|
|
//action.HangupICP()
|
|
//action.HangupICP()
|
|
|
|
|
|
|
@@ -648,14 +648,14 @@ func AlarmHandleTMS(data []byte) {
|
|
|
// 只对 handler == 0x01 做 2 秒去重
|
|
// 只对 handler == 0x01 做 2 秒去重
|
|
|
if handler == 0x01 {
|
|
if handler == 0x01 {
|
|
|
if _, loaded := suppressedExts.LoadOrStore(key, struct{}{}); loaded {
|
|
if _, loaded := suppressedExts.LoadOrStore(key, struct{}{}); loaded {
|
|
|
- lfshook.NewLogger().Logger.Infof("Suppressed duplicate ICP Alarm (handler=0x01) for exten: %s within 4 seconds", exten)
|
|
|
|
|
|
|
+ utils.LoggerDebug.Printf("Suppressed duplicate ICP Alarm (handler=0x01) for PAD:%s within 4 seconds", exten)
|
|
|
return // 已存在,说明在2秒窗口期内,直接丢弃
|
|
return // 已存在,说明在2秒窗口期内,直接丢弃
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 设置4秒后删除该 key,允许下次通过
|
|
// 设置4秒后删除该 key,允许下次通过
|
|
|
time.AfterFunc(4*time.Second, func() {
|
|
time.AfterFunc(4*time.Second, func() {
|
|
|
suppressedExts.Delete(key)
|
|
suppressedExts.Delete(key)
|
|
|
- lfshook.NewLogger().Logger.Debugf("Suppression released for key: %s", key)
|
|
|
|
|
|
|
+ utils.LoggerDebug.Printf("Suppression released for key: %s", key)
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -668,7 +668,8 @@ func AlarmHandleTMS(data []byte) {
|
|
|
priority.PADStart = 1
|
|
priority.PADStart = 1
|
|
|
}
|
|
}
|
|
|
priority.ICPAnswer = 1
|
|
priority.ICPAnswer = 1
|
|
|
- lfshook.NewLogger().Logger.Infof("==============TMS Answer PAD Exten:%s PACU:%s==========", exten, PacuNum)
|
|
|
|
|
|
|
+ utils.LoggerDebug.Printf("TMS Answer PAD:%s PACU:%s", exten, PacuNum)
|
|
|
|
|
+
|
|
|
if action.ExtenStatus(PacuNum) == "Idle" {
|
|
if action.ExtenStatus(PacuNum) == "Idle" {
|
|
|
if active.ActivedCab == "1" {
|
|
if active.ActivedCab == "1" {
|
|
|
action.Dial("0403", PacuNum, "pad-tms-dial-pacu", PacuNum, exten, "1") // PACU dial ICP1
|
|
action.Dial("0403", PacuNum, "pad-tms-dial-pacu", PacuNum, exten, "1") // PACU dial ICP1
|
|
@@ -684,15 +685,17 @@ func AlarmHandleTMS(data []byte) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
case 0x02: //hold 重新放回队列里面
|
|
case 0x02: //hold 重新放回队列里面
|
|
|
|
|
+ utils.LoggerDebug.Printf("ICP Hold PAD-TMS PAD:%s !", exten)
|
|
|
active.NotifyPaiu(exten, "hold")
|
|
active.NotifyPaiu(exten, "hold")
|
|
|
err := action.RedirectInQueue(exten, "0300", "queues-icp-redirect", "1")
|
|
err := action.RedirectInQueue(exten, "0300", "queues-icp-redirect", "1")
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- lfshook.NewLogger().Info(err)
|
|
|
|
|
|
|
+ utils.LoggerDebug.Printf("RedirectInQueue err:%+v", err)
|
|
|
}
|
|
}
|
|
|
action.HangupAllLocalChan()
|
|
action.HangupAllLocalChan()
|
|
|
|
|
|
|
|
case 0x03: //hangup
|
|
case 0x03: //hangup
|
|
|
//NotifyPaiu(exten, "hangup")
|
|
//NotifyPaiu(exten, "hangup")
|
|
|
|
|
+ utils.LoggerDebug.Printf("STC Hangup PAD-TMS !")
|
|
|
action.Hangup(exten) //Pad
|
|
action.Hangup(exten) //Pad
|
|
|
action.HangupTask("PAD-TMS")
|
|
action.HangupTask("PAD-TMS")
|
|
|
//action.HangupTask("PAD-ICP")
|
|
//action.HangupTask("PAD-ICP")
|