Merge remote-tracking branch 'origin/main' into lichang

This commit is contained in:
TsMask
2024-04-17 10:57:07 +08:00
31 changed files with 440 additions and 265 deletions

View File

@@ -1,7 +1,7 @@
# Makefile for rest agent project
PROJECT = OMC
VERSION = 2.2404.3
VERSION = 2.2404.4
PLATFORM = amd64
ARMPLATFORM = aarch64
BUILDDIR = ../../build

View File

@@ -55,13 +55,13 @@ redis:
default:
port: 6379 # Redis port
host: "127.0.0.1" # Redis host
password: ""
password: "helloearth"
db: 10 # Redis db_num
# UDM sub/auth db
udmuser:
port: 6379 # Redis port
host: "127.0.0.1"
password: ""
password: "helloearth"
db: 0 # Redis db_num
# used to specify the default data source for multiple data resourece
defaultDataSourceName: "default"
@@ -73,6 +73,9 @@ mml:
port2: 5002
sleep: 200
deadLine: 10
sizeRow: 100
sizeCol: 128
bufferSize: 65535
user: admin
password: admin
mmlHome: ./mmlhome

View File

@@ -1,7 +1,7 @@
# Makefile for OMC-OMC-crontask project
PROJECT = OMC
VERSION = 2.2404.3
VERSION = 2.2404.4
LIBDIR = be.ems/lib
BINNAME = crontask

View File

@@ -1,7 +1,7 @@
# Makefile for rest agent project
PROJECT = OMC
VERSION = 2.2404.3
VERSION = 2.2404.4
RelDate = `date +%Y%m%d`
Release = $(RelDate)
RelVer = $(VERSION)-$(RelDate)

View File

