1
0

marge: 合并代码

This commit is contained in:
TsMask
2023-10-31 18:36:11 +08:00
parent 05559e2c16
commit f8bf36f94b
13 changed files with 216 additions and 152 deletions

View File

@@ -121,51 +121,170 @@ func PostMMLToNF(w http.ResponseWriter, r *http.Request) {
services.ResponseWithJson(w, http.StatusOK, response)
return
}
defer conn.Close()
loginStr := fmt.Sprintf("%s\n%s\n", config.GetYamlConfig().MML.User, config.GetYamlConfig().MML.Password)
n, err = conn.Write([]byte(loginStr))
if err != nil {
log.Errorf("Error: %s", err.Error())
return
}
time.Sleep(time.Millisecond * TIME_DELAY_AFTER_WRITE)
n, err = conn.Read(buf[0:])
if err != nil {
log.Errorf("Error: %s", err.Error())
return
}
log.Debug(string(buf[0:n]))
body, err := io.ReadAll(io.LimitReader(r.Body, global.RequestBodyMaxLen))
if err != nil {
log.Error("io.ReadAll is failed:", err)
services.ResponseNotFound404UriNotExist(w, r)
return
}
log.Debug("Body:", string(body))
mmlRequest := new(MMLRequest)
_ = json.Unmarshal(body, mmlRequest)
for _, mml := range mmlRequest.MML {
mmlCommand := fmt.Sprintf("%s\n", mml)
log.Debug("mml command:", mmlCommand)
_, err = conn.Write([]byte(mmlCommand))
conn.SetDeadline(time.Now().Add(10 * time.Second))
switch strings.ToLower(neType) {
case "upf":
body, err := io.ReadAll(io.LimitReader(r.Body, global.RequestBodyMaxLen))
if err != nil {
log.Errorf("Error: %s", err.Error())
log.Error("io.ReadAll is failed:", err)
services.ResponseNotFound404UriNotExist(w, r)
return
}
log.Trace("Body:", string(body))
mmlRequest := new(MMLRequest)
_ = json.Unmarshal(body, mmlRequest)
n, err = conn.Read(buf[0:])
if err != nil {
log.Error("Failed to read:", err)
mmlResult = append(mmlResult, err.Error())
response := Response{mmlResult}
services.ResponseWithJson(w, http.StatusOK, response)
return
}
log.Debug(string(buf[0:n]))
// loginStr := fmt.Sprintf("%s\n%s\n", config.GetYamlConfig().MML.User, config.GetYamlConfig().MML.Password)
// _, err = conn.Write([]byte(loginStr))
// if err != nil {
// log.Error("Failed to write:", err)
// mmlResult = append(mmlResult, err.Error())
// response := Response{mmlResult}
// services.ResponseWithJson(w, http.StatusOK, response)
// return
// }
// time.Sleep(time.Millisecond * TIME_DELAY_AFTER_WRITE)
n, err = conn.Write([]byte(config.GetYamlConfig().MML.User + "\n"))
if err != nil {
log.Error("Failed to write:", err)
mmlResult = append(mmlResult, err.Error())
response := Response{mmlResult}
services.ResponseWithJson(w, http.StatusOK, response)
return
}
log.Debug(string(buf[0:n]))
time.Sleep(time.Millisecond * TIME_DELAY_AFTER_WRITE)
// n, err = conn.Read(buf[0:])
// if err != nil {
// log.Error("Failed to read:", err)
// mmlResult = append(mmlResult, err.Error())
// response := Response{mmlResult}
// services.ResponseWithJson(w, http.StatusOK, response)
// return
// }
// log.Debug(string(buf[0:n]))
n, err = conn.Write([]byte(config.GetYamlConfig().MML.Password + "\n"))
if err != nil {
log.Error("Failed to write:", err)
mmlResult = append(mmlResult, err.Error())
response := Response{mmlResult}
services.ResponseWithJson(w, http.StatusOK, response)
return
}
log.Debug(string(buf[0:n]))
time.Sleep(time.Millisecond * TIME_DELAY_AFTER_WRITE)
// n, err = conn.Read(buf[0:])
// if err != nil {
// log.Error("Failed to read:", err)
// mmlResult = append(mmlResult, err.Error())
// response := Response{mmlResult}
// services.ResponseWithJson(w, http.StatusOK, response)
// return
// }
// log.Debug(string(buf[0:n]))
for _, mml := range mmlRequest.MML {
mmlCommand := fmt.Sprintf("%s\n", mml)
log.Debug("mml command:", mmlCommand)
_, err = conn.Write([]byte(mmlCommand))
if err != nil {
log.Error("Failed to write:", err)
mmlResult = append(mmlResult, err.Error())
response := Response{mmlResult}
services.ResponseWithJson(w, http.StatusOK, response)
return
}
time.Sleep(time.Millisecond * TIME_DELAY_AFTER_WRITE)
// n, err = conn.Read(buf[0:])
// if err != nil {
// log.Error("Failed to read:", err)
// mmlResult = append(mmlResult, err.Error())
// response := Response{mmlResult}
// services.ResponseWithJson(w, http.StatusOK, response)
// return
// }
// log.Trace(string(buf[0 : n-len(neType)-2]))
// mmlResult = append(mmlResult, string(buf[0:n-len(neType)-2]))
// can't read buffer from upf telnet server, so return ok always
mmlResult = append(mmlResult, "COMMAND OK\n")
}
default:
loginStr := fmt.Sprintf("%s\n%s\n", config.GetYamlConfig().MML.User, config.GetYamlConfig().MML.Password)
_, err = conn.Write([]byte(loginStr))
if err != nil {
log.Error("Failed to write:", err)
mmlResult = append(mmlResult, err.Error())
response := Response{mmlResult}
services.ResponseWithJson(w, http.StatusOK, response)
return
}
time.Sleep(time.Millisecond * TIME_DELAY_AFTER_WRITE)
n, err = conn.Read(buf[0:])
if err != nil {
log.Errorf("Error: %s", err.Error())
log.Error("Failed to read:", err)
mmlResult = append(mmlResult, err.Error())
response := Response{mmlResult}
services.ResponseWithJson(w, http.StatusOK, response)
return
}
log.Debug(string(buf[0 : n-len(neType)-2]))
mmlResult = append(mmlResult, string(buf[0:n-len(neType)-2]))
log.Trace(string(buf[0:n]))
body, err := io.ReadAll(io.LimitReader(r.Body, global.RequestBodyMaxLen))
if err != nil {
log.Error("Failed to ReadAll:", err)
services.ResponseNotFound404UriNotExist(w, r)
return
}
log.Trace("Body:", string(body))
mmlRequest := new(MMLRequest)
_ = json.Unmarshal(body, mmlRequest)
for _, mml := range mmlRequest.MML {
mmlCommand := fmt.Sprintf("%s\n", mml)
_, err = conn.Write([]byte(mmlCommand))
if err != nil {
log.Error("Failed to write:", err)
mmlResult = append(mmlResult, err.Error())
response := Response{mmlResult}
services.ResponseWithJson(w, http.StatusOK, response)
return
}
time.Sleep(time.Millisecond * TIME_DELAY_AFTER_WRITE)
n, err = conn.Read(buf[0:])
if err != nil {
log.Error("Failed to read:", err)
mmlResult = append(mmlResult, err.Error())
response := Response{mmlResult}
services.ResponseWithJson(w, http.StatusOK, response)
return
}
log.Trace(string(buf[0 : n-len(neType)-2]))
mmlResult = append(mmlResult, string(buf[0:n-len(neType)-2]))
}
}
}

