marge: 合并代码
This commit is contained in:
13
.vscode/launch.json
vendored
13
.vscode/launch.json
vendored
@@ -10,14 +10,15 @@
|
|||||||
"request": "launch",
|
"request": "launch",
|
||||||
"mode": "debug",
|
"mode": "debug",
|
||||||
"program": "./restagent/restagent.go",
|
"program": "./restagent/restagent.go",
|
||||||
"console": "integratedTerminal"
|
"console": "integratedTerminal",
|
||||||
|
"args": ["--env", "local"] // 走开发配置
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "DEBUG restagent",
|
"name": "DEBUG restagent",
|
||||||
"type": "go",
|
"type": "go",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"mode": "debug",
|
"mode": "debug",
|
||||||
"program": "d:/local.git/ems.agt/restagent/restagent.go",
|
"program": "d:/local.git/ems.agt/restagent/",
|
||||||
"console": "integratedTerminal"
|
"console": "integratedTerminal"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -36,6 +37,14 @@
|
|||||||
"program": "d:/local.git/ems.agt/tools/loadpconf",
|
"program": "d:/local.git/ems.agt/tools/loadpconf",
|
||||||
"args": ["-p","../../config/param/upf_param_config.yaml"],
|
"args": ["-p","../../config/param/upf_param_config.yaml"],
|
||||||
"console": "integratedTerminal"
|
"console": "integratedTerminal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "debug crontask",
|
||||||
|
"type": "go",
|
||||||
|
"request": "launch",
|
||||||
|
"mode": "debug",
|
||||||
|
"program": "d:/local.git/ems.agt/crontask",
|
||||||
|
"console": "integratedTerminal"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -44,6 +44,7 @@ var (
|
|||||||
|
|
||||||
XormCommonUri = config.DefaultUriPrefix + "/databaseManagement/{apiVersion}/{elementTypeValue}/{objectTypeValue}" // for internal
|
XormCommonUri = config.DefaultUriPrefix + "/databaseManagement/{apiVersion}/{elementTypeValue}/{objectTypeValue}" // for internal
|
||||||
XormDatabaseUri = config.DefaultUriPrefix + "/database/{apiVersion}/{elementTypeValue}/{objectTypeValue}" // for crontask
|
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
|
XormExtDataUri = config.DefaultUriPrefix + "/dataManagement/{apiVersion}/{elementTypeValue}/{objectTypeValue}" // for external
|
||||||
XormDataSQLUri = config.DefaultUriPrefix + "/dataManagement/{apiVersion}/{elementTypeValue}/{objectTypeValue}" // for external
|
XormDataSQLUri = config.DefaultUriPrefix + "/dataManagement/{apiVersion}/{elementTypeValue}/{objectTypeValue}" // for external
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@@ -137,28 +138,18 @@ func PostMMLToNF(w http.ResponseWriter, r *http.Request) {
|
|||||||
mmlRequest := new(MMLRequest)
|
mmlRequest := new(MMLRequest)
|
||||||
_ = json.Unmarshal(body, mmlRequest)
|
_ = json.Unmarshal(body, mmlRequest)
|
||||||
|
|
||||||
n, err = conn.Read(buf[0:])
|
// 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 {
|
// if err != nil {
|
||||||
// log.Error("Failed to write:", err)
|
// log.Error("Failed to read:", err)
|
||||||
// mmlResult = append(mmlResult, err.Error())
|
// mmlResult = append(mmlResult, err.Error())
|
||||||
// response := Response{mmlResult}
|
// response := Response{mmlResult}
|
||||||
// services.ResponseWithJson(w, http.StatusOK, response)
|
// services.ResponseWithJson(w, http.StatusOK, response)
|
||||||
// return
|
// 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 {
|
if err != nil {
|
||||||
log.Error("Failed to write:", err)
|
log.Error("Failed to write:", err)
|
||||||
mmlResult = append(mmlResult, err.Error())
|
mmlResult = append(mmlResult, err.Error())
|
||||||
@@ -166,9 +157,19 @@ func PostMMLToNF(w http.ResponseWriter, r *http.Request) {
|
|||||||
services.ResponseWithJson(w, http.StatusOK, response)
|
services.ResponseWithJson(w, http.StatusOK, response)
|
||||||
return
|
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.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:])
|
// n, err = conn.Read(buf[0:])
|
||||||
// if err != nil {
|
// if err != nil {
|
||||||
// log.Error("Failed to read:", err)
|
// log.Error("Failed to read:", err)
|
||||||
@@ -179,17 +180,17 @@ func PostMMLToNF(w http.ResponseWriter, r *http.Request) {
|
|||||||
// }
|
// }
|
||||||
// log.Debug(string(buf[0:n]))
|
// log.Debug(string(buf[0:n]))
|
||||||
|
|
||||||
n, err = conn.Write([]byte(config.GetYamlConfig().MML.Password + "\n"))
|
// n, err = conn.Write([]byte(config.GetYamlConfig().MML.Password + "\n"))
|
||||||
if err != nil {
|
// if err != nil {
|
||||||
log.Error("Failed to write:", err)
|
// log.Error("Failed to write:", err)
|
||||||
mmlResult = append(mmlResult, err.Error())
|
// mmlResult = append(mmlResult, err.Error())
|
||||||
response := Response{mmlResult}
|
// response := Response{mmlResult}
|
||||||
services.ResponseWithJson(w, http.StatusOK, response)
|
// services.ResponseWithJson(w, http.StatusOK, response)
|
||||||
return
|
// return
|
||||||
}
|
// }
|
||||||
log.Debug(string(buf[0:n]))
|
// 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:])
|
// n, err = conn.Read(buf[0:])
|
||||||
// if err != nil {
|
// if err != nil {
|
||||||
@@ -214,19 +215,28 @@ func PostMMLToNF(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
time.Sleep(time.Millisecond * TIME_DELAY_AFTER_WRITE)
|
time.Sleep(time.Millisecond * TIME_DELAY_AFTER_WRITE)
|
||||||
|
|
||||||
// n, err = conn.Read(buf[0:])
|
n, err = conn.Read(buf[0:])
|
||||||
// if err != nil {
|
if err != nil {
|
||||||
// log.Error("Failed to read:", err)
|
log.Error("Failed to read:", err)
|
||||||
// mmlResult = append(mmlResult, err.Error())
|
mmlResult = append(mmlResult, err.Error())
|
||||||
// response := Response{mmlResult}
|
response := Response{mmlResult}
|
||||||
// services.ResponseWithJson(w, http.StatusOK, response)
|
services.ResponseWithJson(w, http.StatusOK, response)
|
||||||
// return
|
return
|
||||||
// }
|
}
|
||||||
// log.Trace(string(buf[0 : n-len(neType)-2]))
|
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]`)
|
||||||
|
// 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
|
// 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:
|
default:
|
||||||
loginStr := fmt.Sprintf("%s\n%s\n", config.GetYamlConfig().MML.User, config.GetYamlConfig().MML.Password)
|
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
|
return
|
||||||
}
|
}
|
||||||
log.Trace(string(buf[0 : n-len(neType)-2]))
|
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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package ue
|
|||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@@ -74,10 +75,14 @@ var (
|
|||||||
UriNBInfo = config.DefaultUriPrefix + "/ueManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/nbInfo"
|
UriNBInfo = config.DefaultUriPrefix + "/ueManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/nbInfo"
|
||||||
UriUEInfo = config.DefaultUriPrefix + "/ueManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/ueInfo"
|
UriUEInfo = config.DefaultUriPrefix + "/ueManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/ueInfo"
|
||||||
UriUENum = config.DefaultUriPrefix + "/ueManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/ueNum"
|
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"
|
CustomUriNBInfo = config.UriPrefix + "/ueManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/nbInfo"
|
||||||
CustomUriUEInfo = config.UriPrefix + "/ueManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/ueInfo"
|
CustomUriUEInfo = config.UriPrefix + "/ueManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/ueInfo"
|
||||||
CustomUriUENum = config.UriPrefix + "/ueManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/ueNum"
|
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()
|
var client = resty.New()
|
||||||
@@ -153,7 +158,216 @@ func GetUEInfoFromNF(w http.ResponseWriter, r *http.Request) {
|
|||||||
services.ResponseInternalServerError500ProcessError(w, err)
|
services.ResponseInternalServerError500ProcessError(w, err)
|
||||||
return
|
return
|
||||||
} else {
|
} 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)
|
_ = json.Unmarshal(resp.Body(), &response)
|
||||||
services.ResponseWithJson(w, resp.StatusCode(), response)
|
services.ResponseWithJson(w, resp.StatusCode(), response)
|
||||||
return
|
return
|
||||||
@@ -217,7 +431,7 @@ func GetUENumFromNF(w http.ResponseWriter, r *http.Request) {
|
|||||||
services.ResponseInternalServerError500ProcessError(w, err)
|
services.ResponseInternalServerError500ProcessError(w, err)
|
||||||
return
|
return
|
||||||
} else {
|
} else {
|
||||||
var response services.DataResponse
|
var response services.MapResponse
|
||||||
_ = json.Unmarshal(resp.Body(), &response)
|
_ = json.Unmarshal(resp.Body(), &response)
|
||||||
services.ResponseWithJson(w, resp.StatusCode(), response)
|
services.ResponseWithJson(w, resp.StatusCode(), response)
|
||||||
return
|
return
|
||||||
@@ -281,7 +495,7 @@ func GetNBInfoFromNF(w http.ResponseWriter, r *http.Request) {
|
|||||||
services.ResponseInternalServerError500ProcessError(w, err)
|
services.ResponseInternalServerError500ProcessError(w, err)
|
||||||
return
|
return
|
||||||
} else {
|
} else {
|
||||||
var response services.DataResponse
|
var response services.MapResponse
|
||||||
_ = json.Unmarshal(resp.Body(), &response)
|
_ = json.Unmarshal(resp.Body(), &response)
|
||||||
services.ResponseWithJson(w, resp.StatusCode(), response)
|
services.ResponseWithJson(w, resp.StatusCode(), response)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -99,6 +99,11 @@ func init() {
|
|||||||
Register("PUT", dbrest.CustomXormCommonUri, dbrest.DatabaseUpdateData, nil)
|
Register("PUT", dbrest.CustomXormCommonUri, dbrest.DatabaseUpdateData, nil)
|
||||||
Register("DELETE", dbrest.CustomXormCommonUri, dbrest.DatabaseDeleteData, 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("GET", dbrest.XormExtDataUri, dbrest.ExtDatabaseGetData, nil)
|
||||||
Register("POST", dbrest.XormExtDataUri, dbrest.ExtDatabaseInsertData, nil)
|
Register("POST", dbrest.XormExtDataUri, dbrest.ExtDatabaseInsertData, nil)
|
||||||
Register("PUT", dbrest.XormExtDataUri, dbrest.ExtDatabaseUpdateData, nil)
|
Register("PUT", dbrest.XormExtDataUri, dbrest.ExtDatabaseUpdateData, nil)
|
||||||
@@ -247,11 +252,29 @@ func init() {
|
|||||||
// AAAA
|
// AAAA
|
||||||
Register("GET", aaaa.CustomUriAAAASSO, aaaa.GetSSOFromAAAA, nil)
|
Register("GET", aaaa.CustomUriAAAASSO, aaaa.GetSSOFromAAAA, nil)
|
||||||
|
|
||||||
// UEInfo
|
// UEInfo: SMF
|
||||||
Register("GET", ue.UriUEInfo, ue.GetUEInfoFromNF, nil)
|
Register("GET", ue.UriUEInfo, ue.GetUEInfoFromNF, nil)
|
||||||
Register("GET", ue.CustomUriUEInfo, 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.UriUENum, ue.GetUENumFromNF, nil)
|
||||||
Register("GET", ue.CustomUriUENum, ue.GetUENumFromNF, nil)
|
Register("GET", ue.CustomUriUENum, ue.GetUENumFromNF, nil)
|
||||||
|
|
||||||
|
|||||||
@@ -38,6 +38,8 @@ type DataResponse struct {
|
|||||||
Data interface{} `json:"data"`
|
Data interface{} `json:"data"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type MapResponse map[string]any
|
||||||
|
|
||||||
type NullResponse struct {
|
type NullResponse struct {
|
||||||
nil interface{}
|
nil interface{}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -106,6 +106,7 @@ type YamlConfig struct {
|
|||||||
Password string `ymal:"password"`
|
Password string `ymal:"password"`
|
||||||
MmlHome string `yaml:"mmlHome"`
|
MmlHome string `yaml:"mmlHome"`
|
||||||
Upload string `yaml:"upload"`
|
Upload string `yaml:"upload"`
|
||||||
|
UpfHeaderLength int `yaml:"upfHeaderLength"`
|
||||||
} `yaml:"mml"`
|
} `yaml:"mml"`
|
||||||
|
|
||||||
NE struct {
|
NE struct {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ rest:
|
|||||||
port: 3040
|
port: 3040
|
||||||
- ipv4: 0.0.0.0
|
- ipv4: 0.0.0.0
|
||||||
ipv6:
|
ipv6:
|
||||||
port: 4443
|
port: 3443
|
||||||
scheme: https
|
scheme: https
|
||||||
caFile: ./etc/certs/rootca.crt
|
caFile: ./etc/certs/rootca.crt
|
||||||
certFile: ./etc/certs/tsa-omc.crt
|
certFile: ./etc/certs/tsa-omc.crt
|
||||||
@@ -28,7 +28,7 @@ webServer:
|
|||||||
listen:
|
listen:
|
||||||
- addr: :80
|
- addr: :80
|
||||||
schema: http
|
schema: http
|
||||||
- addr: :8443
|
- addr: :443
|
||||||
scheme: https
|
scheme: https
|
||||||
caFile: ./etc/certs/rootca.crt
|
caFile: ./etc/certs/rootca.crt
|
||||||
certFile: ./etc/certs/tsa-omc.crt
|
certFile: ./etc/certs/tsa-omc.crt
|
||||||
@@ -64,6 +64,7 @@ redis:
|
|||||||
# 多个数据源时可以用这个指定默认的数据源
|
# 多个数据源时可以用这个指定默认的数据源
|
||||||
defaultDataSourceName: "default"
|
defaultDataSourceName: "default"
|
||||||
|
|
||||||
|
# upfHeaderLength: spare upf buffer, must destroy
|
||||||
mml:
|
mml:
|
||||||
port: 4100
|
port: 4100
|
||||||
sleep: 200
|
sleep: 200
|
||||||
@@ -71,6 +72,7 @@ mml:
|
|||||||
password: admin
|
password: admin
|
||||||
mmlHome: ./mmlhome
|
mmlHome: ./mmlhome
|
||||||
upload: /home/agtuser
|
upload: /home/agtuser
|
||||||
|
upfHeaderLength: 2335
|
||||||
|
|
||||||
# NE config
|
# NE config
|
||||||
ne:
|
ne:
|
||||||
@@ -80,8 +82,9 @@ ne:
|
|||||||
omcdir: /usr/local/omc
|
omcdir: /usr/local/omc
|
||||||
scpdir: /tmp
|
scpdir: /tmp
|
||||||
licensedir: /usr/local/etc/{neType}/license
|
licensedir: /usr/local/etc/{neType}/license
|
||||||
# backup etc list of IMS
|
# backup etc list of IMS,no space
|
||||||
etcListIMS: '{*.yaml,mmtel,vars.cfg}'
|
etcListIMS: '{*.yaml,mmtel,vars.cfg}'
|
||||||
|
etcListDefault: '{*.yaml,*.conf,*.cfg}'
|
||||||
|
|
||||||
# chk2ne: true/false, if put OmcNeConfig parameters to NE
|
# chk2ne: true/false, if put OmcNeConfig parameters to NE
|
||||||
omc:
|
omc:
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ security:
|
|||||||
refererWhiteList:
|
refererWhiteList:
|
||||||
- "127.0.0.1:3030"
|
- "127.0.0.1:3030"
|
||||||
xframe:
|
xframe:
|
||||||
enable: true
|
enable: false
|
||||||
value: "SAMEORIGIN"
|
value: "SAMEORIGIN"
|
||||||
csp:
|
csp:
|
||||||
enable: true
|
enable: true
|
||||||
|
|||||||
@@ -54,12 +54,11 @@ func (s *AccountController) Login(c *gin.Context) {
|
|||||||
)
|
)
|
||||||
// 根据错误信息,创建系统访问记录
|
// 根据错误信息,创建系统访问记录
|
||||||
if err != nil {
|
if err != nil {
|
||||||
msg := i18n.TKey(language, err.Error())
|
|
||||||
s.sysLogLoginService.CreateSysLogLogin(
|
s.sysLogLoginService.CreateSysLogLogin(
|
||||||
loginBody.Username, commonConstants.STATUS_NO, msg+loginBody.Code,
|
loginBody.Username, commonConstants.STATUS_NO, err.Error(),
|
||||||
ipaddr, location, os, browser,
|
ipaddr, location, os, browser,
|
||||||
)
|
)
|
||||||
c.JSON(200, result.ErrMsg(msg))
|
c.JSON(200, result.ErrMsg(i18n.TKey(language, err.Error())))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -78,9 +77,8 @@ func (s *AccountController) Login(c *gin.Context) {
|
|||||||
} else {
|
} else {
|
||||||
s.accountService.UpdateLoginDateAndIP(&loginUser)
|
s.accountService.UpdateLoginDateAndIP(&loginUser)
|
||||||
// 登录成功
|
// 登录成功
|
||||||
msg := i18n.TKey(language, "app.common.loginSuccess")
|
|
||||||
s.sysLogLoginService.CreateSysLogLogin(
|
s.sysLogLoginService.CreateSysLogLogin(
|
||||||
loginBody.Username, commonConstants.STATUS_YES, msg,
|
loginBody.Username, commonConstants.STATUS_YES, "app.common.loginSuccess",
|
||||||
ipaddr, location, os, browser,
|
ipaddr, location, os, browser,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -152,7 +150,6 @@ func (s *AccountController) Router(c *gin.Context) {
|
|||||||
// POST /logout
|
// POST /logout
|
||||||
func (s *AccountController) Logout(c *gin.Context) {
|
func (s *AccountController) Logout(c *gin.Context) {
|
||||||
language := ctx.AcceptLanguage(c)
|
language := ctx.AcceptLanguage(c)
|
||||||
msg := i18n.TKey(language, "app.common.logoutSuccess")
|
|
||||||
tokenStr := ctx.Authorization(c)
|
tokenStr := ctx.Authorization(c)
|
||||||
if tokenStr != "" {
|
if tokenStr != "" {
|
||||||
// 存在token时记录退出信息
|
// 存在token时记录退出信息
|
||||||
@@ -165,11 +162,11 @@ func (s *AccountController) Logout(c *gin.Context) {
|
|||||||
// 创建系统访问记录 退出成功
|
// 创建系统访问记录 退出成功
|
||||||
|
|
||||||
s.sysLogLoginService.CreateSysLogLogin(
|
s.sysLogLoginService.CreateSysLogLogin(
|
||||||
userName, commonConstants.STATUS_YES, msg,
|
userName, commonConstants.STATUS_YES, "app.common.logoutSuccess",
|
||||||
ipaddr, location, os, browser,
|
ipaddr, location, os, browser,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
c.JSON(200, result.OkMsg(msg))
|
c.JSON(200, result.OkMsg(i18n.TKey(language, "app.common.logoutSuccess")))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,9 +68,8 @@ func (s *RegisterController) Register(c *gin.Context) {
|
|||||||
)
|
)
|
||||||
// 根据错误信息,创建系统访问记录
|
// 根据错误信息,创建系统访问记录
|
||||||
if err != nil {
|
if err != nil {
|
||||||
msg := err.Error() + " " + registerBody.Code
|
|
||||||
s.sysLogLoginService.CreateSysLogLogin(
|
s.sysLogLoginService.CreateSysLogLogin(
|
||||||
registerBody.Username, commonConstants.STATUS_NO, msg,
|
registerBody.Username, commonConstants.STATUS_NO, err.Error(),
|
||||||
ipaddr, location, os, browser,
|
ipaddr, location, os, browser,
|
||||||
)
|
)
|
||||||
c.JSON(200, result.ErrMsg(err.Error()))
|
c.JSON(200, result.ErrMsg(err.Error()))
|
||||||
|
|||||||
@@ -113,6 +113,9 @@ func (r *UDMAuthImpl) InsertCSV(neID string, data []map[string]string) int64 {
|
|||||||
prefixes := make(map[string]struct{})
|
prefixes := make(map[string]struct{})
|
||||||
for _, v := range data {
|
for _, v := range data {
|
||||||
imsi := v["imsi"]
|
imsi := v["imsi"]
|
||||||
|
if len(imsi) < 5 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
prefix := imsi[:len(imsi)-4]
|
prefix := imsi[:len(imsi)-4]
|
||||||
prefixes[prefix] = struct{}{}
|
prefixes[prefix] = struct{}{}
|
||||||
}
|
}
|
||||||
@@ -133,6 +136,9 @@ func (r *UDMAuthImpl) InsertTxt(neID string, data [][]string) int64 {
|
|||||||
prefixes := make(map[string]struct{})
|
prefixes := make(map[string]struct{})
|
||||||
for _, v := range data {
|
for _, v := range data {
|
||||||
imsi := v[0]
|
imsi := v[0]
|
||||||
|
if len(imsi) < 5 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
prefix := imsi[:len(imsi)-4]
|
prefix := imsi[:len(imsi)-4]
|
||||||
prefixes[prefix] = struct{}{}
|
prefixes[prefix] = struct{}{}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -129,6 +129,9 @@ func (r *UDMSubImpl) InsertCSV(neID string, data []map[string]string) int64 {
|
|||||||
prefixes := make(map[string]struct{})
|
prefixes := make(map[string]struct{})
|
||||||
for _, v := range data {
|
for _, v := range data {
|
||||||
imsi := v["imsi"]
|
imsi := v["imsi"]
|
||||||
|
if len(imsi) < 5 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
prefix := imsi[:len(imsi)-4]
|
prefix := imsi[:len(imsi)-4]
|
||||||
prefixes[prefix] = struct{}{}
|
prefixes[prefix] = struct{}{}
|
||||||
}
|
}
|
||||||
@@ -149,6 +152,9 @@ func (r *UDMSubImpl) InsertTxt(neID string, data [][]string) int64 {
|
|||||||
prefixes := make(map[string]struct{})
|
prefixes := make(map[string]struct{})
|
||||||
for _, v := range data {
|
for _, v := range data {
|
||||||
imsi := v[0]
|
imsi := v[0]
|
||||||
|
if len(imsi) < 5 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
prefix := imsi[:len(imsi)-4]
|
prefix := imsi[:len(imsi)-4]
|
||||||
prefixes[prefix] = struct{}{}
|
prefixes[prefix] = struct{}{}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ func (s *SysLogLoginController) List(c *gin.Context) {
|
|||||||
(*arr)[i].LoginLocation = i18n.TKey(language, (*arr)[i].LoginLocation)
|
(*arr)[i].LoginLocation = i18n.TKey(language, (*arr)[i].LoginLocation)
|
||||||
(*arr)[i].OS = i18n.TKey(language, (*arr)[i].OS)
|
(*arr)[i].OS = i18n.TKey(language, (*arr)[i].OS)
|
||||||
(*arr)[i].Browser = i18n.TKey(language, (*arr)[i].Browser)
|
(*arr)[i].Browser = i18n.TKey(language, (*arr)[i].Browser)
|
||||||
|
(*arr)[i].Msg = i18n.TKey(language, (*arr)[i].Msg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
converI18n(language, &rows)
|
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].LoginLocation = i18n.TKey(language, (*arr)[i].LoginLocation)
|
||||||
(*arr)[i].OS = i18n.TKey(language, (*arr)[i].OS)
|
(*arr)[i].OS = i18n.TKey(language, (*arr)[i].OS)
|
||||||
(*arr)[i].Browser = i18n.TKey(language, (*arr)[i].Browser)
|
(*arr)[i].Browser = i18n.TKey(language, (*arr)[i].Browser)
|
||||||
|
(*arr)[i].Msg = i18n.TKey(language, (*arr)[i].Msg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
converI18n(language, &rows)
|
converI18n(language, &rows)
|
||||||
|
|||||||
Reference in New Issue
Block a user