1
0

marge: 合并代码

This commit is contained in:
TsMask
2023-11-30 17:24:43 +08:00
parent 3df3b5b5f7
commit 3c56f1ae36
14 changed files with 353 additions and 74 deletions

13
.vscode/launch.json vendored
View File

@@ -10,14 +10,15 @@
"request": "launch",
"mode": "debug",
"program": "./restagent/restagent.go",
"console": "integratedTerminal"
"console": "integratedTerminal",
"args": ["--env", "local"] // 走开发配置
},
{
"name": "DEBUG restagent",
"type": "go",
"request": "launch",
"mode": "debug",
"program": "d:/local.git/ems.agt/restagent/restagent.go",
"program": "d:/local.git/ems.agt/restagent/",
"console": "integratedTerminal"
},
{
@@ -36,6 +37,14 @@
"program": "d:/local.git/ems.agt/tools/loadpconf",
"args": ["-p","../../config/param/upf_param_config.yaml"],
"console": "integratedTerminal"
},
{
"name": "debug crontask",
"type": "go",
"request": "launch",
"mode": "debug",
"program": "d:/local.git/ems.agt/crontask",
"console": "integratedTerminal"
}
]
}

View File

@@ -44,6 +44,7 @@ var (
XormCommonUri = config.DefaultUriPrefix + "/databaseManagement/{apiVersion}/{elementTypeValue}/{objectTypeValue}" // for internal
XormDatabaseUri = config.DefaultUriPrefix + "/database/{apiVersion}/{elementTypeValue}/{objectTypeValue}" // for crontask
XormDataRestUri = config.DefaultUriPrefix + "/dataManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/{objectTypeValue}"
XormExtDataUri = config.DefaultUriPrefix + "/dataManagement/{apiVersion}/{elementTypeValue}/{objectTypeValue}" // for external
XormDataSQLUri = config.DefaultUriPrefix + "/dataManagement/{apiVersion}/{elementTypeValue}/{objectTypeValue}" // for external

View File

@@ -6,6 +6,7 @@ import (
"io"
"net"
"net/http"
"regexp"
"strings"
"time"
@@ -137,28 +138,18 @@ func PostMMLToNF(w http.ResponseWriter, r *http.Request) {
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))
// n, err = conn.Read(buf[0:])
// if err != nil {
// log.Error("Failed to write:", err)
// log.Error("Failed to read:", err)
// mmlResult = append(mmlResult, err.Error())
// response := Response{mmlResult}
// services.ResponseWithJson(w, http.StatusOK, response)
// return
// }
// time.Sleep(time.Millisecond * TIME_DELAY_AFTER_WRITE)
// log.Debug(string(buf[0:n]))
n, err = conn.Write([]byte(config.GetYamlConfig().MML.User + "\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())
@@ -166,9 +157,19 @@ func PostMMLToNF(w http.ResponseWriter, r *http.Request) {
services.ResponseWithJson(w, http.StatusOK, response)
return
}
log.Debug(string(buf[0:n]))
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)
@@ -179,17 +180,17 @@ func PostMMLToNF(w http.ResponseWriter, r *http.Request) {
// }
// 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]))
// 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)
// time.Sleep(time.Millisecond * TIME_DELAY_AFTER_WRITE)
// n, err = conn.Read(buf[0:])
// if err != nil {
@@ -214,19 +215,28 @@ func PostMMLToNF(w http.ResponseWriter, r *http.Request) {
}
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]))
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]))
re1 := regexp.MustCompile(`\x1B\[[0-9;]*[a-zA-Z]`) // 匹配包含␛的控制字符
//re2 := regexp.MustCompile(`\x00`) // 匹配空字符
re2 := regexp.MustCompile(`[\x00-\x08\x0B\x0C\x0E-\x1F\x7F\x1B]`) // 匹配空字符和包含␛的控制字符
//re := regexp.MustCompile(`[\x00-\x1F\x7F]`)
// upf telnet buffer只能读取一次需要去掉前面的多余字符
result := re1.ReplaceAllString(string(buf[config.GetYamlConfig().MML.UpfHeaderLength:n-len(neType)-2]), "")
result = re2.ReplaceAllString(result, "")
mmlResult = append(mmlResult, result)
//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")
// mmlResult = append(mmlResult, "COMMAND OK\n")
}
default:
loginStr := fmt.Sprintf("%s\n%s\n", config.GetYamlConfig().MML.User, config.GetYamlConfig().MML.Password)
@@ -283,7 +293,13 @@ func PostMMLToNF(w http.ResponseWriter, r *http.Request) {
return
}
log.Trace(string(buf[0 : n-len(neType)-2]))
mmlResult = append(mmlResult, string(buf[0:n-len(neType)-2]))
re1 := regexp.MustCompile(`\x1B\[[0-9;]*[a-zA-Z]`) // 匹配包含␛的控制字符
//re2 := regexp.MustCompile(`\x00`) // 匹配空字符
re2 := regexp.MustCompile(`[\x00-\x08\x0B\x0C\x0E-\x1F\x7F\x1B]`) // 匹配空字符和包含␛的控制字符
//re := regexp.MustCompile(`[\x00-\x1F\x7F]`)
result := re1.ReplaceAllString(string(buf[0:n-len(neType)-2]), "")
result = re2.ReplaceAllString(result, "")
mmlResult = append(mmlResult, result)
}
}
}

