merge: 合并代码
This commit is contained in:
@@ -151,9 +151,9 @@ type DatabaseClient struct {
|
||||
|
||||
var DbClient DatabaseClient
|
||||
|
||||
func InitDbClient(dbType, dbUser, dbPassword, dbHost, dbPort, dbName string) error {
|
||||
DbClient.dbUrl = fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=true&loc=Local",
|
||||
dbUser, dbPassword, dbHost, dbPort, dbName)
|
||||
func InitDbClient(dbType, dbUser, dbPassword, dbHost, dbPort, dbName, dbParam string) error {
|
||||
DbClient.dbUrl = fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?%s",
|
||||
dbUser, dbPassword, dbHost, dbPort, dbName, dbParam)
|
||||
DbClient.dbType = dbType
|
||||
DbClient.dbConnMaxLifetime = 0
|
||||
DbClient.dbMaxIdleConns = 0
|
||||
@@ -161,8 +161,7 @@ func InitDbClient(dbType, dbUser, dbPassword, dbHost, dbPort, dbName string) err
|
||||
if log.GetLevel() == log.LOG_TRACE {
|
||||
DbClient.IsShowSQL = true
|
||||
}
|
||||
log.Debugf("dbType:%s dbUrl:%s:******@tcp(%s:%s)/%s??charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=true&loc=Local",
|
||||
dbType, dbUser, dbHost, dbPort, dbName)
|
||||
log.Debugf("dbType:%s dbUrl:%s:", dbType, DbClient.dbUrl)
|
||||
|
||||
var err error
|
||||
DbClient.XEngine, err = xorm.NewEngine(DbClient.dbType, DbClient.dbUrl)
|
||||
@@ -173,6 +172,8 @@ func InitDbClient(dbType, dbUser, dbPassword, dbHost, dbPort, dbName string) err
|
||||
DbClient.XEngine.SetConnMaxLifetime(DbClient.dbConnMaxLifetime)
|
||||
DbClient.XEngine.SetMaxIdleConns(DbClient.dbMaxIdleConns)
|
||||
DbClient.XEngine.SetMaxOpenConns(DbClient.dbMaxOpenConns)
|
||||
DbClient.XEngine.DatabaseTZ = time.Local // 必须
|
||||
DbClient.XEngine.TZLocation = time.Local // 必须
|
||||
if DbClient.IsShowSQL {
|
||||
DbClient.XEngine.ShowSQL(true)
|
||||
}
|
||||
@@ -460,8 +461,8 @@ func PostAlarmFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
if err = AlarmEmailForward(&alarmData); err != nil {
|
||||
log.Error("Failed to AlarmEmailForward:", err)
|
||||
}
|
||||
if err = AlarmForwardBySMSC(&alarmData); err != nil {
|
||||
log.Error("Failed to AlarmForwardBySMSC:", err)
|
||||
if err = AlarmSMSForward(&alarmData); err != nil {
|
||||
log.Error("Failed to AlarmSMSForward:", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -473,11 +474,11 @@ func PostAlarmFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
func GetAlarmFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
log.Debug("GetAlarmFromNF processing... ")
|
||||
|
||||
_, err := services.CheckFrontValidRequest(w, r)
|
||||
if err != nil {
|
||||
log.Error("Request error:", err)
|
||||
return
|
||||
}
|
||||
// _, err := services.CheckFrontValidRequest(w, r)
|
||||
// if err != nil {
|
||||
// log.Error("Request error:", err)
|
||||
// return
|
||||
// }
|
||||
vars := mux.Vars(r)
|
||||
neType := vars["elementTypeValue"]
|
||||
neTypeLower := strings.ToLower(neType)
|
||||
@@ -491,7 +492,7 @@ func GetAlarmFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
//var neInfo *dborm.NeInfo
|
||||
var nes []dborm.NeInfo
|
||||
_, err = dborm.XormGetAllNeInfo(&nes)
|
||||
_, err := dborm.XormGetAllNeInfo(&nes)
|
||||
if err != nil {
|
||||
log.Error("Failed to get all ne info:", err)
|
||||
services.ResponseInternalServerError500ProcessError(w, err)
|
||||
@@ -734,8 +735,8 @@ func GetAlarmFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
if err = AlarmEmailForward(&alarmData); err != nil {
|
||||
log.Error("Failed to AlarmEmailForward:", err)
|
||||
}
|
||||
if err = AlarmForwardBySMSC(&alarmData); err != nil {
|
||||
log.Error("Failed to AlarmForwardBySMSC:", err)
|
||||
if err = AlarmSMSForward(&alarmData); err != nil {
|
||||
log.Error("Failed to AlarmSMSForward:", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"be.ems/lib/dborm"
|
||||
@@ -15,7 +16,24 @@ import (
|
||||
"github.com/linxGnu/gosmpp/pdu"
|
||||
)
|
||||
|
||||
func AlarmForwardBySMS(alarmData *Alarm) error {
|
||||
func AlarmSMSForward(alarmData *Alarm) error {
|
||||
switch config.GetYamlConfig().Alarm.SMProxy {
|
||||
case "sms":
|
||||
users, err := AlarmForwardBySMS(alarmData)
|
||||
writeLog(alarmData, users, "SMS", err)
|
||||
return err
|
||||
case "smsc":
|
||||
users, err := AlarmForwardBySMPP(alarmData)
|
||||
writeLog(alarmData, users, "SMS", err)
|
||||
return err
|
||||
default:
|
||||
users, err := AlarmForwardBySMPP(alarmData)
|
||||
writeLog(alarmData, users, "SMS", err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
func AlarmForwardBySMS(alarmData *Alarm) (string, error) {
|
||||
log.Info("AlarmForwardBySMS processing... ")
|
||||
|
||||
SMSFforwardconfig := config.GetYamlConfig().Alarm.SMS
|
||||
@@ -29,91 +47,74 @@ func AlarmForwardBySMS(alarmData *Alarm) error {
|
||||
toUsers, err := dborm.XormGetAlarmForward("SMS")
|
||||
if err != nil {
|
||||
log.Error("Failed to XormGetAlarmForward:", err)
|
||||
return err
|
||||
return "", err
|
||||
} else if toUsers == nil {
|
||||
err := errors.New("not found forward phone number")
|
||||
log.Error(err)
|
||||
return err
|
||||
return "", err
|
||||
}
|
||||
userList := strings.Join(*toUsers, ",")
|
||||
|
||||
// 短信相关参数
|
||||
params := url.Values{}
|
||||
params.Set("PhoneNumbers", userList)
|
||||
params.Set("SignName", SMSFforwardconfig.SignName)
|
||||
params.Set("TemplateCode", SMSFforwardconfig.TemplateCode)
|
||||
params.Set("TemplateParam", `{"message":"alarm"}`)
|
||||
|
||||
// 构建请求URL
|
||||
reqURL := apiURL + "?Action=SendSms&" + params.Encode()
|
||||
|
||||
// 创建HTTP请求
|
||||
req, err := http.NewRequest("GET", reqURL, nil)
|
||||
if err != nil {
|
||||
log.Error("Failed to create request:", err)
|
||||
return userList, err
|
||||
}
|
||||
|
||||
for _, toUser := range *toUsers {
|
||||
// 短信相关参数
|
||||
params := url.Values{}
|
||||
params.Set("PhoneNumbers", toUser)
|
||||
params.Set("SignName", SMSFforwardconfig.SignName)
|
||||
params.Set("TemplateCode", SMSFforwardconfig.TemplateCode)
|
||||
params.Set("TemplateParam", `{"message":"alarm"}`)
|
||||
// 添加请求头部
|
||||
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
||||
req.Header.Set("Authorization", "APPCODE "+accessKeySecret)
|
||||
|
||||
// 构建请求URL
|
||||
reqURL := apiURL + "?Action=SendSms&" + params.Encode()
|
||||
|
||||
// 创建HTTP请求
|
||||
req, err := http.NewRequest("GET", reqURL, nil)
|
||||
if err != nil {
|
||||
log.Error("Failed to create request:", err)
|
||||
return err
|
||||
}
|
||||
|
||||
// 添加请求头部
|
||||
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
||||
req.Header.Set("Authorization", "APPCODE "+accessKeySecret)
|
||||
|
||||
forwardLog := &dborm.AlarmForwardLog{
|
||||
NeType: alarmData.NeType,
|
||||
NeID: alarmData.NeId,
|
||||
AlarmID: alarmData.AlarmId,
|
||||
AlarmTitle: alarmData.AlarmTitle,
|
||||
AlarmSeq: alarmData.AlarmSeq,
|
||||
EventTime: alarmData.EventTime,
|
||||
ToUser: toUser,
|
||||
}
|
||||
// 发送请求
|
||||
client := &http.Client{}
|
||||
resp, err := client.Do(req)
|
||||
if err != nil {
|
||||
operResult := fmt.Sprintf("Failed to send request:%v", err)
|
||||
log.Error(operResult)
|
||||
forwardLog.OperResult = operResult
|
||||
affected, err := dborm.XormInsertAlarmForwardLog(forwardLog)
|
||||
if err != nil && affected <= 0 {
|
||||
log.Error("Failed to insert data:", err)
|
||||
}
|
||||
continue
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
// 解析响应
|
||||
if resp.StatusCode == http.StatusOK {
|
||||
operResult := "SMS sent successfully!"
|
||||
log.Info(operResult)
|
||||
forwardLog.OperResult = operResult
|
||||
affected, err := dborm.XormInsertAlarmForwardLog(forwardLog)
|
||||
if err != nil && affected <= 0 {
|
||||
log.Error("Failed to insert data:", err)
|
||||
continue
|
||||
}
|
||||
} else {
|
||||
operResult := fmt.Sprintf("Failed to send SMS, StatusCode=%d", resp.StatusCode)
|
||||
log.Error(operResult)
|
||||
forwardLog.OperResult = operResult
|
||||
affected, err := dborm.XormInsertAlarmForwardLog(forwardLog)
|
||||
if err != nil && affected <= 0 {
|
||||
log.Error("Failed to insert data:", err)
|
||||
continue
|
||||
}
|
||||
}
|
||||
// 发送请求
|
||||
client := &http.Client{}
|
||||
resp, err := client.Do(req)
|
||||
if err != nil {
|
||||
log.Error("Failed to send request:%v", err)
|
||||
return userList, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
// 解析响应
|
||||
switch resp.StatusCode {
|
||||
case http.StatusOK, http.StatusAccepted, http.StatusNoContent, http.StatusCreated:
|
||||
return userList, nil
|
||||
default:
|
||||
err := fmt.Errorf("Failed to send SMS: %s(Code=%d)", resp.Status, resp.StatusCode)
|
||||
log.Error(err)
|
||||
return userList, err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func AlarmForwardBySMPP(alarmData *Alarm) error {
|
||||
func AlarmForwardBySMPP(alarmData *Alarm) (string, error) {
|
||||
log.Info("AlarmForwardBySMPP processing... ")
|
||||
|
||||
toUsers, err := dborm.XormGetAlarmForward("SMS")
|
||||
if err != nil {
|
||||
log.Error("Failed to XormGetAlarmForward:", err)
|
||||
return "", err
|
||||
} else if toUsers == nil {
|
||||
err := errors.New("not found forward phone number")
|
||||
log.Error(err)
|
||||
return "", err
|
||||
}
|
||||
userList := strings.Join(*toUsers, ",")
|
||||
|
||||
auth := gosmpp.Auth{
|
||||
SMSC: config.GetYamlConfig().Alarm.SMSC.Addr,
|
||||
SystemID: config.GetYamlConfig().Alarm.SMSC.UserName,
|
||||
SystemID: config.GetYamlConfig().Alarm.SMSC.SystemID,
|
||||
Password: config.GetYamlConfig().Alarm.SMSC.Password,
|
||||
SystemType: "",
|
||||
SystemType: config.GetYamlConfig().Alarm.SMSC.SystemType,
|
||||
}
|
||||
|
||||
// conn, err := gosmpp.NonTLSDialer(auth.SMSC)
|
||||
@@ -141,49 +142,50 @@ func AlarmForwardBySMPP(alarmData *Alarm) error {
|
||||
},
|
||||
}, -1)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return err
|
||||
log.Error("Failed to create SMPP new session:", err)
|
||||
return userList, err
|
||||
}
|
||||
defer func() {
|
||||
_ = trans.Close()
|
||||
}()
|
||||
|
||||
toUsers, err := dborm.XormGetAlarmForward("SMS")
|
||||
if err != nil {
|
||||
log.Error("Failed to XormGetAlarmForward:", err)
|
||||
return err
|
||||
} else if toUsers == nil {
|
||||
err := errors.New("not found forward phone number")
|
||||
log.Error(err)
|
||||
return err
|
||||
}
|
||||
// sending SMS(s)
|
||||
for _, toUser := range *toUsers {
|
||||
forwardLog := &dborm.AlarmForwardLog{
|
||||
NeType: alarmData.NeType,
|
||||
NeID: alarmData.NeId,
|
||||
AlarmID: alarmData.AlarmId,
|
||||
AlarmTitle: alarmData.AlarmTitle,
|
||||
AlarmSeq: alarmData.AlarmSeq,
|
||||
EventTime: alarmData.EventTime,
|
||||
ToUser: toUser,
|
||||
}
|
||||
message := alarmData.AlarmTitle + "from" + alarmData.NeType + alarmData.NeId + "at" + alarmData.EventTime
|
||||
if err = trans.Transceiver().Submit(newSubmitSM(toUser, message)); err != nil {
|
||||
operResult := fmt.Sprintf("Failed to submit short message:%v", err)
|
||||
log.Error(operResult)
|
||||
forwardLog.OperResult = operResult
|
||||
} else {
|
||||
operResult := "SMS sent successfully!"
|
||||
log.Trace(operResult)
|
||||
forwardLog.OperResult = operResult
|
||||
}
|
||||
// var results []string
|
||||
// for _, toUser := range *toUsers {
|
||||
message := "Alarm Notification: " + alarmData.AlarmTitle + " from " + alarmData.NeType + " " + alarmData.NeId + " at " + alarmData.EventTime
|
||||
if err = trans.Transceiver().Submit(newSubmitSM(userList, message)); err != nil {
|
||||
// result := fmt.Sprintf("Failed to submit %s hort message:%s", toUser, err.Error())
|
||||
// results = append(results, result)
|
||||
log.Error("Failed to submit hort message:", err)
|
||||
return userList, err
|
||||
}
|
||||
// }
|
||||
return userList, nil
|
||||
}
|
||||
|
||||
affected, err := dborm.XormInsertAlarmForwardLog(forwardLog)
|
||||
if err != nil && affected <= 0 {
|
||||
log.Error("Failed to insert data:", err)
|
||||
continue
|
||||
}
|
||||
func writeLog(alarmData *Alarm, toUser, forwardBy string, err error) error {
|
||||
var result string
|
||||
if err == nil {
|
||||
result = "SMS sent successfully"
|
||||
} else {
|
||||
result = err.Error()
|
||||
}
|
||||
forwardLog := &dborm.AlarmForwardLog{
|
||||
NeType: alarmData.NeType,
|
||||
NeID: alarmData.NeId,
|
||||
AlarmID: alarmData.AlarmId,
|
||||
AlarmTitle: alarmData.AlarmTitle,
|
||||
AlarmSeq: alarmData.AlarmSeq,
|
||||
EventTime: alarmData.EventTime,
|
||||
Interface: forwardBy,
|
||||
ToUser: toUser,
|
||||
OperResult: result,
|
||||
}
|
||||
|
||||
affected, err := dborm.XormInsertAlarmForwardLog(forwardLog)
|
||||
if err != nil && affected <= 0 {
|
||||
log.Error("Failed to insert data:", err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -13,9 +13,9 @@ import (
|
||||
func AlarmForwardBySMSC(alarmData *Alarm) error {
|
||||
opt := &ucp.Options{
|
||||
Addr: config.GetYamlConfig().Alarm.SMSC.Addr,
|
||||
User: config.GetYamlConfig().Alarm.SMSC.UserName,
|
||||
User: config.GetYamlConfig().Alarm.SMSC.SystemID,
|
||||
Password: config.GetYamlConfig().Alarm.SMSC.Password,
|
||||
AccessCode: "",
|
||||
AccessCode: config.GetYamlConfig().Alarm.SMSC.SystemType,
|
||||
}
|
||||
|
||||
client := ucp.New(opt)
|
||||
|
||||
Reference in New Issue
Block a user