add: ue event from AMF
This commit is contained in:
36
database/upgrade/upg_ue_event.sql
Normal file
36
database/upgrade/upg_ue_event.sql
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
Navicat Premium Data Transfer
|
||||||
|
|
||||||
|
Source Server : local_mariadb
|
||||||
|
Source Server Type : MariaDB
|
||||||
|
Source Server Version : 100338 (10.3.38-MariaDB)
|
||||||
|
Source Host : localhost:33066
|
||||||
|
Source Schema : omc_db
|
||||||
|
|
||||||
|
Target Server Type : MariaDB
|
||||||
|
Target Server Version : 100338 (10.3.38-MariaDB)
|
||||||
|
File Encoding : 65001
|
||||||
|
|
||||||
|
Date: 22/01/2024 17:03:39
|
||||||
|
*/
|
||||||
|
|
||||||
|
SET NAMES utf8mb4;
|
||||||
|
SET FOREIGN_KEY_CHECKS = 0;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for ue_event
|
||||||
|
-- ----------------------------
|
||||||
|
CREATE TABLE IF NOT EXISTS `ue_event` (
|
||||||
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||||
|
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||||
|
`rm_uid` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||||
|
`timestamp` int(11) NULL DEFAULT NULL,
|
||||||
|
`event_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'auth-result/detach/cm-state',
|
||||||
|
`event_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||||
|
`created_at` datetime NULL DEFAULT current_timestamp(),
|
||||||
|
PRIMARY KEY (`id`) USING BTREE,
|
||||||
|
INDEX `id`(`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
SET FOREIGN_KEY_CHECKS = 1;
|
||||||
36
database/upgvue3/upg_ue_event.sql
Normal file
36
database/upgvue3/upg_ue_event.sql
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
Navicat Premium Data Transfer
|
||||||
|
|
||||||
|
Source Server : local_mariadb
|
||||||
|
Source Server Type : MariaDB
|
||||||
|
Source Server Version : 100338 (10.3.38-MariaDB)
|
||||||
|
Source Host : localhost:33066
|
||||||
|
Source Schema : omc_db
|
||||||
|
|
||||||
|
Target Server Type : MariaDB
|
||||||
|
Target Server Version : 100338 (10.3.38-MariaDB)
|
||||||
|
File Encoding : 65001
|
||||||
|
|
||||||
|
Date: 22/01/2024 17:03:39
|
||||||
|
*/
|
||||||
|
|
||||||
|
SET NAMES utf8mb4;
|
||||||
|
SET FOREIGN_KEY_CHECKS = 0;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for ue_event
|
||||||
|
-- ----------------------------
|
||||||
|
CREATE TABLE IF NOT EXISTS `ue_event` (
|
||||||
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||||
|
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||||
|
`rm_uid` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||||
|
`timestamp` int(11) NULL DEFAULT NULL,
|
||||||
|
`event_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'auth-result/detach/cm-state',
|
||||||
|
`event_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||||
|
`created_at` datetime NULL DEFAULT current_timestamp(),
|
||||||
|
PRIMARY KEY (`id`) USING BTREE,
|
||||||
|
INDEX `id`(`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
SET FOREIGN_KEY_CHECKS = 1;
|
||||||
65
features/event/event.go
Normal file
65
features/event/event.go
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
package event
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"io"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"ems.agt/lib/dborm"
|
||||||
|
"ems.agt/lib/global"
|
||||||
|
"ems.agt/lib/log"
|
||||||
|
"ems.agt/lib/services"
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
UriUEEvent = "/upload-ue/v1/:eventType"
|
||||||
|
)
|
||||||
|
|
||||||
|
type UEEvent struct {
|
||||||
|
NeType string `json:"-" xorm:"ne_type"`
|
||||||
|
NeName string `json:"-" xorm:"ne_name"`
|
||||||
|
RmUID string `json:"-" xorm:"rm_uid"`
|
||||||
|
Timestamp int `json:"-" xorm:"timestamp"`
|
||||||
|
EventType string `json:"-" xorm:"event_type"`
|
||||||
|
EventJson map[string]any `json:"-" xorm:"event_json"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func PostUEEventFromAMF(c *gin.Context) {
|
||||||
|
log.Info("PostUEEventFromAMF processing... ")
|
||||||
|
|
||||||
|
body, err := io.ReadAll(io.LimitReader(c.Request.Body, global.RequestBodyMaxLen))
|
||||||
|
if err != nil {
|
||||||
|
log.Error("Faile to io.ReadAll: ", err)
|
||||||
|
services.ResponseNotFound404UriNotExist(c.Writer, c.Request)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
//vars := mux.Vars(c.Request)
|
||||||
|
eventType, ok := c.Params.Get("eventType")
|
||||||
|
if !ok || eventType == "" {
|
||||||
|
log.Error("eventType is empty")
|
||||||
|
services.ResponseNotFound404UriNotExist(c.Writer, c.Request)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ueEvent := new(UEEvent)
|
||||||
|
err = json.Unmarshal(body, &ueEvent.EventJson)
|
||||||
|
if err != nil {
|
||||||
|
log.Error("Failed to Unmarshal ueEvent:", err)
|
||||||
|
services.ResponseInternalServerError500ProcessError(c.Writer, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ueEvent.NeType = "AMF"
|
||||||
|
ueEvent.Timestamp = int(time.Now().Unix())
|
||||||
|
ueEvent.EventType = eventType
|
||||||
|
log.Trace("ueEvent:", ueEvent)
|
||||||
|
|
||||||
|
affected, err := dborm.XormInsertTableOne("ue_event", ueEvent)
|
||||||
|
if err != nil && affected <= 0 {
|
||||||
|
log.Error("Failed to insert ue_event:", err)
|
||||||
|
services.ResponseInternalServerError500ProcessError(c.Writer, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
services.ResponseStatusOK204NoContent(c.Writer)
|
||||||
|
}
|
||||||
@@ -303,6 +303,9 @@ func init() {
|
|||||||
Register("POST", cdr.UriCDREvent, cdr.PostCDREventFromNF, nil)
|
Register("POST", cdr.UriCDREvent, cdr.PostCDREventFromNF, nil)
|
||||||
Register("POST", cdr.CustomUriCDREvent, cdr.PostCDREventFromNF, nil)
|
Register("POST", cdr.CustomUriCDREvent, cdr.PostCDREventFromNF, nil)
|
||||||
|
|
||||||
|
// UE event
|
||||||
|
//Register("POST", event.UriUEEvent, event.PostUEEventFromAMF, nil)
|
||||||
|
|
||||||
// 进程网络
|
// 进程网络
|
||||||
Register("GET", psnet.UriWs, psnet.ProcessWs, nil)
|
Register("GET", psnet.UriWs, psnet.ProcessWs, nil)
|
||||||
Register("POST", psnet.UriStop, psnet.StopProcess, nil)
|
Register("POST", psnet.UriStop, psnet.StopProcess, nil)
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"ems.agt/features/dbrest"
|
"ems.agt/features/dbrest"
|
||||||
|
"ems.agt/features/event"
|
||||||
"ems.agt/features/fm"
|
"ems.agt/features/fm"
|
||||||
"ems.agt/features/lm"
|
"ems.agt/features/lm"
|
||||||
"ems.agt/features/pm"
|
"ems.agt/features/pm"
|
||||||
@@ -185,6 +186,7 @@ func main() {
|
|||||||
uriGroup := app.Group(config.UriPrefix)
|
uriGroup := app.Group(config.UriPrefix)
|
||||||
uriGroup.Use(libSession.SessionHeader())
|
uriGroup.Use(libSession.SessionHeader())
|
||||||
uriGroup.Any("/*any", gin.WrapH(routes.NewRouter()))
|
uriGroup.Any("/*any", gin.WrapH(routes.NewRouter()))
|
||||||
|
app.POST(event.UriUEEvent, event.PostUEEventFromAMF)
|
||||||
|
|
||||||
// 开启监控采集
|
// 开启监控采集
|
||||||
// monitor.StartMonitor(false, "")
|
// monitor.StartMonitor(false, "")
|
||||||
|
|||||||
@@ -55,4 +55,5 @@ user
|
|||||||
user_menu
|
user_menu
|
||||||
user_role
|
user_role
|
||||||
cdr_event
|
cdr_event
|
||||||
|
ue_event
|
||||||
#end
|
#end
|
||||||
Reference in New Issue
Block a user