@@ -1,52 +1,41 @@
-- MariaDB dump 10.19 Distrib 10.6.16-MariaDB, for debian-linux-gnu (x86_64)
--
-- Host: 192.168.2.219 Database: omc_db
-- ------------------------------------------------------
-- Server version 10.3.38-MariaDB
/*
Navicat Premium Data Transfer
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
Source Server : local_mariadb
Source Server Type : MariaDB
Source Server Version : 100338 (10.3.38-MariaDB)
Source Host : localhost:33066
Source Schema : omc_db
--
-- Table structure for table `ne_state`
--
Target Server Type : MariaDB
Target Server Version : 100338 (10.3.38-MariaDB)
File Encoding : 65001
Date: 16/04/2024 09:47:50
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for ne_state
-- ----------------------------
DROP TABLE IF EXISTS `ne_state`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `ne_state` (
CREATE TABLE `ne_state` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ne_type` varchar(16) DEFAULT NULL,
`ne_id` varchar(32) DEFAULT NULL,
`version` varchar(16) DEFAULT NULL,
`capability` varchar(64) DEFAULT NULL,
`serial_num` varchar(16) DEFAULT NULL,
`expiry_date` date DEFAULT NULL,
`cpu_usage` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
`mem_usage` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
`disk_space` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
`timestamp` datetime DEFAULT current_timestamp(),
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`ne_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`version` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`capability` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`serial_num` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`expiry_date` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '-',
`cpu_usage` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
`mem_usage` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
`disk_space` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
`timestamp` datetime NULL DEFAULT current_timestamp(),
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_ne_type_id` (`ne_type`,`ne_id`) USING BTREE,
KEY `idx_timestamp` (`timestamp`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=8047062 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
INDEX `idx_ne_type_id`(`ne_type`, `ne_id`) USING BTREE,
INDEX `idx_timestamp`(`timestamp`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 8551941 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2024-03-06 17:26:57
SET FOREIGN_KEY_CHECKS = 1;

File diff suppressed because one or more lines are too long

View File

@@ -638,7 +638,7 @@ SET
`is_frame` = '1',
`is_cache` = '0',
`menu_type` = 'M',
`visible` = '1',
`visible` = '0',
`status` = '1',
`perms` = 'traceManage:task:index',
`icon` = 'icon-chexiao',
@@ -660,7 +660,7 @@ SET
`is_frame` = '1',
`is_cache` = '0',
`menu_type` = 'M',
`visible` = '1',
`visible` = '0',
`status` = '1',
`perms` = 'traceManage:analysis:index',
`icon` = 'icon-gongnengjieshao',

View File

@@ -183,4 +183,7 @@ ADD INDEX IF NOT EXISTS `idx_severity_status` (
) USING BTREE;
ALTER TABLE `omc_db`.`mml_system`
ADD COLUMN IF NOT EXISTS `object_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 'mml' AFTER `mml_display`;
ADD COLUMN IF NOT EXISTS `object_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 'mml' AFTER `mml_display`;
ALTER TABLE `omc_db`.`ne_state`
MODIFY COLUMN `expiry_date` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '-' AFTER `serial_num`;

View File

@@ -637,7 +637,7 @@ SET
`is_frame` = '1',
`is_cache` = '0',
`menu_type` = 'M',
`visible` = '1',
`visible` = '0',
`status` = '1',
`perms` = 'traceManage:task:index',
`icon` = 'icon-chexiao',
@@ -659,7 +659,7 @@ SET
`is_frame` = '1',
`is_cache` = '0',
`menu_type` = 'M',
`visible` = '1',
`visible` = '0',
`status` = '1',
`perms` = 'traceManage:analysis:index',
`icon` = 'icon-gongnengjieshao',

View File

@@ -183,4 +183,7 @@ ADD INDEX IF NOT EXISTS `idx_severity_status` (
) USING BTREE;
ALTER TABLE `omc_db`.`mml_system`
ADD COLUMN IF NOT EXISTS `object_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 'mml' AFTER `mml_display`;
ADD COLUMN IF NOT EXISTS `object_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 'mml' AFTER `mml_display`;
ALTER TABLE `omc_db`.`ne_state`
MODIFY COLUMN `expiry_date` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '-' AFTER `serial_num`;

View File

@@ -858,15 +858,20 @@ func PostNeServiceAction(w http.ResponseWriter, r *http.Request) {
sshHost := fmt.Sprintf("%s@%s", config.GetYamlConfig().NE.User, neInfo.Ip)
switch neTypeLower {
case "omc":
actionCmd := fmt.Sprintf("sudo %s/bin/omcsvc.sh %s", config.GetYamlConfig().NE.OmcDir, action)
cmd := exec.Command("ssh", sshHost, actionCmd)
out, err := cmd.CombinedOutput()
log.Debugf("Exec output: %v", string(out))
if err != nil {
log.Errorf("Faile to execute ssh %s omc:%v", action, err)
services.ResponseInternalServerError500ProcessError(w, err)
return
}
// send 204 to fe firstly
services.ResponseStatusOK204NoContent(w)
//actionCmd := fmt.Sprintf("sudo %s/bin/omcsvc.sh %s", config.GetYamlConfig().NE.OmcDir, action)
actionCmd := fmt.Sprintf("sudo systemctl %s restagent", action)
go RunSSHCmd(sshHost, actionCmd)
return
// cmd := exec.Command("ssh", sshHost, actionCmd)
// out, err := cmd.CombinedOutput()
// log.Debugf("Exec output: %v", string(out))
// if err != nil {
// log.Errorf("Faile to execute ssh %s omc:%v", action, err)
// services.ResponseInternalServerError500ProcessError(w, err)
// return
// }
case "ims":
switch action {
case "start", "stop":

View File

@@ -930,7 +930,7 @@ func RollBackSoftwareToNF(w http.ResponseWriter, r *http.Request) {
return
}
services.ResponseStatusOK204NoContent(w)
RunSSHCmd(sshHost, runCmd)
go RunSSHCmd(sshHost, runCmd)
return
}
err = RunSSHCmd(sshHost, runCmd)

View File

@@ -51,16 +51,24 @@ var (
CustomUriOmMmlInt = config.UriPrefix + "/omManagement/{apiVersion}/mml/{neType}/{neId}"
)
var TIME_DELAY_AFTER_WRITE time.Duration = 200
var TIME_DEAD_LINE time.Duration = 10
var (
TIME_DELAY_AFTER_WRITE time.Duration = 200
TIME_DEAD_LINE time.Duration = 10
WIN_ROW_SIZE byte = 100
WIN_COL_SIZE byte = 100
BUFFER_SIZE int = 65535
)
func init() {
func InitMML() {
if config.GetYamlConfig().MML.Sleep != 0 {
TIME_DELAY_AFTER_WRITE = time.Duration(config.GetYamlConfig().MML.Sleep)
}
if config.GetYamlConfig().MML.DeadLine != 0 {
TIME_DEAD_LINE = time.Duration(config.GetYamlConfig().MML.DeadLine)
}
WIN_ROW_SIZE = config.GetYamlConfig().MML.SizeRow
WIN_COL_SIZE = config.GetYamlConfig().MML.SizeCol
BUFFER_SIZE = config.GetYamlConfig().MML.BufferSize
}
func PostMML2ToNF(w http.ResponseWriter, r *http.Request) {
@@ -78,8 +86,7 @@ func PostMML2ToNF(w http.ResponseWriter, r *http.Request) {
return
}
var buf [100 * 1024]byte
//buf := make([]byte, 0)
buf := make([]byte, BUFFER_SIZE)
var n int
var mmlResult []string
port2 := 5002
@@ -90,6 +97,7 @@ func PostMML2ToNF(w http.ResponseWriter, r *http.Request) {
if neInfo != nil {
hostMML := fmt.Sprintf("%s:%d", neInfo.Ip, port2)
conn, err := net.Dial("tcp", hostMML)
//conn, err := net.Dial("tcp", hostMML)
if err != nil {
errMsg := fmt.Sprintf("Failed to dial %s: %v", hostMML, err)
log.Error(errMsg)
@@ -110,6 +118,9 @@ 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.SetDeadline(time.Now().Add(TIME_DEAD_LINE * time.Second))
loginStr := fmt.Sprintf("%s\n%s\n", config.GetYamlConfig().MML.User, config.GetYamlConfig().MML.Password)

View File

@@ -10,9 +10,9 @@ import (
"path/filepath"
"strings"
"be.ems/lib/core/vo"
commonConstants "be.ems/src/framework/constants/common"
tokenConst "be.ems/src/framework/constants/token"
"be.ems/src/framework/constants/token"
tokenUtils "be.ems/src/framework/utils/token"
"be.ems/src/framework/vo"
"github.com/gorilla/mux"
"golang.org/x/text/language"
)
@@ -122,12 +122,26 @@ func SaveUploadedFile(r *http.Request, dst string) error {
// Authorization 解析请求头
func Authorization(r *http.Request) string {
authHeader := r.Header.Get(tokenConst.HEADER_KEY)
// Query请求查询
if authQuery := r.URL.Query().Get(token.ACCESS_TOKEN); authQuery != "" {
return authQuery
}
// Header请求头
if authHeader := r.Header.Get(token.ACCESS_TOKEN); authHeader != "" {
return authHeader
}
// Query请求查询
if authQuery := r.URL.Query().Get(token.RESPONSE_FIELD); authQuery != "" {
return authQuery
}
// Header请求头
authHeader := r.Header.Get(token.HEADER_KEY)
if authHeader == "" {
return ""
}
// 拆分 Authorization 请求头,提取 JWT 令牌部分
arr := strings.Split(authHeader, tokenConst.HEADER_PREFIX)
arr := strings.Split(authHeader, token.HEADER_PREFIX)
if len(arr) == 2 && arr[1] == "" {
return ""
}
@@ -164,12 +178,24 @@ type ContextKey string
// LoginUser 登录用户信息需要Authorize中间件
func LoginUser(r *http.Request) (vo.LoginUser, error) {
// 上下文
v := r.Context().Value(ContextKey(commonConstants.CTX_LOGIN_USER))
if v != nil {
return v.(vo.LoginUser), nil
// 获取请求头标识信息
tokenStr := Authorization(r)
if tokenStr == "" {
return vo.LoginUser{}, fmt.Errorf("not token info")
}
return vo.LoginUser{}, fmt.Errorf("No user information")
// 验证令牌
claims, err := tokenUtils.Verify(tokenStr)
if err != nil {
return vo.LoginUser{}, fmt.Errorf("token verify fail")
}
// 获取缓存的用户信息
loginUser := tokenUtils.LoginUser(claims)
if loginUser.UserID == "" {
return vo.LoginUser{}, fmt.Errorf("not user info")
}
return loginUser, nil
}
// LoginUserToUserID 登录用户信息-用户ID
@@ -187,5 +213,5 @@ func LoginUserToUserName(r *http.Request) string {
if err != nil {
return ""
}
return loginUser.UserName
return loginUser.User.UserName
}

View File

@@ -12,7 +12,6 @@ import (
"be.ems/lib/core/datasource"
"be.ems/lib/core/utils/ctx"
"be.ems/lib/core/utils/date"
"be.ems/lib/dborm"
"be.ems/lib/log"
)
@@ -50,19 +49,12 @@ func LogMML(next http.Handler) http.Handler {
resultStr := fmt.Sprintf(`{"status":"%s","size":"%s","content-type":"%s"}`, status, size, contentType)
// 用户名
username := "-"
accessToken := r.Header.Get("AccessToken")
if accessToken != "" {
// 验证令牌 == 这里直接查数据库session
se, _ := dborm.XormUpdateSessionShakeTime(accessToken)
username = se.AccountId
}
username := ctx.LoginUserToUserName(r)
// 执行插入
sql := "insert into mml_log (user,ip,ne_type,ne_id,mml,result,log_time)values(?,?,?,?,?,?,?)"
_, sqlerr := datasource.ExecDB("", sql, []any{username, ipAddr, neType, neId, mmlCmd, resultStr, timeStr})
if sqlerr != nil {
log.Errorf("insert row : %v", err.Error())
log.Errorf("insert row : %v", sqlerr.Error())
}
})
}

View File

@@ -174,11 +174,11 @@ func init() {
Register("POST", mml.UriMML, mml.PostMMLToNF, midware.LogMML)
Register("POST", mml.UriMMLDiscard, mml.PostMMLToNF, nil)
Register("POST", mml.UriOmMmlExt, mml.PostMMLToOMC, midware.LogMML)
Register("POST", mml.CustomUriMML, mml.PostMMLToNF, midware.LogMML)
Register("POST", mml.CustomUriOmMmlExt, mml.PostMMLToOMC, midware.LogMML)
Register("POST", mml.CustomUriMML, mml.PostMMLToNF, nil)
Register("POST", mml.CustomUriOmMmlExt, mml.PostMMLToOMC, nil)
// post mml2 (standard upf port=5002)
Register("POST", mml.UriMML2, mml.PostMML2ToNF, midware.LogMML)
Register("POST", mml.CustomUriMML2, mml.PostMML2ToNF, midware.LogMML)
Register("POST", mml.CustomUriMML2, mml.PostMML2ToNF, nil)
// Northbound Get NRM
Register("GET", nbi.GetNRMUri, nbi.NBIGetNRMFromNF, nil)

View File

@@ -3,7 +3,7 @@
ProjectL = omc
ProjectU = OMC
PROJECT = $(ProjectL)
VERSION = 2.2404.3
VERSION = 2.2404.4
RelDate = `date +%Y%m%d`
Release = $(RelDate)
RelVer = $(VERSION)-$(RelDate)

View File

@@ -27,7 +27,7 @@ case "${extension}" in
EOF
if [ ${neType} == "OMC" ]; then
${omcBin}/setomc.sh -m upgrade >> ${logFile}
${omcBin}/omcsvc.sh restart
${omcBin}/omcsvc.sh restart >> ${logFile}
fi
;;
rpm)
@@ -43,7 +43,7 @@ EOF
EOF
if [ ${neType} == "OMC" ]; then
${omcBin}/setomc.sh -m upgrade >> ${logFile}
${omcBin}/omcsvc.sh restart
${omcBin}/omcsvc.sh restart >> ${logFile}
fi
;;
*)

View File

@@ -27,7 +27,7 @@ case "${extension}" in
EOF
if [ ${neType} == "OMC" ]; then
${omcBin}/setomc.sh -m upgrade >> ${logFile}
${omcBin}/omcsvc.sh restart
${omcBin}/omcsvc.sh restart >> ${logFile}
fi
;;
rpm)
@@ -43,7 +43,7 @@ EOF
EOF
if [ ${neType} == "OMC" ]; then
${omcBin}/setomc.sh -m upgrade >> ${logFile}
${omcBin}/omcsvc.sh restart
${omcBin}/omcsvc.sh restart >> ${logFile}
fi
;;
*)

View File

@@ -2,7 +2,7 @@
ProcList="restagent crontask sshsvc captrace data2html"
ProjectL=omc
VERSION=2.2404.3
VERSION=2.2404.4
RelDate=`date +%Y%m%d`
Release=${RelDate}
RelVer=${VERSION}-${RelDate}

View File

@@ -11,17 +11,6 @@ import (
"gopkg.in/yaml.v3"
)
type DbConfig struct {
Type string `yaml:"type"`
User string `yaml:"user"`
Password string `yaml:"password"`
Host string `yaml:"host"`
Port string `yaml:"port"`
Name string `yaml:"name"`
ConnParam string `yaml:"connParam,omitempty"`
Backup string `yaml:"backup"`
}
// Yaml struct of config
type YamlConfig struct {
Logger struct {
@@ -110,16 +99,7 @@ type YamlConfig struct {
} `yaml:"smsc"`
} `yaml:"alarm"`
MML struct {
Port int `yaml:"port"`
Port2 int `yaml:"port2"`
Sleep int64 `yaml:"sleep"`
DeadLine int64 `yaml:"deadLine"`
User string `yaml:"user"`
Password string `ymal:"password"`
MmlHome string `yaml:"mmlHome"`
Upload string `yaml:"upload"`
} `yaml:"mml"`
MML MMLParam `yaml:"mml"`
NE struct {
Addr string `yaml:"addr"`
@@ -171,6 +151,31 @@ type RestParam struct {
KeyFile string `yaml:"keyFile"`
}
type DbConfig struct {
Type string `yaml:"type"`
User string `yaml:"user"`
Password string `yaml:"password"`
Host string `yaml:"host"`
Port string `yaml:"port"`
Name string `yaml:"name"`
ConnParam string `yaml:"connParam,omitempty"`
Backup string `yaml:"backup"`
}
type MMLParam struct {
Port int `yaml:"port"`
Port2 int `yaml:"port2"`
Sleep int64 `yaml:"sleep"`
DeadLine int64 `yaml:"deadLine"`
SizeRow byte `yaml:"sizeRow"`
SizeCol byte `yaml:"sizeCol"`
BufferSize int `yaml:"bufferSize"`
User string `yaml:"user"`
Password string `ymal:"password"`
MmlHome string `yaml:"mmlHome"`
Upload string `yaml:"upload"`
}
type TestDatas struct {
UDM struct {
CapUsed uint32 `yaml:"capUsed"`
@@ -211,6 +216,11 @@ func NewYamlConfig() YamlConfig {
Type: "mysql",
ConnParam: "charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=True&interpolateParams=True",
},
MML: MMLParam{
SizeRow: 100,
SizeCol: 128,
BufferSize: 65535,
},
}
}

View File

@@ -73,6 +73,9 @@ mml:
port2: 5002
sleep: 200
deadLine: 10
sizeRow: 100
sizeCol: 128
bufferSize: 65535
user: admin
password: admin
mmlHome: ./mmlhome

View File

@@ -1,7 +1,7 @@
# Makefile for rest agent project
PROJECT = OMC
VERSION = 2.2404.3
VERSION = 2.2404.4
PLATFORM = amd64
ARMPLATFORM = aarch64
BUILDDIR = ../../build

View File

@@ -13,6 +13,7 @@ import (
"be.ems/features/event"
"be.ems/features/fm"
"be.ems/features/lm"
"be.ems/features/mml"
"be.ems/features/pm"
"be.ems/lib/dborm"
"be.ems/lib/global"
@@ -21,7 +22,6 @@ import (
"be.ems/restagent/config"
"be.ems/src"
"be.ems/src/framework/middleware"
libSession "be.ems/src/lib_features/session"
"github.com/gin-gonic/gin"
"golang.org/x/net/http2"
"golang.org/x/net/http2/h2c"
@@ -227,16 +227,16 @@ func main() {
os.Exit(4)
}
mml.InitMML()
// 将 mux.Router 注册到 gin.Engine
// 默认路由组
defaultUriGroup := app.Group(config.DefaultUriPrefix)
defaultUriGroup.Use(middleware.PreAuthorize(nil))
defaultUriGroup.Use(libSession.SessionHeader())
defaultUriGroup.Any("/*any", gin.WrapH(routes.NewRouter()))
// 可配置前缀路由组
uriGroup := app.Group(config.UriPrefix)
uriGroup.Use(libSession.SessionHeader())
uriGroup.Any("/*any", gin.WrapH(routes.NewRouter()))
// AMF上报的UE事件, 无前缀,暂时特殊处理
app.POST(event.UriUEEvent, event.PostUEEventFromAMF)

View File

@@ -1,7 +1,7 @@
# 项目信息
framework:
name: "CN EMS"
version: "2.2404.3"
version: "2.2404.4"
# 应用服务配置
server:

View File

@@ -1,39 +0,0 @@
package libfeatures
import (
"time"
"be.ems/lib/dborm"
"be.ems/lib/oauth"
libConfig "be.ems/restagent/config"
"be.ems/src/framework/logger"
"be.ems/src/framework/redis"
)
// SessionToken 设置登录会话-兼容旧登录方式
func SessionToken(username, sourceAddr string) bool {
// token, _ := redis.Get("", "session_token")
// if token != "" {
// se, err := dborm.XormUpdateSessionShakeTime(token)
// if se.AccountId != username || err != nil {
// // 过期时间单位秒 配置1800是半小时
// expireTime := time.Duration(int64(libConfig.GetExpiresFromConfig())) * time.Second
// redis.SetByExpire("", "session_token", token, expireTime)
// return true
// }
// }
// 不管原先的登录情况直接插入写入覆盖redis中session
//
token := oauth.GenRandToken("omc") // Generate new token to session ID
affected, err := dborm.XormInsertSession(username, sourceAddr, token, libConfig.GetExpiresFromConfig(), libConfig.GetYamlConfig().Auth.Session)
if err != nil {
logger.Errorf("SessionToken XormInsertSession err %v", err)
}
if affected >= 1 {
// 过期时间单位秒 配置1800是半小时
expireTime := time.Duration(int64(libConfig.GetExpiresFromConfig())) * time.Second
redis.SetByExpire("", "session_token", token, expireTime)
return true
}
return false
}

View File

@@ -1,5 +1,4 @@
# 外层 lib 和 features 粘合层
- config.go 配置合并: restagent.yaml 文件内容,主要是数据库配置
- account.go 登录会话生成 token
- session.go 中间件方式设置请求头 token 值

View File

@@ -1,28 +0,0 @@
package session
import (
"time"
libConfig "be.ems/restagent/config"
"be.ems/src/framework/redis"
"github.com/gin-gonic/gin"
)
// SessionHeader 旧登录方式token头
func SessionHeader() gin.HandlerFunc {
return func(c *gin.Context) {
// 读取登录生成的会话token
token, _ := redis.Get("", "session_token")
if token != "" {
// 过期时间单位秒 配置1800是半小时
expireTime := time.Duration(int64(libConfig.GetExpiresFromConfig())) * time.Second
redis.SetByExpire("", "session_token", token, expireTime)
c.Request.Header.Set("Accesstoken", token)
}
// Accesstoken: omc-ce4d0a86-8515-ad51-3249-4913c95f8e34
// 调用下一个处理程序
c.Next()
}
}

View File

@@ -9,7 +9,6 @@ import (
tokenUtils "be.ems/src/framework/utils/token"
"be.ems/src/framework/vo"
"be.ems/src/framework/vo/result"
libAccount "be.ems/src/lib_features/account"
commonModel "be.ems/src/modules/common/model"
commonService "be.ems/src/modules/common/service"
systemService "be.ems/src/modules/system/service"
@@ -83,9 +82,6 @@ func (s *AccountController) Login(c *gin.Context) {
)
}
// 设置登录会话-兼容旧登录方式
libAccount.SessionToken(loginBody.Username, ipaddr)
c.JSON(200, result.OkData(map[string]any{
tokenConstants.RESPONSE_FIELD: tokenStr,
}))

View File

@@ -116,17 +116,20 @@ func (s *BarProcessor) Execute(data any) (any, error) {
log.Trace("response body:", string(response.Body()))
state := new(SystemState)
_ = json.Unmarshal(response.Body(), &state)
var dateStr *string = nil
if state.ExpiryDate != "" && state.ExpiryDate != "-" {
dateStr = &state.ExpiryDate
}
// var dateStr *string = nil
// if state.ExpiryDate != "" && state.ExpiryDate != "-" {
// dateStr = &state.ExpiryDate
// }
neState := new(dborm.NeState)
neState.NeType = ne.NeType
neState.NeId = ne.NeId
neState.Version = state.Version
neState.Capability = state.Capability
neState.SerialNum = state.SerialNum
neState.ExpiryDate = *dateStr
// if dateStr != nil {
// neState.ExpiryDate = *dateStr
// }
neState.ExpiryDate = state.ExpiryDate
cu, _ := json.Marshal(state.CpuUsage)
neState.CpuUsage = string(cu)
mu, _ := json.Marshal(state.MemUsage)

View File

@@ -1,7 +1,7 @@
# Makefile for OMC-OMC-crontask project
PROJECT = OMC
VERSION = 2.2404.3
VERSION = 2.2404.4
LIBDIR = be.ems/lib
BINNAME = sshsvc