View File

@@ -3,6 +3,7 @@ package ue
import (
"encoding/json"
"fmt"
"io"
"net/http"
"time"
@@ -74,10 +75,14 @@ var (
UriNBInfo = config.DefaultUriPrefix + "/ueManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/nbInfo"
UriUEInfo = config.DefaultUriPrefix + "/ueManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/ueInfo"
UriUENum = config.DefaultUriPrefix + "/ueManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/ueNum"
UriPCFUser = config.DefaultUriPrefix + "/ueManagement/{apiVersion}/elementType/pcf/objectType/ueInfo"
UriPCFUserM = config.DefaultUriPrefix + "/ueManagement/{apiVersion}/elementType/pcf/objectType/ueInfo/{number}"
CustomUriNBInfo = config.UriPrefix + "/ueManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/nbInfo"
CustomUriUEInfo = config.UriPrefix + "/ueManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/ueInfo"
CustomUriUENum = config.UriPrefix + "/ueManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/ueNum"
CustomUriPCFUser = config.UriPrefix + "/ueManagement/{apiVersion}/elementType/pcf/objectType/ueInfo"
CustomUriPCFUserM = config.UriPrefix + "/ueManagement/{apiVersion}/elementType/pcf/objectType/ueInfo/{number}"
)
var client = resty.New()
@@ -153,7 +158,216 @@ func GetUEInfoFromNF(w http.ResponseWriter, r *http.Request) {
services.ResponseInternalServerError500ProcessError(w, err)
return
} else {
var response services.DataResponse
var response services.MapResponse
_ = json.Unmarshal(resp.Body(), &response)
services.ResponseWithJson(w, resp.StatusCode(), response)
return
}
}
// Get UEInfo from NF/NFs
func PostPCFUserInfo(w http.ResponseWriter, r *http.Request) {
log.Info("PostPCFUserInfo processing... ")
// vars := mux.Vars(r)
// neType := vars["elementTypeValue"]
// if neType == "" {
// services.ResponseNotFound404UriNotExist(w, r)
// return
// }
//neTypeLower := strings.ToLower(neType)
neType := "PCF"
var neId string
neIds := services.GetParamsArrByName("neId", r)
if len(neIds) == 1 {
neId = neIds[0]
} else {
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, 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
}
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)
body, err := io.ReadAll(io.LimitReader(r.Body, global.RequestBodyMaxLen)) //io.LimitReader限制大小
if err != nil {
log.Error("io.ReadAll is failed:", err)
services.ResponseNotFound404UriNotExist(w, r)
return
}
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"}).
SetBody(body).
Post(requestURI2NF)
if err != nil {
log.Error("Failed to post:", err)
services.ResponseInternalServerError500ProcessError(w, err)
return
} else {
var response services.MapResponse
_ = json.Unmarshal(resp.Body(), &response)
services.ResponseWithJson(w, resp.StatusCode(), response)
return
}
}
// Get UEInfo from NF/NFs
func PutPCFUserInfo(w http.ResponseWriter, r *http.Request) {
log.Info("PutPCFUserInfo processing... ")
// vars := mux.Vars(r)
// neType := vars["elementTypeValue"]
// if neType == "" {
// services.ResponseNotFound404UriNotExist(w, r)
// return
// }
//neTypeLower := strings.ToLower(neType)
neType := "PCF"
var neId string
neIds := services.GetParamsArrByName("neId", r)
if len(neIds) == 1 {
neId = neIds[0]
} else {
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, 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
}
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)
body, err := io.ReadAll(io.LimitReader(r.Body, global.RequestBodyMaxLen)) //io.LimitReader限制大小
if err != nil {
log.Error("io.ReadAll is failed:", err)
services.ResponseNotFound404UriNotExist(w, r)
return
}
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"}).
SetBody(body).
Put(requestURI2NF)
if err != nil {
log.Error("Failed to put:", err)
services.ResponseInternalServerError500ProcessError(w, err)
return
} else {
var response services.MapResponse
_ = json.Unmarshal(resp.Body(), &response)
services.ResponseWithJson(w, resp.StatusCode(), response)
return
}
}
// Get UEInfo from NF/NFs
func DeletePCFUserInfo(w http.ResponseWriter, r *http.Request) {
log.Info("DeletePCFUserInfo processing... ")
// vars := mux.Vars(r)
// neType := vars["elementTypeValue"]
// if neType == "" {
// services.ResponseNotFound404UriNotExist(w, r)
// return
// }
//neTypeLower := strings.ToLower(neType)
neType := "PCF"
var neId string
neIds := services.GetParamsArrByName("neId", r)
if len(neIds) == 1 {
neId = neIds[0]
} else {
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, 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
}
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"}).
Delete(requestURI2NF)
if err != nil {
log.Error("Failed to delete:", err)
services.ResponseInternalServerError500ProcessError(w, err)
return
} else {
var response services.MapResponse
_ = json.Unmarshal(resp.Body(), &response)
services.ResponseWithJson(w, resp.StatusCode(), response)
return
@@ -217,7 +431,7 @@ func GetUENumFromNF(w http.ResponseWriter, r *http.Request) {
services.ResponseInternalServerError500ProcessError(w, err)
return
} else {
var response services.DataResponse
var response services.MapResponse
_ = json.Unmarshal(resp.Body(), &response)
services.ResponseWithJson(w, resp.StatusCode(), response)
return
@@ -281,7 +495,7 @@ func GetNBInfoFromNF(w http.ResponseWriter, r *http.Request) {
services.ResponseInternalServerError500ProcessError(w, err)
return
} else {
var response services.DataResponse
var response services.MapResponse
_ = json.Unmarshal(resp.Body(), &response)
services.ResponseWithJson(w, resp.StatusCode(), response)
return

View File

@@ -99,6 +99,11 @@ func init() {
Register("PUT", dbrest.CustomXormCommonUri, dbrest.DatabaseUpdateData, nil)
Register("DELETE", dbrest.CustomXormCommonUri, dbrest.DatabaseDeleteData, nil)
Register("GET", dbrest.XormDataRestUri, dbrest.ExtDatabaseGetData, nil)
Register("POST", dbrest.XormDataRestUri, dbrest.ExtDatabaseInsertData, nil)
Register("PUT", dbrest.XormDataRestUri, dbrest.ExtDatabaseUpdateData, nil)
Register("DELETE", dbrest.XormDataRestUri, dbrest.ExtDatabaseDeleteData, nil)
Register("GET", dbrest.XormExtDataUri, dbrest.ExtDatabaseGetData, nil)
Register("POST", dbrest.XormExtDataUri, dbrest.ExtDatabaseInsertData, nil)
Register("PUT", dbrest.XormExtDataUri, dbrest.ExtDatabaseUpdateData, nil)
@@ -247,11 +252,29 @@ func init() {
// AAAA
Register("GET", aaaa.CustomUriAAAASSO, aaaa.GetSSOFromAAAA, nil)
// UEInfo
// UEInfo: SMF
Register("GET", ue.UriUEInfo, ue.GetUEInfoFromNF, nil)
Register("GET", ue.CustomUriUEInfo, ue.GetUEInfoFromNF, nil)
// UEInfo
// UEInfo: PCF
Register("GET", ue.UriPCFUser, ue.GetUEInfoFromNF, nil)
Register("GET", ue.CustomUriPCFUser, ue.GetUEInfoFromNF, nil)
Register("POST", ue.UriPCFUser, ue.PostPCFUserInfo, nil)
Register("POST", ue.CustomUriPCFUser, ue.PostPCFUserInfo, nil)
Register("PUT", ue.UriPCFUser, ue.PutPCFUserInfo, nil)
Register("PUT", ue.CustomUriPCFUser, ue.PutPCFUserInfo, nil)
Register("DELETE", ue.UriPCFUser, ue.DeletePCFUserInfo, nil)
Register("DELETE", ue.CustomUriPCFUser, ue.DeletePCFUserInfo, nil)
// PCFUEInfo: batch add/modify/delete
Register("POST", ue.UriPCFUserM, ue.PostPCFUserInfo, nil)
Register("POST", ue.CustomUriPCFUserM, ue.PostPCFUserInfo, nil)
Register("PUT", ue.UriPCFUserM, ue.PutPCFUserInfo, nil)
Register("PUT", ue.CustomUriPCFUserM, ue.PutPCFUserInfo, nil)
Register("DELETE", ue.UriPCFUserM, ue.DeletePCFUserInfo, nil)
Register("DELETE", ue.CustomUriPCFUserM, ue.DeletePCFUserInfo, nil)
// UE Number
Register("GET", ue.UriUENum, ue.GetUENumFromNF, nil)
Register("GET", ue.CustomUriUENum, ue.GetUENumFromNF, nil)

View File

@@ -38,6 +38,8 @@ type DataResponse struct {
Data interface{} `json:"data"`
}
type MapResponse map[string]any
type NullResponse struct {
nil interface{}
}

View File

@@ -106,6 +106,7 @@ type YamlConfig struct {
Password string `ymal:"password"`
MmlHome string `yaml:"mmlHome"`
Upload string `yaml:"upload"`
UpfHeaderLength int `yaml:"upfHeaderLength"`
} `yaml:"mml"`
NE struct {

View File

@@ -16,7 +16,7 @@ rest:
port: 3040
- ipv4: 0.0.0.0
ipv6:
port: 4443
port: 3443
scheme: https
caFile: ./etc/certs/rootca.crt
certFile: ./etc/certs/tsa-omc.crt
@@ -28,7 +28,7 @@ webServer:
listen:
- addr: :80
schema: http
- addr: :8443
- addr: :443
scheme: https
caFile: ./etc/certs/rootca.crt
certFile: ./etc/certs/tsa-omc.crt
@@ -64,6 +64,7 @@ redis:
# 多个数据源时可以用这个指定默认的数据源
defaultDataSourceName: "default"
# upfHeaderLength: spare upf buffer, must destroy
mml:
port: 4100
sleep: 200
@@ -71,6 +72,7 @@ mml:
password: admin
mmlHome: ./mmlhome
upload: /home/agtuser
upfHeaderLength: 2335
# NE config
ne:
@@ -80,8 +82,9 @@ ne:
omcdir: /usr/local/omc
scpdir: /tmp
licensedir: /usr/local/etc/{neType}/license
# backup etc list of IMS
# backup etc list of IMS,no space
etcListIMS: '{*.yaml,mmtel,vars.cfg}'
etcListDefault: '{*.yaml,*.conf,*.cfg}'
# chk2ne: true/false, if put OmcNeConfig parameters to NE
omc:

View File

@@ -112,7 +112,7 @@ security:
refererWhiteList:
- "127.0.0.1:3030"
xframe:
enable: true
enable: false
value: "SAMEORIGIN"
csp:
enable: true

View File

@@ -54,12 +54,11 @@ func (s *AccountController) Login(c *gin.Context) {
)
// 根据错误信息,创建系统访问记录
if err != nil {
msg := i18n.TKey(language, err.Error())
s.sysLogLoginService.CreateSysLogLogin(
loginBody.Username, commonConstants.STATUS_NO, msg+loginBody.Code,
loginBody.Username, commonConstants.STATUS_NO, err.Error(),
ipaddr, location, os, browser,
)
c.JSON(200, result.ErrMsg(msg))
c.JSON(200, result.ErrMsg(i18n.TKey(language, err.Error())))
return
}
@@ -78,9 +77,8 @@ func (s *AccountController) Login(c *gin.Context) {
} else {
s.accountService.UpdateLoginDateAndIP(&loginUser)
// 登录成功
msg := i18n.TKey(language, "app.common.loginSuccess")
s.sysLogLoginService.CreateSysLogLogin(
loginBody.Username, commonConstants.STATUS_YES, msg,
loginBody.Username, commonConstants.STATUS_YES, "app.common.loginSuccess",
ipaddr, location, os, browser,
)
}
@@ -152,7 +150,6 @@ func (s *AccountController) Router(c *gin.Context) {
// POST /logout
func (s *AccountController) Logout(c *gin.Context) {
language := ctx.AcceptLanguage(c)
msg := i18n.TKey(language, "app.common.logoutSuccess")
tokenStr := ctx.Authorization(c)
if tokenStr != "" {
// 存在token时记录退出信息
@@ -165,11 +162,11 @@ func (s *AccountController) Logout(c *gin.Context) {
// 创建系统访问记录 退出成功
s.sysLogLoginService.CreateSysLogLogin(
userName, commonConstants.STATUS_YES, msg,
userName, commonConstants.STATUS_YES, "app.common.logoutSuccess",
ipaddr, location, os, browser,
)
}
}
c.JSON(200, result.OkMsg(msg))
c.JSON(200, result.OkMsg(i18n.TKey(language, "app.common.logoutSuccess")))
}

View File

@@ -68,9 +68,8 @@ func (s *RegisterController) Register(c *gin.Context) {
)
// 根据错误信息,创建系统访问记录
if err != nil {
msg := err.Error() + " " + registerBody.Code
s.sysLogLoginService.CreateSysLogLogin(
registerBody.Username, commonConstants.STATUS_NO, msg,
registerBody.Username, commonConstants.STATUS_NO, err.Error(),
ipaddr, location, os, browser,
)
c.JSON(200, result.ErrMsg(err.Error()))

View File

@@ -113,6 +113,9 @@ func (r *UDMAuthImpl) InsertCSV(neID string, data []map[string]string) int64 {
prefixes := make(map[string]struct{})
for _, v := range data {
imsi := v["imsi"]
if len(imsi) < 5 {
continue
}
prefix := imsi[:len(imsi)-4]
prefixes[prefix] = struct{}{}
}
@@ -133,6 +136,9 @@ func (r *UDMAuthImpl) InsertTxt(neID string, data [][]string) int64 {
prefixes := make(map[string]struct{})
for _, v := range data {
imsi := v[0]
if len(imsi) < 5 {
continue
}
prefix := imsi[:len(imsi)-4]
prefixes[prefix] = struct{}{}
}

View File

@@ -129,6 +129,9 @@ func (r *UDMSubImpl) InsertCSV(neID string, data []map[string]string) int64 {
prefixes := make(map[string]struct{})
for _, v := range data {
imsi := v["imsi"]
if len(imsi) < 5 {
continue
}
prefix := imsi[:len(imsi)-4]
prefixes[prefix] = struct{}{}
}
@@ -149,6 +152,9 @@ func (r *UDMSubImpl) InsertTxt(neID string, data [][]string) int64 {
prefixes := make(map[string]struct{})
for _, v := range data {
imsi := v[0]
if len(imsi) < 5 {
continue
}
prefix := imsi[:len(imsi)-4]
prefixes[prefix] = struct{}{}
}

View File

@@ -50,6 +50,7 @@ func (s *SysLogLoginController) List(c *gin.Context) {
(*arr)[i].LoginLocation = i18n.TKey(language, (*arr)[i].LoginLocation)
(*arr)[i].OS = i18n.TKey(language, (*arr)[i].OS)
(*arr)[i].Browser = i18n.TKey(language, (*arr)[i].Browser)
(*arr)[i].Msg = i18n.TKey(language, (*arr)[i].Msg)
}
}
converI18n(language, &rows)
@@ -135,6 +136,7 @@ func (s *SysLogLoginController) Export(c *gin.Context) {
(*arr)[i].LoginLocation = i18n.TKey(language, (*arr)[i].LoginLocation)
(*arr)[i].OS = i18n.TKey(language, (*arr)[i].OS)
(*arr)[i].Browser = i18n.TKey(language, (*arr)[i].Browser)
(*arr)[i].Msg = i18n.TKey(language, (*arr)[i].Msg)
}
}
converI18n(language, &rows)