View File

@@ -247,7 +247,7 @@ func (s *EmsLogger) SetLevel(l LogLevel) {
var Elogger Logger
func InitLogger(logFile string, period int, count int, prefix string, logLevel LogLevel) {
func InitLogger(logFile string, period int, count int, prefix string, logLevel LogLevel) io.Writer {
/*
logFile, err := os.OpenFile(file, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0766)
@@ -259,6 +259,7 @@ func InitLogger(logFile string, period int, count int, prefix string, logLevel L
logWriter := getLogWriter(logFile, period, count)
Elogger = NewEmsLogger3(logWriter, prefix, DEFAULT_LOG_FLAG, logLevel)
fmt.Printf("logFile=%s, period=%d, count=%d, prefix=%s, logLevel=%s\n", logFile, period, count, prefix, GetLevelString())
return logWriter
}
// Trace implement ILogger

View File

@@ -117,12 +117,12 @@ func init() {
Register("Get", fm.CustomUriAlarms, fm.GetAlarmFromNF, nil)
// performance restful Register
Register("POST", pm.PerformanceUri, pm.PostKPIReportFromNF, nil)
Register("POST", pm.MeasureTaskUri, pm.PostMeasureTaskToNF, nil)
Register("PUT", pm.MeasureTaskUri, pm.PutMeasureTaskToNF, nil)
Register("DELETE", pm.MeasureTaskUri, pm.DeleteMeasureTaskToNF, nil)
Register("PATCH", pm.MeasureTaskUri, pm.PatchMeasureTaskToNF, nil)
Register("POST", pm.MeasureReportUri, pm.PostMeasureReportFromNF, nil)
Register("POST", pm.PerformanceUri, pm.PostKPIReportFromNF, midware.LogOperate(collectlogs.OptionNew("KPIReport", collectlogs.BUSINESS_TYPE_INSERT)))
Register("POST", pm.MeasureTaskUri, pm.PostMeasureTaskToNF, midware.LogOperate(collectlogs.OptionNew("MeasureTask", collectlogs.BUSINESS_TYPE_INSERT)))
Register("PUT", pm.MeasureTaskUri, pm.PutMeasureTaskToNF, midware.LogOperate(collectlogs.OptionNew("MeasureTask", collectlogs.BUSINESS_TYPE_UPDATE)))
Register("DELETE", pm.MeasureTaskUri, pm.DeleteMeasureTaskToNF, midware.LogOperate(collectlogs.OptionNew("MeasureTask", collectlogs.BUSINESS_TYPE_DELETE)))
Register("PATCH", pm.MeasureTaskUri, pm.PatchMeasureTaskToNF, midware.LogOperate(collectlogs.OptionNew("MeasureTask", collectlogs.BUSINESS_TYPE_UPDATE)))
Register("POST", pm.MeasureReportUri, pm.PostMeasureReportFromNF, midware.LogOperate(collectlogs.OptionNew("MeasureTask", collectlogs.BUSINESS_TYPE_UPDATE)))
Register("POST", pm.MeasurementUri, pm.PostMeasurementFromNF, nil)
Register("GET", pm.MeasurementUri, pm.GetMeasurementFromNF, nil)
@@ -139,9 +139,9 @@ func init() {
// parameter config management
Register("GET", cm.ParamConfigUri, cm.GetParamConfigFromNF, nil)
Register("POST", cm.ParamConfigUri, cm.PostParamConfigToNF, nil)
Register("PUT", cm.ParamConfigUri, cm.PutParamConfigToNF, nil)
Register("DELETE", cm.ParamConfigUri, cm.DeleteParamConfigToNF, nil)
Register("POST", cm.ParamConfigUri, cm.PostParamConfigToNF, midware.LogOperate(collectlogs.OptionNew("Parameter config management", collectlogs.BUSINESS_TYPE_INSERT)))
Register("PUT", cm.ParamConfigUri, cm.PutParamConfigToNF, midware.LogOperate(collectlogs.OptionNew("Parameter config management", collectlogs.BUSINESS_TYPE_UPDATE)))
Register("DELETE", cm.ParamConfigUri, cm.DeleteParamConfigToNF, midware.LogOperate(collectlogs.OptionNew("Parameter config management", collectlogs.BUSINESS_TYPE_INSERT)))
Register("GET", cm.CustomParamConfigUri, cm.GetParamConfigFromNF, nil)
Register("POST", cm.CustomParamConfigUri, cm.PostParamConfigToNF, nil)
@@ -234,9 +234,9 @@ func init() {
Register("POST", trace.CustomUriTcpdumpNeUPFTask, trace.TcpdumpNeUPFTask, midware.LogOperate(collectlogs.OptionNew("Packet capturing task", collectlogs.BUSINESS_TYPE_INSERT)))
// file management
Register("POST", file.UriFile, file.UploadFile, nil)
Register("GET", file.UriFile, file.DownloadFile, nil)
Register("DELETE", file.UriFile, file.DeleteFile, nil)
Register("POST", file.UriFile, file.UploadFile, midware.LogOperate(collectlogs.OptionNew("File management", collectlogs.BUSINESS_TYPE_INSERT)))
Register("GET", file.UriFile, file.DownloadFile, midware.LogOperate(collectlogs.OptionNew("File management", collectlogs.BUSINESS_TYPE_OTHER)))
Register("DELETE", file.UriFile, file.DeleteFile, midware.LogOperate(collectlogs.OptionNew("File management", collectlogs.BUSINESS_TYPE_DELETE)))
Register("POST", file.CustomUriFile, file.UploadFile, nil)
Register("GET", file.CustomUriFile, file.DownloadFile, nil)

View File

@@ -13,9 +13,9 @@ server:
# 日志
logger:
fileDir: "/usr/local/omc/log"
fileName: "ems_agt.log"
fileName: "restagent.log"
level: 2 # 日志记录的等级 0:silent<1:info<2:warn<3:error
maxDay: 30 # 日志会保留 30 天
maxDay: 180 # 日志会保留 180 天
maxSize: 10 # 调整按 10MB 大小的切割
# 静态文件配置, 相对项目根路径或填绝对路径
@@ -175,7 +175,6 @@ user:
# 管理员列表
adminList:
- "1"
- "2"
# char 字符验证码配置
charCaptcha:

View File

@@ -35,7 +35,6 @@ func (s cronlog) Error(err error, msg string, keysAndValues ...any) {
if data, ok := job.Data.(JobData); ok {
// 日志数据
jobLog := jobLogData{
JobID: job.Opts.JobId,
Timestamp: job.Timestamp,
Data: data,
Result: err.Error(),
@@ -59,7 +58,6 @@ func (s cronlog) Completed(result any, msg string, keysAndValues ...any) {
if data, ok := job.Data.(JobData); ok {
// 日志数据
jobLog := jobLogData{
JobID: job.Opts.JobId,
Timestamp: job.Timestamp,
Data: data,
Result: result,
@@ -71,7 +69,6 @@ func (s cronlog) Completed(result any, msg string, keysAndValues ...any) {
// jobLogData 日志记录数据
type jobLogData struct {
JobID string
Timestamp int64
Data JobData
Result any
@@ -82,11 +79,6 @@ func (jl *jobLogData) SaveLog(status string) {
// 读取任务信息
sysJob := jl.Data.SysJob
// 任务ID与任务信息ID不相同
if jl.JobID == "" || jl.JobID != sysJob.JobID {
return
}
// 任务日志不需要记录
if sysJob.SaveLog == "" || sysJob.SaveLog == common.STATUS_NO {
return

View File

@@ -84,13 +84,13 @@ func (l *Logger) checkFile() {
currTime := time.Now()
if l.logDay != currTime.Day() {
l.logDay = currTime.Day()
l.rotateFile(currTime.AddDate(0, 0, -1).Format("2006_01_02"))
l.rotateFile(currTime.AddDate(0, 0, -1).Format("20060102"))
// 移除超过保存最长天数的文件
l.removeOldFile(currTime.AddDate(0, 0, -l.maxDay))
} else if fileInfo.Size() >= l.maxSize {
l.rotateFile(currTime.Format("2006_01_02_150405"))
l.rotateFile(currTime.Format("20060102_150405"))
} else if time.Since(fileInfo.ModTime()).Hours() > 24 {
l.rotateFile(fileInfo.ModTime().Format("2006_01_02"))
l.rotateFile(fileInfo.ModTime().Format("20060102"))
}
time.AfterFunc(1*time.Minute, l.checkFile)
@@ -100,7 +100,7 @@ func (l *Logger) checkFile() {
func (l *Logger) rotateFile(timeFormat string) {
l.fileHandle.Close()
newFileName := fmt.Sprintf("%s.%s", l.fileName, timeFormat)
newFileName := fmt.Sprintf("%s-%s", l.fileName, timeFormat)
newFilePath := filepath.Join(l.filePath, newFileName)
oldfilePath := filepath.Join(l.filePath, l.fileName)
@@ -134,14 +134,14 @@ func (l *Logger) removeOldFile(oldFileDate time.Time) {
}
for _, file := range files {
idx := strings.LastIndex(file.Name(), ".log.")
idx := strings.LastIndex(file.Name(), ".log-")
if idx == -1 {
continue
}
dateStr := file.Name()[idx+5 : idx+15]
dateStr := file.Name()[idx+5 : idx+13]
// 解析日期字符串
fileDate, err := time.Parse("2006_01_02", dateStr)
fileDate, err := time.Parse("20060102", dateStr)
if err != nil {
l.Errorf("logger RemoveOldFile Parse err: %v", err.Error())
continue

View File

@@ -15,11 +15,11 @@ func Setup(router *gin.Engine) {
// 路由主页
indexGroup := router.Group("/")
indexGroup.GET("",
middleware.RateLimit(middleware.LimitOption{
Time: 300,
Count: 10,
Type: middleware.LIMIT_IP,
}),
// middleware.RateLimit(middleware.LimitOption{
// Time: 300,
// Count: 10,
// Type: middleware.LIMIT_IP,
// }),
controller.NewIndex.Handler,
)
@@ -28,32 +28,32 @@ func Setup(router *gin.Engine) {
// 验证码操作处理
indexGroup.GET("/captchaImage",
middleware.RateLimit(middleware.LimitOption{
Time: 300,
Count: 60,
Type: middleware.LIMIT_IP,
}),
// middleware.RateLimit(middleware.LimitOption{
// Time: 300,
// Count: 60,
// Type: middleware.LIMIT_IP,
// }),
controller.NewCaptcha.Image,
)
// 账号身份操作处理
{
indexGroup.POST("/login",
middleware.RateLimit(middleware.LimitOption{
Time: 300,
Count: 10,
Type: middleware.LIMIT_IP,
}),
// middleware.RateLimit(middleware.LimitOption{
// Time: 300,
// Count: 10,
// Type: middleware.LIMIT_IP,
// }),
controller.NewAccount.Login,
)
indexGroup.GET("/getInfo", middleware.PreAuthorize(nil), controller.NewAccount.Info)
indexGroup.GET("/getRouters", middleware.PreAuthorize(nil), controller.NewAccount.Router)
indexGroup.POST("/logout",
middleware.RateLimit(middleware.LimitOption{
Time: 300,
Count: 5,
Type: middleware.LIMIT_IP,
}),
// middleware.RateLimit(middleware.LimitOption{
// Time: 300,
// Count: 5,
// Type: middleware.LIMIT_IP,
// }),
controller.NewAccount.Logout,
)
}
@@ -61,11 +61,11 @@ func Setup(router *gin.Engine) {
// 账号注册操作处理
{
indexGroup.POST("/register",
middleware.RateLimit(middleware.LimitOption{
Time: 300,
Count: 10,
Type: middleware.LIMIT_IP,
}),
// middleware.RateLimit(middleware.LimitOption{
// Time: 300,
// Count: 10,
// Type: middleware.LIMIT_IP,
// }),
controller.NewRegister.Register,
)
}

View File

@@ -10,5 +10,5 @@ type IMonitor interface {
RunMonitorDataCancel(removeBefore bool, interval float64)
// SelectMonitorInfo 查询监控资源信息
SelectMonitorInfo(query map[string]any) map[string]MonitorData
SelectMonitorInfo(query map[string]any) map[string]any
}

View File

@@ -212,14 +212,8 @@ func (s *MonitorImpl) saveNetDataToDB(ctx context.Context, interval float64) {
}
}
// MonitorData 监控资源信息
type MonitorData struct {
Date []int64 `json:"date"`
Value []any `json:"value"`
}
// SelectMonitorInfo 查询监控资源信息
func (s *MonitorImpl) SelectMonitorInfo(query map[string]any) map[string]MonitorData {
func (s *MonitorImpl) SelectMonitorInfo(query map[string]any) map[string]any {
infoType := query["type"]
startTimeMilli := query["startTime"]
endTimeMilli := query["endTime"]
@@ -228,7 +222,7 @@ func (s *MonitorImpl) SelectMonitorInfo(query map[string]any) map[string]Monitor
name := query["name"]
// 返回数据
backdatas := map[string]MonitorData{}
backDatas := map[string]any{}
// 基本信息
if infoType == "all" || infoType == "cpu" || infoType == "memory" {
@@ -238,13 +232,7 @@ func (s *MonitorImpl) SelectMonitorInfo(query map[string]any) map[string]Monitor
"neType": neType,
"neId": neId,
})
// 组装数据
var itemData MonitorData
for _, base := range rows {
itemData.Date = append(itemData.Date, base.CreateTime)
itemData.Value = append(itemData.Value, base)
}
backdatas["base"] = itemData
backDatas["base"] = rows
}
// 磁盘IO
@@ -256,13 +244,7 @@ func (s *MonitorImpl) SelectMonitorInfo(query map[string]any) map[string]Monitor
"neId": neId,
"name": name,
})
// 组装数据
var itemData MonitorData
for _, base := range rows {
itemData.Date = append(itemData.Date, base.CreateTime)
itemData.Value = append(itemData.Value, base)
}
backdatas["io"] = itemData
backDatas["io"] = rows
}
// 网络
@@ -274,14 +256,8 @@ func (s *MonitorImpl) SelectMonitorInfo(query map[string]any) map[string]Monitor
"neId": neId,
"name": name,
})
// 组装数据
var itemData MonitorData
for _, base := range rows {
itemData.Date = append(itemData.Date, base.CreateTime)
itemData.Value = append(itemData.Value, base)
}
backdatas["network"] = itemData
backDatas["network"] = rows
}
return backdatas
return backDatas
}

View File

@@ -120,8 +120,6 @@ func (s *SysProfileController) UpdateProfile(c *gin.Context) {
c.JSON(200, result.ErrMsg(msg))
return
}
} else {
body.PhoneNumber = "nil"
}
// 检查邮箱格式并判断是否唯一
@@ -138,8 +136,6 @@ func (s *SysProfileController) UpdateProfile(c *gin.Context) {
c.JSON(200, result.ErrMsg(msg))
return
}
} else {
body.Email = "nil"
}
// 用户基本资料

View File

@@ -387,9 +387,7 @@ func (r *SysMenuImpl) UpdateMenu(sysMenu model.SysMenu) int64 {
} else {
params["icon"] = "#"
}
if sysMenu.Remark != "" {
params["remark"] = sysMenu.Remark
}
params["remark"] = sysMenu.Remark
if sysMenu.UpdateBy != "" {
params["update_by"] = sysMenu.UpdateBy
params["update_time"] = time.Now().UnixMilli()

View File

@@ -248,9 +248,7 @@ func (r *SysRoleImpl) UpdateRole(sysRole model.SysRole) int64 {
if sysRole.Status != "" {
params["status"] = sysRole.Status
}
if sysRole.Remark != "" {
params["remark"] = sysRole.Remark
}
params["remark"] = sysRole.Remark
if sysRole.UpdateBy != "" {
params["update_by"] = sysRole.UpdateBy
params["update_time"] = time.Now().UnixMilli()

View File

@@ -476,23 +476,10 @@ func (r *SysUserImpl) UpdateUser(sysUser model.SysUser) int64 {
if sysUser.Avatar != "" {
params["avatar"] = sysUser.Avatar
}
if sysUser.Email != "" {
if sysUser.Email == "nil" {
params["email"] = ""
} else {
params["email"] = sysUser.Email
}
}
if sysUser.PhoneNumber != "" {
if sysUser.PhoneNumber == "nil" {
params["phonenumber"] = ""
} else {
params["phonenumber"] = sysUser.PhoneNumber
}
}
if sysUser.Sex != "" {
params["sex"] = sysUser.Sex
}
params["email"] = sysUser.Email
params["phonenumber"] = sysUser.PhoneNumber
params["sex"] = sysUser.Sex
if sysUser.Password != "" {
password := crypto.BcryptHash(sysUser.Password)
params["password"] = password
@@ -500,9 +487,7 @@ func (r *SysUserImpl) UpdateUser(sysUser model.SysUser) int64 {
if sysUser.Status != "" {
params["status"] = sysUser.Status
}
if sysUser.Remark != "" {
params["remark"] = sysUser.Remark
}
params["remark"] = sysUser.Remark
if sysUser.UpdateBy != "" {
params["update_by"] = sysUser.UpdateBy
params["update_time"] = time.Now().UnixMilli()