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.CustomUriCDREvent, cdr.PostCDREventFromNF, nil)
|
||||
|
||||
// UE event
|
||||
//Register("POST", event.UriUEEvent, event.PostUEEventFromAMF, nil)
|
||||
|
||||
// 进程网络
|
||||
Register("GET", psnet.UriWs, psnet.ProcessWs, nil)
|
||||
Register("POST", psnet.UriStop, psnet.StopProcess, nil)
|
||||
|
||||
@@ -10,6 +10,7 @@ import (
|
||||
"strings"
|
||||
|
||||
"ems.agt/features/dbrest"
|
||||
"ems.agt/features/event"
|
||||
"ems.agt/features/fm"
|
||||
"ems.agt/features/lm"
|
||||
"ems.agt/features/pm"
|
||||
@@ -185,6 +186,7 @@ func main() {
|
||||
uriGroup := app.Group(config.UriPrefix)
|
||||
uriGroup.Use(libSession.SessionHeader())
|
||||
uriGroup.Any("/*any", gin.WrapH(routes.NewRouter()))
|
||||
app.POST(event.UriUEEvent, event.PostUEEventFromAMF)
|
||||
|
||||
// 开启监控采集
|
||||
// monitor.StartMonitor(false, "")
|
||||
|
||||
@@ -55,4 +55,5 @@ user
|
||||
user_menu
|
||||
user_role
|
||||
cdr_event
|
||||
ue_event
|
||||
#end
|
||||
Reference in New Issue
Block a user