Merge branch 'lichang' into lite

This commit is contained in:
TsMask
2025-05-23 16:05:37 +08:00
195 changed files with 4924 additions and 3996 deletions

View File

@@ -5,13 +5,10 @@ import (
"encoding/json"
"fmt"
"net/http"
"strconv"
"strings"
"time"
"be.ems/lib/config"
"be.ems/lib/core/ctx"
"be.ems/lib/dborm"
"be.ems/lib/global"
"be.ems/lib/log"
"be.ems/lib/services"
@@ -105,32 +102,7 @@ var (
CustomUriAlarmsFmt = config.UriPrefix + "/faultManagement/v1/elementType/%s/objectType/alarms"
)
func IsNeedToAckAlarm(valueJson *dborm.ValueJson, alarm *Alarm) bool {
log.Info("IsNeedToAckAlarm processing... ")
if valueJson != nil {
status, _ := strconv.Atoi(valueJson.AlarmStatus)
log.Tracef("alarm.AlarmStatus=%d, alarm.AlarmType=%s, alarm.OrigSeverity=%s", alarm.AlarmStatus, alarm.AlarmType, alarm.OrigSeverity)
log.Tracef("status=%d, valueJson.AlarmType=%s, valueJson.OrigSeverity=%s", status, valueJson.AlarmType, valueJson.OrigSeverity)
if alarm.AlarmStatus == status &&
alarm.AlarmType == valueJson.AlarmType &&
alarm.OrigSeverity == valueJson.OrigSeverity {
return true
}
}
return false
}
func SetAlarmAckInfo(valueJson *dborm.ValueJson, alarm *Alarm) {
log.Info("SetAlarmAckInfo processing... ")
alarm.AckState = AckStateAcked
alarm.AckTime.Valid = true
alarm.AckTime.Time = time.Now()
alarm.AckUser = valueJson.AckUser
}
// process alarm post message from NFs
// PostAlarmFromNF 网元告警数据上报接收
func PostAlarmFromNF(w http.ResponseWriter, r *http.Request) {
log.Debug("PostAlarmFromNF processing... ")
apiVer := ctx.GetParam(r, "apiVersion")
@@ -485,7 +457,7 @@ func alarmEventNew(neInfo neModel.NeInfo, v Alarm) (neDataModel.AlarmEvent, erro
}
// 网元重启后,有跟踪任务的需要重新补发启动任务
if v.AlarmCode == constants.ALARM_EVENT_REBOOT {
traceService.NewTraceTask.RunUnstopped()
traceService.NewTraceTask.RunUnstopped(neInfo.NeType, neInfo.NeId)
}
return alarmEvent, nil
}
@@ -512,7 +484,7 @@ func mapToAlarm(data []map[string]any) []Alarm {
return result
}
// process alarm get from NFs
// GetAlarmFromNF 告警历史数据,从网元获取
func GetAlarmFromNF(w http.ResponseWriter, r *http.Request) {
log.Debug("GetAlarmFromNF processing... ")
neType := ctx.GetParam(r, "elementTypeValue")
@@ -591,5 +563,5 @@ func GetAlarmFromNF(w http.ResponseWriter, r *http.Request) {
}
}
}
services.ResponseStatusOK204NoContent(w)
services.ResponseWithJson(w, 200, resp.OkMsg("sync alarms success"))
}

View File

@@ -85,6 +85,9 @@ func AlarmEmailForward(alarmData *Alarm) error {
// return err
// }
emails := strings.Split(config.GetYamlConfig().Alarm.EmailForward.EmailList, ",")
if len(emails) == 0 {
return fmt.Errorf("not found forward email list")
}
m.SetHeader("To", emails...) // 收件人,可以多个收件人,但必须使用相同的 SMTP 连接
//m.SetHeader("To", strings.Join(*emails, " ")) // 收件人,可以多个收件人,但必须使用相同的 SMTP 连接
//m.SetHeader("To", "zhangshuzhong@agrandtech.com", "simonzhangsz@outlook.com") // 收件人,可以多个收件人,但必须使用相同的 SMTP 连接

View File

@@ -52,13 +52,18 @@ func AlarmForwardBySMS(alarmData *Alarm) (string, error) {
if err != nil {
log.Error("Failed to XormGetAlarmForward:", err)
return "", err
} else if toUsers == nil {
}
if toUsers == nil {
err := errors.New("not found forward phone number")
log.Error(err)
return "", err
}
userList := strings.Join(*toUsers, ",")
if len(userList) == 0 {
err := errors.New("not found forward phone number")
log.Error(err)
return "", err
}
// 短信相关参数
params := url.Values{}
params.Set("PhoneNumbers", userList)
@@ -110,6 +115,11 @@ func AlarmForwardBySMPP(alarmData *Alarm) (string, error) {
return "", err
}
userList := smsForward.MobileList
if len(userList) == 0 {
err := errors.New("not found forward phone number")
log.Error(err)
return "", err
}
auth := gosmpp.Auth{
SMSC: smsForward.SMSCAddr,
SystemID: smsForward.SystemID,
@@ -140,19 +150,22 @@ func AlarmForwardBySMPP(alarmData *Alarm) (string, error) {
}, -1)
if err != nil {
log.Error("Failed to create SMPP new session:", err)
return userList, err
return "", err
}
// defer func() {
// if err := trans.Close(); err != nil {
// log.Error(err)
// }
// }()
defer func() {
if err := trans.Close(); err != nil {
log.Error(err)
}
}()
message := "Alarm Notification: " + alarmData.AlarmTitle +
" from " + alarmData.NeType + "_" + alarmData.NeId +
" at " + alarmData.EventTime
users := strings.Split(userList, ",")
for _, user := range users {
if user == "" {
continue
}
sm, err := newSubmitSM(user, message)
if err != nil {
log.Errorf("Failed to newSubmitSM %s short message: %v", user, err)