merge: 合并代码20240706
This commit is contained in:
@@ -279,11 +279,7 @@ func PostCDREventFromSMF(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
// 推送到ws订阅组
|
||||
// if v, ok := cdrEvent.CDR["recordType"]; ok {
|
||||
// if v == "MOC" || v == "MTSM" {
|
||||
// wsService.NewWSSendImpl.ByGroupID(wsService.GROUP_IMS_CDR, cdrEvent)
|
||||
// }
|
||||
// }
|
||||
wsService.NewWSSendImpl.ByGroupID(wsService.GROUP_SMF_CDR, cdrEvent)
|
||||
|
||||
services.ResponseStatusOK204NoContent(w)
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ import (
|
||||
"os/exec"
|
||||
"strings"
|
||||
|
||||
"be.ems/lib/core/utils/ctx"
|
||||
"be.ems/lib/core/ctx"
|
||||
"be.ems/lib/dborm"
|
||||
"be.ems/lib/log"
|
||||
"be.ems/lib/services"
|
||||
|
||||
@@ -3,7 +3,7 @@ package cm
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"be.ems/lib/core/utils/ctx"
|
||||
"be.ems/lib/core/ctx"
|
||||
"be.ems/lib/global"
|
||||
"be.ems/lib/log"
|
||||
"be.ems/lib/services"
|
||||
|
||||
@@ -9,7 +9,7 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"be.ems/lib/core/utils/ctx"
|
||||
"be.ems/lib/core/ctx"
|
||||
"be.ems/lib/dborm"
|
||||
"be.ems/lib/global"
|
||||
"be.ems/lib/log"
|
||||
|
||||
@@ -2,26 +2,35 @@ package event
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"be.ems/lib/core/ctx"
|
||||
"be.ems/lib/dborm"
|
||||
"be.ems/lib/global"
|
||||
"be.ems/lib/log"
|
||||
"be.ems/lib/services"
|
||||
"be.ems/restagent/config"
|
||||
wsService "be.ems/src/modules/ws/service"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
var (
|
||||
UriUEEvent = "/upload-ue/v1/:eventType"
|
||||
// 走Gin
|
||||
UriUEEventAMF = "/upload-ue/v1/:eventType"
|
||||
// 走Mux
|
||||
UriUEEvent = config.DefaultUriPrefix + "/logManagement/v1/elementType/{elementTypeValue}/objectType/ueEvent"
|
||||
CustomUriUEEvent = config.UriPrefix + "/logManagement/v1/elementType/{elementTypeValue}/objectType/ueEvent"
|
||||
)
|
||||
|
||||
type UEEvent struct {
|
||||
NeType string `json:"neType" xorm:"ne_type"`
|
||||
NeName string `json:"neName" xorm:"ne_name"`
|
||||
RmUID string `json:"rmUID" xorm:"rm_uid"`
|
||||
Timestamp int `json:"timestamp" xorm:"timestamp"`
|
||||
Timestamp int64 `json:"timestamp" xorm:"timestamp"`
|
||||
EventType string `json:"eventType" xorm:"event_type"`
|
||||
EventJson map[string]any `json:"eventJSON" xorm:"event_json"`
|
||||
}
|
||||
@@ -51,13 +60,13 @@ func PostUEEventFromAMF(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
ueEvent.NeType = "AMF"
|
||||
ueEvent.Timestamp = int(time.Now().Unix())
|
||||
ueEvent.Timestamp = time.Now().Unix()
|
||||
ueEvent.EventType = eventType
|
||||
log.Trace("ueEvent:", ueEvent)
|
||||
log.Trace("ueEvent AMF:", ueEvent)
|
||||
|
||||
affected, err := dborm.XormInsertTableOne("ue_event", ueEvent)
|
||||
affected, err := dborm.XormInsertTableOne("ue_event_amf", ueEvent)
|
||||
if err != nil && affected <= 0 {
|
||||
log.Error("Failed to insert ue_event:", err)
|
||||
log.Error("Failed to insert ue_event_amf:", err)
|
||||
services.ResponseInternalServerError500ProcessError(c.Writer, err)
|
||||
return
|
||||
}
|
||||
@@ -67,3 +76,30 @@ func PostUEEventFromAMF(c *gin.Context) {
|
||||
|
||||
services.ResponseStatusOK204NoContent(c.Writer)
|
||||
}
|
||||
|
||||
func PostUEEvent(w http.ResponseWriter, r *http.Request) {
|
||||
log.Info("PostUEEvent processing... ")
|
||||
|
||||
neType := ctx.GetParam(r, "elementTypeValue")
|
||||
var ueEvent UEEvent
|
||||
if err := ctx.ShouldBindJSON(r, &ueEvent); err != nil {
|
||||
services.ResponseInternalServerError500ProcessError(w, err)
|
||||
return
|
||||
}
|
||||
|
||||
ueEvent.NeType = strings.ToUpper(neType)
|
||||
tableName := fmt.Sprintf("ue_event_%s", strings.ToLower(neType))
|
||||
affected, err := dborm.XormInsertTableOne(tableName, ueEvent)
|
||||
if err != nil && affected <= 0 {
|
||||
log.Error("Failed to insert "+tableName, err)
|
||||
services.ResponseInternalServerError500ProcessError(w, err)
|
||||
return
|
||||
}
|
||||
|
||||
// 推送到ws订阅组
|
||||
if ueEvent.NeType == "MME" {
|
||||
wsService.NewWSSendImpl.ByGroupID(wsService.GROUP_MME_UE, ueEvent)
|
||||
}
|
||||
|
||||
services.ResponseStatusOK204NoContent(w)
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ import (
|
||||
"net/http"
|
||||
"path/filepath"
|
||||
|
||||
"be.ems/lib/core/utils/ctx"
|
||||
"be.ems/lib/core/ctx"
|
||||
"be.ems/lib/dborm"
|
||||
"be.ems/lib/file"
|
||||
"be.ems/lib/log"
|
||||
|
||||
@@ -1,60 +0,0 @@
|
||||
package fm
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"be.ems/lib/log"
|
||||
"be.ems/restagent/config"
|
||||
"github.com/chzyer/readline"
|
||||
"github.com/go-gsm/ucp"
|
||||
)
|
||||
|
||||
func AlarmForwardBySMSC(alarmData *Alarm) error {
|
||||
opt := &ucp.Options{
|
||||
Addr: config.GetYamlConfig().Alarm.SMSC.Addr,
|
||||
User: config.GetYamlConfig().Alarm.SMSC.SystemID,
|
||||
Password: config.GetYamlConfig().Alarm.SMSC.Password,
|
||||
AccessCode: config.GetYamlConfig().Alarm.SMSC.SystemType,
|
||||
}
|
||||
|
||||
client := ucp.New(opt)
|
||||
if err := client.Connect(); err != nil {
|
||||
log.Error("Failed to connect:", err)
|
||||
return err
|
||||
}
|
||||
defer client.Close()
|
||||
|
||||
reader, _ := readline.New(">>> ")
|
||||
defer reader.Close()
|
||||
|
||||
for {
|
||||
fmt.Print(">>> ")
|
||||
lines, _ := reader.Readline()
|
||||
fields := strings.Fields(lines)
|
||||
|
||||
if len(fields) == 1 {
|
||||
// exit CLI
|
||||
if fields[0] == "exit" {
|
||||
return nil
|
||||
}
|
||||
// display help message
|
||||
if fields[0] == "help" {
|
||||
log.Trace("\n\tSend a 'message' to 'receiver' with a 'sender' mask\n\t>>> sender receiver message\n\n\tExit the cli\n\t>>> exit\n")
|
||||
}
|
||||
}
|
||||
|
||||
// sender receiver message...
|
||||
if len(fields) >= 3 {
|
||||
sender := fields[0]
|
||||
receiver := fields[1]
|
||||
message := strings.Join(fields[2:], " ")
|
||||
ids, err := client.Send(sender, receiver, message)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
} else {
|
||||
log.Debug("%v", ids)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -54,8 +54,8 @@ var (
|
||||
var (
|
||||
TIME_DELAY_AFTER_WRITE time.Duration = 200
|
||||
TIME_DEAD_LINE time.Duration = 10
|
||||
WIN_ROW_SIZE byte = 100
|
||||
WIN_COL_SIZE byte = 100
|
||||
WIN_ROW_SIZE int16 = 200
|
||||
WIN_COL_SIZE int16 = 120
|
||||
BUFFER_SIZE int = 65535
|
||||
)
|
||||
|
||||
@@ -118,9 +118,15 @@ func PostMML2ToNF(w http.ResponseWriter, r *http.Request) {
|
||||
// services.ResponseWithJson(w, http.StatusOK, response)
|
||||
// return
|
||||
// }
|
||||
|
||||
// 发送窗口大小设置命令
|
||||
conn.Write([]byte{255, 251, 31}) // 发送WILL WINDOW SIZE
|
||||
conn.Write([]byte{255, 250, 31, 0, WIN_ROW_SIZE, 0, WIN_COL_SIZE, 255, 240}) // 发送设置 WINDOW SIZE
|
||||
conn.Write([]byte{255, 251, 31}) // 发送WILL WINDOW SIZE
|
||||
conn.Write([]byte{
|
||||
255, 250, 31,
|
||||
byte(WIN_COL_SIZE >> 8), byte(WIN_COL_SIZE & 0xFF),
|
||||
byte(WIN_ROW_SIZE >> 8), byte(WIN_ROW_SIZE & 0xFF),
|
||||
255, 240,
|
||||
}) // 发送设置 WINDOW SIZE
|
||||
|
||||
conn.SetDeadline(time.Now().Add(TIME_DEAD_LINE * time.Second))
|
||||
loginStr := fmt.Sprintf("%s\n%s\n", config.GetYamlConfig().MML.User, config.GetYamlConfig().MML.Password)
|
||||
|
||||
@@ -8,12 +8,14 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"be.ems/lib/core/ctx"
|
||||
"be.ems/lib/dborm"
|
||||
"be.ems/lib/global"
|
||||
"be.ems/lib/log"
|
||||
"be.ems/lib/services"
|
||||
"be.ems/restagent/config"
|
||||
tokenConst "be.ems/src/framework/constants/token"
|
||||
neService "be.ems/src/modules/network_element/service"
|
||||
"github.com/go-resty/resty/v2"
|
||||
"github.com/gorilla/mux"
|
||||
)
|
||||
@@ -241,66 +243,38 @@ func GetSubscriptionsFromNSSF(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
// Get UEInfo from NF/NFs
|
||||
func GetUEInfoFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
log.Info("GetUEInfoFromNF processing... ")
|
||||
log.Debug("GetUEInfoFromNF processing... ")
|
||||
|
||||
vars := mux.Vars(r)
|
||||
neType := vars["elementTypeValue"]
|
||||
if neType == "" {
|
||||
services.ResponseNotFound404UriNotExist(w, r)
|
||||
return
|
||||
}
|
||||
//neTypeLower := strings.ToLower(neType)
|
||||
var neId string
|
||||
neIds := services.GetParamsArrByName("neId", r)
|
||||
if len(neIds) == 1 {
|
||||
neId = neIds[0]
|
||||
} else {
|
||||
neId := ctx.GetQuery(r, "neId")
|
||||
neType := ctx.GetParam(r, "elementTypeValue")
|
||||
if neType == "" || neId == "" {
|
||||
log.Error("elementTypeValue/neId is empty")
|
||||
services.ResponseNotFound404UriNotExist(w, r)
|
||||
return
|
||||
}
|
||||
|
||||
// token, err := services.CheckFrontValidRequest(w, r)
|
||||
// if err != nil {
|
||||
// log.Error("Request error:", err)
|
||||
// return
|
||||
// }
|
||||
// log.Debug("token:", token)
|
||||
neInfo := neService.NewNeInfoImpl.SelectNeInfoByNeTypeAndNeID(neType, neId)
|
||||
|
||||
neInfo, err := dborm.XormGetNeInfo(neType, neId)
|
||||
if err != nil {
|
||||
log.Error("Failed to XormGetNeInfo:", err)
|
||||
services.ResponseInternalServerError500ProcessError(w, err)
|
||||
return
|
||||
} else if neInfo == nil {
|
||||
err := global.ErrCMNotFoundTargetNE
|
||||
log.Error(global.ErrCMNotFoundTargetNE)
|
||||
services.ResponseInternalServerError500ProcessError(w, err)
|
||||
return
|
||||
var response services.MapResponse
|
||||
if neInfo.NeId == neId && neInfo.NeId != "" {
|
||||
requestURI2NF := fmt.Sprintf("http://%s:%v%s", neInfo.IP, neInfo.Port, r.RequestURI)
|
||||
log.Debug("requestURI2NF:", requestURI2NF)
|
||||
resp, err := client.R().
|
||||
EnableTrace().
|
||||
SetHeaders(map[string]string{"User-Agent": config.GetDefaultUserAgent()}).
|
||||
SetHeaders(map[string]string{"Content-Type": "application/json;charset=UTF-8"}).
|
||||
Get(requestURI2NF)
|
||||
if err != nil {
|
||||
log.Error("Failed to Get from NF:", err)
|
||||
services.ResponseInternalServerError500ProcessError(w, err)
|
||||
return
|
||||
} else {
|
||||
_ = json.Unmarshal(resp.Body(), &response)
|
||||
}
|
||||
log.Debug("response:", response)
|
||||
}
|
||||
log.Trace("neInfo:", neInfo)
|
||||
|
||||
hostUri := fmt.Sprintf("http://%s:%v", neInfo.Ip, neInfo.Port)
|
||||
requestURI2NF := fmt.Sprintf("%s%s", hostUri, r.RequestURI)
|
||||
|
||||
log.Debug("requestURI2NF:", requestURI2NF)
|
||||
|
||||
resp, err := client.R().
|
||||
EnableTrace().
|
||||
SetHeaders(map[string]string{tokenConst.HEADER_KEY: r.Header.Get(tokenConst.HEADER_KEY)}).
|
||||
// SetHeaders(map[string]string{"accessToken": token}).
|
||||
SetHeaders(map[string]string{"User-Agent": config.GetDefaultUserAgent()}).
|
||||
SetHeaders(map[string]string{"Content-Type": "application/json;charset=UTF-8"}).
|
||||
Get(requestURI2NF)
|
||||
if err != nil {
|
||||
log.Error("Get system state from NF is failed:", err)
|
||||
services.ResponseInternalServerError500ProcessError(w, err)
|
||||
return
|
||||
} else {
|
||||
var response services.MapResponse
|
||||
_ = json.Unmarshal(resp.Body(), &response)
|
||||
services.ResponseWithJson(w, resp.StatusCode(), response)
|
||||
return
|
||||
}
|
||||
services.ResponseWithJson(w, http.StatusOK, response)
|
||||
}
|
||||
|
||||
// POST User Info from NF/NFs
|
||||
|
||||
Reference in New Issue
Block a user