Merge remote-tracking branch 'origin/main' into multi-tenant

This commit is contained in:
TsMask
2024-08-17 18:25:43 +08:00
69 changed files with 3295 additions and 4634 deletions

View File

@@ -1,5 +1,11 @@
# 版本发布日志
## 2.2408.3-20240816
- 新增 中间件-接口加解密配合前端CryptoJS加解密
- 新增 KPI添加SMSC
- 更新 IMS参数配置可选属性
## 2.2408.2-20240809
- 新增 SMSC-CDR 功能接口

View File

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

View File

@@ -1,220 +1,252 @@
"ne_type","kpi_id","title_json","cn_title","en_title"
"AMF","AMF.01","{""cn"": ""AMF注册态用户数"", ""en"": ""AMF.RegSub""}","AMF注册态用户数","AMF.RegSub"
"AMF","AMF.02","{""cn"": ""AMF初始注册请求次数"", ""en"": ""AMF.AttInitReg""}","AMF初始注册请求次数","AMF.AttInitReg"
"AMF","AMF.03","{""cn"": ""AMF初始注册成功次数"", ""en"": ""AMF.SuccInitReg""}","AMF初始注册成功次数","AMF.SuccInitReg"
"AMF","AMF.04","{""cn"": ""AMF初始注册失败次数_非法用户"", ""en"": ""AMF.FailedInitReg.3""}","AMF初始注册失败次数_非法用户","AMF.FailedInitReg.3"
"AMF","AMF.05","{""cn"": ""AMF初始注册失败次数_PEI不允许"", ""en"": ""AMF.FailedInitReg.5""}","AMF初始注册失败次数_PEI不允许","AMF.FailedInitReg.5"
"AMF","AMF.06","{""cn"": ""AMF初始注册失败次数_非法设备"", ""en"": ""AMF.FailedInitReg.6""}","AMF初始注册失败次数_非法设备","AMF.FailedInitReg.6"
"AMF","AMF.07","{""cn"": ""AMF初始注册失败次数_5GS服务不允许_用户原因"", ""en"": ""AMF.FailedInitReg.7.User""}","AMF初始注册失败次数_5GS服务不允许_用户原因","AMF.FailedInitReg.7.User"
"AMF","AMF.08","{""cn"": ""AMF初始注册失败次数_跟踪区内无合适小区_用户原因"", ""en"": ""AMF.FailedInitReg.15.User""}","AMF初始注册失败次数_跟踪区内无合适小区_用户原因","AMF.FailedInitReg.15.User"
"AMF","AMF.09","{""cn"": ""AMF初始注册失败次数_N1模式不允许"", ""en"": ""AMF.FailedInitReg.27""}","AMF初始注册失败次数_N1模式不允许","AMF.FailedInitReg.27"
"AMF","AMF.10","{""cn"": ""AMF初始注册失败次数_PLMN不允许"", ""en"": ""AMF.FailedInitReg.11""}","AMF初始注册失败次数_PLMN不允许","AMF.FailedInitReg.11"
"AMF","AMF.11","{""cn"": ""AMF初始注册失败次数_跟踪区不允许"", ""en"": ""AMF.FailedInitReg.12""}","AMF初始注册失败次数_跟踪区不允许","AMF.FailedInitReg.12"
"AMF","AMF.12","{""cn"": ""AMF初始注册失败次数_漫游跟踪区禁止接入"", ""en"": ""AMF.FailedInitReg.13""}","AMF初始注册失败次数_漫游跟踪区禁止接入","AMF.FailedInitReg.13"
"AMF","AMF.13","{""cn"": ""AMF初始注册失败次数_无可用网络切片"", ""en"": ""AMF.FailedInitReg.62""}","AMF初始注册失败次数_无可用网络切片","AMF.FailedInitReg.62"
"AMF","AMF.14","{""cn"": ""AMF初始注册失败次数_协议错误_用户原因"", ""en"": ""AMF.FailedInitReg.111.User""}","AMF初始注册失败次数_协议错误_用户原因","AMF.FailedInitReg.111.User"
"AMF","AMF.15","{""cn"": ""AMF一次寻呼响应次数"", ""en"": ""AMF.FirstPagingSucc""}","AMF一次寻呼响应次数","AMF.FirstPagingSucc"
"AMF","AMF.16","{""cn"": ""AMF二次寻呼响应次数"", ""en"": ""AMF.SecondPagingSucc""}","AMF二次寻呼响应次数","AMF.SecondPagingSucc"
"AMF","AMF.17","{""cn"": ""AMF寻呼请求次数"", ""en"": ""AMF.PagAtt""}","AMF寻呼请求次数","AMF.PagAtt"
"AMF","AMF.18","{""cn"": ""AMF业务请求被拒次数"", ""en"": ""AMF.FailServiceReq""}","AMF业务请求被拒次数","AMF.FailServiceReq"
"AMF","AMF.19","{""cn"": ""AMF业务请求尝试次数"", ""en"": ""AMF.AttServiceReq""}","AMF业务请求尝试次数","AMF.AttServiceReq"
"SMF","SMF.01","{""cn"": ""5G实时PDU会话数"", ""en"": ""SMF.MeanPduSession""}","5G实时PDU会话数","SMF.MeanPduSession"
"SMF","SMF.02","{""cn"": ""PDU会话建立成功次数"", ""en"": ""SMF.SuccCreatePduSession""}","PDU会话建立成功次数","SMF.SuccCreatePduSession"
"SMF","SMF.03","{""cn"": ""PDU会话建立请求次数"", ""en"": ""SMF.AttCreatePduSession""}","PDU会话建立请求次数","SMF.AttCreatePduSession"
"SMF","SMF.04","{""cn"": ""IMS PDU会话建立成功次数"", ""en"": ""SMF.SuccCreatePduSession._Ims""}","IMS PDU会话建立成功次数","SMF.SuccCreatePduSession._Ims"
"SMF","SMF.05","{""cn"": ""IMS PDU会话建立请求次数"", ""en"": ""SMF.AttCreatePduSession._Ims""}","IMS PDU会话建立请求次数","SMF.AttCreatePduSession._Ims"
"SMF","SMF.06","{""cn"": ""EPS-Fallback成功数"", ""en"": ""SMF.SuccSmfModifyBearerResponse.Epsfb""}","EPS-Fallback成功数","SMF.SuccSmfModifyBearerResponse.Epsfb"
"SMF","SMF.07","{""cn"": ""EPS-Fallback请求数"", ""en"": ""SMF.AttSmfModifyPduSession.Epsfb""}","EPS-Fallback请求数","SMF.AttSmfModifyPduSession.Epsfb"
"UDM","UDM.01","{""cn"": ""5G注册用户数"", ""en"": ""UDR.5gActSub""}","5G注册用户数","UDR.5gActSub"
"UDM","UDM.02","{""cn"": ""AMF发起的UECM注册请求次数"", ""en"": ""UDM.AmfUecmRegReq""}","AMF发起的UECM注册请求次数","UDM.AmfUecmRegReq"
"UDM","UDM.03","{""cn"": ""AMF发起的UECM注册成功次数"", ""en"": ""UDM.AmfUecmRegSucc""}","AMF发起的UECM注册成功次数","UDM.AmfUecmRegSucc"
"UDM","UDM.04","{""cn"": ""SMF发起的UECM注册成功次数"", ""en"": ""UDM.SmfUecmRegSucc""}","SMF发起的UECM注册成功次数","UDM.SmfUecmRegSucc"
"UDM","UDM.05","{""cn"": ""SMF发起的UECM注册请求次数"", ""en"": ""UDM.SmfUecmRegReq""}","SMF发起的UECM注册请求次数","UDM.SmfUecmRegReq"
"UDM","UDM.06","{""cn"": ""4G注册用户数"", ""en"": ""SUB.EpsActSubsInHss""}","4G注册用户数","SUB.EpsActSubsInHss"
"UDM","UDM.07","{""cn"": ""4G鉴权信息查询成功次数"", ""en"": ""DIAM.AucInfoAnsSucc""}","4G鉴权信息查询成功次数","DIAM.AucInfoAnsSucc"
"UDM","UDM.08","{""cn"": ""4G鉴权信息查询请求次数"", ""en"": ""DIAM.AucInfoReq""}","4G鉴权信息查询请求次数","DIAM.AucInfoReq"
"UDM","UDM.09","{""cn"": ""4G更新位置成功次数"", ""en"": ""DIAM.UpdateLocationAnsSucc""}","4G更新位置成功次数","DIAM.UpdateLocationAnsSucc"
"UDM","UDM.10","{""cn"": ""4G更新位置请求次数"", ""en"": ""DIAM.UpdateLocationReq""}","4G更新位置请求次数","DIAM.UpdateLocationReq"
"UDM","UDM.11","{""cn"": ""SAR成功响应总次数"", ""en"": ""UR.SuccSAA""}","SAR成功响应总次数","UR.SuccSAA"
"UDM","UDM.12","{""cn"": ""SAR请求总次数"", ""en"": ""UR.AttSAR""}","SAR请求总次数","UR.AttSAR"
"UDM","UDM.13","{""cn"": ""LIR成功响应总次数"", ""en"": ""LIQ.SuccLIA""}","LIR成功响应总次数","LIQ.SuccLIA"
"UDM","UDM.14","{""cn"": ""LIR请求总次数"", ""en"": ""LIQ.AttLIR""}","LIR请求总次数","LIQ.AttLIR"
"AUSF","AUSF.01","{""cn"": ""鉴权成功次数"", ""en"": ""Ausf.UeAuthAnsSucc""}","鉴权成功次数","Ausf.UeAuthAnsSucc"
"AUSF","AUSF.02","{""cn"": ""鉴权请求次数"", ""en"": ""Ausf.UeAuthReq""}","鉴权请求次数","Ausf.UeAuthReq"
"UPF","UPF.01","{""cn"": ""PFCP会话建立成功次数"", ""en"": ""UPF.PfcpSessionEstabSucc""}","PFCP会话建立成功次数","UPF.PfcpSessionEstabSucc"
"UPF","UPF.02","{""cn"": ""PFCP会话建立请求次数"", ""en"": ""UPF.PfcpSessionEstabReq""}","PFCP会话建立请求次数","UPF.PfcpSessionEstabReq"
"UPF","UPF.03","{""cn"": ""N6接口上行字节数"", ""en"": ""UPF.N6OgOct""}","N6接口上行字节数","UPF.N6OgOct"
"UPF","UPF.04","{""cn"": ""N6接口下行字节数"", ""en"": ""UPF.N6IncOct""}","N6接口下行字节数","UPF.N6IncOct"
"UPF","UPF.05","{""cn"": ""N3接口上行字节数"", ""en"": ""UPF.N3OgOct""}","N3接口上行字节数","UPF.N3OgOct"
"UPF","UPF.06","{""cn"": ""N3接口下行字节数"", ""en"": ""UPF.N3IncOct""}","N3接口下行字节数","UPF.N3IncOct"
"UPF","UPF.07","{""cn"": ""SGi接口上行字节数"", ""en"": ""IP.PeakThroughputUlSgi""}","SGi接口上行字节数","IP.PeakThroughputUlSgi"
"UPF","UPF.08","{""cn"": ""SGi接口下行字节数"", ""en"": ""IP.PeakThroughputDlSgi""}","SGi接口下行字节数","IP.PeakThroughputDlSgi"
"UPF","UPF.09","{""cn"": ""S1-U接口上行字节数"", ""en"": ""GTP.OutOctS1uSgw""}","S1-U接口上行字节数","GTP.OutOctS1uSgw"
"UPF","UPF.10","{""cn"": ""S1-U接口下行字节数"", ""en"": ""GTP.IncOctS1uSgw""}","S1-U接口下行字节数","GTP.IncOctS1uSgw"
"AMF","AMF.20","{""cn"": ""EPS在线用户数"", ""en"": ""SUB.NbrSub.EcmIdle+SUB.NbrSub.EcmConnected""}","EPS在线用户数","SUB.NbrSub.EcmIdle+SUB.NbrSub.EcmConnected"
"AMF","AMF.21","{""cn"": ""EPS附着成功次数"", ""en"": ""MM.SuccEpsAttach""}","EPS附着成功次数","MM.SuccEpsAttach"
"AMF","AMF.22","{""cn"": ""EPS附着请求次数"", ""en"": ""MM.AttEpsAttach""}","EPS附着请求次数","MM.AttEpsAttach"
"AMF","AMF.23","{""cn"": ""EPS附着失败次数_非法用户"", ""en"": ""MM.FailedEpsAttach.3""}","EPS附着失败次数_非法用户","MM.FailedEpsAttach.3"
"AMF","AMF.24","{""cn"": ""EPS附着失败次数_非法终端"", ""en"": ""MM.FailedEpsAttach.5""}","EPS附着失败次数_非法终端","MM.FailedEpsAttach.5"
"AMF","AMF.25","{""cn"": ""EPS附着失败次数_非法ME"", ""en"": ""MM.FailedEpsAttach.6""}","EPS附着失败次数_非法ME","MM.FailedEpsAttach.6"
"AMF","AMF.26","{""cn"": ""EPS附着失败次数_EPS服务不允许_用户原因"", ""en"": ""MM.FailedEpsAttach.7.User""}","EPS附着失败次数_EPS服务不允许_用户原因","MM.FailedEpsAttach.7.User"
"AMF","AMF.27","{""cn"": ""EPS附着失败次数_EPS和非EPS服务不允许"", ""en"": ""MM.FailedEpsAttach.8""}","EPS附着失败次数_EPS和非EPS服务不允许","MM.FailedEpsAttach.8"
"AMF","AMF.28","{""cn"": ""EPS附着失败次数_跟踪区内无合适小区_用户原因"", ""en"": ""MM.FailedEpsAttach.15.User""}","EPS附着失败次数_跟踪区内无合适小区_用户原因","MM.FailedEpsAttach.15.User"
"AMF","AMF.29","{""cn"": ""EPS附着失败次数_ESM失败_用户原因"", ""en"": ""MM.FailedEpsAttach.19.User""}","EPS附着失败次数_ESM失败_用户原因","MM.FailedEpsAttach.19.User"
"AMF","AMF.30","{""cn"": ""MME一次寻呼响应次数"", ""en"": ""MM.FirstPagingSucc""}","MME一次寻呼响应次数","MM.FirstPagingSucc"
"AMF","AMF.31","{""cn"": ""MME二次寻呼响应次数"", ""en"": ""MM.SecondPagingSucc""}","MME二次寻呼响应次数","MM.SecondPagingSucc"
"AMF","AMF.32","{""cn"": ""MME寻呼请求次数"", ""en"": ""MM.PagAtt""}","MME寻呼请求次数","MM.PagAtt"
"SMF","SMF.08","{""cn"": ""4G在线会话数"", ""en"": ""SM.MeanNbrBearerPgw.Default""}","4G在线会话数","SM.MeanNbrBearerPgw.Default"
"SMF","SMF.09","{""cn"": ""PGW缺省承载建立成功个数"", ""en"": ""SM.SuccCreateDefaultEpsBearer""}","PGW缺省承载建立成功个数","SM.SuccCreateDefaultEpsBearer"
"SMF","SMF.10","{""cn"": ""PGW缺省承载建立请求个数"", ""en"": ""SM.AttCreateDefaultEpsBearer""}","PGW缺省承载建立请求个数","SM.AttCreateDefaultEpsBearer"
"SMF","SMF.11","{""cn"": ""PGW专用承载建立成功个数"", ""en"": ""SM.SuccCreateDedicatedEpsBearer""}","PGW专用承载建立成功个数","SM.SuccCreateDedicatedEpsBearer"
"SMF","SMF.12","{""cn"": ""PGW专用承载建立请求个数"", ""en"": ""SM.AttCreateDedicatedEpsBearer""}","PGW专用承载建立请求个数","SM.AttCreateDedicatedEpsBearer"
"SMF","SMF.13","{""cn"": ""IMS缺省承载成功建立个数"", ""en"": ""SM.SuccCreateDefaultEpsBearer._Ims""}","IMS缺省承载成功建立个数","SM.SuccCreateDefaultEpsBearer._Ims"
"SMF","SMF.14","{""cn"": ""IMS缺省承载请求建立个数"", ""en"": ""SM.AttCreateDefaultEpsBearer._Ims""}","IMS缺省承载请求建立个数","SM.AttCreateDefaultEpsBearer._Ims"
"AMF","AMF.A.02","{""cn"":""AMF移动性注册更新成功次数"",""en"":""AMF.SuccMobiReg""}","AMF移动性注册更新成功次数","AMF.SuccMobiReg"
"AMF","AMF.A.03","{""cn"":""AMF移动性注册更新失败次数"",""en"":""AMF.FailedMobiReg""}","AMF移动性注册更新失败次数","AMF.FailedMobiReg"
"AMF","AMF.A.04","{""cn"":""AMF紧急注册请求次数"",""en"":""AMF.AttEmergReg""}","AMF紧急注册请求次数","AMF.AttEmergReg"
"AMF","AMF.A.05","{""cn"":""AMF紧急注册成功次数"",""en"":""AMF.SuccEmergReg""}","AMF紧急注册成功次数","AMF.SuccEmergReg"
"AMF","AMF.A.06","{""cn"":""AMF紧急注册失败次数"",""en"":""AMF.FailedEmergReg""}","AMF紧急注册失败次数","AMF.FailedEmergReg"
"AMF","AMF.A.07","{""cn"":""UE发起的去注册请求次数"",""en"":""AMF.AttUeDereg""}","UE发起的去注册请求次数","AMF.AttUeDereg"
"AMF","AMF.A.08","{""cn"":""UE发起的去注册成功次数"",""en"":""AMF.SuccUeDereg""}","UE发起的去注册成功次数","AMF.SuccUeDereg"
"AMF","AMF.A.09","{""cn"":""AMF发起的去注册请求次数"",""en"":""AMF.AttAmfDereg""}","AMF发起的去注册请求次数","AMF.AttAmfDereg"
"AMF","AMF.A.10","{""cn"":""AMF发起的去注册成功次数"",""en"":""AMF.SuccAmfDereg""}","AMF发起的去注册成功次数","AMF.SuccAmfDereg"
"AMF","AMF.A.11","{""cn"":""UDM发起的去注册请求次数"",""en"":""AMF.AttUdmDereg""}","UDM发起的去注册请求次数","AMF.AttUdmDereg"
"AMF","AMF.A.12","{""cn"":""UDM发起的去注册成功次数"",""en"":""AMF.SuccUdmDereg""}","UDM发起的去注册成功次数","AMF.SuccUdmDereg"
"AMF","AMF.A.13","{""cn"":""AMF寻呼失败次数"",""en"":""AMF.PagFail""}","AMF寻呼失败次数","AMF.PagFail"
"AMF","AMF.A.14","{""cn"":""AMF隐式去注册次数"",""en"":""AMF.ImplicitDereg""}","AMF隐式去注册次数","AMF.ImplicitDereg"
"SMF","SMF.A.01","{""cn"":""PDU会话接受次数"",""en"":""SMF.PduSessAcpt""}","PDU会话接受次数","SMF.PduSessAcpt"
"SMF","SMF.A.02","{""cn"":""基站Pdu资源创建成功次数"",""en"":""SM.PduResSetupSucc""}","基站Pdu资源创建成功次数","SM.PduResSetupSucc"
"SMF","SMF.A.03","{""cn"":""查询用户SM数据失败次数"",""en"":""SM.RetrieveSmDataFail""}","查询用户SM数据失败次数","SM.RetrieveSmDataFail"
"SMF","SMF.A.04","{""cn"":""PFCP会话建立失败次数"",""en"":""SM.PfcpSessEstFail""}","PFCP会话建立失败次数","SM.PfcpSessEstFail"
"SMF","SMF.A.05","{""cn"":""基站Pdu资源创建失败次数"",""en"":""SM.PduResSetupFail""}","基站Pdu资源创建失败次数","SM.PduResSetupFail"
"SMF","SMF.A.06","{""cn"":""PFCP会话修改失败次数"",""en"":""SM.PfcpSessMdfyFail""}","PFCP会话修改失败次数","SM.PfcpSessMdfyFail"
"SMF","SMF.A.07","{""cn"":""PDU会话拒绝次数"",""en"":""SM.PduSessRejt""}","PDU会话拒绝次数","SM.PduSessRejt"
"SMF","SMF.A.08","{""cn"":""PDU会话释放指示次数"",""en"":""SM.PduSessRelCmd""}","PDU会话释放指示次数","SM.PduSessRelCmd"
"NSSF","NSSF.A.02","{""cn"":""可用AMF注册次数"",""en"":""NSSF.SuccAvailAMFPut""}","可用AMF注册成功次数","NSSF.SuccAvailAMFPut"
"NSSF","NSSF.A.03","{""cn"":""可用AMF注册更新成功次数"",""en"":""NSSF.AvailAMFPut""}","可用AMF注册次数","NSSF.AvailAMFPut"
"NSSF","NSSF.A.04","{""cn"":""可用AMF注册更新次数"",""en"":""NSSF.SuccAvailAMFPatch""}","可用AMF注册更新成功次数","NSSF.SuccAvailAMFPatch"
"NSSF","NSSF.A.01","{""cn"":""可用AMF注册成功次数"",""en"":""NSSF.AvailAMFPatch""}","可用AMF注册更新次数","NSSF.AvailAMFPatch"
"NSSF","NSSF.A.05","{""cn"":""可用AMF去注册成功次数"",""en"":""NSSF.SuccAvailAMFDelete""}","可用AMF去注册成功次数","NSSF.SuccAvailAMFDelete"
"NSSF","NSSF.A.06","{""cn"":""可用AMF去注册次数"",""en"":""NSSF.AvailAMFDelete""}","可用AMF去注册次数","NSSF.AvailAMFDelete"
"NSSF","NSSF.A.07","{""cn"":""网元订阅成功次数"",""en"":""NSSF.SuccAvailSubscription""}","网元订阅成功次数","NSSF.SuccAvailSubscription"
"NSSF","NSSF.A.08","{""cn"":""网元订阅次数"",""en"":""NSSF.AvailSubscription""}","网元订阅次数","NSSF.AvailSubscription"
"NSSF","NSSF.A.09","{""cn"":""网元去订阅成功次数"",""en"":""NSSF.SuccAvailUnsubscription""}","网元去订阅成功次数","NSSF.SuccAvailUnsubscription"
"NSSF","NSSF.A.10","{""cn"":""网元去订阅次数"",""en"":""NSSF.AvailUnsubscription""}","网元去订阅次数","NSSF.AvailUnsubscription"
"NSSF","NSSF.A.11","{""cn"":""向NRF注册成功次数"",""en"":""NSSF.SuccNRFReg""}","向NRF注册成功次数","NSSF.SuccNRFReg"
"NSSF","NSSF.A.12","{""cn"":""向NRF注册次数"",""en"":""NSSF.NRFReg""}","向NRF注册次数","NSSF.NRFReg"
"NSSF","NSSF.A.13","{""cn"":""向NRF发送心跳次数"",""en"":""NSSF.NRFHeartbeat""}","向NRF发送心跳次数","NSSF.NRFHeartbeat"
"NSSF","NSSF.A.14","{""cn"":""当前注册AMF个数"",""en"":""NSSF.CurrentAMFCount""}","当前注册AMF个数","NSSF.CurrentAMFCount"
"NSSF","NSSF.A.15","{""cn"":""当前订阅网元个数"",""en"":""NSSF.CurrentSubscriperCount""}","当前订阅网元个数","NSSF.CurrentSubscriperCount"
"MME","MME.A.01","{""cn"":""MME附着请求次数"",""en"":""EpsAttachAtt""}","MME附着请求次数","EpsAttachAtt"
"MME","MME.A.02","{""cn"":""MME附着成功次数"",""en"":""EpsAttachSucc""}","MME附着成功次数","EpsAttachSucc"
"MME","MME.A.03","{""cn"":""MME附着失败次数"",""en"":""EpsAttachFail""}","MME附着失败次数","EpsAttachFail"
"MME","MME.A.04","{""cn"":""MME组合附着请求次数"",""en"":""CombAttachAtt""}","MME组合附着请求次数","CombAttachAtt"
"MME","MME.A.05","{""cn"":""MME组合附着成功次数"",""en"":""CombAttachSucc""}","MME组合附着成功次数","CombAttachSucc"
"MME","MME.A.06","{""cn"":""MME组合附着失败次数"",""en"":""CombAttachFail""}","MME组合附着失败次数","CombAttachFail"
"MME","MME.A.07","{""cn"":""MME紧急附着请求次数"",""en"":""EmergAttachAtt""}","MME紧急附着请求次数","EmergAttachAtt"
"MME","MME.A.08","{""cn"":""MME紧急附着成功次数"",""en"":""EmergAttachSucc""}","MME紧急附着成功次数","EmergAttachSucc"
"MME","MME.A.09","{""cn"":""MME紧急附着失败次数"",""en"":""EmergAttachFail""}","MME紧急附着失败次数","EmergAttachFail"
"MME","MME.A.10","{""cn"":""UE发起的分离请求次数"",""en"":""EpsDetachUeAtt""}","UE发起的分离请求次数","EpsDetachUeAtt"
"MME","MME.A.11","{""cn"":""UE发起的分离请求成功次数"",""en"":""EpsDetachUeSucc""}","UE发起的分离请求成功次数","EpsDetachUeSucc"
"MME","MME.A.12","{""cn"":""MME发起的分离请求次数"",""en"":""EpsDetachMMEAtt""}","MME发起的分离请求次数","EpsDetachMMEAtt"
"MME","MME.A.13","{""cn"":""MME发起的分离请求成功次数"",""en"":""EpsDetachMMESucc""}","MME发起的分离请求成功次数","EpsDetachMMESucc"
"MME","MME.A.14","{""cn"":""伴随SGW内切换的TAU请求次数"",""en"":""TauIntraSgwAtt""}","伴随SGW内切换的TAU请求次数","TauIntraSgwAtt"
"MME","MME.A.15","{""cn"":""伴随SGW内切换的TAU成功请求次数"",""en"":""TauIntraSgwSucc""}","伴随SGW内切换的TAU成功请求次数","TauIntraSgwSucc"
"MME","MME.A.16","{""cn"":""伴随SGW内切换的TAU失败请求次数"",""en"":""TauIntraSgwFail""}","伴随SGW内切换的TAU失败请求次数","TauIntraSgwFail"
"MME","MME.A.17","{""cn"":""MME寻呼次数"",""en"":""PagingEpsAtt""}","MME寻呼次数","PagingEpsAtt"
"MME","MME.A.18","{""cn"":""MME寻呼成功次数"",""en"":""PagingEpsSucc""}","MME寻呼成功次数","PagingEpsSucc"
"MME","MME.A.19","{""cn"":""MME寻呼失败次数"",""en"":""PagingEpsFail""}","MME寻呼失败次数","PagingEpsFail"
"MME","MME.A.20","{""cn"":""MME隐式分离请求次数"",""en"":""EpsImplicitDetach""}","MME隐式分离请求次数","EpsImplicitDetach"
"MME","MME.A.21","{""cn"":""MME激活专用承载请求次数"",""en"":""ActDedicatedEpsBearerAtt""}","MME激活专用承载请求次数","ActDedicatedEpsBearerAtt"
"MME","MME.A.22","{""cn"":""MME激活专用承载请求成功次数"",""en"":""ActDedicatedEpsBearerSucc""}","MME激活专用承载请求成功次数","ActDedicatedEpsBearerSucc"
"MME","MME.A.23","{""cn"":""MME激活专用承载请求失败次数"",""en"":""ActDedicatedEpsBearerFail""}","MME激活专用承载请求失败次数","ActDedicatedEpsBearerFail"
"MME","MME.A.24","{""cn"":""MME去激活专用承载请求次数"",""en"":""DeactEpsDedicatedBearerAtt""}","MME去激活专用承载请求次数","DeactEpsDedicatedBearerAtt"
"MME","MME.A.25","{""cn"":""MME去激活专用承载请求成功次数"",""en"":""DeactEpsDedicatedBearerSucc""}","MME去激活专用承载请求成功次数","DeactEpsDedicatedBearerSucc"
"MME","MME.A.26","{""cn"":""MME修改专用承载请求次数"",""en"":""ModEpsBearerAtt""}","MME修改专用承载请求次数","ModEpsBearerAtt"
"MME","MME.A.27","{""cn"":""MME修改专用承载请求成功次数"",""en"":""ModEpsBearerSucc""}","MME修改专用承载请求成功次数","ModEpsBearerSucc"
"MME","MME.A.28","{""cn"":""MME修改专用承载请求失败次数"",""en"":""ModEpsBearerFail""}","MME修改专用承载请求失败次数","ModEpsBearerFail"
"MME","MME.A.29","{""cn"":""MME服务请求次数"",""en"":""EpsServiceReqAtt""}","MME服务请求次数","EpsServiceReqAtt"
"MME","MME.A.30","{""cn"":""MME服务请求成功次数"",""en"":""EpsServiceReqSucc""}","MME服务请求成功次数","EpsServiceReqSucc"
"MME","MME.A.31","{""cn"":""MME服务请求失败次数"",""en"":""EpsServiceReqFail""}","MME服务请求失败次数","EpsServiceReqFail"
"MOCNGW","MOCNGW.01","{""cn"":""AttachRequest"",""en"":""AttachRequest""}","AttachRequest","AttachRequest"
"MOCNGW","MOCNGW.02","{""cn"":""AttachAccept"",""en"":""AttachAccept""}","AttachAccept","AttachAccept"
"MOCNGW","MOCNGW.03","{""cn"":""AttachComplete"",""en"":""AttachComplete""}","AttachComplete","AttachComplete"
"MOCNGW","MOCNGW.04","{""cn"":""AttachReject"",""en"":""AttachReject""}","AttachReject","AttachReject"
"MOCNGW","MOCNGW.05","{""cn"":""DetachRequest"",""en"":""DetachRequest""}","DetachRequest","DetachRequest"
"MOCNGW","MOCNGW.06","{""cn"":""DetachAccept"",""en"":""DetachAccept""}","DetachAccept","DetachAccept"
"MOCNGW","MOCNGW.07","{""cn"":""TrackingAreaUpdateRequest"",""en"":""TrackingAreaUpdateRequest""}","TrackingAreaUpdateRequest","TrackingAreaUpdateRequest"
"MOCNGW","MOCNGW.08","{""cn"":""TrackingAreaUpdateAccept"",""en"":""TrackingAreaUpdateAccept""}","TrackingAreaUpdateAccept","TrackingAreaUpdateAccept"
"MOCNGW","MOCNGW.09","{""cn"":""TrackingAreaUpdateComplete"",""en"":""TrackingAreaUpdateComplete""}","TrackingAreaUpdateComplete","TrackingAreaUpdateComplete"
"MOCNGW","MOCNGW.10","{""cn"":""TrackingAreaUpdateReject"",""en"":""TrackingAreaUpdateReject""}","TrackingAreaUpdateReject","TrackingAreaUpdateReject"
"MOCNGW","MOCNGW.11","{""cn"":""ServiceRequest"",""en"":""ServiceRequest""}","ServiceRequest","ServiceRequest"
"MOCNGW","MOCNGW.12","{""cn"":""ExtendedServiceRequest"",""en"":""ExtendedServiceRequest""}","ExtendedServiceRequest","ExtendedServiceRequest"
"MOCNGW","MOCNGW.13","{""cn"":""ControlPlaneServiceRequest"",""en"":""ControlPlaneServiceRequest""}","ControlPlaneServiceRequest","ControlPlaneServiceRequest"
"MOCNGW","MOCNGW.14","{""cn"":""ServiceReject"",""en"":""ServiceReject""}","ServiceReject","ServiceReject"
"MOCNGW","MOCNGW.15","{""cn"":""ServiceAccept"",""en"":""ServiceAccept""}","ServiceAccept","ServiceAccept"
"MOCNGW","MOCNGW.16","{""cn"":""GutiReallocationCommand"",""en"":""GutiReallocationCommand""}","GutiReallocationCommand","GutiReallocationCommand"
"MOCNGW","MOCNGW.17","{""cn"":""GutiReallocationComplete"",""en"":""GutiReallocationComplete""}","GutiReallocationComplete","GutiReallocationComplete"
"MOCNGW","MOCNGW.18","{""cn"":""AuthenticationRequest"",""en"":""AuthenticationRequest""}","AuthenticationRequest","AuthenticationRequest"
"MOCNGW","MOCNGW.19","{""cn"":""AuthenticationResponse"",""en"":""AuthenticationResponse""}","AuthenticationResponse","AuthenticationResponse"
"MOCNGW","MOCNGW.20","{""cn"":""AuthenticationReject"",""en"":""AuthenticationReject""}","AuthenticationReject","AuthenticationReject"
"MOCNGW","MOCNGW.21","{""cn"":""AuthenticationFailure"",""en"":""AuthenticationFailure""}","AuthenticationFailure","AuthenticationFailure"
"MOCNGW","MOCNGW.22","{""cn"":""IdentityRequest"",""en"":""IdentityRequest""}","IdentityRequest","IdentityRequest"
"MOCNGW","MOCNGW.23","{""cn"":""IdentityResponse"",""en"":""IdentityResponse""}","IdentityResponse","IdentityResponse"
"MOCNGW","MOCNGW.24","{""cn"":""SecurityModeCommand"",""en"":""SecurityModeCommand""}","SecurityModeCommand","SecurityModeCommand"
"MOCNGW","MOCNGW.25","{""cn"":""SecurityModeComplete"",""en"":""SecurityModeComplete""}","SecurityModeComplete","SecurityModeComplete"
"MOCNGW","MOCNGW.26","{""cn"":""SecurityModeReject"",""en"":""SecurityModeReject""}","SecurityModeReject","SecurityModeReject"
"MOCNGW","MOCNGW.27","{""cn"":""EmmStatus"",""en"":""EmmStatus""}","EmmStatus","EmmStatus"
"MOCNGW","MOCNGW.28","{""cn"":""EmmInformation"",""en"":""EmmInformation""}","EmmInformation","EmmInformation"
"MOCNGW","MOCNGW.29","{""cn"":""DownlinkNasTransport"",""en"":""DownlinkNasTransport""}","DownlinkNasTransport","DownlinkNasTransport"
"MOCNGW","MOCNGW.30","{""cn"":""UplinkNasTransport"",""en"":""UplinkNasTransport""}","UplinkNasTransport","UplinkNasTransport"
"MOCNGW","MOCNGW.31","{""cn"":""CsServiceNotification"",""en"":""CsServiceNotification""}","CsServiceNotification","CsServiceNotification"
"MOCNGW","MOCNGW.32","{""cn"":""DownlinkGenericNasTransport"",""en"":""DownlinkGenericNasTransport""}","DownlinkGenericNasTransport","DownlinkGenericNasTransport"
"MOCNGW","MOCNGW.33","{""cn"":""UplinkGenericNasTransport"",""en"":""UplinkGenericNasTransport""}","UplinkGenericNasTransport","UplinkGenericNasTransport"
"IMS","SCSCF.01","{""cn"": ""LTE接入注册用户数"",""en"": ""UR.SubsLTE.fromVoLTE""}","LTE接入注册用户数","UR.SubsLTE.fromVoLTE"
"IMS","SCSCF.02","{""cn"": ""5G接入注册用户数"",""en"": ""UR.Subs5G.fromVo5G""}","5G接入注册用户数","UR.Subs5G.fromVo5G"
"IMS","SCSCF.03","{""cn"": ""初始注册成功次数"",""en"": ""UR.SuccInitReg""}","初始注册成功次数","UR.SuccInitReg"
"IMS","SCSCF.04","{""cn"": ""初始注册请求次数"",""en"": ""UR.AttInitReg""}","初始注册请求次数","UR.AttInitReg"
"IMS","SCSCF.05","{""cn"": ""主叫接通次数"",""en"": ""SC.SuccSessionOrig""}","主叫接通次数","SC.SuccSessionOrig"
"IMS","SCSCF.06","{""cn"": ""主叫试呼次数"",""en"": ""SC.AttSessionOrig""}","主叫试呼次数","SC.AttSessionOrig"
"IMS","SCSCF.07","{""cn"": ""被叫接通次数"",""en"": ""SC.SuccSessionTerm""}","被叫接通次数","SC.SuccSessionTerm"
"IMS","SCSCF.08","{""cn"": ""被叫试呼次数"",""en"": ""SC.AttSessionTerm""}","被叫试呼次数","SC.AttSessionTerm"
"IMS","SCSCF.09","{""cn"": ""主叫应答次数"",""en"": ""SC.AnsSessionOrig""}","主叫应答次数","SC.AnsSessionOrig"
"IMS","SCSCF.10","{""cn"": ""主叫早释次数"",""en"": ""SC.OrigRelBeforeRing""}","主叫早释次数","SC.OrigRelBeforeRing"
"IMS","SCSCF.11","{""cn"": ""主叫振铃早释次数"",""en"": ""SC.OrigRelAfterRing""}","主叫振铃早释次数","SC.OrigRelAfterRing"
"IMS","SCSCF.12","{""cn"": ""主叫403请求禁止次数"",""en"": ""SC.FailSessionOrig.403""}","主叫403请求禁止次数","SC.FailSessionOrig.403"
"IMS","SCSCF.13","{""cn"": ""主叫404未找到次数"",""en"": ""SC.FailSessionOrig.404""}","主叫404未找到次数","SC.FailSessionOrig.404"
"IMS","SCSCF.14","{""cn"": ""主叫408请求超时次数"",""en"": ""SC.FailSessionOrig.408""}","主叫408请求超时次数","SC.FailSessionOrig.408"
"IMS","SCSCF.15","{""cn"": ""主叫480久叫不应次"",""en"": ""SC.FailSessionOrig.480""}","主叫480久叫不应次","SC.FailSessionOrig.480"
"IMS","SCSCF.16","{""cn"": ""主叫484Request-URI不完整次"",""en"": ""SC.FailSessionOrig.484""}","主叫484Request-URI不完整次","SC.FailSessionOrig.484"
"IMS","SCSCF.17","{""cn"": ""主叫486用户忙次数"",""en"": ""SC.FailSessionOrig.486""}","主叫486用户忙次数","SC.FailSessionOrig.486"
"IMS","SCSCF.18","{""cn"": ""主叫487请求终止次数"",""en"": ""SC.FailSessionOrig.487""}","主叫487请求终止次数","SC.FailSessionOrig.487"
"IMS","SCSCF.19","{""cn"": ""主叫600用户忙次数"",""en"": ""SC.FailSessionOrig.600""}","主叫600用户忙次数","SC.FailSessionOrig.600"
"IMS","SCSCF.20","{""cn"": ""主叫603用户拒接次数"",""en"": ""SC.FailSessionOrig.603""}","主叫603用户拒接次数","SC.FailSessionOrig.603"
"IMS","SCSCF.21","{""cn"": ""主叫604用户信息不存在次数"",""en"": ""SC.FailSessionOrig.604""}","主叫604用户信息不存在次数","SC.FailSessionOrig.604"
"IMS","SCSCF.22","{""cn"": ""被叫应答次数"",""en"": ""SC.AnsSessionTerm""}","被叫应答次数","SC.AnsSessionTerm"
"IMS","SCSCF.23","{""cn"": ""被叫早释次"",""en"": ""SC.TermiRelBeforeRing""}","被叫早释次","SC.TermiRelBeforeRing"
"IMS","SCSCF.24","{""cn"": ""被叫振铃早释次数"",""en"": ""SC.TermiRelAfterRing""}","被叫振铃早释次数","SC.TermiRelAfterRing"
"IMS","SCSCF.25","{""cn"": ""被叫403请求禁止次数"",""en"": ""SC.FailSessionTerm.403""}","被叫403请求禁止次数","SC.FailSessionTerm.403"
"IMS","SCSCF.26","{""cn"": ""被叫404未找到次数"",""en"": ""SC.FailSessionTerm.404""}","被叫404未找到次数","SC.FailSessionTerm.404"
"IMS","SCSCF.27","{""cn"": ""被叫408请求超时次数"",""en"": ""SC.FailSessionTerm.408""}","被叫408请求超时次数","SC.FailSessionTerm.408"
"IMS","SCSCF.28","{""cn"": ""被叫480久叫不应次数"",""en"": ""SC.FailSessionTerm.480""}","被叫480久叫不应次数","SC.FailSessionTerm.480"
"IMS","SCSCF.29","{""cn"": ""被叫484Request-URI不完整次数"",""en"": ""SC.FailSessionTerm.484""}","被叫484Request-URI不完整次数","SC.FailSessionTerm.484"
"IMS","SCSCF.30","{""cn"": ""被叫486用户忙次数"",""en"": ""SC.FailSessionTerm.486""}","被叫486用户忙次数","SC.FailSessionTerm.486"
"IMS","SCSCF.31","{""cn"": ""被叫487请求终止次数"",""en"": ""SC.FailSessionTerm.487""}","被叫487请求终止次数","SC.FailSessionTerm.487"
"IMS","SCSCF.32","{""cn"": ""被叫600用户忙次数"",""en"": ""SC.FailSessionTerm.600""}","被叫600用户忙次数","SC.FailSessionTerm.600"
"IMS","SCSCF.33","{""cn"": ""被叫603用户拒接次数"",""en"": ""SC.FailSessionTerm.603""}","被叫603用户拒接次数","SC.FailSessionTerm.603"
"IMS","SCSCF.34","{""cn"": ""被叫604用户信息不存在次数"",""en"": ""SC.FailSessionTerm.604""}","被叫604用户信息不存在次数","SC.FailSessionTerm.604"
"PCF", "PCF.01", "{""cn"": ""在线N7会话数"", ""en"": ""PCF.SmAssocNbrMean""}", "在线N7会话数", "PCF.SmAssocNbrMean"
"PCF", "PCF.02", "{""cn"": ""SM策略关联建立成功次数"", ""en"": ""PCF.PolicySmAssocCreateSucc""}", "SM策略关联建立成功次数", "PCF.PolicySmAssocCreateSucc"
"PCF", "PCF.03", "{""cn"": ""SM策略关联建立请求次数"", ""en"": ""PCF.PolicySmAssocCreateReq""}", "SM策略关联建立请求次数", "PCF.PolicySmAssocCreateReq"
"PCF", "PCF.04", "{""cn"": ""SM策略关联更新成功次数"", ""en"": ""PCF.PolicySmAssocUpdateSucc""}", "SM策略关联更新成功次数", "PCF.PolicySmAssocUpdateSucc"
"PCF", "PCF.05", "{""cn"": ""SM策略关联更新请求次数"", ""en"": ""PCF.PolicySmAssocUpdateReq""}", "SM策略关联更新请求次数", "PCF.PolicySmAssocUpdateReq"
"PCF", "PCF.06", "{""cn"": ""在线Gx会话数"", ""en"": ""SM.SessionNbrMean""}", "在线Gx会话数", "SM.SessionNbrMean"
"PCF", "PCF.07", "{""cn"": ""在线Rx会话数"", ""en"": ""SM.RxSessionMean""}", "在线Rx会话数", "SM.RxSessionMean"
"PCF", "PCF.08", "{""cn"": ""PCRF策略控制发起成功次数"", ""en"": ""DIAM.CcInitialSuccess""}", "PCRF策略控制发起成功次数", "DIAM.CcInitialSuccess"
"PCF", "PCF.09", "{""cn"": ""PCRF策略控制发起请求次数"", ""en"": ""DIAM.CcInitialRequest""}", "PCRF策略控制发起请求次数", "DIAM.CcInitialRequest"
"PCF", "PCF.10", "{""cn"": ""应用会话授权成功次数"", ""en"": ""DIAM.AuthSucc""}", "应用会话授权成功次数", "DIAM.AuthSucc"
"PCF", "PCF.11", "{""cn"": ""应用会话授权尝试次数"", ""en"": ""DIAM.AuthRequest""}", "应用会话授权尝试次数", "DIAM.AuthRequest"
"PCF", "PCF.12", "{""cn"": ""PCRF策略控制更新成功次数"", ""en"": ""DIAM.CcUpdateSuccess""}", "PCRF策略控制更新成功次数", "DIAM.CcUpdateSuccess"
"PCF", "PCF.13", "{""cn"": ""PCRF策略控制更新请求次数"", ""en"": ""DIAM.CcUpdateRequest""}", "PCRF策略控制更新请求次数", "DIAM.CcUpdateRequest"
ne_type,kpi_id,title_json,cn_title,en_title
AMF,AMF.01,"{""cn"": ""AMF注册态用户数"", ""en"": ""AMF.RegSub""}",AMF注册态用户数,AMF.RegSub
AMF,AMF.02,"{""cn"": ""AMF初始注册请求次数"", ""en"": ""AMF.AttInitReg""}",AMF初始注册请求次数,AMF.AttInitReg
AMF,AMF.03,"{""cn"": ""AMF初始注册成功次数"", ""en"": ""AMF.SuccInitReg""}",AMF初始注册成功次数,AMF.SuccInitReg
AMF,AMF.04,"{""cn"": ""AMF初始注册失败次数_非法用户"", ""en"": ""AMF.FailedInitReg.3""}",AMF初始注册失败次数_非法用户,AMF.FailedInitReg.3
AMF,AMF.05,"{""cn"": ""AMF初始注册失败次数_PEI不允许"", ""en"": ""AMF.FailedInitReg.5""}",AMF初始注册失败次数_PEI不允许,AMF.FailedInitReg.5
AMF,AMF.06,"{""cn"": ""AMF初始注册失败次数_非法设备"", ""en"": ""AMF.FailedInitReg.6""}",AMF初始注册失败次数_非法设备,AMF.FailedInitReg.6
AMF,AMF.07,"{""cn"": ""AMF初始注册失败次数_5GS服务不允许_用户原因"", ""en"": ""AMF.FailedInitReg.7.User""}",AMF初始注册失败次数_5GS服务不允许_用户原因,AMF.FailedInitReg.7.User
AMF,AMF.08,"{""cn"": ""AMF初始注册失败次数_跟踪区内无合适小区_用户原因"", ""en"": ""AMF.FailedInitReg.15.User""}",AMF初始注册失败次数_跟踪区内无合适小区_用户原因,AMF.FailedInitReg.15.User
AMF,AMF.09,"{""cn"": ""AMF初始注册失败次数_N1模式不允许"", ""en"": ""AMF.FailedInitReg.27""}",AMF初始注册失败次数_N1模式不允许,AMF.FailedInitReg.27
AMF,AMF.10,"{""cn"": ""AMF初始注册失败次数_PLMN不允许"", ""en"": ""AMF.FailedInitReg.11""}",AMF初始注册失败次数_PLMN不允许,AMF.FailedInitReg.11
AMF,AMF.11,"{""cn"": ""AMF初始注册失败次数_跟踪区不允许"", ""en"": ""AMF.FailedInitReg.12""}",AMF初始注册失败次数_跟踪区不允许,AMF.FailedInitReg.12
AMF,AMF.12,"{""cn"": ""AMF初始注册失败次数_漫游跟踪区禁止接入"", ""en"": ""AMF.FailedInitReg.13""}",AMF初始注册失败次数_漫游跟踪区禁止接入,AMF.FailedInitReg.13
AMF,AMF.13,"{""cn"": ""AMF初始注册失败次数_无可用网络切片"", ""en"": ""AMF.FailedInitReg.62""}",AMF初始注册失败次数_无可用网络切片,AMF.FailedInitReg.62
AMF,AMF.14,"{""cn"": ""AMF初始注册失败次数_协议错误_用户原因"", ""en"": ""AMF.FailedInitReg.111.User""}",AMF初始注册失败次数_协议错误_用户原因,AMF.FailedInitReg.111.User
AMF,AMF.15,"{""cn"": ""AMF一次寻呼响应次数"", ""en"": ""AMF.FirstPagingSucc""}",AMF一次寻呼响应次数,AMF.FirstPagingSucc
AMF,AMF.16,"{""cn"": ""AMF二次寻呼响应次数"", ""en"": ""AMF.SecondPagingSucc""}",AMF二次寻呼响应次数,AMF.SecondPagingSucc
AMF,AMF.17,"{""cn"": ""AMF寻呼请求次数"", ""en"": ""AMF.PagAtt""}",AMF寻呼请求次数,AMF.PagAtt
AMF,AMF.18,"{""cn"": ""AMF业务请求被拒次数"", ""en"": ""AMF.FailServiceReq""}",AMF业务请求被拒次数,AMF.FailServiceReq
AMF,AMF.19,"{""cn"": ""AMF业务请求尝试次数"", ""en"": ""AMF.AttServiceReq""}",AMF业务请求尝试次数,AMF.AttServiceReq
SMF,SMF.01,"{""cn"": ""5G实时PDU会话数"", ""en"": ""SMF.MeanPduSession""}",5G实时PDU会话数,SMF.MeanPduSession
SMF,SMF.02,"{""cn"": ""PDU会话建立成功次数"", ""en"": ""SMF.SuccCreatePduSession""}",PDU会话建立成功次数,SMF.SuccCreatePduSession
SMF,SMF.03,"{""cn"": ""PDU会话建立请求次数"", ""en"": ""SMF.AttCreatePduSession""}",PDU会话建立请求次数,SMF.AttCreatePduSession
SMF,SMF.04,"{""cn"": ""IMS PDU会话建立成功次数"", ""en"": ""SMF.SuccCreatePduSession._Ims""}",IMS PDU会话建立成功次数,SMF.SuccCreatePduSession._Ims
SMF,SMF.05,"{""cn"": ""IMS PDU会话建立请求次数"", ""en"": ""SMF.AttCreatePduSession._Ims""}",IMS PDU会话建立请求次数,SMF.AttCreatePduSession._Ims
SMF,SMF.06,"{""cn"": ""EPS-Fallback成功数"", ""en"": ""SMF.SuccSmfModifyBearerResponse.Epsfb""}",EPS-Fallback成功数,SMF.SuccSmfModifyBearerResponse.Epsfb
SMF,SMF.07,"{""cn"": ""EPS-Fallback请求数"", ""en"": ""SMF.AttSmfModifyPduSession.Epsfb""}",EPS-Fallback请求数,SMF.AttSmfModifyPduSession.Epsfb
UDM,UDM.01,"{""cn"": ""5G注册用户数"", ""en"": ""UDR.5gActSub""}",5G注册用户数,UDR.5gActSub
UDM,UDM.02,"{""cn"": ""AMF发起的UECM注册请求次数"", ""en"": ""UDM.AmfUecmRegReq""}",AMF发起的UECM注册请求次数,UDM.AmfUecmRegReq
UDM,UDM.03,"{""cn"": ""AMF发起的UECM注册成功次数"", ""en"": ""UDM.AmfUecmRegSucc""}",AMF发起的UECM注册成功次数,UDM.AmfUecmRegSucc
UDM,UDM.04,"{""cn"": ""SMF发起的UECM注册成功次数"", ""en"": ""UDM.SmfUecmRegSucc""}",SMF发起的UECM注册成功次数,UDM.SmfUecmRegSucc
UDM,UDM.05,"{""cn"": ""SMF发起的UECM注册请求次数"", ""en"": ""UDM.SmfUecmRegReq""}",SMF发起的UECM注册请求次数,UDM.SmfUecmRegReq
UDM,UDM.06,"{""cn"": ""4G注册用户数"", ""en"": ""SUB.EpsActSubsInHss""}",4G注册用户数,SUB.EpsActSubsInHss
UDM,UDM.07,"{""cn"": ""4G鉴权信息查询成功次数"", ""en"": ""DIAM.AucInfoAnsSucc""}",4G鉴权信息查询成功次数,DIAM.AucInfoAnsSucc
UDM,UDM.08,"{""cn"": ""4G鉴权信息查询请求次数"", ""en"": ""DIAM.AucInfoReq""}",4G鉴权信息查询请求次数,DIAM.AucInfoReq
UDM,UDM.09,"{""cn"": ""4G更新位置成功次数"", ""en"": ""DIAM.UpdateLocationAnsSucc""}",4G更新位置成功次数,DIAM.UpdateLocationAnsSucc
UDM,UDM.10,"{""cn"": ""4G更新位置请求次数"", ""en"": ""DIAM.UpdateLocationReq""}",4G更新位置请求次数,DIAM.UpdateLocationReq
UDM,UDM.11,"{""cn"": ""SAR成功响应总次数"", ""en"": ""UR.SuccSAA""}",SAR成功响应总次数,UR.SuccSAA
UDM,UDM.12,"{""cn"": ""SAR请求总次数"", ""en"": ""UR.AttSAR""}",SAR请求总次数,UR.AttSAR
UDM,UDM.13,"{""cn"": ""LIR成功响应总次数"", ""en"": ""LIQ.SuccLIA""}",LIR成功响应总次数,LIQ.SuccLIA
UDM,UDM.14,"{""cn"": ""LIR请求总次数"", ""en"": ""LIQ.AttLIR""}",LIR请求总次数,LIQ.AttLIR
AUSF,AUSF.01,"{""cn"": ""鉴权成功次数"", ""en"": ""Ausf.UeAuthAnsSucc""}",鉴权成功次数,Ausf.UeAuthAnsSucc
AUSF,AUSF.02,"{""cn"": ""鉴权请求次数"", ""en"": ""Ausf.UeAuthReq""}",鉴权请求次数,Ausf.UeAuthReq
UPF,UPF.01,"{""cn"": ""PFCP会话建立成功次数"", ""en"": ""UPF.PfcpSessionEstabSucc""}",PFCP会话建立成功次数,UPF.PfcpSessionEstabSucc
UPF,UPF.02,"{""cn"": ""PFCP会话建立请求次数"", ""en"": ""UPF.PfcpSessionEstabReq""}",PFCP会话建立请求次数,UPF.PfcpSessionEstabReq
UPF,UPF.03,"{""cn"": ""N6接口上行字节数"", ""en"": ""UPF.N6OgOct""}",N6接口上行字节数,UPF.N6OgOct
UPF,UPF.04,"{""cn"": ""N6接口下行字节数"", ""en"": ""UPF.N6IncOct""}",N6接口下行字节数,UPF.N6IncOct
UPF,UPF.05,"{""cn"": ""N3接口上行字节数"", ""en"": ""UPF.N3OgOct""}",N3接口上行字节数,UPF.N3OgOct
UPF,UPF.06,"{""cn"": ""N3接口下行字节数"", ""en"": ""UPF.N3IncOct""}",N3接口下行字节数,UPF.N3IncOct
UPF,UPF.07,"{""cn"": ""SGi接口上行字节数"", ""en"": ""IP.PeakThroughputUlSgi""}",SGi接口上行字节数,IP.PeakThroughputUlSgi
UPF,UPF.08,"{""cn"": ""SGi接口下行字节数"", ""en"": ""IP.PeakThroughputDlSgi""}",SGi接口下行字节数,IP.PeakThroughputDlSgi
UPF,UPF.09,"{""cn"": ""S1-U接口上行字节数"", ""en"": ""GTP.OutOctS1uSgw""}",S1-U接口上行字节数,GTP.OutOctS1uSgw
UPF,UPF.10,"{""cn"": ""S1-U接口下行字节数"", ""en"": ""GTP.IncOctS1uSgw""}",S1-U接口下行字节数,GTP.IncOctS1uSgw
AMF,AMF.20,"{""cn"": ""EPS在线用户数"", ""en"": ""SUB.NbrSub.EcmIdle+SUB.NbrSub.EcmConnected""}",EPS在线用户数,SUB.NbrSub.EcmIdle+SUB.NbrSub.EcmConnected
AMF,AMF.21,"{""cn"": ""EPS附着成功次数"", ""en"": ""MM.SuccEpsAttach""}",EPS附着成功次数,MM.SuccEpsAttach
AMF,AMF.22,"{""cn"": ""EPS附着请求次数"", ""en"": ""MM.AttEpsAttach""}",EPS附着请求次数,MM.AttEpsAttach
AMF,AMF.23,"{""cn"": ""EPS附着失败次数_非法用户"", ""en"": ""MM.FailedEpsAttach.3""}",EPS附着失败次数_非法用户,MM.FailedEpsAttach.3
AMF,AMF.24,"{""cn"": ""EPS附着失败次数_非法终端"", ""en"": ""MM.FailedEpsAttach.5""}",EPS附着失败次数_非法终端,MM.FailedEpsAttach.5
AMF,AMF.25,"{""cn"": ""EPS附着失败次数_非法ME"", ""en"": ""MM.FailedEpsAttach.6""}",EPS附着失败次数_非法ME,MM.FailedEpsAttach.6
AMF,AMF.26,"{""cn"": ""EPS附着失败次数_EPS服务不允许_用户原因"", ""en"": ""MM.FailedEpsAttach.7.User""}",EPS附着失败次数_EPS服务不允许_用户原因,MM.FailedEpsAttach.7.User
AMF,AMF.27,"{""cn"": ""EPS附着失败次数_EPS和非EPS服务不允许"", ""en"": ""MM.FailedEpsAttach.8""}",EPS附着失败次数_EPS和非EPS服务不允许,MM.FailedEpsAttach.8
AMF,AMF.28,"{""cn"": ""EPS附着失败次数_跟踪区内无合适小区_用户原因"", ""en"": ""MM.FailedEpsAttach.15.User""}",EPS附着失败次数_跟踪区内无合适小区_用户原因,MM.FailedEpsAttach.15.User
AMF,AMF.29,"{""cn"": ""EPS附着失败次数_ESM失败_用户原因"", ""en"": ""MM.FailedEpsAttach.19.User""}",EPS附着失败次数_ESM失败_用户原因,MM.FailedEpsAttach.19.User
AMF,AMF.30,"{""cn"": ""MME一次寻呼响应次数"", ""en"": ""MM.FirstPagingSucc""}",MME一次寻呼响应次数,MM.FirstPagingSucc
AMF,AMF.31,"{""cn"": ""MME二次寻呼响应次数"", ""en"": ""MM.SecondPagingSucc""}",MME二次寻呼响应次数,MM.SecondPagingSucc
AMF,AMF.32,"{""cn"": ""MME寻呼请求次数"", ""en"": ""MM.PagAtt""}",MME寻呼请求次数,MM.PagAtt
SMF,SMF.08,"{""cn"": ""4G在线会话数"", ""en"": ""SM.MeanNbrBearerPgw.Default""}",4G在线会话数,SM.MeanNbrBearerPgw.Default
SMF,SMF.09,"{""cn"": ""PGW缺省承载建立成功个数"", ""en"": ""SM.SuccCreateDefaultEpsBearer""}",PGW缺省承载建立成功个数,SM.SuccCreateDefaultEpsBearer
SMF,SMF.10,"{""cn"": ""PGW缺省承载建立请求个数"", ""en"": ""SM.AttCreateDefaultEpsBearer""}",PGW缺省承载建立请求个数,SM.AttCreateDefaultEpsBearer
SMF,SMF.11,"{""cn"": ""PGW专用承载建立成功个数"", ""en"": ""SM.SuccCreateDedicatedEpsBearer""}",PGW专用承载建立成功个数,SM.SuccCreateDedicatedEpsBearer
SMF,SMF.12,"{""cn"": ""PGW专用承载建立请求个数"", ""en"": ""SM.AttCreateDedicatedEpsBearer""}",PGW专用承载建立请求个数,SM.AttCreateDedicatedEpsBearer
SMF,SMF.13,"{""cn"": ""IMS缺省承载成功建立个数"", ""en"": ""SM.SuccCreateDefaultEpsBearer._Ims""}",IMS缺省承载成功建立个数,SM.SuccCreateDefaultEpsBearer._Ims
SMF,SMF.14,"{""cn"": ""IMS缺省承载请求建立个数"", ""en"": ""SM.AttCreateDefaultEpsBearer._Ims""}",IMS缺省承载请求建立个数,SM.AttCreateDefaultEpsBearer._Ims
AMF,AMF.A.02,"{""cn"":""AMF移动性注册更新成功次数"",""en"":""AMF.SuccMobiReg""}",AMF移动性注册更新成功次数,AMF.SuccMobiReg
AMF,AMF.A.03,"{""cn"":""AMF移动性注册更新失败次数"",""en"":""AMF.FailedMobiReg""}",AMF移动性注册更新失败次数,AMF.FailedMobiReg
AMF,AMF.A.04,"{""cn"":""AMF紧急注册请求次数"",""en"":""AMF.AttEmergReg""}",AMF紧急注册请求次数,AMF.AttEmergReg
AMF,AMF.A.05,"{""cn"":""AMF紧急注册成功次数"",""en"":""AMF.SuccEmergReg""}",AMF紧急注册成功次数,AMF.SuccEmergReg
AMF,AMF.A.06,"{""cn"":""AMF紧急注册失败次数"",""en"":""AMF.FailedEmergReg""}",AMF紧急注册失败次数,AMF.FailedEmergReg
AMF,AMF.A.07,"{""cn"":""UE发起的去注册请求次数"",""en"":""AMF.AttUeDereg""}",UE发起的去注册请求次数,AMF.AttUeDereg
AMF,AMF.A.08,"{""cn"":""UE发起的去注册成功次数"",""en"":""AMF.SuccUeDereg""}",UE发起的去注册成功次数,AMF.SuccUeDereg
AMF,AMF.A.09,"{""cn"":""AMF发起的去注册请求次数"",""en"":""AMF.AttAmfDereg""}",AMF发起的去注册请求次数,AMF.AttAmfDereg
AMF,AMF.A.10,"{""cn"":""AMF发起的去注册成功次数"",""en"":""AMF.SuccAmfDereg""}",AMF发起的去注册成功次数,AMF.SuccAmfDereg
AMF,AMF.A.11,"{""cn"":""UDM发起的去注册请求次数"",""en"":""AMF.AttUdmDereg""}",UDM发起的去注册请求次数,AMF.AttUdmDereg
AMF,AMF.A.12,"{""cn"":""UDM发起的去注册成功次数"",""en"":""AMF.SuccUdmDereg""}",UDM发起的去注册成功次数,AMF.SuccUdmDereg
AMF,AMF.A.13,"{""cn"":""AMF寻呼失败次数"",""en"":""AMF.PagFail""}",AMF寻呼失败次数,AMF.PagFail
AMF,AMF.A.14,"{""cn"":""AMF隐式去注册次数"",""en"":""AMF.ImplicitDereg""}",AMF隐式去注册次数,AMF.ImplicitDereg
SMF,SMF.A.01,"{""cn"":""PDU会话接受次数"",""en"":""SMF.PduSessAcpt""}",PDU会话接受次数,SMF.PduSessAcpt
SMF,SMF.A.02,"{""cn"":""基站Pdu资源创建成功次数"",""en"":""SM.PduResSetupSucc""}",基站Pdu资源创建成功次数,SM.PduResSetupSucc
SMF,SMF.A.03,"{""cn"":""查询用户SM数据失败次数"",""en"":""SM.RetrieveSmDataFail""}",查询用户SM数据失败次数,SM.RetrieveSmDataFail
SMF,SMF.A.04,"{""cn"":""PFCP会话建立失败次数"",""en"":""SM.PfcpSessEstFail""}",PFCP会话建立失败次数,SM.PfcpSessEstFail
SMF,SMF.A.05,"{""cn"":""基站Pdu资源创建失败次数"",""en"":""SM.PduResSetupFail""}",基站Pdu资源创建失败次数,SM.PduResSetupFail
SMF,SMF.A.06,"{""cn"":""PFCP会话修改失败次数"",""en"":""SM.PfcpSessMdfyFail""}",PFCP会话修改失败次数,SM.PfcpSessMdfyFail
SMF,SMF.A.07,"{""cn"":""PDU会话拒绝次数"",""en"":""SM.PduSessRejt""}",PDU会话拒绝次数,SM.PduSessRejt
SMF,SMF.A.08,"{""cn"":""PDU会话释放指示次数"",""en"":""SM.PduSessRelCmd""}",PDU会话释放指示次数,SM.PduSessRelCmd
NSSF,NSSF.A.02,"{""cn"":""可用AMF注册次数"",""en"":""NSSF.SuccAvailAMFPut""}",可用AMF注册成功次数,NSSF.SuccAvailAMFPut
NSSF,NSSF.A.03,"{""cn"":""可用AMF注册更新成功次数"",""en"":""NSSF.AvailAMFPut""}",可用AMF注册次数,NSSF.AvailAMFPut
NSSF,NSSF.A.04,"{""cn"":""可用AMF注册更新次数"",""en"":""NSSF.SuccAvailAMFPatch""}",可用AMF注册更新成功次数,NSSF.SuccAvailAMFPatch
NSSF,NSSF.A.01,"{""cn"":""可用AMF注册成功次数"",""en"":""NSSF.AvailAMFPatch""}",可用AMF注册更新次数,NSSF.AvailAMFPatch
NSSF,NSSF.A.05,"{""cn"":""可用AMF去注册成功次数"",""en"":""NSSF.SuccAvailAMFDelete""}",可用AMF去注册成功次数,NSSF.SuccAvailAMFDelete
NSSF,NSSF.A.06,"{""cn"":""可用AMF去注册次数"",""en"":""NSSF.AvailAMFDelete""}",可用AMF去注册次数,NSSF.AvailAMFDelete
NSSF,NSSF.A.07,"{""cn"":""网元订阅成功次数"",""en"":""NSSF.SuccAvailSubscription""}",网元订阅成功次数,NSSF.SuccAvailSubscription
NSSF,NSSF.A.08,"{""cn"":""网元订阅次数"",""en"":""NSSF.AvailSubscription""}",网元订阅次数,NSSF.AvailSubscription
NSSF,NSSF.A.09,"{""cn"":""网元去订阅成功次数"",""en"":""NSSF.SuccAvailUnsubscription""}",网元去订阅成功次数,NSSF.SuccAvailUnsubscription
NSSF,NSSF.A.10,"{""cn"":""网元去订阅次数"",""en"":""NSSF.AvailUnsubscription""}",网元去订阅次数,NSSF.AvailUnsubscription
NSSF,NSSF.A.11,"{""cn"":""向NRF注册成功次数"",""en"":""NSSF.SuccNRFReg""}",向NRF注册成功次数,NSSF.SuccNRFReg
NSSF,NSSF.A.12,"{""cn"":""向NRF注册次数"",""en"":""NSSF.NRFReg""}",向NRF注册次数,NSSF.NRFReg
NSSF,NSSF.A.13,"{""cn"":""向NRF发送心跳次数"",""en"":""NSSF.NRFHeartbeat""}",向NRF发送心跳次数,NSSF.NRFHeartbeat
NSSF,NSSF.A.14,"{""cn"":""当前注册AMF个数"",""en"":""NSSF.CurrentAMFCount""}",当前注册AMF个数,NSSF.CurrentAMFCount
NSSF,NSSF.A.15,"{""cn"":""当前订阅网元个数"",""en"":""NSSF.CurrentSubscriperCount""}",当前订阅网元个数,NSSF.CurrentSubscriperCount
MME,MME.A.01,"{""cn"":""MME附着请求次数"",""en"":""EpsAttachAtt""}",MME附着请求次数,EpsAttachAtt
MME,MME.A.02,"{""cn"":""MME附着成功次数"",""en"":""EpsAttachSucc""}",MME附着成功次数,EpsAttachSucc
MME,MME.A.03,"{""cn"":""MME附着失败次数"",""en"":""EpsAttachFail""}",MME附着失败次数,EpsAttachFail
MME,MME.A.04,"{""cn"":""MME组合附着请求次数"",""en"":""CombAttachAtt""}",MME组合附着请求次数,CombAttachAtt
MME,MME.A.05,"{""cn"":""MME组合附着成功次数"",""en"":""CombAttachSucc""}",MME组合附着成功次数,CombAttachSucc
MME,MME.A.06,"{""cn"":""MME组合附着失败次数"",""en"":""CombAttachFail""}",MME组合附着失败次数,CombAttachFail
MME,MME.A.07,"{""cn"":""MME紧急附着请求次数"",""en"":""EmergAttachAtt""}",MME紧急附着请求次数,EmergAttachAtt
MME,MME.A.08,"{""cn"":""MME紧急附着成功次数"",""en"":""EmergAttachSucc""}",MME紧急附着成功次数,EmergAttachSucc
MME,MME.A.09,"{""cn"":""MME紧急附着失败次数"",""en"":""EmergAttachFail""}",MME紧急附着失败次数,EmergAttachFail
MME,MME.A.10,"{""cn"":""UE发起的分离请求次数"",""en"":""EpsDetachUeAtt""}",UE发起的分离请求次数,EpsDetachUeAtt
MME,MME.A.11,"{""cn"":""UE发起的分离请求成功次数"",""en"":""EpsDetachUeSucc""}",UE发起的分离请求成功次数,EpsDetachUeSucc
MME,MME.A.12,"{""cn"":""MME发起的分离请求次数"",""en"":""EpsDetachMMEAtt""}",MME发起的分离请求次数,EpsDetachMMEAtt
MME,MME.A.13,"{""cn"":""MME发起的分离请求成功次数"",""en"":""EpsDetachMMESucc""}",MME发起的分离请求成功次数,EpsDetachMMESucc
MME,MME.A.14,"{""cn"":""伴随SGW内切换的TAU请求次数"",""en"":""TauIntraSgwAtt""}",伴随SGW内切换的TAU请求次数,TauIntraSgwAtt
MME,MME.A.15,"{""cn"":""伴随SGW内切换的TAU成功请求次数"",""en"":""TauIntraSgwSucc""}",伴随SGW内切换的TAU成功请求次数,TauIntraSgwSucc
MME,MME.A.16,"{""cn"":""伴随SGW内切换的TAU失败请求次数"",""en"":""TauIntraSgwFail""}",伴随SGW内切换的TAU失败请求次数,TauIntraSgwFail
MME,MME.A.17,"{""cn"":""MME寻呼次数"",""en"":""PagingEpsAtt""}",MME寻呼次数,PagingEpsAtt
MME,MME.A.18,"{""cn"":""MME寻呼成功次数"",""en"":""PagingEpsSucc""}",MME寻呼成功次数,PagingEpsSucc
MME,MME.A.19,"{""cn"":""MME寻呼失败次数"",""en"":""PagingEpsFail""}",MME寻呼失败次数,PagingEpsFail
MME,MME.A.20,"{""cn"":""MME隐式分离请求次数"",""en"":""EpsImplicitDetach""}",MME隐式分离请求次数,EpsImplicitDetach
MME,MME.A.21,"{""cn"":""MME激活专用承载请求次数"",""en"":""ActDedicatedEpsBearerAtt""}",MME激活专用承载请求次数,ActDedicatedEpsBearerAtt
MME,MME.A.22,"{""cn"":""MME激活专用承载请求成功次数"",""en"":""ActDedicatedEpsBearerSucc""}",MME激活专用承载请求成功次数,ActDedicatedEpsBearerSucc
MME,MME.A.23,"{""cn"":""MME激活专用承载请求失败次数"",""en"":""ActDedicatedEpsBearerFail""}",MME激活专用承载请求失败次数,ActDedicatedEpsBearerFail
MME,MME.A.24,"{""cn"":""MME去激活专用承载请求次数"",""en"":""DeactEpsDedicatedBearerAtt""}",MME去激活专用承载请求次数,DeactEpsDedicatedBearerAtt
MME,MME.A.25,"{""cn"":""MME去激活专用承载请求成功次数"",""en"":""DeactEpsDedicatedBearerSucc""}",MME去激活专用承载请求成功次数,DeactEpsDedicatedBearerSucc
MME,MME.A.26,"{""cn"":""MME修改专用承载请求次数"",""en"":""ModEpsBearerAtt""}",MME修改专用承载请求次数,ModEpsBearerAtt
MME,MME.A.27,"{""cn"":""MME修改专用承载请求成功次数"",""en"":""ModEpsBearerSucc""}",MME修改专用承载请求成功次数,ModEpsBearerSucc
MME,MME.A.28,"{""cn"":""MME修改专用承载请求失败次数"",""en"":""ModEpsBearerFail""}",MME修改专用承载请求失败次数,ModEpsBearerFail
MME,MME.A.29,"{""cn"":""MME服务请求次数"",""en"":""EpsServiceReqAtt""}",MME服务请求次数,EpsServiceReqAtt
MME,MME.A.30,"{""cn"":""MME服务请求成功次数"",""en"":""EpsServiceReqSucc""}",MME服务请求成功次数,EpsServiceReqSucc
MME,MME.A.31,"{""cn"":""MME服务请求失败次数"",""en"":""EpsServiceReqFail""}",MME服务请求失败次数,EpsServiceReqFail
MOCNGW,MOCNGW.01,"{""cn"":""AttachRequest"",""en"":""AttachRequest""}",AttachRequest,AttachRequest
MOCNGW,MOCNGW.02,"{""cn"":""AttachAccept"",""en"":""AttachAccept""}",AttachAccept,AttachAccept
MOCNGW,MOCNGW.03,"{""cn"":""AttachComplete"",""en"":""AttachComplete""}",AttachComplete,AttachComplete
MOCNGW,MOCNGW.04,"{""cn"":""AttachReject"",""en"":""AttachReject""}",AttachReject,AttachReject
MOCNGW,MOCNGW.05,"{""cn"":""DetachRequest"",""en"":""DetachRequest""}",DetachRequest,DetachRequest
MOCNGW,MOCNGW.06,"{""cn"":""DetachAccept"",""en"":""DetachAccept""}",DetachAccept,DetachAccept
MOCNGW,MOCNGW.07,"{""cn"":""TrackingAreaUpdateRequest"",""en"":""TrackingAreaUpdateRequest""}",TrackingAreaUpdateRequest,TrackingAreaUpdateRequest
MOCNGW,MOCNGW.08,"{""cn"":""TrackingAreaUpdateAccept"",""en"":""TrackingAreaUpdateAccept""}",TrackingAreaUpdateAccept,TrackingAreaUpdateAccept
MOCNGW,MOCNGW.09,"{""cn"":""TrackingAreaUpdateComplete"",""en"":""TrackingAreaUpdateComplete""}",TrackingAreaUpdateComplete,TrackingAreaUpdateComplete
MOCNGW,MOCNGW.10,"{""cn"":""TrackingAreaUpdateReject"",""en"":""TrackingAreaUpdateReject""}",TrackingAreaUpdateReject,TrackingAreaUpdateReject
MOCNGW,MOCNGW.11,"{""cn"":""ServiceRequest"",""en"":""ServiceRequest""}",ServiceRequest,ServiceRequest
MOCNGW,MOCNGW.12,"{""cn"":""ExtendedServiceRequest"",""en"":""ExtendedServiceRequest""}",ExtendedServiceRequest,ExtendedServiceRequest
MOCNGW,MOCNGW.13,"{""cn"":""ControlPlaneServiceRequest"",""en"":""ControlPlaneServiceRequest""}",ControlPlaneServiceRequest,ControlPlaneServiceRequest
MOCNGW,MOCNGW.14,"{""cn"":""ServiceReject"",""en"":""ServiceReject""}",ServiceReject,ServiceReject
MOCNGW,MOCNGW.15,"{""cn"":""ServiceAccept"",""en"":""ServiceAccept""}",ServiceAccept,ServiceAccept
MOCNGW,MOCNGW.16,"{""cn"":""GutiReallocationCommand"",""en"":""GutiReallocationCommand""}",GutiReallocationCommand,GutiReallocationCommand
MOCNGW,MOCNGW.17,"{""cn"":""GutiReallocationComplete"",""en"":""GutiReallocationComplete""}",GutiReallocationComplete,GutiReallocationComplete
MOCNGW,MOCNGW.18,"{""cn"":""AuthenticationRequest"",""en"":""AuthenticationRequest""}",AuthenticationRequest,AuthenticationRequest
MOCNGW,MOCNGW.19,"{""cn"":""AuthenticationResponse"",""en"":""AuthenticationResponse""}",AuthenticationResponse,AuthenticationResponse
MOCNGW,MOCNGW.20,"{""cn"":""AuthenticationReject"",""en"":""AuthenticationReject""}",AuthenticationReject,AuthenticationReject
MOCNGW,MOCNGW.21,"{""cn"":""AuthenticationFailure"",""en"":""AuthenticationFailure""}",AuthenticationFailure,AuthenticationFailure
MOCNGW,MOCNGW.22,"{""cn"":""IdentityRequest"",""en"":""IdentityRequest""}",IdentityRequest,IdentityRequest
MOCNGW,MOCNGW.23,"{""cn"":""IdentityResponse"",""en"":""IdentityResponse""}",IdentityResponse,IdentityResponse
MOCNGW,MOCNGW.24,"{""cn"":""SecurityModeCommand"",""en"":""SecurityModeCommand""}",SecurityModeCommand,SecurityModeCommand
MOCNGW,MOCNGW.25,"{""cn"":""SecurityModeComplete"",""en"":""SecurityModeComplete""}",SecurityModeComplete,SecurityModeComplete
MOCNGW,MOCNGW.26,"{""cn"":""SecurityModeReject"",""en"":""SecurityModeReject""}",SecurityModeReject,SecurityModeReject
MOCNGW,MOCNGW.27,"{""cn"":""EmmStatus"",""en"":""EmmStatus""}",EmmStatus,EmmStatus
MOCNGW,MOCNGW.28,"{""cn"":""EmmInformation"",""en"":""EmmInformation""}",EmmInformation,EmmInformation
MOCNGW,MOCNGW.29,"{""cn"":""DownlinkNasTransport"",""en"":""DownlinkNasTransport""}",DownlinkNasTransport,DownlinkNasTransport
MOCNGW,MOCNGW.30,"{""cn"":""UplinkNasTransport"",""en"":""UplinkNasTransport""}",UplinkNasTransport,UplinkNasTransport
MOCNGW,MOCNGW.31,"{""cn"":""CsServiceNotification"",""en"":""CsServiceNotification""}",CsServiceNotification,CsServiceNotification
MOCNGW,MOCNGW.32,"{""cn"":""DownlinkGenericNasTransport"",""en"":""DownlinkGenericNasTransport""}",DownlinkGenericNasTransport,DownlinkGenericNasTransport
MOCNGW,MOCNGW.33,"{""cn"":""UplinkGenericNasTransport"",""en"":""UplinkGenericNasTransport""}",UplinkGenericNasTransport,UplinkGenericNasTransport
IMS,SCSCF.01,"{""cn"": ""LTE接入注册用户数"",""en"": ""UR.SubsLTE.fromVoLTE""}",LTE接入注册用户数,UR.SubsLTE.fromVoLTE
IMS,SCSCF.02,"{""cn"": ""5G接入注册用户数"",""en"": ""UR.Subs5G.fromVo5G""}",5G接入注册用户数,UR.Subs5G.fromVo5G
IMS,SCSCF.03,"{""cn"": ""初始注册成功次数"",""en"": ""UR.SuccInitReg""}",初始注册成功次数,UR.SuccInitReg
IMS,SCSCF.04,"{""cn"": ""初始注册请求次数"",""en"": ""UR.AttInitReg""}",初始注册请求次数,UR.AttInitReg
IMS,SCSCF.05,"{""cn"": ""主叫接通次数"",""en"": ""SC.SuccSessionOrig""}",主叫接通次数,SC.SuccSessionOrig
IMS,SCSCF.06,"{""cn"": ""主叫试呼次数"",""en"": ""SC.AttSessionOrig""}",主叫试呼次数,SC.AttSessionOrig
IMS,SCSCF.07,"{""cn"": ""被叫接通次数"",""en"": ""SC.SuccSessionTerm""}",被叫接通次数,SC.SuccSessionTerm
IMS,SCSCF.08,"{""cn"": ""被叫试呼次数"",""en"": ""SC.AttSessionTerm""}",被叫试呼次数,SC.AttSessionTerm
IMS,SCSCF.09,"{""cn"": ""主叫应答次数"",""en"": ""SC.AnsSessionOrig""}",主叫应答次数,SC.AnsSessionOrig
IMS,SCSCF.10,"{""cn"": ""主叫早释次数"",""en"": ""SC.OrigRelBeforeRing""}",主叫早释次数,SC.OrigRelBeforeRing
IMS,SCSCF.11,"{""cn"": ""主叫振铃早释次数"",""en"": ""SC.OrigRelAfterRing""}",主叫振铃早释次数,SC.OrigRelAfterRing
IMS,SCSCF.12,"{""cn"": ""主叫403请求禁止次数"",""en"": ""SC.FailSessionOrig.403""}",主叫403请求禁止次数,SC.FailSessionOrig.403
IMS,SCSCF.13,"{""cn"": ""主叫404未找到次数"",""en"": ""SC.FailSessionOrig.404""}",主叫404未找到次数,SC.FailSessionOrig.404
IMS,SCSCF.14,"{""cn"": ""主叫408请求超时次数"",""en"": ""SC.FailSessionOrig.408""}",主叫408请求超时次数,SC.FailSessionOrig.408
IMS,SCSCF.15,"{""cn"": ""主叫480久叫不应次"",""en"": ""SC.FailSessionOrig.480""}",主叫480久叫不应次,SC.FailSessionOrig.480
IMS,SCSCF.16,"{""cn"": ""主叫484Request-URI不完整次"",""en"": ""SC.FailSessionOrig.484""}",主叫484Request-URI不完整次,SC.FailSessionOrig.484
IMS,SCSCF.17,"{""cn"": ""主叫486用户忙次数"",""en"": ""SC.FailSessionOrig.486""}",主叫486用户忙次数,SC.FailSessionOrig.486
IMS,SCSCF.18,"{""cn"": ""主叫487请求终止次数"",""en"": ""SC.FailSessionOrig.487""}",主叫487请求终止次数,SC.FailSessionOrig.487
IMS,SCSCF.19,"{""cn"": ""主叫600用户忙次数"",""en"": ""SC.FailSessionOrig.600""}",主叫600用户忙次数,SC.FailSessionOrig.600
IMS,SCSCF.20,"{""cn"": ""主叫603用户拒接次数"",""en"": ""SC.FailSessionOrig.603""}",主叫603用户拒接次数,SC.FailSessionOrig.603
IMS,SCSCF.21,"{""cn"": ""主叫604用户信息不存在次数"",""en"": ""SC.FailSessionOrig.604""}",主叫604用户信息不存在次数,SC.FailSessionOrig.604
IMS,SCSCF.22,"{""cn"": ""被叫应答次数"",""en"": ""SC.AnsSessionTerm""}",被叫应答次数,SC.AnsSessionTerm
IMS,SCSCF.23,"{""cn"": ""被叫早释次"",""en"": ""SC.TermiRelBeforeRing""}",被叫早释次,SC.TermiRelBeforeRing
IMS,SCSCF.24,"{""cn"": ""被叫振铃早释次数"",""en"": ""SC.TermiRelAfterRing""}",被叫振铃早释次数,SC.TermiRelAfterRing
IMS,SCSCF.25,"{""cn"": ""被叫403请求禁止次数"",""en"": ""SC.FailSessionTerm.403""}",被叫403请求禁止次数,SC.FailSessionTerm.403
IMS,SCSCF.26,"{""cn"": ""被叫404未找到次数"",""en"": ""SC.FailSessionTerm.404""}",被叫404未找到次数,SC.FailSessionTerm.404
IMS,SCSCF.27,"{""cn"": ""被叫408请求超时次数"",""en"": ""SC.FailSessionTerm.408""}",被叫408请求超时次数,SC.FailSessionTerm.408
IMS,SCSCF.28,"{""cn"": ""被叫480久叫不应次数"",""en"": ""SC.FailSessionTerm.480""}",被叫480久叫不应次数,SC.FailSessionTerm.480
IMS,SCSCF.29,"{""cn"": ""被叫484Request-URI不完整次数"",""en"": ""SC.FailSessionTerm.484""}",被叫484Request-URI不完整次数,SC.FailSessionTerm.484
IMS,SCSCF.30,"{""cn"": ""被叫486用户忙次数"",""en"": ""SC.FailSessionTerm.486""}",被叫486用户忙次数,SC.FailSessionTerm.486
IMS,SCSCF.31,"{""cn"": ""被叫487请求终止次数"",""en"": ""SC.FailSessionTerm.487""}",被叫487请求终止次数,SC.FailSessionTerm.487
IMS,SCSCF.32,"{""cn"": ""被叫600用户忙次数"",""en"": ""SC.FailSessionTerm.600""}",被叫600用户忙次数,SC.FailSessionTerm.600
IMS,SCSCF.33,"{""cn"": ""被叫603用户拒接次数"",""en"": ""SC.FailSessionTerm.603""}",被叫603用户拒接次数,SC.FailSessionTerm.603
IMS,SCSCF.34,"{""cn"": ""被叫604用户信息不存在次数"",""en"": ""SC.FailSessionTerm.604""}",被叫604用户信息不存在次数,SC.FailSessionTerm.604
PCF,PCF.01,"{""cn"": ""在线N7会话数"", ""en"": ""PCF.SmAssocNbrMean""}",在线N7会话数,PCF.SmAssocNbrMean
PCF,PCF.02,"{""cn"": ""SM策略关联建立成功次数"", ""en"": ""PCF.PolicySmAssocCreateSucc""}",SM策略关联建立成功次数,PCF.PolicySmAssocCreateSucc
PCF,PCF.03,"{""cn"": ""SM策略关联建立请求次数"", ""en"": ""PCF.PolicySmAssocCreateReq""}",SM策略关联建立请求次数,PCF.PolicySmAssocCreateReq
PCF,PCF.04,"{""cn"": ""SM策略关联更新成功次数"", ""en"": ""PCF.PolicySmAssocUpdateSucc""}",SM策略关联更新成功次数,PCF.PolicySmAssocUpdateSucc
PCF,PCF.05,"{""cn"": ""SM策略关联更新请求次数"", ""en"": ""PCF.PolicySmAssocUpdateReq""}",SM策略关联更新请求次数,PCF.PolicySmAssocUpdateReq
PCF,PCF.06,"{""cn"": ""在线Gx会话数"", ""en"": ""SM.SessionNbrMean""}",在线Gx会话数,SM.SessionNbrMean
PCF,PCF.07,"{""cn"": ""在线Rx会话数"", ""en"": ""SM.RxSessionMean""}",在线Rx会话数,SM.RxSessionMean
PCF,PCF.08,"{""cn"": ""PCRF策略控制发起成功次数"", ""en"": ""DIAM.CcInitialSuccess""}",PCRF策略控制发起成功次数,DIAM.CcInitialSuccess
PCF,PCF.09,"{""cn"": ""PCRF策略控制发起请求次数"", ""en"": ""DIAM.CcInitialRequest""}",PCRF策略控制发起请求次数,DIAM.CcInitialRequest
PCF,PCF.10,"{""cn"": ""应用会话授权成功次数"", ""en"": ""DIAM.AuthSucc""}",应用会话授权成功次数,DIAM.AuthSucc
PCF,PCF.11,"{""cn"": ""应用会话授权尝试次数"", ""en"": ""DIAM.AuthRequest""}",应用会话授权尝试次数,DIAM.AuthRequest
PCF,PCF.12,"{""cn"": ""PCRF策略控制更新成功次数"", ""en"": ""DIAM.CcUpdateSuccess""}",PCRF策略控制更新成功次数,DIAM.CcUpdateSuccess
PCF,PCF.13,"{""cn"": ""PCRF策略控制更新请求次数"", ""en"": ""DIAM.CcUpdateRequest""}",PCRF策略控制更新请求次数,DIAM.CcUpdateRequest
SMSC,SMSC.A.01,"{""cn"": ""MS到SMSC短信请求次数"", ""en"": ""SMSC.MStoSMSCAtt""}",MS到SMSC短信请求次数,SMSC.MStoSMSCAtt
SMSC,SMSC.A.02,"{""cn"": ""MS到SMSC短信成功次数"", ""en"": ""SMSC.MStoSMSCSucc""}",MS到SMSC短信成功次数,SMSC.MStoSMSCSucc
SMSC,SMSC.A.03,"{""cn"": ""MS到SMSC短信失败次数"", ""en"": ""SMSC.MStoSMSCFail""}",MS到SMSC短信失败次数,SMSC.MStoSMSCFail
SMSC,SMSC.A.04,"{""cn"": ""MS到SMSC短信字节数"", ""en"": ""SMSC.MStoSMSCBytes""}",MS到SMSC短信字节数,SMSC.MStoSMSCBytes
SMSC,SMSC.A.05,"{""cn"": ""VSS到SMSC短信请求次数"", ""en"": ""SMSC.VSStoSMSCAtt""}",VSS到SMSC短信请求次数,SMSC.VSStoSMSCAtt
SMSC,SMSC.A.06,"{""cn"": ""VSS到SMSC短信成功次数"", ""en"": ""SMSC.VSStoSMSCSucc""}",VSS到SMSC短信成功次数,SMSC.VSStoSMSCSucc
SMSC,SMSC.A.07,"{""cn"": ""VSS到SMSC短信失败次数"", ""en"": ""SMSC.VSStoSMSCFail""}",VSS到SMSC短信失败次数,SMSC.VSStoSMSCFail
SMSC,SMSC.A.08,"{""cn"": ""VSS到SMSC短信字节数"", ""en"": ""SMSC.VSStoSMSCBytes""}",VSS到SMSC短信字节数,SMSC.VSStoSMSCBytes
SMSC,SMSC.A.09,"{""cn"": ""PPS到SMSC短信请求次数"", ""en"": ""SMSC.PPStoSMSCAtt""}",PPS到SMSC短信请求次数,SMSC.PPStoSMSCAtt
SMSC,SMSC.A.10,"{""cn"": ""PPS到SMSC短信成功次数"", ""en"": ""SMSC.PPStoSMSCSucc""}",PPS到SMSC短信成功次数,SMSC.PPStoSMSCSucc
SMSC,SMSC.A.11,"{""cn"": ""PPS到SMSC短信失败次数"", ""en"": ""SMSC.PPStoSMSCFail""}",PPS到SMSC短信失败次数,SMSC.PPStoSMSCFail
SMSC,SMSC.A.12,"{""cn"": ""PPS到SMSC短信字节数"", ""en"": ""SMSC.PPStoSMSCBytes""}",PPS到SMSC短信字节数,SMSC.PPStoSMSCBytes
SMSC,SMSC.A.13,"{""cn"": ""SMPP到SMSC短信请求次数"", ""en"": ""SMSC.SMPPtoSMSCAtt""}",SMPP到SMSC短信请求次数,SMSC.SMPPtoSMSCAtt
SMSC,SMSC.A.14,"{""cn"": ""SMPP到SMSC短信成功次数"", ""en"": ""SMSC.SMPPtoSMSCSucc""}",SMPP到SMSC短信成功次数,SMSC.SMPPtoSMSCSucc
SMSC,SMSC.A.15,"{""cn"": ""SMPP到SMSC短信失败次数"", ""en"": ""SMSC.SMPPtoSMSCFail""}",SMPP到SMSC短信失败次数,SMSC.SMPPtoSMSCFail
SMSC,SMSC.A.16,"{""cn"": ""SMPP到SMSC短信字节数"", ""en"": ""SMSC.SMPPtoSMSCBytes""}",SMPP到SMSC短信字节数,SMSC.SMPPtoSMSCBytes
SMSC,SMSC.A.17,"{""cn"": ""SMSC到MS短信请求次数"", ""en"": ""SMSC.SMSCtoMSAtt""}",SMSC到MS短信请求次数,SMSC.SMSCtoMSAtt
SMSC,SMSC.A.18,"{""cn"": ""SMSC到MS短信成功次数"", ""en"": ""SMSC.SMSCtoMSSucc""}",SMSC到MS短信成功次数,SMSC.SMSCtoMSSucc
SMSC,SMSC.A.19,"{""cn"": ""SMSC到MS短信失败次数"", ""en"": ""SMSC.SMSCtoMSFail""}",SMSC到MS短信失败次数,SMSC.SMSCtoMSFail
SMSC,SMSC.A.20,"{""cn"": ""SMSC到MS短信字节数"", ""en"": ""SMSC.SMSCtoMSBytes""}",SMSC到MS短信字节数,SMSC.SMSCtoMSBytes
SMSC,SMSC.A.21,"{""cn"": ""SMSC到VSS短信请求次数"", ""en"": ""SMSC.SMSCtoVSSAtt""}",SMSC到VSS短信请求次数,SMSC.SMSCtoVSSAtt
SMSC,SMSC.A.22,"{""cn"": ""SMSC到VSS短信成功次数"", ""en"": ""SMSC.SMSCtoVSSucc""}",SMSC到VSS短信成功次数,SMSC.SMSCtoVSSucc
SMSC,SMSC.A.23,"{""cn"": ""SMSC到VSS短信失败次数"", ""en"": ""SMSC.SMSCtoVSSFail""}",SMSC到VSS短信失败次数,SMSC.SMSCtoVSSFail
SMSC,SMSC.A.24,"{""cn"": ""SMSC到VSS短信字节数"", ""en"": ""SMSC.SMSCtoVSSBytes""}",SMSC到VSS短信字节数,SMSC.SMSCtoVSSBytes
SMSC,SMSC.A.25,"{""cn"": ""SMSC到PPS短信请求次数"", ""en"": ""SMSC.SMSCtoPPSAtt""}",SMSC到PPS短信请求次数,SMSC.SMSCtoPPSAtt
SMSC,SMSC.A.26,"{""cn"": ""SMSC到PPS短信成功次数"", ""en"": ""SMSC.SMSCtoPPSucc""}",SMSC到PPS短信成功次数,SMSC.SMSCtoPPSucc
SMSC,SMSC.A.27,"{""cn"": ""SMSC到PPS短信失败次数"", ""en"": ""SMSC.SMSCtoPPSFail""}",SMSC到PPS短信失败次数,SMSC.SMSCtoPPSFail
SMSC,SMSC.A.28,"{""cn"": ""SMSC到PPS短信字节数"", ""en"": ""SMSC.SMSCtoPPSBytes""}",SMSC到PPS短信字节数,SMSC.SMSCtoPPSBytes
SMSC,SMSC.A.29,"{""cn"": ""SMSC到SMPP短信请求次数"", ""en"": ""SMSC.SMSCtoSMPPAtt""}",SMSC到SMPP短信请求次数,SMSC.SMSCtoSMPPAtt
SMSC,SMSC.A.30,"{""cn"": ""SMSC到SMPP短信成功次数"", ""en"": ""SMSC.SMSCtoSMPPucc""}",SMSC到SMPP短信成功次数,SMSC.SMSCtoSMPPucc
SMSC,SMSC.A.31,"{""cn"": ""SMSC到SMPP短信失败次数"", ""en"": ""SMSC.SMSCtoSMPPFail""}",SMSC到SMPP短信失败次数,SMSC.SMSCtoSMPPFail
SMSC,SMSC.A.32,"{""cn"": ""SMSC到SMPP短信字节数"", ""en"": ""SMSC.SMSCtoSMPPBytes""}",SMSC到SMPP短信字节数,SMSC.SMSCtoSMPPBytes
1 ne_type kpi_id title_json cn_title en_title
2 AMF AMF.01 {"cn": "AMF注册态用户数", "en": "AMF.RegSub"} AMF注册态用户数 AMF.RegSub
3 AMF AMF.02 {"cn": "AMF初始注册请求次数", "en": "AMF.AttInitReg"} AMF初始注册请求次数 AMF.AttInitReg
4 AMF AMF.03 {"cn": "AMF初始注册成功次数", "en": "AMF.SuccInitReg"} AMF初始注册成功次数 AMF.SuccInitReg
5 AMF AMF.04 {"cn": "AMF初始注册失败次数_非法用户", "en": "AMF.FailedInitReg.3"} AMF初始注册失败次数_非法用户 AMF.FailedInitReg.3
6 AMF AMF.05 {"cn": "AMF初始注册失败次数_PEI不允许", "en": "AMF.FailedInitReg.5"} AMF初始注册失败次数_PEI不允许 AMF.FailedInitReg.5
7 AMF AMF.06 {"cn": "AMF初始注册失败次数_非法设备", "en": "AMF.FailedInitReg.6"} AMF初始注册失败次数_非法设备 AMF.FailedInitReg.6
8 AMF AMF.07 {"cn": "AMF初始注册失败次数_5GS服务不允许_用户原因", "en": "AMF.FailedInitReg.7.User"} AMF初始注册失败次数_5GS服务不允许_用户原因 AMF.FailedInitReg.7.User
9 AMF AMF.08 {"cn": "AMF初始注册失败次数_跟踪区内无合适小区_用户原因", "en": "AMF.FailedInitReg.15.User"} AMF初始注册失败次数_跟踪区内无合适小区_用户原因 AMF.FailedInitReg.15.User
10 AMF AMF.09 {"cn": "AMF初始注册失败次数_N1模式不允许", "en": "AMF.FailedInitReg.27"} AMF初始注册失败次数_N1模式不允许 AMF.FailedInitReg.27
11 AMF AMF.10 {"cn": "AMF初始注册失败次数_PLMN不允许", "en": "AMF.FailedInitReg.11"} AMF初始注册失败次数_PLMN不允许 AMF.FailedInitReg.11
12 AMF AMF.11 {"cn": "AMF初始注册失败次数_跟踪区不允许", "en": "AMF.FailedInitReg.12"} AMF初始注册失败次数_跟踪区不允许 AMF.FailedInitReg.12
13 AMF AMF.12 {"cn": "AMF初始注册失败次数_漫游跟踪区禁止接入", "en": "AMF.FailedInitReg.13"} AMF初始注册失败次数_漫游跟踪区禁止接入 AMF.FailedInitReg.13
14 AMF AMF.13 {"cn": "AMF初始注册失败次数_无可用网络切片", "en": "AMF.FailedInitReg.62"} AMF初始注册失败次数_无可用网络切片 AMF.FailedInitReg.62
15 AMF AMF.14 {"cn": "AMF初始注册失败次数_协议错误_用户原因", "en": "AMF.FailedInitReg.111.User"} AMF初始注册失败次数_协议错误_用户原因 AMF.FailedInitReg.111.User
16 AMF AMF.15 {"cn": "AMF一次寻呼响应次数", "en": "AMF.FirstPagingSucc"} AMF一次寻呼响应次数 AMF.FirstPagingSucc
17 AMF AMF.16 {"cn": "AMF二次寻呼响应次数", "en": "AMF.SecondPagingSucc"} AMF二次寻呼响应次数 AMF.SecondPagingSucc
18 AMF AMF.17 {"cn": "AMF寻呼请求次数", "en": "AMF.PagAtt"} AMF寻呼请求次数 AMF.PagAtt
19 AMF AMF.18 {"cn": "AMF业务请求被拒次数", "en": "AMF.FailServiceReq"} AMF业务请求被拒次数 AMF.FailServiceReq
20 AMF AMF.19 {"cn": "AMF业务请求尝试次数", "en": "AMF.AttServiceReq"} AMF业务请求尝试次数 AMF.AttServiceReq
21 SMF SMF.01 {"cn": "5G实时PDU会话数", "en": "SMF.MeanPduSession"} 5G实时PDU会话数 SMF.MeanPduSession
22 SMF SMF.02 {"cn": "PDU会话建立成功次数", "en": "SMF.SuccCreatePduSession"} PDU会话建立成功次数 SMF.SuccCreatePduSession
23 SMF SMF.03 {"cn": "PDU会话建立请求次数", "en": "SMF.AttCreatePduSession"} PDU会话建立请求次数 SMF.AttCreatePduSession
24 SMF SMF.04 {"cn": "IMS PDU会话建立成功次数", "en": "SMF.SuccCreatePduSession._Ims"} IMS PDU会话建立成功次数 SMF.SuccCreatePduSession._Ims
25 SMF SMF.05 {"cn": "IMS PDU会话建立请求次数", "en": "SMF.AttCreatePduSession._Ims"} IMS PDU会话建立请求次数 SMF.AttCreatePduSession._Ims
26 SMF SMF.06 {"cn": "EPS-Fallback成功数", "en": "SMF.SuccSmfModifyBearerResponse.Epsfb"} EPS-Fallback成功数 SMF.SuccSmfModifyBearerResponse.Epsfb
27 SMF SMF.07 {"cn": "EPS-Fallback请求数", "en": "SMF.AttSmfModifyPduSession.Epsfb"} EPS-Fallback请求数 SMF.AttSmfModifyPduSession.Epsfb
28 UDM UDM.01 {"cn": "5G注册用户数", "en": "UDR.5gActSub"} 5G注册用户数 UDR.5gActSub
29 UDM UDM.02 {"cn": "AMF发起的UECM注册请求次数", "en": "UDM.AmfUecmRegReq"} AMF发起的UECM注册请求次数 UDM.AmfUecmRegReq
30 UDM UDM.03 {"cn": "AMF发起的UECM注册成功次数", "en": "UDM.AmfUecmRegSucc"} AMF发起的UECM注册成功次数 UDM.AmfUecmRegSucc
31 UDM UDM.04 {"cn": "SMF发起的UECM注册成功次数", "en": "UDM.SmfUecmRegSucc"} SMF发起的UECM注册成功次数 UDM.SmfUecmRegSucc
32 UDM UDM.05 {"cn": "SMF发起的UECM注册请求次数", "en": "UDM.SmfUecmRegReq"} SMF发起的UECM注册请求次数 UDM.SmfUecmRegReq
33 UDM UDM.06 {"cn": "4G注册用户数", "en": "SUB.EpsActSubsInHss"} 4G注册用户数 SUB.EpsActSubsInHss
34 UDM UDM.07 {"cn": "4G鉴权信息查询成功次数", "en": "DIAM.AucInfoAnsSucc"} 4G鉴权信息查询成功次数 DIAM.AucInfoAnsSucc
35 UDM UDM.08 {"cn": "4G鉴权信息查询请求次数", "en": "DIAM.AucInfoReq"} 4G鉴权信息查询请求次数 DIAM.AucInfoReq
36 UDM UDM.09 {"cn": "4G更新位置成功次数", "en": "DIAM.UpdateLocationAnsSucc"} 4G更新位置成功次数 DIAM.UpdateLocationAnsSucc
37 UDM UDM.10 {"cn": "4G更新位置请求次数", "en": "DIAM.UpdateLocationReq"} 4G更新位置请求次数 DIAM.UpdateLocationReq
38 UDM UDM.11 {"cn": "SAR成功响应总次数", "en": "UR.SuccSAA"} SAR成功响应总次数 UR.SuccSAA
39 UDM UDM.12 {"cn": "SAR请求总次数", "en": "UR.AttSAR"} SAR请求总次数 UR.AttSAR
40 UDM UDM.13 {"cn": "LIR成功响应总次数", "en": "LIQ.SuccLIA"} LIR成功响应总次数 LIQ.SuccLIA
41 UDM UDM.14 {"cn": "LIR请求总次数", "en": "LIQ.AttLIR"} LIR请求总次数 LIQ.AttLIR
42 AUSF AUSF.01 {"cn": "鉴权成功次数", "en": "Ausf.UeAuthAnsSucc"} 鉴权成功次数 Ausf.UeAuthAnsSucc
43 AUSF AUSF.02 {"cn": "鉴权请求次数", "en": "Ausf.UeAuthReq"} 鉴权请求次数 Ausf.UeAuthReq
44 UPF UPF.01 {"cn": "PFCP会话建立成功次数", "en": "UPF.PfcpSessionEstabSucc"} PFCP会话建立成功次数 UPF.PfcpSessionEstabSucc
45 UPF UPF.02 {"cn": "PFCP会话建立请求次数", "en": "UPF.PfcpSessionEstabReq"} PFCP会话建立请求次数 UPF.PfcpSessionEstabReq
46 UPF UPF.03 {"cn": "N6接口上行字节数", "en": "UPF.N6OgOct"} N6接口上行字节数 UPF.N6OgOct
47 UPF UPF.04 {"cn": "N6接口下行字节数", "en": "UPF.N6IncOct"} N6接口下行字节数 UPF.N6IncOct
48 UPF UPF.05 {"cn": "N3接口上行字节数", "en": "UPF.N3OgOct"} N3接口上行字节数 UPF.N3OgOct
49 UPF UPF.06 {"cn": "N3接口下行字节数", "en": "UPF.N3IncOct"} N3接口下行字节数 UPF.N3IncOct
50 UPF UPF.07 {"cn": "SGi接口上行字节数", "en": "IP.PeakThroughputUlSgi"} SGi接口上行字节数 IP.PeakThroughputUlSgi
51 UPF UPF.08 {"cn": "SGi接口下行字节数", "en": "IP.PeakThroughputDlSgi"} SGi接口下行字节数 IP.PeakThroughputDlSgi
52 UPF UPF.09 {"cn": "S1-U接口上行字节数", "en": "GTP.OutOctS1uSgw"} S1-U接口上行字节数 GTP.OutOctS1uSgw
53 UPF UPF.10 {"cn": "S1-U接口下行字节数", "en": "GTP.IncOctS1uSgw"} S1-U接口下行字节数 GTP.IncOctS1uSgw
54 AMF AMF.20 {"cn": "EPS在线用户数", "en": "SUB.NbrSub.EcmIdle+SUB.NbrSub.EcmConnected"} EPS在线用户数 SUB.NbrSub.EcmIdle+SUB.NbrSub.EcmConnected
55 AMF AMF.21 {"cn": "EPS附着成功次数", "en": "MM.SuccEpsAttach"} EPS附着成功次数 MM.SuccEpsAttach
56 AMF AMF.22 {"cn": "EPS附着请求次数", "en": "MM.AttEpsAttach"} EPS附着请求次数 MM.AttEpsAttach
57 AMF AMF.23 {"cn": "EPS附着失败次数_非法用户", "en": "MM.FailedEpsAttach.3"} EPS附着失败次数_非法用户 MM.FailedEpsAttach.3
58 AMF AMF.24 {"cn": "EPS附着失败次数_非法终端", "en": "MM.FailedEpsAttach.5"} EPS附着失败次数_非法终端 MM.FailedEpsAttach.5
59 AMF AMF.25 {"cn": "EPS附着失败次数_非法ME", "en": "MM.FailedEpsAttach.6"} EPS附着失败次数_非法ME MM.FailedEpsAttach.6
60 AMF AMF.26 {"cn": "EPS附着失败次数_EPS服务不允许_用户原因", "en": "MM.FailedEpsAttach.7.User"} EPS附着失败次数_EPS服务不允许_用户原因 MM.FailedEpsAttach.7.User
61 AMF AMF.27 {"cn": "EPS附着失败次数_EPS和非EPS服务不允许", "en": "MM.FailedEpsAttach.8"} EPS附着失败次数_EPS和非EPS服务不允许 MM.FailedEpsAttach.8
62 AMF AMF.28 {"cn": "EPS附着失败次数_跟踪区内无合适小区_用户原因", "en": "MM.FailedEpsAttach.15.User"} EPS附着失败次数_跟踪区内无合适小区_用户原因 MM.FailedEpsAttach.15.User
63 AMF AMF.29 {"cn": "EPS附着失败次数_ESM失败_用户原因", "en": "MM.FailedEpsAttach.19.User"} EPS附着失败次数_ESM失败_用户原因 MM.FailedEpsAttach.19.User
64 AMF AMF.30 {"cn": "MME一次寻呼响应次数", "en": "MM.FirstPagingSucc"} MME一次寻呼响应次数 MM.FirstPagingSucc
65 AMF AMF.31 {"cn": "MME二次寻呼响应次数", "en": "MM.SecondPagingSucc"} MME二次寻呼响应次数 MM.SecondPagingSucc
66 AMF AMF.32 {"cn": "MME寻呼请求次数", "en": "MM.PagAtt"} MME寻呼请求次数 MM.PagAtt
67 SMF SMF.08 {"cn": "4G在线会话数", "en": "SM.MeanNbrBearerPgw.Default"} 4G在线会话数 SM.MeanNbrBearerPgw.Default
68 SMF SMF.09 {"cn": "PGW缺省承载建立成功个数", "en": "SM.SuccCreateDefaultEpsBearer"} PGW缺省承载建立成功个数 SM.SuccCreateDefaultEpsBearer
69 SMF SMF.10 {"cn": "PGW缺省承载建立请求个数", "en": "SM.AttCreateDefaultEpsBearer"} PGW缺省承载建立请求个数 SM.AttCreateDefaultEpsBearer
70 SMF SMF.11 {"cn": "PGW专用承载建立成功个数", "en": "SM.SuccCreateDedicatedEpsBearer"} PGW专用承载建立成功个数 SM.SuccCreateDedicatedEpsBearer
71 SMF SMF.12 {"cn": "PGW专用承载建立请求个数", "en": "SM.AttCreateDedicatedEpsBearer"} PGW专用承载建立请求个数 SM.AttCreateDedicatedEpsBearer
72 SMF SMF.13 {"cn": "IMS缺省承载成功建立个数", "en": "SM.SuccCreateDefaultEpsBearer._Ims"} IMS缺省承载成功建立个数 SM.SuccCreateDefaultEpsBearer._Ims
73 SMF SMF.14 {"cn": "IMS缺省承载请求建立个数", "en": "SM.AttCreateDefaultEpsBearer._Ims"} IMS缺省承载请求建立个数 SM.AttCreateDefaultEpsBearer._Ims
74 AMF AMF.A.02 {"cn":"AMF移动性注册更新成功次数","en":"AMF.SuccMobiReg"} AMF移动性注册更新成功次数 AMF.SuccMobiReg
75 AMF AMF.A.03 {"cn":"AMF移动性注册更新失败次数","en":"AMF.FailedMobiReg"} AMF移动性注册更新失败次数 AMF.FailedMobiReg
76 AMF AMF.A.04 {"cn":"AMF紧急注册请求次数","en":"AMF.AttEmergReg"} AMF紧急注册请求次数 AMF.AttEmergReg
77 AMF AMF.A.05 {"cn":"AMF紧急注册成功次数","en":"AMF.SuccEmergReg"} AMF紧急注册成功次数 AMF.SuccEmergReg
78 AMF AMF.A.06 {"cn":"AMF紧急注册失败次数","en":"AMF.FailedEmergReg"} AMF紧急注册失败次数 AMF.FailedEmergReg
79 AMF AMF.A.07 {"cn":"UE发起的去注册请求次数","en":"AMF.AttUeDereg"} UE发起的去注册请求次数 AMF.AttUeDereg
80 AMF AMF.A.08 {"cn":"UE发起的去注册成功次数","en":"AMF.SuccUeDereg"} UE发起的去注册成功次数 AMF.SuccUeDereg
81 AMF AMF.A.09 {"cn":"AMF发起的去注册请求次数","en":"AMF.AttAmfDereg"} AMF发起的去注册请求次数 AMF.AttAmfDereg
82 AMF AMF.A.10 {"cn":"AMF发起的去注册成功次数","en":"AMF.SuccAmfDereg"} AMF发起的去注册成功次数 AMF.SuccAmfDereg
83 AMF AMF.A.11 {"cn":"UDM发起的去注册请求次数","en":"AMF.AttUdmDereg"} UDM发起的去注册请求次数 AMF.AttUdmDereg
84 AMF AMF.A.12 {"cn":"UDM发起的去注册成功次数","en":"AMF.SuccUdmDereg"} UDM发起的去注册成功次数 AMF.SuccUdmDereg
85 AMF AMF.A.13 {"cn":"AMF寻呼失败次数","en":"AMF.PagFail"} AMF寻呼失败次数 AMF.PagFail
86 AMF AMF.A.14 {"cn":"AMF隐式去注册次数","en":"AMF.ImplicitDereg"} AMF隐式去注册次数 AMF.ImplicitDereg
87 SMF SMF.A.01 {"cn":"PDU会话接受次数","en":"SMF.PduSessAcpt"} PDU会话接受次数 SMF.PduSessAcpt
88 SMF SMF.A.02 {"cn":"基站Pdu资源创建成功次数","en":"SM.PduResSetupSucc"} 基站Pdu资源创建成功次数 SM.PduResSetupSucc
89 SMF SMF.A.03 {"cn":"查询用户SM数据失败次数","en":"SM.RetrieveSmDataFail"} 查询用户SM数据失败次数 SM.RetrieveSmDataFail
90 SMF SMF.A.04 {"cn":"PFCP会话建立失败次数","en":"SM.PfcpSessEstFail"} PFCP会话建立失败次数 SM.PfcpSessEstFail
91 SMF SMF.A.05 {"cn":"基站Pdu资源创建失败次数","en":"SM.PduResSetupFail"} 基站Pdu资源创建失败次数 SM.PduResSetupFail
92 SMF SMF.A.06 {"cn":"PFCP会话修改失败次数","en":"SM.PfcpSessMdfyFail"} PFCP会话修改失败次数 SM.PfcpSessMdfyFail
93 SMF SMF.A.07 {"cn":"PDU会话拒绝次数","en":"SM.PduSessRejt"} PDU会话拒绝次数 SM.PduSessRejt
94 SMF SMF.A.08 {"cn":"PDU会话释放指示次数","en":"SM.PduSessRelCmd"} PDU会话释放指示次数 SM.PduSessRelCmd
95 NSSF NSSF.A.02 {"cn":"可用AMF注册次数","en":"NSSF.SuccAvailAMFPut"} 可用AMF注册成功次数 NSSF.SuccAvailAMFPut
96 NSSF NSSF.A.03 {"cn":"可用AMF注册更新成功次数","en":"NSSF.AvailAMFPut"} 可用AMF注册次数 NSSF.AvailAMFPut
97 NSSF NSSF.A.04 {"cn":"可用AMF注册更新次数","en":"NSSF.SuccAvailAMFPatch"} 可用AMF注册更新成功次数 NSSF.SuccAvailAMFPatch
98 NSSF NSSF.A.01 {"cn":"可用AMF注册成功次数","en":"NSSF.AvailAMFPatch"} 可用AMF注册更新次数 NSSF.AvailAMFPatch
99 NSSF NSSF.A.05 {"cn":"可用AMF去注册成功次数","en":"NSSF.SuccAvailAMFDelete"} 可用AMF去注册成功次数 NSSF.SuccAvailAMFDelete
100 NSSF NSSF.A.06 {"cn":"可用AMF去注册次数","en":"NSSF.AvailAMFDelete"} 可用AMF去注册次数 NSSF.AvailAMFDelete
101 NSSF NSSF.A.07 {"cn":"网元订阅成功次数","en":"NSSF.SuccAvailSubscription"} 网元订阅成功次数 NSSF.SuccAvailSubscription
102 NSSF NSSF.A.08 {"cn":"网元订阅次数","en":"NSSF.AvailSubscription"} 网元订阅次数 NSSF.AvailSubscription
103 NSSF NSSF.A.09 {"cn":"网元去订阅成功次数","en":"NSSF.SuccAvailUnsubscription"} 网元去订阅成功次数 NSSF.SuccAvailUnsubscription
104 NSSF NSSF.A.10 {"cn":"网元去订阅次数","en":"NSSF.AvailUnsubscription"} 网元去订阅次数 NSSF.AvailUnsubscription
105 NSSF NSSF.A.11 {"cn":"向NRF注册成功次数","en":"NSSF.SuccNRFReg"} 向NRF注册成功次数 NSSF.SuccNRFReg
106 NSSF NSSF.A.12 {"cn":"向NRF注册次数","en":"NSSF.NRFReg"} 向NRF注册次数 NSSF.NRFReg
107 NSSF NSSF.A.13 {"cn":"向NRF发送心跳次数","en":"NSSF.NRFHeartbeat"} 向NRF发送心跳次数 NSSF.NRFHeartbeat
108 NSSF NSSF.A.14 {"cn":"当前注册AMF个数","en":"NSSF.CurrentAMFCount"} 当前注册AMF个数 NSSF.CurrentAMFCount
109 NSSF NSSF.A.15 {"cn":"当前订阅网元个数","en":"NSSF.CurrentSubscriperCount"} 当前订阅网元个数 NSSF.CurrentSubscriperCount
110 MME MME.A.01 {"cn":"MME附着请求次数","en":"EpsAttachAtt"} MME附着请求次数 EpsAttachAtt
111 MME MME.A.02 {"cn":"MME附着成功次数","en":"EpsAttachSucc"} MME附着成功次数 EpsAttachSucc
112 MME MME.A.03 {"cn":"MME附着失败次数","en":"EpsAttachFail"} MME附着失败次数 EpsAttachFail
113 MME MME.A.04 {"cn":"MME组合附着请求次数","en":"CombAttachAtt"} MME组合附着请求次数 CombAttachAtt
114 MME MME.A.05 {"cn":"MME组合附着成功次数","en":"CombAttachSucc"} MME组合附着成功次数 CombAttachSucc
115 MME MME.A.06 {"cn":"MME组合附着失败次数","en":"CombAttachFail"} MME组合附着失败次数 CombAttachFail
116 MME MME.A.07 {"cn":"MME紧急附着请求次数","en":"EmergAttachAtt"} MME紧急附着请求次数 EmergAttachAtt
117 MME MME.A.08 {"cn":"MME紧急附着成功次数","en":"EmergAttachSucc"} MME紧急附着成功次数 EmergAttachSucc
118 MME MME.A.09 {"cn":"MME紧急附着失败次数","en":"EmergAttachFail"} MME紧急附着失败次数 EmergAttachFail
119 MME MME.A.10 {"cn":"UE发起的分离请求次数","en":"EpsDetachUeAtt"} UE发起的分离请求次数 EpsDetachUeAtt
120 MME MME.A.11 {"cn":"UE发起的分离请求成功次数","en":"EpsDetachUeSucc"} UE发起的分离请求成功次数 EpsDetachUeSucc
121 MME MME.A.12 {"cn":"MME发起的分离请求次数","en":"EpsDetachMMEAtt"} MME发起的分离请求次数 EpsDetachMMEAtt
122 MME MME.A.13 {"cn":"MME发起的分离请求成功次数","en":"EpsDetachMMESucc"} MME发起的分离请求成功次数 EpsDetachMMESucc
123 MME MME.A.14 {"cn":"伴随SGW内切换的TAU请求次数","en":"TauIntraSgwAtt"} 伴随SGW内切换的TAU请求次数 TauIntraSgwAtt
124 MME MME.A.15 {"cn":"伴随SGW内切换的TAU成功请求次数","en":"TauIntraSgwSucc"} 伴随SGW内切换的TAU成功请求次数 TauIntraSgwSucc
125 MME MME.A.16 {"cn":"伴随SGW内切换的TAU失败请求次数","en":"TauIntraSgwFail"} 伴随SGW内切换的TAU失败请求次数 TauIntraSgwFail
126 MME MME.A.17 {"cn":"MME寻呼次数","en":"PagingEpsAtt"} MME寻呼次数 PagingEpsAtt
127 MME MME.A.18 {"cn":"MME寻呼成功次数","en":"PagingEpsSucc"} MME寻呼成功次数 PagingEpsSucc
128 MME MME.A.19 {"cn":"MME寻呼失败次数","en":"PagingEpsFail"} MME寻呼失败次数 PagingEpsFail
129 MME MME.A.20 {"cn":"MME隐式分离请求次数","en":"EpsImplicitDetach"} MME隐式分离请求次数 EpsImplicitDetach
130 MME MME.A.21 {"cn":"MME激活专用承载请求次数","en":"ActDedicatedEpsBearerAtt"} MME激活专用承载请求次数 ActDedicatedEpsBearerAtt
131 MME MME.A.22 {"cn":"MME激活专用承载请求成功次数","en":"ActDedicatedEpsBearerSucc"} MME激活专用承载请求成功次数 ActDedicatedEpsBearerSucc
132 MME MME.A.23 {"cn":"MME激活专用承载请求失败次数","en":"ActDedicatedEpsBearerFail"} MME激活专用承载请求失败次数 ActDedicatedEpsBearerFail
133 MME MME.A.24 {"cn":"MME去激活专用承载请求次数","en":"DeactEpsDedicatedBearerAtt"} MME去激活专用承载请求次数 DeactEpsDedicatedBearerAtt
134 MME MME.A.25 {"cn":"MME去激活专用承载请求成功次数","en":"DeactEpsDedicatedBearerSucc"} MME去激活专用承载请求成功次数 DeactEpsDedicatedBearerSucc
135 MME MME.A.26 {"cn":"MME修改专用承载请求次数","en":"ModEpsBearerAtt"} MME修改专用承载请求次数 ModEpsBearerAtt
136 MME MME.A.27 {"cn":"MME修改专用承载请求成功次数","en":"ModEpsBearerSucc"} MME修改专用承载请求成功次数 ModEpsBearerSucc
137 MME MME.A.28 {"cn":"MME修改专用承载请求失败次数","en":"ModEpsBearerFail"} MME修改专用承载请求失败次数 ModEpsBearerFail
138 MME MME.A.29 {"cn":"MME服务请求次数","en":"EpsServiceReqAtt"} MME服务请求次数 EpsServiceReqAtt
139 MME MME.A.30 {"cn":"MME服务请求成功次数","en":"EpsServiceReqSucc"} MME服务请求成功次数 EpsServiceReqSucc
140 MME MME.A.31 {"cn":"MME服务请求失败次数","en":"EpsServiceReqFail"} MME服务请求失败次数 EpsServiceReqFail
141 MOCNGW MOCNGW.01 {"cn":"AttachRequest","en":"AttachRequest"} AttachRequest AttachRequest
142 MOCNGW MOCNGW.02 {"cn":"AttachAccept","en":"AttachAccept"} AttachAccept AttachAccept
143 MOCNGW MOCNGW.03 {"cn":"AttachComplete","en":"AttachComplete"} AttachComplete AttachComplete
144 MOCNGW MOCNGW.04 {"cn":"AttachReject","en":"AttachReject"} AttachReject AttachReject
145 MOCNGW MOCNGW.05 {"cn":"DetachRequest","en":"DetachRequest"} DetachRequest DetachRequest
146 MOCNGW MOCNGW.06 {"cn":"DetachAccept","en":"DetachAccept"} DetachAccept DetachAccept
147 MOCNGW MOCNGW.07 {"cn":"TrackingAreaUpdateRequest","en":"TrackingAreaUpdateRequest"} TrackingAreaUpdateRequest TrackingAreaUpdateRequest
148 MOCNGW MOCNGW.08 {"cn":"TrackingAreaUpdateAccept","en":"TrackingAreaUpdateAccept"} TrackingAreaUpdateAccept TrackingAreaUpdateAccept
149 MOCNGW MOCNGW.09 {"cn":"TrackingAreaUpdateComplete","en":"TrackingAreaUpdateComplete"} TrackingAreaUpdateComplete TrackingAreaUpdateComplete
150 MOCNGW MOCNGW.10 {"cn":"TrackingAreaUpdateReject","en":"TrackingAreaUpdateReject"} TrackingAreaUpdateReject TrackingAreaUpdateReject
151 MOCNGW MOCNGW.11 {"cn":"ServiceRequest","en":"ServiceRequest"} ServiceRequest ServiceRequest
152 MOCNGW MOCNGW.12 {"cn":"ExtendedServiceRequest","en":"ExtendedServiceRequest"} ExtendedServiceRequest ExtendedServiceRequest
153 MOCNGW MOCNGW.13 {"cn":"ControlPlaneServiceRequest","en":"ControlPlaneServiceRequest"} ControlPlaneServiceRequest ControlPlaneServiceRequest
154 MOCNGW MOCNGW.14 {"cn":"ServiceReject","en":"ServiceReject"} ServiceReject ServiceReject
155 MOCNGW MOCNGW.15 {"cn":"ServiceAccept","en":"ServiceAccept"} ServiceAccept ServiceAccept
156 MOCNGW MOCNGW.16 {"cn":"GutiReallocationCommand","en":"GutiReallocationCommand"} GutiReallocationCommand GutiReallocationCommand
157 MOCNGW MOCNGW.17 {"cn":"GutiReallocationComplete","en":"GutiReallocationComplete"} GutiReallocationComplete GutiReallocationComplete
158 MOCNGW MOCNGW.18 {"cn":"AuthenticationRequest","en":"AuthenticationRequest"} AuthenticationRequest AuthenticationRequest
159 MOCNGW MOCNGW.19 {"cn":"AuthenticationResponse","en":"AuthenticationResponse"} AuthenticationResponse AuthenticationResponse
160 MOCNGW MOCNGW.20 {"cn":"AuthenticationReject","en":"AuthenticationReject"} AuthenticationReject AuthenticationReject
161 MOCNGW MOCNGW.21 {"cn":"AuthenticationFailure","en":"AuthenticationFailure"} AuthenticationFailure AuthenticationFailure
162 MOCNGW MOCNGW.22 {"cn":"IdentityRequest","en":"IdentityRequest"} IdentityRequest IdentityRequest
163 MOCNGW MOCNGW.23 {"cn":"IdentityResponse","en":"IdentityResponse"} IdentityResponse IdentityResponse
164 MOCNGW MOCNGW.24 {"cn":"SecurityModeCommand","en":"SecurityModeCommand"} SecurityModeCommand SecurityModeCommand
165 MOCNGW MOCNGW.25 {"cn":"SecurityModeComplete","en":"SecurityModeComplete"} SecurityModeComplete SecurityModeComplete
166 MOCNGW MOCNGW.26 {"cn":"SecurityModeReject","en":"SecurityModeReject"} SecurityModeReject SecurityModeReject
167 MOCNGW MOCNGW.27 {"cn":"EmmStatus","en":"EmmStatus"} EmmStatus EmmStatus
168 MOCNGW MOCNGW.28 {"cn":"EmmInformation","en":"EmmInformation"} EmmInformation EmmInformation
169 MOCNGW MOCNGW.29 {"cn":"DownlinkNasTransport","en":"DownlinkNasTransport"} DownlinkNasTransport DownlinkNasTransport
170 MOCNGW MOCNGW.30 {"cn":"UplinkNasTransport","en":"UplinkNasTransport"} UplinkNasTransport UplinkNasTransport
171 MOCNGW MOCNGW.31 {"cn":"CsServiceNotification","en":"CsServiceNotification"} CsServiceNotification CsServiceNotification
172 MOCNGW MOCNGW.32 {"cn":"DownlinkGenericNasTransport","en":"DownlinkGenericNasTransport"} DownlinkGenericNasTransport DownlinkGenericNasTransport
173 MOCNGW MOCNGW.33 {"cn":"UplinkGenericNasTransport","en":"UplinkGenericNasTransport"} UplinkGenericNasTransport UplinkGenericNasTransport
174 IMS SCSCF.01 {"cn": "LTE接入注册用户数","en": "UR.SubsLTE.fromVoLTE"} LTE接入注册用户数 UR.SubsLTE.fromVoLTE
175 IMS SCSCF.02 {"cn": "5G接入注册用户数","en": "UR.Subs5G.fromVo5G"} 5G接入注册用户数 UR.Subs5G.fromVo5G
176 IMS SCSCF.03 {"cn": "初始注册成功次数","en": "UR.SuccInitReg"} 初始注册成功次数 UR.SuccInitReg
177 IMS SCSCF.04 {"cn": "初始注册请求次数","en": "UR.AttInitReg"} 初始注册请求次数 UR.AttInitReg
178 IMS SCSCF.05 {"cn": "主叫接通次数","en": "SC.SuccSessionOrig"} 主叫接通次数 SC.SuccSessionOrig
179 IMS SCSCF.06 {"cn": "主叫试呼次数","en": "SC.AttSessionOrig"} 主叫试呼次数 SC.AttSessionOrig
180 IMS SCSCF.07 {"cn": "被叫接通次数","en": "SC.SuccSessionTerm"} 被叫接通次数 SC.SuccSessionTerm
181 IMS SCSCF.08 {"cn": "被叫试呼次数","en": "SC.AttSessionTerm"} 被叫试呼次数 SC.AttSessionTerm
182 IMS SCSCF.09 {"cn": "主叫应答次数","en": "SC.AnsSessionOrig"} 主叫应答次数 SC.AnsSessionOrig
183 IMS SCSCF.10 {"cn": "主叫早释次数","en": "SC.OrigRelBeforeRing"} 主叫早释次数 SC.OrigRelBeforeRing
184 IMS SCSCF.11 {"cn": "主叫振铃早释次数","en": "SC.OrigRelAfterRing"} 主叫振铃早释次数 SC.OrigRelAfterRing
185 IMS SCSCF.12 {"cn": "主叫403请求禁止次数","en": "SC.FailSessionOrig.403"} 主叫403请求禁止次数 SC.FailSessionOrig.403
186 IMS SCSCF.13 {"cn": "主叫404未找到次数","en": "SC.FailSessionOrig.404"} 主叫404未找到次数 SC.FailSessionOrig.404
187 IMS SCSCF.14 {"cn": "主叫408请求超时次数","en": "SC.FailSessionOrig.408"} 主叫408请求超时次数 SC.FailSessionOrig.408
188 IMS SCSCF.15 {"cn": "主叫480久叫不应次","en": "SC.FailSessionOrig.480"} 主叫480久叫不应次 SC.FailSessionOrig.480
189 IMS SCSCF.16 {"cn": "主叫484Request-URI不完整次","en": "SC.FailSessionOrig.484"} 主叫484Request-URI不完整次 SC.FailSessionOrig.484
190 IMS SCSCF.17 {"cn": "主叫486用户忙次数","en": "SC.FailSessionOrig.486"} 主叫486用户忙次数 SC.FailSessionOrig.486
191 IMS SCSCF.18 {"cn": "主叫487请求终止次数","en": "SC.FailSessionOrig.487"} 主叫487请求终止次数 SC.FailSessionOrig.487
192 IMS SCSCF.19 {"cn": "主叫600用户忙次数","en": "SC.FailSessionOrig.600"} 主叫600用户忙次数 SC.FailSessionOrig.600
193 IMS SCSCF.20 {"cn": "主叫603用户拒接次数","en": "SC.FailSessionOrig.603"} 主叫603用户拒接次数 SC.FailSessionOrig.603
194 IMS SCSCF.21 {"cn": "主叫604用户信息不存在次数","en": "SC.FailSessionOrig.604"} 主叫604用户信息不存在次数 SC.FailSessionOrig.604
195 IMS SCSCF.22 {"cn": "被叫应答次数","en": "SC.AnsSessionTerm"} 被叫应答次数 SC.AnsSessionTerm
196 IMS SCSCF.23 {"cn": "被叫早释次","en": "SC.TermiRelBeforeRing"} 被叫早释次 SC.TermiRelBeforeRing
197 IMS SCSCF.24 {"cn": "被叫振铃早释次数","en": "SC.TermiRelAfterRing"} 被叫振铃早释次数 SC.TermiRelAfterRing
198 IMS SCSCF.25 {"cn": "被叫403请求禁止次数","en": "SC.FailSessionTerm.403"} 被叫403请求禁止次数 SC.FailSessionTerm.403
199 IMS SCSCF.26 {"cn": "被叫404未找到次数","en": "SC.FailSessionTerm.404"} 被叫404未找到次数 SC.FailSessionTerm.404
200 IMS SCSCF.27 {"cn": "被叫408请求超时次数","en": "SC.FailSessionTerm.408"} 被叫408请求超时次数 SC.FailSessionTerm.408
201 IMS SCSCF.28 {"cn": "被叫480久叫不应次数","en": "SC.FailSessionTerm.480"} 被叫480久叫不应次数 SC.FailSessionTerm.480
202 IMS SCSCF.29 {"cn": "被叫484Request-URI不完整次数","en": "SC.FailSessionTerm.484"} 被叫484Request-URI不完整次数 SC.FailSessionTerm.484
203 IMS SCSCF.30 {"cn": "被叫486用户忙次数","en": "SC.FailSessionTerm.486"} 被叫486用户忙次数 SC.FailSessionTerm.486
204 IMS SCSCF.31 {"cn": "被叫487请求终止次数","en": "SC.FailSessionTerm.487"} 被叫487请求终止次数 SC.FailSessionTerm.487
205 IMS SCSCF.32 {"cn": "被叫600用户忙次数","en": "SC.FailSessionTerm.600"} 被叫600用户忙次数 SC.FailSessionTerm.600
206 IMS SCSCF.33 {"cn": "被叫603用户拒接次数","en": "SC.FailSessionTerm.603"} 被叫603用户拒接次数 SC.FailSessionTerm.603
207 IMS SCSCF.34 {"cn": "被叫604用户信息不存在次数","en": "SC.FailSessionTerm.604"} 被叫604用户信息不存在次数 SC.FailSessionTerm.604
208 PCF PCF.01 {"cn": "在线N7会话数", "en": "PCF.SmAssocNbrMean"} 在线N7会话数 PCF.SmAssocNbrMean
209 PCF PCF.02 {"cn": "SM策略关联建立成功次数", "en": "PCF.PolicySmAssocCreateSucc"} SM策略关联建立成功次数 PCF.PolicySmAssocCreateSucc
210 PCF PCF.03 {"cn": "SM策略关联建立请求次数", "en": "PCF.PolicySmAssocCreateReq"} SM策略关联建立请求次数 PCF.PolicySmAssocCreateReq
211 PCF PCF.04 {"cn": "SM策略关联更新成功次数", "en": "PCF.PolicySmAssocUpdateSucc"} SM策略关联更新成功次数 PCF.PolicySmAssocUpdateSucc
212 PCF PCF.05 {"cn": "SM策略关联更新请求次数", "en": "PCF.PolicySmAssocUpdateReq"} SM策略关联更新请求次数 PCF.PolicySmAssocUpdateReq
213 PCF PCF.06 {"cn": "在线Gx会话数", "en": "SM.SessionNbrMean"} 在线Gx会话数 SM.SessionNbrMean
214 PCF PCF.07 {"cn": "在线Rx会话数", "en": "SM.RxSessionMean"} 在线Rx会话数 SM.RxSessionMean
215 PCF PCF.08 {"cn": "PCRF策略控制发起成功次数", "en": "DIAM.CcInitialSuccess"} PCRF策略控制发起成功次数 DIAM.CcInitialSuccess
216 PCF PCF.09 {"cn": "PCRF策略控制发起请求次数", "en": "DIAM.CcInitialRequest"} PCRF策略控制发起请求次数 DIAM.CcInitialRequest
217 PCF PCF.10 {"cn": "应用会话授权成功次数", "en": "DIAM.AuthSucc"} 应用会话授权成功次数 DIAM.AuthSucc
218 PCF PCF.11 {"cn": "应用会话授权尝试次数", "en": "DIAM.AuthRequest"} 应用会话授权尝试次数 DIAM.AuthRequest
219 PCF PCF.12 {"cn": "PCRF策略控制更新成功次数", "en": "DIAM.CcUpdateSuccess"} PCRF策略控制更新成功次数 DIAM.CcUpdateSuccess
220 PCF PCF.13 {"cn": "PCRF策略控制更新请求次数", "en": "DIAM.CcUpdateRequest"} PCRF策略控制更新请求次数 DIAM.CcUpdateRequest
221 SMSC SMSC.A.01 {"cn": "MS到SMSC短信请求次数", "en": "SMSC.MStoSMSCAtt"} MS到SMSC短信请求次数 SMSC.MStoSMSCAtt
222 SMSC SMSC.A.02 {"cn": "MS到SMSC短信成功次数", "en": "SMSC.MStoSMSCSucc"} MS到SMSC短信成功次数 SMSC.MStoSMSCSucc
223 SMSC SMSC.A.03 {"cn": "MS到SMSC短信失败次数", "en": "SMSC.MStoSMSCFail"} MS到SMSC短信失败次数 SMSC.MStoSMSCFail
224 SMSC SMSC.A.04 {"cn": "MS到SMSC短信字节数", "en": "SMSC.MStoSMSCBytes"} MS到SMSC短信字节数 SMSC.MStoSMSCBytes
225 SMSC SMSC.A.05 {"cn": "VSS到SMSC短信请求次数", "en": "SMSC.VSStoSMSCAtt"} VSS到SMSC短信请求次数 SMSC.VSStoSMSCAtt
226 SMSC SMSC.A.06 {"cn": "VSS到SMSC短信成功次数", "en": "SMSC.VSStoSMSCSucc"} VSS到SMSC短信成功次数 SMSC.VSStoSMSCSucc
227 SMSC SMSC.A.07 {"cn": "VSS到SMSC短信失败次数", "en": "SMSC.VSStoSMSCFail"} VSS到SMSC短信失败次数 SMSC.VSStoSMSCFail
228 SMSC SMSC.A.08 {"cn": "VSS到SMSC短信字节数", "en": "SMSC.VSStoSMSCBytes"} VSS到SMSC短信字节数 SMSC.VSStoSMSCBytes
229 SMSC SMSC.A.09 {"cn": "PPS到SMSC短信请求次数", "en": "SMSC.PPStoSMSCAtt"} PPS到SMSC短信请求次数 SMSC.PPStoSMSCAtt
230 SMSC SMSC.A.10 {"cn": "PPS到SMSC短信成功次数", "en": "SMSC.PPStoSMSCSucc"} PPS到SMSC短信成功次数 SMSC.PPStoSMSCSucc
231 SMSC SMSC.A.11 {"cn": "PPS到SMSC短信失败次数", "en": "SMSC.PPStoSMSCFail"} PPS到SMSC短信失败次数 SMSC.PPStoSMSCFail
232 SMSC SMSC.A.12 {"cn": "PPS到SMSC短信字节数", "en": "SMSC.PPStoSMSCBytes"} PPS到SMSC短信字节数 SMSC.PPStoSMSCBytes
233 SMSC SMSC.A.13 {"cn": "SMPP到SMSC短信请求次数", "en": "SMSC.SMPPtoSMSCAtt"} SMPP到SMSC短信请求次数 SMSC.SMPPtoSMSCAtt
234 SMSC SMSC.A.14 {"cn": "SMPP到SMSC短信成功次数", "en": "SMSC.SMPPtoSMSCSucc"} SMPP到SMSC短信成功次数 SMSC.SMPPtoSMSCSucc
235 SMSC SMSC.A.15 {"cn": "SMPP到SMSC短信失败次数", "en": "SMSC.SMPPtoSMSCFail"} SMPP到SMSC短信失败次数 SMSC.SMPPtoSMSCFail
236 SMSC SMSC.A.16 {"cn": "SMPP到SMSC短信字节数", "en": "SMSC.SMPPtoSMSCBytes"} SMPP到SMSC短信字节数 SMSC.SMPPtoSMSCBytes
237 SMSC SMSC.A.17 {"cn": "SMSC到MS短信请求次数", "en": "SMSC.SMSCtoMSAtt"} SMSC到MS短信请求次数 SMSC.SMSCtoMSAtt
238 SMSC SMSC.A.18 {"cn": "SMSC到MS短信成功次数", "en": "SMSC.SMSCtoMSSucc"} SMSC到MS短信成功次数 SMSC.SMSCtoMSSucc
239 SMSC SMSC.A.19 {"cn": "SMSC到MS短信失败次数", "en": "SMSC.SMSCtoMSFail"} SMSC到MS短信失败次数 SMSC.SMSCtoMSFail
240 SMSC SMSC.A.20 {"cn": "SMSC到MS短信字节数", "en": "SMSC.SMSCtoMSBytes"} SMSC到MS短信字节数 SMSC.SMSCtoMSBytes
241 SMSC SMSC.A.21 {"cn": "SMSC到VSS短信请求次数", "en": "SMSC.SMSCtoVSSAtt"} SMSC到VSS短信请求次数 SMSC.SMSCtoVSSAtt
242 SMSC SMSC.A.22 {"cn": "SMSC到VSS短信成功次数", "en": "SMSC.SMSCtoVSSucc"} SMSC到VSS短信成功次数 SMSC.SMSCtoVSSucc
243 SMSC SMSC.A.23 {"cn": "SMSC到VSS短信失败次数", "en": "SMSC.SMSCtoVSSFail"} SMSC到VSS短信失败次数 SMSC.SMSCtoVSSFail
244 SMSC SMSC.A.24 {"cn": "SMSC到VSS短信字节数", "en": "SMSC.SMSCtoVSSBytes"} SMSC到VSS短信字节数 SMSC.SMSCtoVSSBytes
245 SMSC SMSC.A.25 {"cn": "SMSC到PPS短信请求次数", "en": "SMSC.SMSCtoPPSAtt"} SMSC到PPS短信请求次数 SMSC.SMSCtoPPSAtt
246 SMSC SMSC.A.26 {"cn": "SMSC到PPS短信成功次数", "en": "SMSC.SMSCtoPPSucc"} SMSC到PPS短信成功次数 SMSC.SMSCtoPPSucc
247 SMSC SMSC.A.27 {"cn": "SMSC到PPS短信失败次数", "en": "SMSC.SMSCtoPPSFail"} SMSC到PPS短信失败次数 SMSC.SMSCtoPPSFail
248 SMSC SMSC.A.28 {"cn": "SMSC到PPS短信字节数", "en": "SMSC.SMSCtoPPSBytes"} SMSC到PPS短信字节数 SMSC.SMSCtoPPSBytes
249 SMSC SMSC.A.29 {"cn": "SMSC到SMPP短信请求次数", "en": "SMSC.SMSCtoSMPPAtt"} SMSC到SMPP短信请求次数 SMSC.SMSCtoSMPPAtt
250 SMSC SMSC.A.30 {"cn": "SMSC到SMPP短信成功次数", "en": "SMSC.SMSCtoSMPPucc"} SMSC到SMPP短信成功次数 SMSC.SMSCtoSMPPucc
251 SMSC SMSC.A.31 {"cn": "SMSC到SMPP短信失败次数", "en": "SMSC.SMSCtoSMPPFail"} SMSC到SMPP短信失败次数 SMSC.SMSCtoSMPPFail
252 SMSC SMSC.A.32 {"cn": "SMSC到SMPP短信字节数", "en": "SMSC.SMSCtoSMPPBytes"} SMSC到SMPP短信字节数 SMSC.SMSCtoSMPPBytes

View File

@@ -1,324 +1,329 @@
amf:
system:
display: "System Config"
sort: 1
list:
- name: "amfName"
type: "string"
value: "AMF"
access: "read-write"
filter: '0~64'
display: "AMF Name"
comment: ""
- name: "relativeCapacity"
type: "int"
value: "255"
access: "read-write"
filter: "0~255"
display: "Relative Capacity"
comment: "0~255"
- name: "sbiScheme"
type: "enum"
value: "0"
access: "read-write"
filter: '{"0":"http","1":"https"}'
display: "SBI Scheme"
comment: ""
- name: "sbiServerIp"
type: "string"
value: "192.168.1.183"
access: "read-write"
filter: '0~64'
display: "SBI Server IP"
comment: ""
- name: "sbiServerPort"
type: "int"
value: "8080"
access: "read-write"
filter: "0~65535"
display: "SBI Server Port"
comment: "0~65535"
- name: "nrfEnabled"
type: "bool"
value: "0"
access: "read-write"
filter: '{"0":"false","1":"true"}'
display: "NRF Enabled"
comment: ""
- name: "nrfUri"
type: "string"
value: "http://172.16.5.180:8080"
access: "read-write"
filter: '0~64'
display: "NRF URI"
comment: ""
- name: "ausfUri"
type: "string"
value: "http://172.16.5.130:8080"
access: "read-write"
filter: '0~64'
display: "AUSF URI"
comment: ""
- name: "udmUri"
type: "string"
value: "http://172.16.5.140:8080"
access: "read-write"
filter: '0~64'
display: "UDM URI"
comment: ""
- name: "smfUri"
type: "string"
value: "http://172.16.5.150:8080"
access: "read-write"
filter: '0~64'
display: "SMF URI"
comment: ""
- name: "pcfUri"
type: "string"
value: "http://172.16.5.160:8080"
access: "read-write"
filter: '0~64'
display: "PCF URI"
comment: ""
- name: "lmfUri"
type: "string"
value: "http://172.16.5.200:8080"
access: "read-write"
filter: '0~64'
display: "LMF URI"
comment: ""
- name: "nefUri"
type: "string"
value: "http://172.16.5.210:8080"
access: "read-write"
filter: '0~64'
display: "NEF URI"
comment: ""
- name: "imeiRestrictionEnabled"
type: "bool"
value: "0"
access: "read-write"
filter: '{"0":"false","1":"true"}'
display: "IMEI Restriction Enabled"
comment: ""
- name: "allowedImeiPrefix"
type: "string"
value: "869583045"
access: "read-write"
filter: '0~128'
display: "Allowed IMEI Prefix"
comment: ""
- name: "dnnCorrectionEnabled"
type: "bool"
value: "0"
access: "read-write"
filter: '{"0":"false","1":"true"}'
display: "DNN Correction Enabled"
comment: ""
- name: "defaultDnn"
type: "string"
value: "internet"
access: "read-write"
filter: '0~64'
display: "Default DNN"
comment: ""
- name: "integrityAlgorithm"
type: "enum"
value: "2"
access: "read-write"
filter: '{"0":"NIA0","1":"NIA1","2":"NIA2","3":"NIA3"}'
display: "Integrity Algorithm"
comment: ""
- name: "cipheringAlgorithm"
type: "enum"
value: "0"
access: "read-write"
filter: '{"0":"NEA0","1":"NEA1","2":"NEA2","3":"NEA3"}'
display: "Ciphering Algorithm"
comment: ""
- name: "t3502"
type: "int"
value: "720"
access: "read-write"
filter: "1~65535"
display: "T3502"
comment: ""
- name: "t3512"
type: "int"
value: "3600"
access: "read-write"
filter: "1~65535"
display: "T3512"
comment: ""
- name: "t3513"
type: "int"
value: "2"
access: "read-write"
filter: "1~65535"
display: "T3513"
comment: ""
- name: "t3522"
type: "int"
value: "6"
access: "read-write"
filter: "1~65535"
display: "T3522"
comment: ""
- name: "t3550"
type: "int"
value: "6"
access: "read-write"
filter: "1~65535"
display: "T3550"
comment: ""
- name: "t3555"
type: "int"
value: "6"
access: "read-write"
filter: "1~65535"
display: "T3555"
comment: ""
- name: "t3560"
type: "int"
value: "6"
access: "read-write"
filter: "1~65535"
display: "T3560"
comment: ""
- name: "t3565"
type: "int"
value: "6"
access: "read-write"
filter: "1~65535"
display: "T3565"
comment: ""
- name: "t3570"
type: "int"
value: "6"
access: "read-write"
filter: "1~65535"
display: "T3570"
comment: ""
- name: "amfName"
type: "string"
value: "AMF"
access: "read-write"
filter: "0~64"
display: "AMF Name"
comment: ""
- name: "relativeCapacity"
type: "int"
value: "255"
access: "read-write"
filter: "0~255"
display: "Relative Capacity"
comment: "0~255"
- name: "sbiScheme"
type: "enum"
value: "0"
access: "read-write"
filter: '{"0":"http","1":"https"}'
display: "SBI Scheme"
comment: ""
- name: "sbiServerIp"
type: "string"
value: "192.168.1.183"
access: "read-write"
filter: "0~64"
display: "SBI Server IP"
comment: ""
- name: "sbiServerPort"
type: "int"
value: "8080"
access: "read-write"
filter: "0~65535"
display: "SBI Server Port"
comment: "0~65535"
- name: "nrfEnabled"
type: "bool"
value: "0"
access: "read-write"
filter: '{"0":"false","1":"true"}'
display: "NRF Enabled"
comment: ""
- name: "nrfUri"
type: "string"
value: "http://172.16.5.180:8080"
access: "read-write"
filter: "0~64"
display: "NRF URI"
comment: ""
- name: "ausfUri"
type: "string"
value: "http://172.16.5.130:8080"
access: "read-write"
filter: "0~64"
display: "AUSF URI"
comment: ""
- name: "udmUri"
type: "string"
value: "http://172.16.5.140:8080"
access: "read-write"
filter: "0~64"
display: "UDM URI"
comment: ""
- name: "smfUri"
type: "string"
value: "http://172.16.5.150:8080"
access: "read-write"
filter: "0~64"
display: "SMF URI"
comment: ""
- name: "pcfUri"
type: "string"
value: "http://172.16.5.160:8080"
access: "read-write"
filter: "0~64"
display: "PCF URI"
comment: ""
- name: "lmfUri"
type: "string"
value: "http://172.16.5.200:8080"
access: "read-write"
filter: "0~64"
display: "LMF URI"
comment: ""
- name: "nefUri"
type: "string"
value: "http://172.16.5.210:8080"
access: "read-write"
filter: "0~64"
display: "NEF URI"
comment: ""
- name: "imeiRestrictionEnabled"
type: "bool"
value: "0"
access: "read-write"
filter: '{"0":"false","1":"true"}'
display: "IMEI Restriction Enabled"
comment: ""
- name: "allowedImeiPrefix"
type: "string"
value: "869583045"
access: "read-write"
filter: "0~128"
display: "Allowed IMEI Prefix"
comment: ""
- name: "dnnCorrectionEnabled"
type: "bool"
value: "0"
access: "read-write"
filter: '{"0":"false","1":"true"}'
display: "DNN Correction Enabled"
comment: ""
- name: "defaultDnn"
type: "string"
value: "internet"
access: "read-write"
filter: "0~64"
display: "Default DNN"
comment: ""
- name: "integrityAlgorithm"
type: "enum"
value: "2"
access: "read-write"
filter: '{"0":"NIA0","1":"NIA1","2":"NIA2","3":"NIA3"}'
display: "Integrity Algorithm"
comment: ""
- name: "cipheringAlgorithm"
type: "enum"
value: "0"
access: "read-write"
filter: '{"0":"NEA0","1":"NEA1","2":"NEA2","3":"NEA3"}'
display: "Ciphering Algorithm"
comment: ""
- name: "t3502"
type: "int"
value: "720"
access: "read-write"
filter: "1~65535"
display: "T3502"
comment: ""
- name: "t3512"
type: "int"
value: "3600"
access: "read-write"
filter: "1~65535"
display: "T3512"
comment: ""
- name: "t3513"
type: "int"
value: "2"
access: "read-write"
filter: "1~65535"
display: "T3513"
comment: ""
- name: "t3522"
type: "int"
value: "6"
access: "read-write"
filter: "1~65535"
display: "T3522"
comment: ""
- name: "t3550"
type: "int"
value: "6"
access: "read-write"
filter: "1~65535"
display: "T3550"
comment: ""
- name: "t3555"
type: "int"
value: "6"
access: "read-write"
filter: "1~65535"
display: "T3555"
comment: ""
- name: "t3560"
type: "int"
value: "6"
access: "read-write"
filter: "1~65535"
display: "T3560"
comment: ""
- name: "t3565"
type: "int"
value: "6"
access: "read-write"
filter: "1~65535"
display: "T3565"
comment: ""
- name: "t3570"
type: "int"
value: "6"
access: "read-write"
filter: "1~65535"
display: "T3570"
comment: ""
association:
display: "TNL Association List"
sort: 3
array:
- name: "index"
type: "int"
value: "0"
access: "read-only"
filter: '0~15'
display: "Index"
comment: "0~15"
- name: "ngapIp"
type: "string"
value: "192.168.1.183"
access: "read-write"
filter: '0~64'
display: "NGAP IP"
comment: ""
- name: "ngapSctpPort"
type: "int"
value: "38412"
access: "read-write"
filter: "0~65535"
display: "NGAP SCTP Port"
comment: "0~65535"
- name: "weightFactor"
type: "int"
value: "255"
access: "read-write"
filter: "0~255"
display: "Weight"
comment: "0~255"
- name: "index"
type: "int"
value: "0"
access: "read-only"
filter: "0~15"
display: "Index"
comment: "0~15"
- name: "ngapIp"
type: "string"
value: "192.168.1.183"
access: "read-write"
filter: "0~64"
display: "NGAP IP"
comment: ""
- name: "ngapSctpPort"
type: "int"
value: "38412"
access: "read-write"
filter: "0~65535"
display: "NGAP SCTP Port"
comment: "0~65535"
- name: "weightFactor"
type: "int"
value: "255"
access: "read-write"
filter: "0~255"
display: "Weight"
comment: "0~255"
guami:
display: "GUAMI List"
sort: 5
array:
- name: "index"
type: "int"
value: "0"
access: "read-only"
filter: '0~15'
display: "Index"
comment: "0~15"
- name: "plmnId"
type: "regex"
value: '00101'
access: "read-write"
filter: '^[0-9]{5,6}$'
display: "PLMN ID"
comment: ""
- name: "regionId"
type: "int"
value: '1'
access: "read-write"
filter: '0~255'
display: "Region ID"
comment: "0~255"
- name: "setId"
type: "int"
value: '1'
access: "read-write"
filter: '0~1023'
display: "Set ID"
comment: "0~1023"
- name: "pointer"
type: "int"
value: '1'
access: "read-write"
filter: '0~63'
display: "Pointer"
comment: "0~63"
- name: "index"
type: "int"
value: "0"
access: "read-only"
filter: "0~15"
display: "Index"
comment: "0~15"
- name: "plmnId"
type: "regex"
value: "00101"
access: "read-write"
filter: "^[0-9]{5,6}$"
display: "PLMN ID"
comment: ""
- name: "regionId"
type: "int"
value: "1"
access: "read-write"
filter: "0~255"
display: "Region ID"
comment: "0~255"
- name: "setId"
type: "int"
value: "1"
access: "read-write"
filter: "0~1023"
display: "Set ID"
comment: "0~1023"
- name: "pointer"
type: "int"
value: "1"
access: "read-write"
filter: "0~63"
display: "Pointer"
comment: "0~63"
tai:
display: "TAI List"
sort: 7
array:
- name: "index"
type: "int"
value: "0"
access: "read-only"
filter: '0~15'
display: "Index"
comment: "0~15"
- name: "plmnId"
type: "regex"
value: '00101'
access: "read-write"
filter: '^[0-9]{5,6}$'
display: "PLMN ID"
comment: ""
- name: "tac"
type: "string"
value: "1"
access: "read-write"
filter: '0~8'
display: "TAC"
comment: "0~16777215"
- name: "index"
type: "int"
value: "0"
access: "read-only"
filter: "0~15"
display: "Index"
comment: "0~15"
- name: "plmnId"
type: "regex"
value: "00101"
access: "read-write"
filter: "^[0-9]{5,6}$"
display: "PLMN ID"
comment: ""
- name: "tac"
type: "string"
value: "1"
access: "read-write"
filter: "0~8"
display: "TAC"
comment: "0~16777215"
slice:
display: "Slice List"
sort: 9
array:
- name: "index"
type: "int"
value: "0"
access: "read-only"
filter: '0~15'
display: "Index"
comment: "0~15"
- name: "plmnId"
type: "regex"
value: '00101'
access: "read-write"
filter: '^[0-9]{5,6}$'
display: "PLMN ID"
comment: ""
- name: "sst"
type: "int"
value: '1'
access: "read-write"
filter: '0~127'
display: "SST"
comment: "0~127"
- name: "sd"
type: "regex"
value: '000001'
access: "read-write"
filter: '^[A-Fa-f0-9]{6}'
display: "SD"
comment: ""
- name: "index"
type: "int"
value: "0"
access: "read-only"
filter: "0~15"
display: "Index"
comment: "0~15"
- name: "plmnId"
type: "regex"
value: "00101"
access: "read-write"
filter: "^[0-9]{5,6}$"
display: "PLMN ID"
comment: ""
- name: "sst"
type: "int"
value: "1"
access: "read-write"
filter: "0~127"
display: "SST"
comment: "0~127"
- name: "sd"
type: "regex"
value: "000001"
access: "read-write"
filter: "^[A-Fa-f0-9]{6}"
display: "SD"
comment: ""

View File

@@ -1,46 +1,47 @@
ausf:
system:
display: "System"
sort: 1
list:
- name: "serviceIP"
type: "ipv4"
value: "172.16.5.130"
access: "read-write"
filter: ''
display: "Service IP"
comment: ""
- name: "servicePort"
type: "int"
value: "8080"
access: "read-write"
filter: "0~65535"
display: "Service Port"
comment: ""
- name: "scheme"
type: "enum"
value: "http"
access: "read-write"
filter: "{\"0\":\"HTTP\", \"1\":\"HTTPS\"}"
display: "Scheme"
comment: ""
- name: "nrfUri"
type: "string"
value: "http://172.16.5.180:8080"
access: "read-write"
filter: ''
display: "NRF URI"
comment: ""
- name: "udmUri"
type: "string"
value: "http://172.16.5.140:8080"
access: "read-write"
filter: ''
display: "UDM URI"
comment: ""
- name: "groupId"
type: "string"
value: "0"
access: "read-write"
filter: ''
display: "Group ID"
comment: ""
- name: "serviceIP"
type: "ipv4"
value: "172.16.5.130"
access: "read-write"
filter: ""
display: "Service IP"
comment: ""
- name: "servicePort"
type: "int"
value: "8080"
access: "read-write"
filter: "0~65535"
display: "Service Port"
comment: ""
- name: "scheme"
type: "enum"
value: "http"
access: "read-write"
filter: '{"0":"HTTP", "1":"HTTPS"}'
display: "Scheme"
comment: ""
- name: "nrfUri"
type: "string"
value: "http://172.16.5.180:8080"
access: "read-write"
filter: ""
display: "NRF URI"
comment: ""
- name: "udmUri"
type: "string"
value: "http://172.16.5.140:8080"
access: "read-write"
filter: ""
display: "UDM URI"
comment: ""
- name: "groupId"
type: "string"
value: "0"
access: "read-write"
filter: ""
display: "Group ID"
comment: ""

View File

@@ -1,6 +1,7 @@
ims:
system:
display: "System"
sort: 1
list:
- name: "label"
type: "string"
@@ -123,14 +124,15 @@ ims:
comment: ""
plmn:
display: "PLMN List"
sort: 3
array:
- name: "index"
type: "int"
value: "0"
access: "read-only"
filter: "0~15"
filter: "0~3"
display: "Index"
comment: "0~15"
comment: "0~3"
- name: "mcc"
type: "regex"
value: "001"
@@ -154,6 +156,7 @@ ims:
comment: ""
mmtel_dialplan:
display: "MMTEL Dialplan"
sort: 5
array:
- name: "index"
type: "int"
@@ -255,6 +258,7 @@ ims:
comment: "Enable: Close/Open"
ds_system:
display: "DS System"
sort: 7
list:
- name: "dispatchSystemInd"
type: "bool"

View File

@@ -1,6 +1,7 @@
mme:
system:
display: "System Config"
sort: 1
list:
- name: "csfbEnabled"
type: "bool"
@@ -88,6 +89,7 @@ mme:
comment: "0~20"
gummei:
display: "Gummei List"
sort: 3
array:
- name: "index"
type: "int"
@@ -119,6 +121,7 @@ mme:
comment: "0~255"
tai:
display: "TAI List"
sort: 5
array:
- name: "index"
type: "int"
@@ -143,6 +146,7 @@ mme:
comment: "0~65535"
hss:
display: "HSS List"
sort: 7
array:
- name: "index"
type: "int"
@@ -181,6 +185,7 @@ mme:
comment: "0~65535"
sgw:
display: "SGW List"
sort: 9
array:
- name: "index"
type: "int"
@@ -212,6 +217,7 @@ mme:
comment: "0~64"
pgw:
display: "PGW List"
sort: 11
array:
- name: "index"
type: "int"
@@ -243,6 +249,7 @@ mme:
comment: "0~64"
amf:
display: "AMF List"
sort: 13
array:
- name: "index"
type: "int"

View File

@@ -1,108 +1,111 @@
mocngw:
system:
display: "System Config"
sort: 1
list:
- name: "s1apSouthAddr"
type: "string"
value: "192.168.7.163"
access: "read-write"
filter: '0~64'
display: "S1AP South Address"
comment: ""
- name: "s1apNorthAddr"
type: "string"
value: "192.168.8.163"
access: "read-write"
filter: '0~64'
display: "S1AP North Address"
comment: ""
- name: "tac"
type: "int"
value: "1"
access: "read-write"
filter: '0~65535'
display: "TAC"
comment: "0~65535"
- name: "enbId"
type: "int"
value: "24"
access: "read-write"
filter: "0~1048575"
display: "ENB ID"
comment: "0~1048575"
- name: "userPlaneEnabled"
type: "bool"
value: "0"
access: "read-write"
filter: '{"0":"false","1":"true"}'
display: "User Plane Enabled"
comment: ""
- name: "pfcpAddr"
type: "string"
value: "192.168.7.163"
access: "read-write"
filter: '0~64'
display: "PFCP Address"
comment: ""
- name: "s1apSouthAddr"
type: "string"
value: "192.168.7.163"
access: "read-write"
filter: "0~64"
display: "S1AP South Address"
comment: ""
- name: "s1apNorthAddr"
type: "string"
value: "192.168.8.163"
access: "read-write"
filter: "0~64"
display: "S1AP North Address"
comment: ""
- name: "tac"
type: "int"
value: "1"
access: "read-write"
filter: "0~65535"
display: "TAC"
comment: "0~65535"
- name: "enbId"
type: "int"
value: "24"
access: "read-write"
filter: "0~1048575"
display: "ENB ID"
comment: "0~1048575"
- name: "userPlaneEnabled"
type: "bool"
value: "0"
access: "read-write"
filter: '{"0":"false","1":"true"}'
display: "User Plane Enabled"
comment: ""
- name: "pfcpAddr"
type: "string"
value: "192.168.7.163"
access: "read-write"
filter: "0~64"
display: "PFCP Address"
comment: ""
mme:
display: "MME List"
sort: 3
array:
- name: "index"
type: "int"
value: "0"
access: "read-only"
filter: '0~15'
display: "Index"
comment: "0~15"
- name: "s1apAddr"
type: "string"
value: "192.168.1.161"
access: "read-write"
filter: '0~64'
display: "S1AP Address"
comment: ""
- name: "s1apPort"
type: "int"
value: "36412"
access: "read-write"
filter: "0~65535"
display: "S1AP Port"
comment: "0~65535"
- name: "plmnId"
type: "regex"
value: '00101'
access: "read-write"
filter: '^[0-9]{5,6}$'
display: "PLMN ID"
comment: ""
- name: "index"
type: "int"
value: "0"
access: "read-only"
filter: "0~15"
display: "Index"
comment: "0~15"
- name: "s1apAddr"
type: "string"
value: "192.168.1.161"
access: "read-write"
filter: "0~64"
display: "S1AP Address"
comment: ""
- name: "s1apPort"
type: "int"
value: "36412"
access: "read-write"
filter: "0~65535"
display: "S1AP Port"
comment: "0~65535"
- name: "plmnId"
type: "regex"
value: "00101"
access: "read-write"
filter: "^[0-9]{5,6}$"
display: "PLMN ID"
comment: ""
upgw:
display: "UPGW Config"
sort: 5
list:
- name: "pfcpAddr"
type: "string"
value: "192.168.1.159"
access: "read-write"
filter: '0~64'
display: "PFCP Address"
comment: ""
- name: "pfcpPort"
type: "int"
value: "8805"
access: "read-write"
filter: "0~65535"
display: "PFCP Port"
comment: "0~65535"
- name: "gtpuSouthAddr"
type: "string"
value: "10.10.1.2"
access: "read-write"
filter: '0~64'
display: "GTP-U South Address"
comment: ""
- name: "gtpuNorthAddr"
type: "string"
value: "192.168.7.123"
access: "read-write"
filter: '0~64'
display: "GTP-U North Address"
comment: ""
- name: "pfcpAddr"
type: "string"
value: "192.168.1.159"
access: "read-write"
filter: "0~64"
display: "PFCP Address"
comment: ""
- name: "pfcpPort"
type: "int"
value: "8805"
access: "read-write"
filter: "0~65535"
display: "PFCP Port"
comment: "0~65535"
- name: "gtpuSouthAddr"
type: "string"
value: "10.10.1.2"
access: "read-write"
filter: "0~64"
display: "GTP-U South Address"
comment: ""
- name: "gtpuNorthAddr"
type: "string"
value: "192.168.7.123"
access: "read-write"
filter: "0~64"
display: "GTP-U North Address"
comment: ""

View File

@@ -1,61 +1,61 @@
n3iwf:
system:
display: "System"
sort: 1
list:
- name: "ikeBindAddr"
type: "string"
value: "192.168.12.160"
access: "read-write"
filter: ''
display: "IKEBindAddress"
comment: ""
- name: "gtpBindAddr"
type: "string"
value: "192.168.12.161"
access: "read-write"
filter: ''
display: "GTPBindAddress"
comment: ""
- name: "fqdn"
type: "string"
value: "n3iwf.5gc.mnc00.mcc460.pub.3gppnetwork.org"
access: "read-write"
filter: ''
display: "FQDN"
comment: ""
- name: "internalIP"
type: "string"
value: "172.16.1.190"
access: "read-write"
filter: ''
display: "InternalIP"
comment: ""
- name: "udmAddr"
type: "string"
value: "172.16.1.140:8080"
access: "read-write"
filter: ''
display: "UdmIPAddrPort"
comment: ""
- name: "smfIPAddr"
type: "string"
value: "172.16.1.150"
access: "read-write"
filter: ''
display: "SmfIPAddress"
comment: ""
- name: "n3IPAddr"
type: "string"
value: "192.168.1.160"
access: "read-write"
filter: ''
display: "N3IPAddress"
comment: ""
- name: "n6IPAddr"
type: "string"
value: "192.168.1.161"
access: "read-write"
filter: ''
display: "N6IPAddress"
comment: ""
- name: "ikeBindAddr"
type: "string"
value: "192.168.12.160"
access: "read-write"
filter: ""
display: "IKEBindAddress"
comment: ""
- name: "gtpBindAddr"
type: "string"
value: "192.168.12.161"
access: "read-write"
filter: ""
display: "GTPBindAddress"
comment: ""
- name: "fqdn"
type: "string"
value: "n3iwf.5gc.mnc00.mcc460.pub.3gppnetwork.org"
access: "read-write"
filter: ""
display: "FQDN"
comment: ""
- name: "internalIP"
type: "string"
value: "172.16.1.190"
access: "read-write"
filter: ""
display: "InternalIP"
comment: ""
- name: "udmAddr"
type: "string"
value: "172.16.1.140:8080"
access: "read-write"
filter: ""
display: "UdmIPAddrPort"
comment: ""
- name: "smfIPAddr"
type: "string"
value: "172.16.1.150"
access: "read-write"
filter: ""
display: "SmfIPAddress"
comment: ""
- name: "n3IPAddr"
type: "string"
value: "192.168.1.160"
access: "read-write"
filter: ""
display: "N3IPAddress"
comment: ""
- name: "n6IPAddr"
type: "string"
value: "192.168.1.161"
access: "read-write"
filter: ""
display: "N6IPAddress"
comment: ""

View File

@@ -1,64 +1,67 @@
nrf:
system:
display: "System"
sort: 1
perms: "put"
list:
- name: "serviceIP"
type: "ipv4"
value: "172.16.5.180"
access: "read-write"
filter: ''
display: "Service IP"
comment: ""
- name: "servicePort"
type: "int"
value: "8080"
access: "read-write"
filter: "0~65535"
display: "Service Port"
comment: ""
- name: "scheme"
type: "enum"
value: "0"
access: "read-write"
filter: "{\"0\":\"HTTP\", \"1\":\"HTTPS\"}"
display: "Scheme"
comment: ""
- name: "serviceIP"
type: "ipv4"
value: "172.16.5.180"
access: "read-write"
filter: ""
display: "Service IP"
comment: ""
- name: "servicePort"
type: "int"
value: "8080"
access: "read-write"
filter: "0~65535"
display: "Service Port"
comment: ""
- name: "scheme"
type: "enum"
value: "0"
access: "read-write"
filter: '{"0":"HTTP", "1":"HTTPS"}'
display: "Scheme"
comment: ""
registeredNFs:
display: "Registered NFs"
method: "get"
sort: 3
perms: "get"
array:
- name: "index"
type: "int"
value: "1"
access: "read-only"
filter: '1~256'
filter: "1~256"
display: "Index"
comment: ""
- name: "nfType"
type: "string"
value: ''
value: ""
access: "read-only"
filter: '^.{1,128}$'
filter: "^.{1,128}$"
display: "NF Type"
comment: ""
- name: "status"
type: "string"
value: ''
value: ""
access: "read-only"
filter: '^.{1,128}$'
filter: "^.{1,128}$"
display: "Status"
comment: ""
- name: "nfId"
type: "string"
value: ''
value: ""
access: "read-only"
filter: '^.{1,128}$'
filter: "^.{1,128}$"
display: "NF ID"
comment: ""
- name: "ipAddress"
type: "string"
value: ''
value: ""
access: "read-only"
filter: '^.{1,128}$'
filter: "^.{1,128}$"
display: "IP Address"
comment: ""

View File

@@ -1,258 +1,262 @@
nssf:
general:
display: "General"
sort: 1
list:
- name: "nssfName"
type: "string"
value: ""
access: "read-write"
filter: ''
display: "NSSF Name"
comment: ""
- name: "nrfUri"
type: "string"
value: ""
access: "read-write"
filter: ''
display: "NRF URI"
comment: ""
- name: "logLevel"
type: "string"
value: "error"
access: "read-write"
filter: ''
display: "Log Level"
comment: ""
- name: "nfId"
type: "string"
value: ""
access: "read-write"
filter: ''
display: "NF ID"
comment: ""
- name: "systemId"
type: "int"
value: "0"
access: "read-write"
filter: ''
display: "System ID"
comment: ""
- name: "nssfName"
type: "string"
value: ""
access: "read-write"
filter: ""
display: "NSSF Name"
comment: ""
- name: "nrfUri"
type: "string"
value: ""
access: "read-write"
filter: ""
display: "NRF URI"
comment: ""
- name: "logLevel"
type: "string"
value: "error"
access: "read-write"
filter: ""
display: "Log Level"
comment: ""
- name: "nfId"
type: "string"
value: ""
access: "read-write"
filter: ""
display: "NF ID"
comment: ""
- name: "systemId"
type: "int"
value: "0"
access: "read-write"
filter: ""
display: "System ID"
comment: ""
sbi:
display: "SBI"
sort: 3
list:
- name: "scheme"
type: "string"
value: "http"
access: "read-write"
filter: ''
filter: ""
display: "Scheme"
comment: ""
- name: "registerIpv4"
type: "string"
value: ""
access: "read-write"
filter: ''
filter: ""
display: "Register IPv4"
comment: ""
- name: "bindingIpv4"
type: "string"
value: ""
access: "read-write"
filter: ''
filter: ""
display: "Binding IPv4"
comment: ""
- name: "registerIpv6"
type: "string"
value: ""
access: "read-write"
filter: ''
filter: ""
display: "Register IPv6"
comment: ""
- name: "bindingIpv6"
type: "string"
value: ""
access: "read-write"
filter: ''
filter: ""
display: "Binding IPv6"
comment: ""
- name: "ipType"
type: "string"
value: "ipv4"
access: "read-write"
filter: ''
filter: ""
display: "IP Type"
comment: ""
- name: "port"
type: "int"
value: "8080"
access: "read-write"
filter: ''
filter: ""
display: "Port"
comment: ""
- name: "telnetIpv4"
type: "string"
value: ""
access: "read-write"
filter: ''
filter: ""
display: "Telnet IPv4"
comment: ""
- name: "telnetIpv6"
type: "string"
value: ""
access: "read-write"
filter: ''
filter: ""
display: "Telnet IPv6"
comment: ""
- name: "telnetPort"
type: "int"
value: "4100"
access: "read-write"
filter: ''
filter: ""
display: "Telnet Port"
comment: ""
supportedNetworkSliceList:
display: "Supported Network Slice List"
sort: 5
array:
- name: "index"
type: "int"
value: "1"
access: "read-only"
filter: '1~32'
filter: "1~32"
display: "Index"
comment: "1~32"
- name: "mcc"
type: "string"
value: "001"
access: "read-write"
filter: ''
filter: ""
display: "MCC"
comment: ""
- name: "mnc"
type: "string"
value: "01"
access: "read-write"
filter: ''
filter: ""
display: "MNC"
comment: ""
- name: "tac"
type: "string"
value: ""
access: "read-write"
filter: ''
filter: ""
display: "TAC"
comment: ""
- name: "supportedSst"
type: "int"
value: ""
access: "read-write"
filter: ''
filter: ""
display: "Supported SST"
comment: ""
- name: "supportedSd"
type: "string"
value: ""
access: "read-write"
filter: ''
filter: ""
display: "Supported SD"
comment: ""
- name: "restrictedSst"
type: "int"
value: ""
access: "read-write"
filter: ''
filter: ""
display: "Restricted SST"
comment: ""
- name: "restrictedSd"
type: "string"
value: ""
access: "read-write"
filter: ''
filter: ""
display: "Restricted SD"
comment: ""
- name: "nrfId"
type: "string"
value: ""
access: "read-write"
filter: ''
filter: ""
display: "NRF ID"
comment: ""
- name: "nsiId"
type: "string"
value: ""
access: "read-write"
filter: ''
filter: ""
display: "NSI ID"
comment: ""
- name: "accessType"
type: "string"
value: ""
access: "read-write"
filter: ''
filter: ""
display: "Access Type"
comment: ""
- name: "amfSetId"
type: "string"
value: ""
access: "read-write"
filter: ''
filter: ""
display: "AMF Set ID"
comment: ""
plmnMappingList:
display: "PLMN Mapping List"
sort: 7
array:
- name: "index"
type: "int"
value: "1"
access: "read-only"
filter: '1~32'
filter: "1~32"
display: "Index"
comment: "1~32"
- name: "operatorName"
type: "string"
value: ""
access: "read-write"
filter: ''
filter: ""
display: "Operator Name"
comment: ""
- name: "mcc"
type: "string"
value: "001"
access: "read-write"
filter: ''
filter: ""
display: "MCC"
comment: ""
- name: "mnc"
type: "string"
value: "02"
access: "read-write"
filter: ''
filter: ""
display: "MNC"
comment: ""
- name: "servingSnssaiSst"
type: "int"
value: "1"
access: "read-write"
filter: ''
filter: ""
display: "Serving SNSSAI SST"
comment: ""
- name: "servingSnssaiSd"
type: "string"
value: "1"
access: "read-write"
filter: ''
filter: ""
display: "Serving SNSSAI SD"
comment: ""
- name: "homeSnssaiSst"
type: "int"
value: "1"
access: "read-write"
filter: ''
filter: ""
display: "Home SNSSAI SST"
comment: ""
- name: "homeSnssaiSd"
type: "string"
value: "1"
access: "read-write"
filter: ''
filter: ""
display: "Home SNSSAI SD"
comment: ""
comment: ""

View File

@@ -1,99 +1,101 @@
pcf:
system:
display: "System"
sort: 1
list:
- name: "serviceIP"
type: "ipv4"
value: "172.16.5.160"
access: "read-write"
filter: ''
display: "Service IP"
comment: ""
- name: "servicePort"
type: "int"
value: "8080"
access: "read-write"
filter: "0~65535"
display: "Service Port"
comment: ""
- name: "scheme"
type: "enum"
value: "0"
access: "read-write"
filter: "{\"0\":\"HTTP\", \"1\":\"HTTPS\"}"
display: "Scheme"
comment: ""
- name: "nrfUri"
type: "string"
value: "http://172.16.5.180:8080"
access: "read-write"
filter: ''
display: "NRF URI"
comment: ""
- name: "supportedPlmn1"
type: "string"
value: "00101"
access: "read-write"
filter: '^\d{5,6}$'
display: "Supported Plmn1"
comment: ""
- name: "supportedPlmn2"
type: "string"
value: "00101"
access: "read-write"
filter: '^\d{5,6}$'
display: "Supported Plmn2"
comment: ""
- name: "supportedPlmn3"
type: "string"
value: "00101"
access: "read-write"
filter: '^\d{5,6}$'
display: "Supported Plmn3"
comment: ""
- name: "supportedPlmn4"
type: "string"
value: "00101"
access: "read-write"
filter: '^\d{5,6}$'
display: "Supported Plmn4"
comment: ""
- name: "serviceIP"
type: "ipv4"
value: "172.16.5.160"
access: "read-write"
filter: ""
display: "Service IP"
comment: ""
- name: "servicePort"
type: "int"
value: "8080"
access: "read-write"
filter: "0~65535"
display: "Service Port"
comment: ""
- name: "scheme"
type: "enum"
value: "0"
access: "read-write"
filter: '{"0":"HTTP", "1":"HTTPS"}'
display: "Scheme"
comment: ""
- name: "nrfUri"
type: "string"
value: "http://172.16.5.180:8080"
access: "read-write"
filter: ""
display: "NRF URI"
comment: ""
- name: "supportedPlmn1"
type: "string"
value: "00101"
access: "read-write"
filter: '^\d{5,6}$'
display: "Supported Plmn1"
comment: ""
- name: "supportedPlmn2"
type: "string"
value: "00101"
access: "read-write"
filter: '^\d{5,6}$'
display: "Supported Plmn2"
comment: ""
- name: "supportedPlmn3"
type: "string"
value: "00101"
access: "read-write"
filter: '^\d{5,6}$'
display: "Supported Plmn3"
comment: ""
- name: "supportedPlmn4"
type: "string"
value: "00101"
access: "read-write"
filter: '^\d{5,6}$'
display: "Supported Plmn4"
comment: ""
serviceAreaRestriction:
display: "Service Area Restriction"
sort: 3
array:
- name: "index"
type: "int"
value: "1"
access: "read-only"
filter: '1~16'
filter: "1~16"
display: "Index"
comment: ""
- name: "name"
type: "string"
value: 'def_ambr'
value: "def_ambr"
access: "read-write"
filter: '^.{1,32}$'
filter: "^.{1,32}$"
display: "Name"
comment: ""
- name: "restrictionType"
type: "enum"
value: '0'
value: "0"
access: "read-write"
filter: "{\"0\":\"Allowed Areas\", \"1\":\"Not Allowed Areas\"}"
filter: '{"0":"Allowed Areas", "1":"Not Allowed Areas"}'
display: "Restriction Type"
comment: ""
- name: "tacs"
type: "string"
value: '123'
value: "123"
access: "read-write"
filter: ''
filter: ""
display: "TACs"
comment: ""
- name: "areaCodes"
type: "string"
value: '123456'
value: "123456"
access: "read-write"
filter: ''
filter: ""
display: "Area Codes"
comment: ""
- name: "maxTAs"
@@ -105,139 +107,141 @@ pcf:
comment: ""
pccRules:
display: "PCC Rules"
sort: 5
array:
- name: "index"
type: "int"
value: "1"
access: "read-only"
filter: '1~64'
filter: "1~64"
display: "Index"
comment: ""
- name: "ruleId"
type: "string"
value: 'internet'
value: "internet"
access: "read-write"
filter: '^.{1,63}$'
filter: "^.{1,63}$"
display: "Rule ID"
comment: ""
- name: "activate"
type: "bool"
value: 'true'
value: "true"
access: "read-write"
filter: 'false;true;'
filter: "false;true;"
display: "Activate"
comment: ""
- name: "precedence"
type: "int"
value: "80"
access: "read-write"
filter: '0~255'
filter: "0~255"
display: "Precedence"
comment: ""
- name: "flowUsage"
type: "enum"
value: '0'
value: "0"
access: "read-write"
filter: "{\"0\":\"General\", \"1\":\"IMS-Signalling\"}"
filter: '{"0":"General", "1":"IMS-Signalling"}'
display: "Flow Usage"
comment: ""
- name: "appId"
type: "string"
value: ''
value: ""
access: "read-write"
filter: '^.{1,63}$'
filter: "^.{1,63}$"
display: "APP ID"
comment: ""
- name: "flowTemplate"
type: "string"
value: 'flow_any'
value: "flow_any"
access: "read-write"
filter: '^.{1,255}$'
filter: "^.{1,255}$"
display: "Flow Template"
comment: ""
- name: "qosId"
type: "string"
value: 'qos_internet'
value: "qos_internet"
access: "read-write"
filter: '^.{1,63}$'
filter: "^.{1,63}$"
display: "QoS ID"
comment: ""
- name: "trafficControlId"
type: "string"
value: ''
value: ""
access: "read-write"
filter: '^.{1,63}$'
filter: "^.{1,63}$"
display: "Traffic Control ID"
comment: ""
- name: "usageMonitoringId"
type: "string"
value: ''
value: ""
access: "read-write"
filter: '^.{1,63}$'
filter: "^.{1,63}$"
display: "Usage Monitoring ID"
comment: ""
sessionRules:
display: "Session Rules"
sort: 7
array:
- name: "index"
type: "int"
value: "1"
access: "read-only"
filter: '1~64'
filter: "1~64"
display: "Index"
comment: ""
- name: "ruleId"
type: "string"
value: 'internet'
value: "internet"
access: "read-write"
filter: '^.{1,63}$'
filter: "^.{1,63}$"
display: "Rule ID"
comment: ""
- name: "activate"
type: "bool"
value: 'true'
value: "true"
access: "read-write"
filter: 'false;true;'
filter: "false;true;"
display: "Activate"
comment: ""
- name: "fiveQI"
type: "int"
value: "9"
access: "read-write"
filter: '0~255'
filter: "0~255"
display: "5QI"
comment: ""
- name: "fiveQIPriorityLevel"
type: "int"
value: "80"
access: "read-write"
filter: '0~127'
filter: "0~127"
display: "5QI Priority Level"
comment: ""
- name: "flowUsage"
type: "enum"
value: '0'
value: "0"
access: "read-write"
filter: "{\"0\":\"General\", \"1\":\"IMS-Signalling\"}"
filter: '{"0":"General", "1":"IMS-Signalling"}'
display: "Flow Usage"
comment: ""
- name: "usageMonitoringId"
type: "string"
value: ''
value: ""
access: "read-write"
filter: '^.{1,63}$'
filter: "^.{1,63}$"
display: "Usage Monitoring ID"
comment: ""
- name: "ambrDl"
type: "string"
value: '200Mbps'
value: "200Mbps"
access: "read-write"
filter: '^\d+(\.\d+)?( ?)(bps|Kbps|Mbps|Gbps|Tbps)$'
display: "AMBR Downlink"
comment: ""
- name: "ambrUl"
type: "string"
value: '100Mbps'
value: "100Mbps"
access: "read-write"
filter: '^\d+(\.\d+)?( ?)(bps|Kbps|Mbps|Gbps|Tbps)$'
display: "AMBR Uplink"
@@ -246,227 +250,231 @@ pcf:
type: "int"
value: "0"
access: "read-write"
filter: '0~4095'
filter: "0~4095"
display: "Averaging Window"
comment: ""
- name: "maxDataBurstVolume"
type: "int"
value: "0"
access: "read-write"
filter: '0~4095'
filter: "0~4095"
display: "Max Data Burst Volume"
comment: ""
- name: "arpPriorityLevel"
type: "int"
value: "1"
access: "read-write"
filter: '1~15'
filter: "1~15"
display: "ARP Priority Level"
comment: ""
- name: "arpPreemptCap"
type: "enum"
value: "0"
access: "read-write"
filter: "{\"0\":\"Not Preempt\",\"1\":\"May Preempt\"}"
filter: '{"0":"Not Preempt","1":"May Preempt"}'
display: "ARP Preempt Capability"
comment: ""
- name: "arpPreemptVuln"
type: "enum"
value: "0"
access: "read-write"
filter: "{\"0\":\"Not Preemptable\",\"1\":\"Preemptable\"}"
filter: '{"0":"Not Preemptable","1":"Preemptable"}'
display: "ARP Preempt Vulnerability"
comment: ""
- name: "maxbrDl"
type: "string"
value: ''
value: ""
access: "read-write"
filter: '^\d+(\.\d+)?( ?)(bps|Kbps|Mbps|Gbps|Tbps)$'
display: "Max Bitrate Downlink"
comment: ""
- name: "maxbrUl"
type: "string"
value: ''
value: ""
access: "read-write"
filter: '^\d+(\.\d+)?( ?)(bps|Kbps|Mbps|Gbps|Tbps)$'
display: "Max Bitrate Uplink"
comment: ""
- name: "gbrDl"
type: "string"
value: ''
value: ""
access: "read-write"
filter: '^\d+(\.\d+)?( ?)(bps|Kbps|Mbps|Gbps|Tbps)$'
display: "GBR Downlink"
comment: ""
- name: "gbrUl"
type: "string"
value: ''
value: ""
access: "read-write"
filter: '^\d+(\.\d+)?( ?)(bps|Kbps|Mbps|Gbps|Tbps)$'
display: "GBR Uplink"
comment: ""
gxServer:
display: "Gx Server"
sort: 9
list:
- name: "enable"
type: "bool"
value: 'true'
access: "read-write"
filter: 'false;true;'
display: "Enable"
comment: ""
- name: "netType"
type: "enum"
value: '1'
access: "read-write"
filter: "{\"0\":\"TCP\",\"1\":\"SCTP\"}"
display: "Link Type"
comment: ""
- name: "addr"
type: "string"
value: "172.16.5.140:3868"
access: "read-write"
filter: ''
display: "Address"
comment: ""
- name: "host"
type: "string"
value: "hss.ims.mnc001.mcc001.3gppnetwork.org"
access: "read-write"
filter: '^.{0,127}$'
display: "Host"
comment: ""
- name: "realm"
type: "string"
value: "ims.mnc001.mcc001.3gppnetwork.org"
access: "read-write"
filter: '^.{0,127}$'
display: "Realm"
comment: ""
- name: "enable"
type: "bool"
value: "true"
access: "read-write"
filter: "false;true;"
display: "Enable"
comment: ""
- name: "netType"
type: "enum"
value: "1"
access: "read-write"
filter: '{"0":"TCP","1":"SCTP"}'
display: "Link Type"
comment: ""
- name: "addr"
type: "string"
value: "172.16.5.140:3868"
access: "read-write"
filter: ""
display: "Address"
comment: ""
- name: "host"
type: "string"
value: "hss.ims.mnc001.mcc001.3gppnetwork.org"
access: "read-write"
filter: "^.{0,127}$"
display: "Host"
comment: ""
- name: "realm"
type: "string"
value: "ims.mnc001.mcc001.3gppnetwork.org"
access: "read-write"
filter: "^.{0,127}$"
display: "Realm"
comment: ""
rxServer:
display: "Rx Server"
sort: 11
list:
- name: "enable"
type: "bool"
value: 'true'
access: "read-write"
filter: 'false;true;'
display: "Enable"
comment: ""
- name: "netType"
type: "enum"
value: '0'
access: "read-write"
filter: "{\"0\":\"TCP\",\"1\":\"SCTP\"}"
display: "Link Type"
comment: ""
- name: "addr"
type: "string"
value: "172.16.5.140:3868"
access: "read-write"
filter: ''
display: "Address"
comment: ""
- name: "host"
type: "string"
value: "hss.ims.mnc001.mcc001.3gppnetwork.org"
access: "read-write"
filter: '^.{0,127}$'
display: "Host"
comment: ""
- name: "realm"
type: "string"
value: "ims.mnc001.mcc001.3gppnetwork.org"
access: "read-write"
filter: '^.{0,127}$'
display: "Realm"
comment: ""
- name: "enable"
type: "bool"
value: "true"
access: "read-write"
filter: "false;true;"
display: "Enable"
comment: ""
- name: "netType"
type: "enum"
value: "0"
access: "read-write"
filter: '{"0":"TCP","1":"SCTP"}'
display: "Link Type"
comment: ""
- name: "addr"
type: "string"
value: "172.16.5.140:3868"
access: "read-write"
filter: ""
display: "Address"
comment: ""
- name: "host"
type: "string"
value: "hss.ims.mnc001.mcc001.3gppnetwork.org"
access: "read-write"
filter: "^.{0,127}$"
display: "Host"
comment: ""
- name: "realm"
type: "string"
value: "ims.mnc001.mcc001.3gppnetwork.org"
access: "read-write"
filter: "^.{0,127}$"
display: "Realm"
comment: ""
flowTemplate:
display: "Flow Template"
sort: 13
array:
- name: "index"
type: "int"
value: "1"
access: "read-only"
filter: '1~256'
filter: "1~256"
display: "Index"
comment: ""
- name: "templateName"
type: "string"
value: 'flow_any'
value: "flow_any"
access: "read-write"
filter: '^.{1,63}$'
filter: "^.{1,63}$"
display: "Template Name"
comment: ""
- name: "flowDescription"
type: "string"
value: 'permit out ip from any to assigned'
value: "permit out ip from any to assigned"
access: "read-write"
filter: '^.{1,127}$'
filter: "^.{1,127}$"
display: "Flow Description"
comment: ""
- name: "flowDirection"
type: "enum"
value: '0'
value: "0"
access: "read-write"
filter: "{\"0\":\"Unspecified\", \"1\":\"Uplink\", \"2\":\"Downlink\", \"3\":\"Bidirectional\"}"
filter: '{"0":"Unspecified", "1":"Uplink", "2":"Downlink", "3":"Bidirectional"}'
display: "Flow Direction"
comment: ""
qosTemplate:
display: "QoS Template"
sort: 15
array:
- name: "index"
type: "int"
value: "1"
access: "read-only"
filter: '1~64'
filter: "1~64"
display: "Index"
comment: ""
- name: "qosId"
type: "string"
value: 'qos_internet'
value: "qos_internet"
access: "read-write"
filter: '^.{1,63}$'
filter: "^.{1,63}$"
display: "QoS ID"
comment: ""
- name: "fiveQI"
type: "int"
value: "9"
access: "read-write"
filter: '0~255'
filter: "0~255"
display: "5QI"
comment: ""
- name: "fiveQIPriorityLevel"
type: "int"
value: "80"
access: "read-write"
filter: '0~127'
filter: "0~127"
display: "5QI Priority Level"
comment: ""
- name: "maxbrDl"
type: "string"
value: ''
value: ""
access: "read-write"
filter: '^\d+(\.\d+)?( ?)(bps|Kbps|Mbps|Gbps|Tbps)$'
display: "Max Bitrate Downlink"
comment: ""
- name: "maxbrUl"
type: "string"
value: ''
value: ""
access: "read-write"
filter: '^\d+(\.\d+)?( ?)(bps|Kbps|Mbps|Gbps|Tbps)$'
display: "Max Bitrate Uplink"
comment: ""
- name: "gbrDl"
type: "string"
value: ''
value: ""
access: "read-write"
filter: '^\d+(\.\d+)?( ?)(bps|Kbps|Mbps|Gbps|Tbps)$'
display: "GBR Downlink"
comment: ""
- name: "gbrUl"
type: "string"
value: ''
value: ""
access: "read-write"
filter: '^\d+(\.\d+)?( ?)(bps|Kbps|Mbps|Gbps|Tbps)$'
display: "GBR Uplink"
@@ -475,148 +483,151 @@ pcf:
type: "int"
value: "1"
access: "read-write"
filter: '1~15'
filter: "1~15"
display: "ARP Priority Level"
comment: ""
- name: "arpPreemptCap"
type: "enum"
value: "0"
access: "read-write"
filter: "{\"0\":\"Not Preempt\",\"1\":\"May Preempt\"}"
filter: '{"0":"Not Preempt","1":"May Preempt"}'
display: "ARP Preempt Capability"
comment: ""
- name: "arpPreemptVuln"
type: "enum"
value: "0"
access: "read-write"
filter: "{\"0\":\"Not Preemptable\",\"1\":\"Preemptable\"}"
filter: '{"0":"Not Preemptable","1":"Preemptable"}'
display: "ARP Preempt Vulnerability"
comment: ""
- name: "defQosFlowIndication"
type: "bool"
value: 'false'
value: "false"
access: "read-write"
filter: 'false;true;'
filter: "false;true;"
display: "Default QoS Flow Indication"
comment: ""
usageMonitoringTemplate:
display: "Usage Monitoring Template"
sort: 17
array:
- name: "index"
type: "int"
value: "1"
access: "read-only"
filter: '1~64'
filter: "1~64"
display: "Index"
comment: ""
- name: "umId"
type: "string"
value: 'flow_any'
value: "flow_any"
access: "read-write"
filter: '^.{1,63}$'
filter: "^.{1,63}$"
display: "Usage Monitoring ID"
comment: ""
- name: "volumeThreshold"
type: "int"
value: '5242880'
value: "5242880"
access: "read-write"
filter: ''
filter: ""
display: "Volume Threshold(KB)"
comment: ""
- name: "volumeThresholdUplink"
type: "int"
value: '0'
value: "0"
access: "read-write"
filter: ''
filter: ""
display: "Volume Threshold Uplink(KB)"
comment: ""
- name: "volumeThresholdDownlink"
type: "int"
value: '0'
value: "0"
access: "read-write"
filter: ''
filter: ""
display: "Volume Threshold Downlink(KB)"
comment: ""
- name: "timeThreshold"
type: "int"
value: '0'
value: "0"
access: "read-write"
filter: ''
filter: ""
display: "Time Threshold"
comment: ""
- name: "inactivityTime"
type: "int"
value: '0'
value: "0"
access: "read-write"
filter: ''
filter: ""
display: "Inactivity Time"
comment: ""
trafficControlTemplate:
display: "Traffic Control Template"
sort: 19
array:
- name: "index"
type: "int"
value: "1"
access: "read-only"
filter: '1~64'
filter: "1~64"
display: "Index"
comment: ""
- name: "tcId"
type: "string"
value: ''
value: ""
access: "read-write"
filter: '^.{1,63}$'
filter: "^.{1,63}$"
display: "Traffic Control ID"
comment: ""
- name: "flowStatus"
type: "enum"
value: '0'
value: "0"
access: "read-write"
filter: "{\"0\":\"Disable\", \"1\":\"Uplink\", \"2\":\"Downlink\", \"3\":\"Enable\", \"4\":\"Remove\"}"
filter: '{"0":"Disable", "1":"Uplink", "2":"Downlink", "3":"Enable", "4":"Remove"}'
display: "Flow Status"
comment: ""
- name: "muteNotif"
type: "bool"
value: 'true'
value: "true"
access: "read-write"
filter: 'false;true;'
filter: "false;true;"
display: "Mute Notify"
comment: ""
- name: "dnai"
type: "string"
value: ''
value: ""
access: "read-write"
filter: '^.{1,63}$'
filter: "^.{1,63}$"
display: "Route to Location DNAI"
comment: ""
headerEnrichTemplate:
display: "Header Enrich Template"
sort: 21
array:
- name: "index"
type: "int"
value: "1"
access: "read-only"
filter: '1~16'
filter: "1~16"
display: "Index"
comment: ""
- name: "templateName"
type: "string"
value: ''
value: ""
access: "read-write"
filter: '^.{1,63}$'
filter: "^.{1,63}$"
display: "Template Name"
comment: ""
- name: "headerType"
type: "enum"
value: '0'
value: "0"
access: "read-write"
filter: "{\"0\":\"GPSI\", \"1\":\"SUPI\", \"2\":\"UE IP\", \"3\":\"User Location\", \"4\":\"DNN\"}"
filter: '{"0":"GPSI", "1":"SUPI", "2":"UE IP", "3":"User Location", "4":"DNN"}'
display: "Header Type"
comment: ""
- name: "headerName"
type: "string"
value: ''
value: ""
access: "read-write"
filter: '^.{1,63}$'
filter: "^.{1,63}$"
display: "Header Name"
comment: ""

File diff suppressed because it is too large Load Diff

View File

@@ -1,208 +1,210 @@
smsc:
system:
display: "System"
sort: 1
list:
- name: "cdrFlag"
type: "bool"
value: "1"
access: "read-write"
filter: '{"0":"false","1":"true"}'
display: "CDR Flag"
comment: ""
- name: "smValidity"
type: "int"
value: "259200"
access: "read-write"
filter: '0-2147483647'
display: "SM Validity"
comment: ""
- name: "logFlag"
type: "bool"
value: "1"
access: "read-write"
filter: '{"0":"false","1":"true"}'
display: "Log Flag"
comment: ""
- name: "localPollingFlag"
type: "bool"
value: "1"
access: "read-write"
filter: '{"0":"false","1":"true"}'
display: "Local Polling Flag"
comment: "Enable or disable resend pending SMS to unattainable local users."
- name: "localRoamingOutPollingFlag"
type: "bool"
value: "1"
access: "read-write"
filter: '{"0":"false","1":"true"}'
display: "Local Roaming Out Polling Flag"
comment: "Enable or disable resend pending SMS to unattainable outbound roaming users."
- name: "visitorRoamingInPollingFlag"
type: "bool"
value: "1"
access: "read-write"
filter: '{"0":"false","1":"true"}'
display: "Visitor Roaming In Polling Flag"
comment: "Enable or disable resend pending SMS to unattainable inbound roaming users."
- name: "otherPollingFlag"
type: "bool"
value: "1"
access: "read-write"
filter: '{"0":"false","1":"true"}'
display: "Other Polling Flag"
comment: "Enable or disable resend pending SMS to other unattainable users."
- name: "pollingNumber"
type: "int"
value: "64"
access: "read-write"
filter: '0-64'
display: "Polling Number"
comment: "Define the maximum port number that the queue of pending SMS may grow to."
- name: "priorityFlag"
type: "bool"
value: "1"
access: "read-write"
filter: '{"0":"false","1":"true"}'
display: "Priority Flag"
comment: "Specify the priority parameter of SM_RP_PRI. true = High; false = Low."
- name: "tpReplyPathFlag"
type: "bool"
value: "1"
access: "read-write"
filter: '{"0":"false","1":"true"}'
display: "TP Reply Path Flag"
comment: "Enable or disable TP-Reply-Path parameter in the SMS-DELIVER data unit."
- name: "smscDomain"
type: "string"
value: "0.0.0.0"
access: "read-write"
filter: '0~16'
display: "SMSC Domain"
comment: ""
- name: "csfbVolteFlag"
type: "bool"
value: "1"
access: "read-write"
filter: '{"0":"false","1":"true"}'
display: "CSFB VoLTE Flag"
comment: ""
- name: "camelFlag"
type: "bool"
value: "0"
access: "read-write"
filter: '{"0":"false","1":"true"}'
display: "Camel Flag"
comment: ""
- name: "scfAddress"
type: "string"
value: "0.0.0.0"
access: "read-write"
filter: '0~16'
display: "SCF Address"
comment: ""
- name: "cdrFlag"
type: "bool"
value: "1"
access: "read-write"
filter: '{"0":"false","1":"true"}'
display: "CDR Flag"
comment: ""
- name: "smValidity"
type: "int"
value: "259200"
access: "read-write"
filter: "0-2147483647"
display: "SM Validity"
comment: ""
- name: "logFlag"
type: "bool"
value: "1"
access: "read-write"
filter: '{"0":"false","1":"true"}'
display: "Log Flag"
comment: ""
- name: "localPollingFlag"
type: "bool"
value: "1"
access: "read-write"
filter: '{"0":"false","1":"true"}'
display: "Local Polling Flag"
comment: "Enable or disable resend pending SMS to unattainable local users."
- name: "localRoamingOutPollingFlag"
type: "bool"
value: "1"
access: "read-write"
filter: '{"0":"false","1":"true"}'
display: "Local Roaming Out Polling Flag"
comment: "Enable or disable resend pending SMS to unattainable outbound roaming users."
- name: "visitorRoamingInPollingFlag"
type: "bool"
value: "1"
access: "read-write"
filter: '{"0":"false","1":"true"}'
display: "Visitor Roaming In Polling Flag"
comment: "Enable or disable resend pending SMS to unattainable inbound roaming users."
- name: "otherPollingFlag"
type: "bool"
value: "1"
access: "read-write"
filter: '{"0":"false","1":"true"}'
display: "Other Polling Flag"
comment: "Enable or disable resend pending SMS to other unattainable users."
- name: "pollingNumber"
type: "int"
value: "64"
access: "read-write"
filter: "0-64"
display: "Polling Number"
comment: "Define the maximum port number that the queue of pending SMS may grow to."
- name: "priorityFlag"
type: "bool"
value: "1"
access: "read-write"
filter: '{"0":"false","1":"true"}'
display: "Priority Flag"
comment: "Specify the priority parameter of SM_RP_PRI. true = High; false = Low."
- name: "tpReplyPathFlag"
type: "bool"
value: "1"
access: "read-write"
filter: '{"0":"false","1":"true"}'
display: "TP Reply Path Flag"
comment: "Enable or disable TP-Reply-Path parameter in the SMS-DELIVER data unit."
- name: "smscDomain"
type: "string"
value: "0.0.0.0"
access: "read-write"
filter: "0~16"
display: "SMSC Domain"
comment: ""
- name: "csfbVolteFlag"
type: "bool"
value: "1"
access: "read-write"
filter: '{"0":"false","1":"true"}'
display: "CSFB VoLTE Flag"
comment: ""
- name: "camelFlag"
type: "bool"
value: "0"
access: "read-write"
filter: '{"0":"false","1":"true"}'
display: "Camel Flag"
comment: ""
- name: "scfAddress"
type: "string"
value: "0.0.0.0"
access: "read-write"
filter: "0~16"
display: "SCF Address"
comment: ""
msisdnsegment:
display: "MSISDN Segment List"
method: "put"
sort: 3
perms: "put"
array:
- name: "index"
type: "int"
value: "0"
access: "read-only"
filter: '0~15'
display: "Index"
comment: "0~15"
- name: "startMSISDN"
type: "string"
value: "0"
access: "read-write"
filter: '0~32'
display: "Start MSISDN"
comment: ""
- name: "endMSISDN"
type: "string"
value: "0"
access: "read-write"
filter: '0~32'
display: "End MSISDN"
comment: ""
- name: "index"
type: "int"
value: "0"
access: "read-only"
filter: "0~15"
display: "Index"
comment: "0~15"
- name: "startMSISDN"
type: "string"
value: "0"
access: "read-write"
filter: "0~32"
display: "Start MSISDN"
comment: ""
- name: "endMSISDN"
type: "string"
value: "0"
access: "read-write"
filter: "0~32"
display: "End MSISDN"
comment: ""
smpplink:
display: "SMPP Link List"
sort: 5
array:
- name: "index"
type: "int"
value: "0"
access: "read-only"
filter: '0~63'
display: "Index"
comment: "0~63"
- name: "linkAlias"
type: "string"
value: "0"
access: "read-write"
filter: '0~32'
display: "Link Alias"
comment: ""
- name: "sessionType"
type: "enum"
value: "0"
access: "read-write"
filter: '{"0":"bindTX","1":"bindRX","2":"bindTRX"}'
display: "Session Type"
comment: ""
- name: "serviceNumber"
type: "string"
value: "0"
access: "read-write"
filter: '0~32'
display: "Service Number"
comment: ""
- name: "dataCodingScheme"
type: "enum"
value: "0"
access: "read-write"
filter: '{"0":"smpp7def7","1":"smpp8dcs4def7","2":"smpp8dcs0def7","16":"smpp7def8","17":"smpp8dcs4def8","18":"smpp8dcs0def8"}'
display: "Data Coding Scheme"
comment: ""
- name: "platformNum"
type: "enum"
value: "0"
access: "read-write"
filter: '{"0":"plat0","1":"plat1","2":"ignore"}'
display: "Platform Num"
comment: ""
- name: "timeToLive"
type: "int"
value: "604800"
access: "read-write"
filter: '0-2147483647'
display: "Time To Live"
comment: ""
- name: "manipulationFlag"
type: "bool"
value: "1"
access: "read-write"
filter: '{"0":"false","1":"true"}'
display: "Manipulation Flag"
comment: ""
- name: "ton"
type: "enum"
value: "0"
access: "read-write"
filter: '{"0":"unknown","1":"international","2":"national","3":"networkSpecific","4":"subscriberNumber","5":"alphanumeric","6":"abbreviated"}'
display: "Type of Number"
comment: ""
- name: "npi"
type: "enum"
value: "0"
access: "read-write"
filter: '{"0":"unknown","1":"isdn","3":"data","4":"telex","6":"landMobile","8":"national","9":"private","10":"ermes","14":"internet","18":"wapClientID"}'
display: "Number Plan Indicator"
comment: ""
- name: "roleType"
type: "enum"
value: "0"
access: "read-write"
filter: '{"0":"server","1":"client"}'
display: "Role Type"
comment: ""
- name: "index"
type: "int"
value: "0"
access: "read-only"
filter: "0~63"
display: "Index"
comment: "0~63"
- name: "linkAlias"
type: "string"
value: "0"
access: "read-write"
filter: "0~32"
display: "Link Alias"
comment: ""
- name: "sessionType"
type: "enum"
value: "0"
access: "read-write"
filter: '{"0":"bindTX","1":"bindRX","2":"bindTRX"}'
display: "Session Type"
comment: ""
- name: "serviceNumber"
type: "string"
value: "0"
access: "read-write"
filter: "0~32"
display: "Service Number"
comment: ""
- name: "dataCodingScheme"
type: "enum"
value: "0"
access: "read-write"
filter: '{"0":"smpp7def7","1":"smpp8dcs4def7","2":"smpp8dcs0def7","16":"smpp7def8","17":"smpp8dcs4def8","18":"smpp8dcs0def8"}'
display: "Data Coding Scheme"
comment: ""
- name: "platformNum"
type: "enum"
value: "0"
access: "read-write"
filter: '{"0":"plat0","1":"plat1","2":"ignore"}'
display: "Platform Num"
comment: ""
- name: "timeToLive"
type: "int"
value: "604800"
access: "read-write"
filter: "0-2147483647"
display: "Time To Live"
comment: ""
- name: "manipulationFlag"
type: "bool"
value: "1"
access: "read-write"
filter: '{"0":"false","1":"true"}'
display: "Manipulation Flag"
comment: ""
- name: "ton"
type: "enum"
value: "0"
access: "read-write"
filter: '{"0":"unknown","1":"international","2":"national","3":"networkSpecific","4":"subscriberNumber","5":"alphanumeric","6":"abbreviated"}'
display: "Type of Number"
comment: ""
- name: "npi"
type: "enum"
value: "0"
access: "read-write"
filter: '{"0":"unknown","1":"isdn","3":"data","4":"telex","6":"landMobile","8":"national","9":"private","10":"ermes","14":"internet","18":"wapClientID"}'
display: "Number Plan Indicator"
comment: ""
- name: "roleType"
type: "enum"
value: "0"
access: "read-write"
filter: '{"0":"server","1":"client"}'
display: "Role Type"
comment: ""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

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

View File

@@ -18,7 +18,6 @@ import (
"be.ems/lib/log"
"github.com/go-resty/resty/v2"
"github.com/shirou/gopsutil/process"
// cron "github.com/go-co-op/gocron"
"github.com/jasonlvhit/gocron"
@@ -1456,82 +1455,82 @@ func init() {
func (t *TaskFunc) TaskWriteSystemLog(uri, params, body string) {
processes, err := process.Processes()
if err != nil {
log.Error("Failed to get processes:", err)
return
}
// processes, err := process.Processes()
// if err != nil {
// log.Error("Failed to get processes:", err)
// return
// }
for _, proc := range processes {
name, err := proc.Name()
if err != nil {
log.Error("Failed to get process name:", err)
continue
}
for i, procInfo := range procInfos {
if name == procInfo.Name {
pid := proc.Pid
timestamp, _ := proc.CreateTime()
userName, _ := proc.Username()
startTime := time.Unix((timestamp / 1000), 0).Format(time.DateTime)
// for _, proc := range processes {
// name, err := proc.Name()
// if err != nil {
// log.Error("Failed to get process name:", err)
// continue
// }
// for i, procInfo := range procInfos {
// if name == procInfo.Name {
// pid := proc.Pid
// timestamp, _ := proc.CreateTime()
// userName, _ := proc.Username()
// startTime := time.Unix((timestamp / 1000), 0).Format(time.DateTime)
newProcInfo := &ProcInfo{
Name: procInfo.Name,
Pid: pid,
StartTime: startTime,
}
log.Trace("newProcInfo:", *newProcInfo)
log.Trace("procInfo:", procInfo)
if *newProcInfo != procInfo {
procInfos[i] = *newProcInfo
var operation string
if newProcInfo.Pid != 0 {
operation = "start"
} else {
operation = "stop"
}
sysLogs := &[]dborm.SystemLog{}
sysLog := &dborm.SystemLog{
UserName: userName,
ProcessName: newProcInfo.Name,
ProcessID: newProcInfo.Pid,
Operation: operation,
StartTime: newProcInfo.StartTime,
LogTime: time.Now().Format(time.DateTime),
}
var response *resty.Response
requestURI := fmt.Sprintf("%s?%s", uri, params)
requestURL := fmt.Sprintf("%s%s", yamlConfig.OMC.HostUri, requestURI)
// newProcInfo := &ProcInfo{
// Name: procInfo.Name,
// Pid: pid,
// StartTime: startTime,
// }
// log.Trace("newProcInfo:", *newProcInfo)
// log.Trace("procInfo:", procInfo)
// if *newProcInfo != procInfo {
// procInfos[i] = *newProcInfo
// var operation string
// if newProcInfo.Pid != 0 {
// operation = "start"
// } else {
// operation = "stop"
// }
// sysLogs := &[]dborm.SystemLog{}
// sysLog := &dborm.SystemLog{
// UserName: userName,
// ProcessName: newProcInfo.Name,
// ProcessID: newProcInfo.Pid,
// Operation: operation,
// StartTime: newProcInfo.StartTime,
// LogTime: time.Now().Format(time.DateTime),
// }
// var response *resty.Response
// requestURI := fmt.Sprintf("%s?%s", uri, params)
// requestURL := fmt.Sprintf("%s%s", yamlConfig.OMC.HostUri, requestURI)
*sysLogs = append(*sysLogs, *sysLog)
data := make(map[string]interface{})
data["system_log"] = *sysLogs
body, _ := json.Marshal(data)
log.Trace("data:", data)
log.Debug("requestURL: POST ", requestURL)
client := resty.New()
response, err = client.R().
EnableTrace().
SetHeaders(map[string]string{"User-Agent": GetDefaultUserAgent()}).
SetHeaders(map[string]string{"Content-Type": "application/json;charset=UTF-8"}).
SetBody(body).
Post(requestURL)
if err != nil {
log.Error("Failed to post:", err)
}
log.Debug("StatusCode: ", response.StatusCode())
switch response.StatusCode() {
case http.StatusOK, http.StatusCreated, http.StatusNoContent, http.StatusAccepted:
log.Debug("response body:", string(response.Body()))
body := new(map[string]interface{})
_ = json.Unmarshal(response.Body(), &body)
default:
log.Debug("response body:", string(response.Body()))
body := new(map[string]interface{})
_ = json.Unmarshal(response.Body(), &body)
}
}
}
}
}
// *sysLogs = append(*sysLogs, *sysLog)
// data := make(map[string]interface{})
// data["system_log"] = *sysLogs
// body, _ := json.Marshal(data)
// log.Trace("data:", data)
// log.Debug("requestURL: POST ", requestURL)
// client := resty.New()
// response, err = client.R().
// EnableTrace().
// SetHeaders(map[string]string{"User-Agent": GetDefaultUserAgent()}).
// SetHeaders(map[string]string{"Content-Type": "application/json;charset=UTF-8"}).
// SetBody(body).
// Post(requestURL)
// if err != nil {
// log.Error("Failed to post:", err)
// }
// log.Debug("StatusCode: ", response.StatusCode())
// switch response.StatusCode() {
// case http.StatusOK, http.StatusCreated, http.StatusNoContent, http.StatusAccepted:
// log.Debug("response body:", string(response.Body()))
// body := new(map[string]interface{})
// _ = json.Unmarshal(response.Body(), &body)
// default:
// log.Debug("response body:", string(response.Body()))
// body := new(map[string]interface{})
// _ = json.Unmarshal(response.Body(), &body)
// }
// }
// }
// }
// }
}

View File

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

View File

@@ -254,5 +254,38 @@ INSERT INTO `kpi_title` VALUES (216, 'PCF', 'PCF.10', '{\"cn\": \"应用会话
INSERT INTO `kpi_title` VALUES (217, 'PCF', 'PCF.11', '{\"cn\": \"应用会话授权尝试次数\", \"en\": \"DIAM.AuthRequest\"}', '应用会话授权尝试次数', 'DIAM.AuthRequest');
INSERT INTO `kpi_title` VALUES (218, 'PCF', 'PCF.12', '{\"cn\": \"PCRF策略控制更新成功次数\", \"en\": \"DIAM.CcUpdateSuccess\"}', 'PCRF策略控制更新成功次数', 'DIAM.CcUpdateSuccess');
INSERT INTO `kpi_title` VALUES (219, 'PCF', 'PCF.13', '{\"cn\": \"PCRF策略控制更新请求次数\", \"en\": \"DIAM.CcUpdateRequest\"}', 'PCRF策略控制更新请求次数', 'DIAM.CcUpdateRequest');
-- 更新SMSC 20240815
INSERT INTO `kpi_title` VALUES (220, 'SMSC', 'SMSC.A.01', '{\"cn\": \"MS到SMSC短信请求次数\", \"en\": \"SMSC.MStoSMSCAtt\"}', 'MS到SMSC短信请求次数', 'SMSC.MStoSMSCAtt');
INSERT INTO `kpi_title` VALUES (221, 'SMSC', 'SMSC.A.02', '{\"cn\": \"MS到SMSC短信成功次数\", \"en\": \"SMSC.MStoSMSCSucc\"}', 'MS到SMSC短信成功次数', 'SMSC.MStoSMSCSucc');
INSERT INTO `kpi_title` VALUES (222, 'SMSC', 'SMSC.A.03', '{\"cn\": \"MS到SMSC短信失败次数\", \"en\": \"SMSC.MStoSMSCFail\"}', 'MS到SMSC短信失败次数', 'SMSC.MStoSMSCFail');
INSERT INTO `kpi_title` VALUES (223, 'SMSC', 'SMSC.A.04', '{\"cn\": \"MS到SMSC短信字节数\", \"en\": \"SMSC.MStoSMSCBytes\"}', 'MS到SMSC短信字节数', 'SMSC.MStoSMSCBytes');
INSERT INTO `kpi_title` VALUES (224, 'SMSC', 'SMSC.A.05', '{\"cn\": \"VSS到SMSC短信请求次数\", \"en\": \"SMSC.VSStoSMSCAtt\"}', 'VSS到SMSC短信请求次数', 'SMSC.VSStoSMSCAtt');
INSERT INTO `kpi_title` VALUES (225, 'SMSC', 'SMSC.A.06', '{\"cn\": \"VSS到SMSC短信成功次数\", \"en\": \"SMSC.VSStoSMSCSucc\"}', 'VSS到SMSC短信成功次数', 'SMSC.VSStoSMSCSucc');
INSERT INTO `kpi_title` VALUES (226, 'SMSC', 'SMSC.A.07', '{\"cn\": \"VSS到SMSC短信失败次数\", \"en\": \"SMSC.VSStoSMSCFail\"}', 'VSS到SMSC短信失败次数', 'SMSC.VSStoSMSCFail');
INSERT INTO `kpi_title` VALUES (227, 'SMSC', 'SMSC.A.08', '{\"cn\": \"VSS到SMSC短信字节数\", \"en\": \"SMSC.VSStoSMSCBytes\"}', 'VSS到SMSC短信字节数', 'SMSC.VSStoSMSCBytes');
INSERT INTO `kpi_title` VALUES (228, 'SMSC', 'SMSC.A.09', '{\"cn\": \"PPS到SMSC短信请求次数\", \"en\": \"SMSC.PPStoSMSCAtt\"}', 'PPS到SMSC短信请求次数', 'SMSC.PPStoSMSCAtt');
INSERT INTO `kpi_title` VALUES (229, 'SMSC', 'SMSC.A.10', '{\"cn\": \"PPS到SMSC短信成功次数\", \"en\": \"SMSC.PPStoSMSCSucc\"}', 'PPS到SMSC短信成功次数', 'SMSC.PPStoSMSCSucc');
INSERT INTO `kpi_title` VALUES (230, 'SMSC', 'SMSC.A.11', '{\"cn\": \"PPS到SMSC短信失败次数\", \"en\": \"SMSC.PPStoSMSCFail\"}', 'PPS到SMSC短信失败次数', 'SMSC.PPStoSMSCFail');
INSERT INTO `kpi_title` VALUES (231, 'SMSC', 'SMSC.A.12', '{\"cn\": \"PPS到SMSC短信字节数\", \"en\": \"SMSC.PPStoSMSCBytes\"}', 'PPS到SMSC短信字节数', 'SMSC.PPStoSMSCBytes');
INSERT INTO `kpi_title` VALUES (232, 'SMSC', 'SMSC.A.13', '{\"cn\": \"SMPP到SMSC短信请求次数\", \"en\": \"SMSC.SMPPtoSMSCAtt\"}', 'SMPP到SMSC短信请求次数', 'SMSC.SMPPtoSMSCAtt');
INSERT INTO `kpi_title` VALUES (233, 'SMSC', 'SMSC.A.14', '{\"cn\": \"SMPP到SMSC短信成功次数\", \"en\": \"SMSC.SMPPtoSMSCSucc\"}', 'SMPP到SMSC短信成功次数', 'SMSC.SMPPtoSMSCSucc');
INSERT INTO `kpi_title` VALUES (234, 'SMSC', 'SMSC.A.15', '{\"cn\": \"SMPP到SMSC短信失败次数\", \"en\": \"SMSC.SMPPtoSMSCFail\"}', 'SMPP到SMSC短信失败次数', 'SMSC.SMPPtoSMSCFail');
INSERT INTO `kpi_title` VALUES (235, 'SMSC', 'SMSC.A.16', '{\"cn\": \"SMPP到SMSC短信字节数\", \"en\": \"SMSC.SMPPtoSMSCBytes\"}', 'SMPP到SMSC短信字节数', 'SMSC.SMPPtoSMSCBytes');
INSERT INTO `kpi_title` VALUES (236, 'SMSC', 'SMSC.A.17', '{\"cn\": \"SMSC到MS短信请求次数\", \"en\": \"SMSC.SMSCtoMSAtt\"}', 'SMSC到MS短信请求次数', 'SMSC.SMSCtoMSAtt');
INSERT INTO `kpi_title` VALUES (237, 'SMSC', 'SMSC.A.18', '{\"cn\": \"SMSC到MS短信成功次数\", \"en\": \"SMSC.SMSCtoMSSucc\"}', 'SMSC到MS短信成功次数', 'SMSC.SMSCtoMSSucc');
INSERT INTO `kpi_title` VALUES (238, 'SMSC', 'SMSC.A.19', '{\"cn\": \"SMSC到MS短信失败次数\", \"en\": \"SMSC.SMSCtoMSFail\"}', 'SMSC到MS短信失败次数', 'SMSC.SMSCtoMSFail');
INSERT INTO `kpi_title` VALUES (239, 'SMSC', 'SMSC.A.20', '{\"cn\": \"SMSC到MS短信字节数\", \"en\": \"SMSC.SMSCtoMSBytes\"}', 'SMSC到MS短信字节数', 'SMSC.SMSCtoMSBytes');
INSERT INTO `kpi_title` VALUES (240, 'SMSC', 'SMSC.A.21', '{\"cn\": \"SMSC到VSS短信请求次数\", \"en\": \"SMSC.SMSCtoVSSAtt\"}', 'SMSC到VSS短信请求次数', 'SMSC.SMSCtoVSSAtt');
INSERT INTO `kpi_title` VALUES (241, 'SMSC', 'SMSC.A.22', '{\"cn\": \"SMSC到VSS短信成功次数\", \"en\": \"SMSC.SMSCtoVSSucc\"}', 'SMSC到VSS短信成功次数', 'SMSC.SMSCtoVSSucc');
INSERT INTO `kpi_title` VALUES (242, 'SMSC', 'SMSC.A.23', '{\"cn\": \"SMSC到VSS短信失败次数\", \"en\": \"SMSC.SMSCtoVSSFail\"}', 'SMSC到VSS短信失败次数', 'SMSC.SMSCtoVSSFail');
INSERT INTO `kpi_title` VALUES (243, 'SMSC', 'SMSC.A.24', '{\"cn\": \"SMSC到VSS短信字节数\", \"en\": \"SMSC.SMSCtoVSSBytes\"}', 'SMSC到VSS短信字节数', 'SMSC.SMSCtoVSSBytes');
INSERT INTO `kpi_title` VALUES (244, 'SMSC', 'SMSC.A.25', '{\"cn\": \"SMSC到PPS短信请求次数\", \"en\": \"SMSC.SMSCtoPPSAtt\"}', 'SMSC到PPS短信请求次数', 'SMSC.SMSCtoPPSAtt');
INSERT INTO `kpi_title` VALUES (245, 'SMSC', 'SMSC.A.26', '{\"cn\": \"SMSC到PPS短信成功次数\", \"en\": \"SMSC.SMSCtoPPSucc\"}', 'SMSC到PPS短信成功次数', 'SMSC.SMSCtoPPSucc');
INSERT INTO `kpi_title` VALUES (246, 'SMSC', 'SMSC.A.27', '{\"cn\": \"SMSC到PPS短信失败次数\", \"en\": \"SMSC.SMSCtoPPSFail\"}', 'SMSC到PPS短信失败次数', 'SMSC.SMSCtoPPSFail');
INSERT INTO `kpi_title` VALUES (247, 'SMSC', 'SMSC.A.28', '{\"cn\": \"SMSC到PPS短信字节数\", \"en\": \"SMSC.SMSCtoPPSBytes\"}', 'SMSC到PPS短信字节数', 'SMSC.SMSCtoPPSBytes');
INSERT INTO `kpi_title` VALUES (248, 'SMSC', 'SMSC.A.29', '{\"cn\": \"SMSC到SMPP短信请求次数\", \"en\": \"SMSC.SMSCtoSMPPAtt\"}', 'SMSC到SMPP短信请求次数', 'SMSC.SMSCtoSMPPAtt');
INSERT INTO `kpi_title` VALUES (249, 'SMSC', 'SMSC.A.30', '{\"cn\": \"SMSC到SMPP短信成功次数\", \"en\": \"SMSC.SMSCtoSMPPucc\"}', 'SMSC到SMPP短信成功次数', 'SMSC.SMSCtoSMPPucc');
INSERT INTO `kpi_title` VALUES (250, 'SMSC', 'SMSC.A.31', '{\"cn\": \"SMSC到SMPP短信失败次数\", \"en\": \"SMSC.SMSCtoSMPPFail\"}', 'SMSC到SMPP短信失败次数', 'SMSC.SMSCtoSMPPFail');
INSERT INTO `kpi_title` VALUES (251, 'SMSC', 'SMSC.A.32', '{\"cn\": \"SMSC到SMPP短信字节数\", \"en\": \"SMSC.SMSCtoSMPPBytes\"}', 'SMSC到SMPP短信字节数', 'SMSC.SMSCtoSMPPBytes');
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -29,10 +29,13 @@ INSERT INTO `ne_config` VALUES (3, 'AMF', 'guami', 'GUAMI List', 'array', '[{\"a
INSERT INTO `ne_config` VALUES (4, 'AMF', 'tai', 'TAI List', 'array', '[{\"access\":\"read-only\",\"comment\":\"0~15\",\"display\":\"Index\",\"filter\":\"0~15\",\"name\":\"index\",\"type\":\"int\",\"value\":\"0\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"PLMN ID\",\"filter\":\"^[0-9]{5,6}$\",\"name\":\"plmnId\",\"type\":\"regex\",\"value\":\"00101\"},{\"access\":\"read-write\",\"comment\":\"0~16777215\",\"display\":\"TAC\",\"filter\":\"0~8\",\"name\":\"tac\",\"type\":\"string\",\"value\":\"1\"}]', 7, '', 1721705807738);
INSERT INTO `ne_config` VALUES (5, 'AMF', 'slice', 'Slice List', 'array', '[{\"access\":\"read-only\",\"comment\":\"0~15\",\"display\":\"Index\",\"filter\":\"0~15\",\"name\":\"index\",\"type\":\"int\",\"value\":\"0\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"PLMN ID\",\"filter\":\"^[0-9]{5,6}$\",\"name\":\"plmnId\",\"type\":\"regex\",\"value\":\"00101\"},{\"access\":\"read-write\",\"comment\":\"0~127\",\"display\":\"SST\",\"filter\":\"0~127\",\"name\":\"sst\",\"type\":\"int\",\"value\":\"1\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"SD\",\"filter\":\"^[A-Fa-f0-9]{6}\",\"name\":\"sd\",\"type\":\"regex\",\"value\":\"000001\"}]', 9, '', 1721705807763);
INSERT INTO `ne_config` VALUES (6, 'AUSF', 'system', 'System', 'list', '[{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Service IP\",\"filter\":\"\",\"name\":\"serviceIP\",\"type\":\"ipv4\",\"value\":\"172.16.5.130\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Service Port\",\"filter\":\"0~65535\",\"name\":\"servicePort\",\"type\":\"int\",\"value\":\"8080\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Scheme\",\"filter\":\"{\\\"0\\\":\\\"HTTP\\\", \\\"1\\\":\\\"HTTPS\\\"}\",\"name\":\"scheme\",\"type\":\"enum\",\"value\":\"http\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"NRF URI\",\"filter\":\"\",\"name\":\"nrfUri\",\"type\":\"string\",\"value\":\"http://172.16.5.180:8080\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"UDM URI\",\"filter\":\"\",\"name\":\"udmUri\",\"type\":\"string\",\"value\":\"http://172.16.5.140:8080\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Group ID\",\"filter\":\"\",\"name\":\"groupId\",\"type\":\"string\",\"value\":\"0\"}]', 1, '', 1719831209173);
INSERT INTO `ne_config` VALUES (7, 'IMS', 'system', 'System', 'list', '[{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Label\",\"filter\":\"\",\"name\":\"label\",\"type\":\"string\",\"value\":\"ims-core\"},{\"access\":\"read-only\",\"comment\":\"\",\"display\":\"HPLMN MCC\",\"filter\":\"\",\"name\":\"hplmnMCC\",\"type\":\"string\",\"value\":\"001\"},{\"access\":\"read-only\",\"comment\":\"\",\"display\":\"HPLMN MNC\",\"filter\":\"\",\"name\":\"hplmnMNC\",\"type\":\"string\",\"value\":\"01\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Local Network IPv4\",\"filter\":\"\",\"name\":\"LocalNetworkIPv4\",\"type\":\"ipv4\",\"value\":\"172.16.5.110\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Public Network IPv4\",\"filter\":\"\",\"name\":\"serviceIP\",\"type\":\"ipv4\",\"value\":\"172.16.5.110\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Public Network IPv6\",\"filter\":\"\",\"name\":\"serviceIPv6\",\"type\":\"ipv6\",\"value\":\"\"},{\"access\":\"read-only\",\"comment\":\"\",\"display\":\"Domain Name 1\",\"filter\":\"\",\"name\":\"domainName1\",\"type\":\"string\",\"value\":\"ims.mnc001.mcc001.3gppnetwork.org\"},{\"access\":\"read-only\",\"comment\":\"\",\"display\":\"Domain Name 2\",\"filter\":\"\",\"name\":\"domainName2\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"read-only\",\"comment\":\"\",\"display\":\"Domain Name 3\",\"filter\":\"\",\"name\":\"domainName3\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"read-only\",\"comment\":\"\",\"display\":\"Domain Name 4\",\"filter\":\"\",\"name\":\"domainName4\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"MultiIPStack Indicator\",\"filter\":\"{\\\"0\\\":\\\"false\\\", \\\"1\\\":\\\"true\\\"}\",\"name\":\"multiIPStackInd\",\"type\":\"bool\",\"value\":\"false\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Register Timer\",\"filter\":\"120~1000000\",\"name\":\"registerTimer\",\"type\":\"int\",\"value\":\"7200\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Max Call Duration\",\"filter\":\"1800~1000000\",\"name\":\"maxCallDuration\",\"type\":\"int\",\"value\":\"43200\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Internal SMS Indicator\",\"filter\":\"{\\\"0\\\":\\\"false\\\", \\\"1\\\":\\\"true\\\"}\",\"name\":\"internalSMSInd\",\"type\":\"bool\",\"value\":\"false\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Internal CDR Indicator\",\"filter\":\"{\\\"0\\\":\\\"false\\\", \\\"1\\\":\\\"true\\\"}\",\"name\":\"internalCDRInd\",\"type\":\"bool\",\"value\":\"false\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Internal KPI Indicator\",\"filter\":\"{\\\"0\\\":\\\"false\\\", \\\"1\\\":\\\"true\\\"}\",\"name\":\"internalKPIInd\",\"type\":\"bool\",\"value\":\"false\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"PCF IP Address\",\"filter\":\"\",\"name\":\"pcfIP\",\"type\":\"ipv4\",\"value\":\"172.16.5.160\"}]', 1, '', 1719831209377);
INSERT INTO `ne_config` VALUES (8, 'IMS', 'plmn', 'PLMN List', 'array', '[{\"access\":\"read-only\",\"comment\":\"0~15\",\"display\":\"Index\",\"filter\":\"0~15\",\"name\":\"index\",\"type\":\"int\",\"value\":\"0\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"MCC\",\"filter\":\"^[0-9]{3}$\",\"name\":\"mcc\",\"type\":\"regex\",\"value\":\"001\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"MNC\",\"filter\":\"^[0-9]{2,3}$\",\"name\":\"mnc\",\"type\":\"regex\",\"value\":\"01\"},{\"access\":\"read-only\",\"comment\":\"\",\"display\":\"Domain\",\"filter\":\"0~128\",\"name\":\"domain\",\"type\":\"string\",\"value\":\"ims.mnc001.mcc001.3gppnetwork.org\"}]', 3, '', 1719831209469);
INSERT INTO `ne_config` VALUES (9, 'IMS', 'mmtel_dialplan', 'MMTEL Dialplan', 'array', '[{\"access\":\"read-only\",\"comment\":\"0~15\",\"display\":\"Index\",\"filter\":\"0~15\",\"name\":\"index\",\"type\":\"int\",\"value\":\"0\"},{\"access\":\"read-only\",\"comment\":\"\",\"display\":\"NaName\",\"filter\":\"0~128\",\"name\":\"naName\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Title\",\"filter\":\"0~128\",\"name\":\"title\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Method\",\"filter\":\"0-2\",\"name\":\"method\",\"type\":\"string\",\"value\":\"0\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Prefix\",\"filter\":\"0~128\",\"name\":\"prefix\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Start\",\"filter\":\"0~128\",\"name\":\"start\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"End\",\"filter\":\"0~128\",\"name\":\"end\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Attrib\",\"filter\":\"0~128\",\"name\":\"attrib\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Number Len\",\"filter\":\"0~128\",\"name\":\"numberLen\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Rsc\",\"filter\":\"0~128\",\"name\":\"rsc\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"E164 Nai\",\"filter\":\"0~128\",\"name\":\"e164Nai\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"E164 Delete\",\"filter\":\"0~128\",\"name\":\"e164Delete\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"E164 Insert\",\"filter\":\"0~128\",\"name\":\"e164Insert\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"read-write\",\"comment\":\"Enable: Close/Open\",\"display\":\"Admin State\",\"filter\":\"{\\\"0\\\":\\\"Close\\\", \\\"1\\\":\\\"Open\\\"}\",\"name\":\"adminState\",\"type\":\"enum\",\"value\":\"0\"}]', 5, '', 1719831209568);
INSERT INTO `ne_config` VALUES (10, 'IMS', 'ds_system', 'DS System', 'list', '[{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Dispatch System Indicator\",\"filter\":\"{\\\"0\\\":\\\"false\\\", \\\"1\\\":\\\"true\\\"}\",\"name\":\"dispatchSystemInd\",\"type\":\"bool\",\"value\":\"false\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Transcode Indicator\",\"filter\":\"{\\\"0\\\":\\\"false\\\", \\\"1\\\":\\\"true\\\"}\",\"name\":\"transcodeInd\",\"type\":\"bool\",\"value\":\"false\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Dispatch System IPv4\",\"filter\":\"\",\"name\":\"dispatchSystemIP\",\"type\":\"ipv4\",\"value\":\"1.0.0.1\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Dispatch System Port\",\"filter\":\"\",\"name\":\"dispatchSystemPort\",\"type\":\"int\",\"value\":\"5060\"}]', 7, '', 1719831209655);
-- 更新 IMS 配置 20240815
INSERT INTO `ne_config` VALUES (7, 'IMS', 'system', 'System', 'list', '[{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Label\",\"filter\":\"\",\"name\":\"label\",\"type\":\"string\",\"value\":\"ims-core\"},{\"access\":\"read-only\",\"comment\":\"\",\"display\":\"HPLMN MCC\",\"filter\":\"\",\"name\":\"hplmnMCC\",\"type\":\"string\",\"value\":\"001\"},{\"access\":\"read-only\",\"comment\":\"\",\"display\":\"HPLMN MNC\",\"filter\":\"\",\"name\":\"hplmnMNC\",\"type\":\"string\",\"value\":\"01\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Local Network IPv4\",\"filter\":\"\",\"name\":\"LocalNetworkIPv4\",\"type\":\"ipv4\",\"value\":\"172.16.5.110\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Public Network IPv4\",\"filter\":\"\",\"name\":\"serviceIP\",\"type\":\"ipv4\",\"value\":\"172.16.5.110\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Public Network IPv6\",\"filter\":\"\",\"name\":\"serviceIPv6\",\"type\":\"ipv6\",\"value\":\"\"},{\"access\":\"read-only\",\"comment\":\"\",\"display\":\"Domain Name 1\",\"filter\":\"\",\"name\":\"domainName1\",\"type\":\"string\",\"value\":\"ims.mnc001.mcc001.3gppnetwork.org\"},{\"access\":\"read-only\",\"comment\":\"\",\"display\":\"Domain Name 2\",\"filter\":\"\",\"name\":\"domainName2\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"read-only\",\"comment\":\"\",\"display\":\"Domain Name 3\",\"filter\":\"\",\"name\":\"domainName3\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"read-only\",\"comment\":\"\",\"display\":\"Domain Name 4\",\"filter\":\"\",\"name\":\"domainName4\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"MultiIPStack Indicator\",\"filter\":\"{\\\"0\\\":\\\"false\\\", \\\"1\\\":\\\"true\\\"}\",\"name\":\"multiIPStackInd\",\"type\":\"bool\",\"value\":\"false\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Register Timer\",\"filter\":\"120~1000000\",\"name\":\"registerTimer\",\"type\":\"int\",\"value\":\"7200\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Max Call Duration\",\"filter\":\"1800~1000000\",\"name\":\"maxCallDuration\",\"type\":\"int\",\"value\":\"43200\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Internal SMS Indicator\",\"filter\":\"{\\\"0\\\":\\\"false\\\", \\\"1\\\":\\\"true\\\"}\",\"name\":\"internalSMSInd\",\"type\":\"bool\",\"value\":\"false\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Internal CDR Indicator\",\"filter\":\"{\\\"0\\\":\\\"false\\\", \\\"1\\\":\\\"true\\\"}\",\"name\":\"internalCDRInd\",\"type\":\"bool\",\"value\":\"false\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Internal KPI Indicator\",\"filter\":\"{\\\"0\\\":\\\"false\\\", \\\"1\\\":\\\"true\\\"}\",\"name\":\"internalKPIInd\",\"type\":\"bool\",\"value\":\"false\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"PCF IP Address\",\"filter\":\"\",\"name\":\"pcfIP\",\"type\":\"ipv4\",\"value\":\"172.16.5.160\"}]', 1, '', 1723716862092);
INSERT INTO `ne_config` VALUES (8, 'IMS', 'plmn', 'PLMN List', 'array', '[{\"access\":\"read-only\",\"comment\":\"0~3\",\"display\":\"Index\",\"filter\":\"0~3\",\"name\":\"index\",\"type\":\"int\",\"value\":\"0\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"MCC\",\"filter\":\"^[0-9]{3}$\",\"name\":\"mcc\",\"type\":\"regex\",\"value\":\"001\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"MNC\",\"filter\":\"^[0-9]{2,3}$\",\"name\":\"mnc\",\"type\":\"regex\",\"value\":\"01\"},{\"access\":\"read-only\",\"comment\":\"\",\"display\":\"Domain\",\"filter\":\"0~128\",\"name\":\"domain\",\"type\":\"string\",\"value\":\"ims.mnc001.mcc001.3gppnetwork.org\"}]', 3, '', 1723716862107);
INSERT INTO `ne_config` VALUES (9, 'IMS', 'mmtel_dialplan', 'MMTEL Dialplan', 'array', '[{\"access\":\"read-only\",\"comment\":\"0~15\",\"display\":\"Index\",\"filter\":\"0~15\",\"name\":\"index\",\"type\":\"int\",\"value\":\"0\"},{\"access\":\"read-only\",\"comment\":\"\",\"display\":\"NaName\",\"filter\":\"0~128\",\"name\":\"naName\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Title\",\"filter\":\"0~128\",\"name\":\"title\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Method\",\"filter\":\"0-2\",\"name\":\"method\",\"type\":\"string\",\"value\":\"0\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Prefix\",\"filter\":\"0~128\",\"name\":\"prefix\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Start\",\"filter\":\"0~128\",\"name\":\"start\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"End\",\"filter\":\"0~128\",\"name\":\"end\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Attrib\",\"filter\":\"0~128\",\"name\":\"attrib\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Number Len\",\"filter\":\"0~128\",\"name\":\"numberLen\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Rsc\",\"filter\":\"0~128\",\"name\":\"rsc\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"E164 Nai\",\"filter\":\"0~128\",\"name\":\"e164Nai\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"E164 Delete\",\"filter\":\"0~128\",\"name\":\"e164Delete\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"E164 Insert\",\"filter\":\"0~128\",\"name\":\"e164Insert\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"read-write\",\"comment\":\"Enable: Close/Open\",\"display\":\"Admin State\",\"filter\":\"{\\\"0\\\":\\\"Close\\\", \\\"1\\\":\\\"Open\\\"}\",\"name\":\"adminState\",\"type\":\"enum\",\"value\":\"0\"}]', 5, '', 1723716862110);
INSERT INTO `ne_config` VALUES (10, 'IMS', 'ds_system', 'DS System', 'list', '[{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Dispatch System Indicator\",\"filter\":\"{\\\"0\\\":\\\"false\\\", \\\"1\\\":\\\"true\\\"}\",\"name\":\"dispatchSystemInd\",\"type\":\"bool\",\"value\":\"false\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Transcode Indicator\",\"filter\":\"{\\\"0\\\":\\\"false\\\", \\\"1\\\":\\\"true\\\"}\",\"name\":\"transcodeInd\",\"type\":\"bool\",\"value\":\"false\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Dispatch System IPv4\",\"filter\":\"\",\"name\":\"dispatchSystemIP\",\"type\":\"ipv4\",\"value\":\"1.0.0.1\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Dispatch System Port\",\"filter\":\"\",\"name\":\"dispatchSystemPort\",\"type\":\"int\",\"value\":\"5060\"}]', 7, '', 1723716862113);
INSERT INTO `ne_config` VALUES (11, 'MME', 'system', 'System Config', 'list', '[{\"access\":\"read-write\",\"comment\":\"true|false\",\"display\":\"CSFB Enabled\",\"filter\":\"{\\\"0\\\":\\\"false\\\",\\\"1\\\":\\\"true\\\"}\",\"name\":\"csfbEnabled\",\"type\":\"bool\",\"value\":\"false\"},{\"access\":\"read-write\",\"comment\":\"true|false\",\"display\":\"VoLTE Enabled\",\"filter\":\"{\\\"0\\\":\\\"false\\\",\\\"1\\\":\\\"true\\\"}\",\"name\":\"volteEnabled\",\"type\":\"bool\",\"value\":\"false\"},{\"access\":\"read-write\",\"comment\":\"0~64\",\"display\":\"S1 MME IP\",\"filter\":\"0~64\",\"name\":\"s1MmeIp\",\"type\":\"string\",\"value\":\"192.168.1.179\"},{\"access\":\"read-only\",\"comment\":\"0~65535\",\"display\":\"S1 MME Port\",\"filter\":\"0~65535\",\"name\":\"s1MmePort\",\"type\":\"int\",\"value\":\"36412\"},{\"access\":\"read-write\",\"comment\":\"0~64\",\"display\":\"S11 MME IP\",\"filter\":\"0~64\",\"name\":\"s11MmeIp\",\"type\":\"string\",\"value\":\"192.168.1.179\"},{\"access\":\"read-write\",\"comment\":\"0~65535\",\"display\":\"S11 MME Port\",\"filter\":\"0~65535\",\"name\":\"s11MmePort\",\"type\":\"int\",\"value\":\"2123\"},{\"access\":\"read-write\",\"comment\":\"0~64\",\"display\":\"S10 MME IP\",\"filter\":\"0~64\",\"name\":\"s10MmeIp\",\"type\":\"string\",\"value\":\"192.168.1.178\"},{\"access\":\"read-write\",\"comment\":\"0~65535\",\"display\":\"S10 MME Port\",\"filter\":\"0~65535\",\"name\":\"s10MmePort\",\"type\":\"int\",\"value\":\"2123\"},{\"access\":\"read-write\",\"comment\":\"0~64\",\"display\":\"SGs MME IP\",\"filter\":\"0~64\",\"name\":\"sgsMmeIp\",\"type\":\"string\",\"value\":\"192.168.1.179\"},{\"access\":\"read-only\",\"comment\":\"0~65535\",\"display\":\"SGs MME Port\",\"filter\":\"0~65535\",\"name\":\"sgsMmePort\",\"type\":\"int\",\"value\":\"29118\"},{\"access\":\"read-write\",\"comment\":\"0~100\",\"display\":\"S6A MME Identity\",\"filter\":\"0~100\",\"name\":\"s6aIdentity\",\"type\":\"string\",\"value\":\"mme.epc.mnc001.mcc001.3gppnetwork.org\"},{\"access\":\"read-write\",\"comment\":\"0~20\",\"display\":\"S6A MME IP\",\"filter\":\"0~20\",\"name\":\"localIp\",\"type\":\"string\",\"value\":\"172.16.5.220\"}]', 1, '', 1719831209702);
INSERT INTO `ne_config` VALUES (12, 'MME', 'gummei', 'Gummei List', 'array', '[{\"access\":\"read\",\"comment\":\"0~15\",\"display\":\"Index\",\"filter\":\"0~15\",\"name\":\"index\",\"type\":\"int\",\"value\":\"0\"},{\"access\":\"read-write\",\"comment\":\"^[0-9]{5,6}$\",\"display\":\"PLMN ID\",\"filter\":\"^[0-9]{5,6}$\",\"name\":\"plmnId\",\"type\":\"regex\",\"value\":\"00101\"},{\"access\":\"read-write\",\"comment\":\"0~65535\",\"display\":\"Group ID\",\"filter\":\"0~65535\",\"name\":\"groupId\",\"type\":\"int\",\"value\":\"4\"},{\"access\":\"read-write\",\"comment\":\"0~255\",\"display\":\"Code\",\"filter\":\"0~255\",\"name\":\"code\",\"type\":\"int\",\"value\":\"1\"}]', 3, '', 1719831209759);
INSERT INTO `ne_config` VALUES (13, 'MME', 'tai', 'TAI List', 'array', '[{\"access\":\"read\",\"comment\":\"0~15\",\"display\":\"Index\",\"filter\":\"0~15\",\"name\":\"index\",\"type\":\"int\",\"value\":\"0\"},{\"access\":\"read-write\",\"comment\":\"^[0-9]{5,6}$\",\"display\":\"PLMN ID\",\"filter\":\"^[0-9]{5,6}$\",\"name\":\"plmnId\",\"type\":\"regex\",\"value\":\"00101\"},{\"access\":\"read-write\",\"comment\":\"0~65535\",\"display\":\"TAC\",\"filter\":\"0~65535\",\"name\":\"tac\",\"type\":\"int\",\"value\":\"1\"}]', 5, '', 1719831209792);

View File

@@ -1,31 +1,19 @@
package file
import (
"fmt"
"net/http"
"path/filepath"
"be.ems/lib/core/ctx"
"be.ems/lib/dborm"
"be.ems/lib/file"
"be.ems/lib/log"
"be.ems/lib/services"
"be.ems/restagent/config"
"github.com/gorilla/mux"
"github.com/shirou/gopsutil/disk"
)
var (
// parameter config management
UriFile = config.DefaultUriPrefix + "/fileManagement/{apiVersion}/{location}/file"
UriFile = config.DefaultUriPrefix + "/fileManagement/{apiVersion}/{location}/file"
CustomUriFile = config.UriPrefix + "/fileManagement/{apiVersion}/{location}/file"
// 获取磁盘列表
UriDiskList = config.DefaultUriPrefix + "/fileManagement/{apiVersion}/files/diskList"
// 获取文件列表
UriListFiles = config.DefaultUriPrefix + "/fileManagement/{apiVersion}/files/listFiles"
)
// func init() {
@@ -151,46 +139,3 @@ func DeleteFile(w http.ResponseWriter, r *http.Request) {
services.ResponseStatusOK204NoContent(w)
return
}
// 磁盘列表
func DiskList(w http.ResponseWriter, r *http.Request) {
disks := make([]map[string]string, 0)
partitions, err := disk.Partitions(false)
if err != nil {
services.ResponseWithJson(w, 200, disks)
}
for _, partition := range partitions {
usage, err := disk.Usage(partition.Mountpoint)
if err != nil {
continue
}
disks = append(disks, map[string]string{
"size": file.FormatFileSize(float64(usage.Total)),
"used": file.FormatFileSize(float64(usage.Used)),
"avail": file.FormatFileSize(float64(usage.Free)),
"pcent": fmt.Sprintf("%.1f%%", usage.UsedPercent),
"target": partition.Device,
})
}
services.ResponseWithJson(w, 200, disks)
}
// 获取文件列表 /files/search
func ListFiles(w http.ResponseWriter, r *http.Request) {
// json 請求參數獲取
var bodyArgs FileOption
err := ctx.ShouldBindJSON(r, &bodyArgs)
if err != nil || dborm.DbClient.XEngine == nil {
services.ResponseErrorWithJson(w, 400, err.Error())
return
}
files, err := GetFileList(bodyArgs)
if err != nil {
services.ResponseErrorWithJson(w, 400, err.Error())
return
}
services.ResponseWithJson(w, 200, files)
}

View File

@@ -1,85 +0,0 @@
package file
import (
"bufio"
"fmt"
"io/fs"
"os"
"os/exec"
"time"
"github.com/spf13/afero"
)
type FileOption struct {
Path string `json:"path"`
Search string `json:"search"`
ContainSub bool `json:"containSub"`
Expand bool `json:"expand"`
Dir bool `json:"dir"`
ShowHidden bool `json:"showHidden"`
Page int `json:"page"`
PageSize int `json:"pageSize"`
}
type FileInfo struct {
Fs afero.Fs `json:"-"`
Path string `json:"path"`
Name string `json:"name"`
Extension string `json:"extension"`
Content string `json:"content"`
Size int64 `json:"size"`
IsDir bool `json:"isDir"`
IsSymlink bool `json:"isSymlink"`
IsHidden bool `json:"isHidden"`
LinkPath string `json:"linkPath"`
Type string `json:"type"`
Mode string `json:"mode"`
MimeType string `json:"mimeType"`
UpdateTime time.Time `json:"updateTime"`
ModTime time.Time `json:"modTime"`
FileMode os.FileMode `json:"-"`
Items []*FileInfo `json:"items"`
ItemTotal int `json:"itemTotal"`
}
func (f *FileInfo) search(search string, count int) (files []FileSearchInfo, total int, err error) {
cmd := exec.Command("find", f.Path, "-name", fmt.Sprintf("*%s*", search))
output, err := cmd.StdoutPipe()
if err != nil {
return
}
if err = cmd.Start(); err != nil {
return
}
defer func() {
_ = cmd.Wait()
_ = cmd.Process.Kill()
}()
scanner := bufio.NewScanner(output)
for scanner.Scan() {
line := scanner.Text()
info, err := os.Stat(line)
if err != nil {
continue
}
total++
if total > count {
continue
}
files = append(files, FileSearchInfo{
Path: line,
FileInfo: info,
})
}
if err = scanner.Err(); err != nil {
return
}
return
}
type FileSearchInfo struct {
Path string `json:"path"`
fs.FileInfo
}

View File

@@ -1,206 +0,0 @@
package file
import (
"errors"
"fmt"
"os"
"path"
"path/filepath"
"strings"
"be.ems/lib/file"
"github.com/spf13/afero"
)
// 获取文件列表
func GetFileList(op FileOption) (FileInfo, error) {
var fileInfo FileInfo
if _, err := os.Stat(op.Path); err != nil && os.IsNotExist(err) {
return fileInfo, nil
}
info, err := NewFileInfo(op)
if err != nil {
return fileInfo, err
}
fileInfo = *info
return fileInfo, nil
}
func NewFileInfo(op FileOption) (*FileInfo, error) {
var appFs = afero.NewOsFs()
info, err := appFs.Stat(op.Path)
if err != nil {
return nil, err
}
fileInfo := &FileInfo{
Fs: appFs,
Path: op.Path,
Name: info.Name(),
IsDir: info.IsDir(),
FileMode: info.Mode(),
ModTime: info.ModTime(),
Size: info.Size(),
IsSymlink: file.IsSymlink(info.Mode()),
Extension: filepath.Ext(info.Name()),
IsHidden: file.IsHidden(op.Path),
Mode: fmt.Sprintf("%04o", info.Mode().Perm()),
MimeType: file.GetMimeType(op.Path),
}
if fileInfo.IsSymlink {
fileInfo.LinkPath = file.GetSymlink(op.Path)
}
if op.Expand {
if fileInfo.IsDir {
if err := listChildren(fileInfo, op.Dir, op.ShowHidden, op.ContainSub, op.Search, op.Page, op.PageSize); err != nil {
return nil, err
}
return fileInfo, nil
} else {
if err := getContent(fileInfo); err != nil {
return nil, err
}
}
}
return fileInfo, nil
}
func listChildren(f *FileInfo, dir, showHidden, containSub bool, search string, page, pageSize int) error {
afs := &afero.Afero{Fs: f.Fs}
var (
files []FileSearchInfo
err error
total int
)
if search != "" && containSub {
files, total, err = f.search(search, page*pageSize)
if err != nil {
return err
}
} else {
dirFiles, err := afs.ReadDir(f.Path)
if err != nil {
return err
}
for _, file := range dirFiles {
files = append(files, FileSearchInfo{
Path: f.Path,
FileInfo: file,
})
}
}
var items []*FileInfo
for _, df := range files {
if dir && !df.IsDir() {
continue
}
name := df.Name()
fPath := path.Join(df.Path, df.Name())
if search != "" {
if containSub {
fPath = df.Path
name = strings.TrimPrefix(strings.TrimPrefix(fPath, f.Path), "/")
} else {
lowerName := strings.ToLower(name)
lowerSearch := strings.ToLower(search)
if !strings.Contains(lowerName, lowerSearch) {
continue
}
}
}
if !showHidden && file.IsHidden(name) {
continue
}
f.ItemTotal++
isSymlink, isInvalidLink := false, false
if file.IsSymlink(df.Mode()) {
isSymlink = true
info, err := f.Fs.Stat(fPath)
if err == nil {
df.FileInfo = info
} else {
isInvalidLink = true
}
}
fileInfo := &FileInfo{
Fs: f.Fs,
Name: name,
Size: df.Size(),
ModTime: df.ModTime(),
FileMode: df.Mode(),
IsDir: df.IsDir(),
IsSymlink: isSymlink,
IsHidden: file.IsHidden(fPath),
Extension: filepath.Ext(name),
Path: fPath,
Mode: fmt.Sprintf("%04o", df.Mode().Perm()),
}
if isSymlink {
fileInfo.LinkPath = file.GetSymlink(fPath)
}
if df.Size() > 0 {
fileInfo.MimeType = file.GetMimeType(fPath)
}
if isInvalidLink {
fileInfo.Type = "invalid_link"
}
items = append(items, fileInfo)
}
if containSub {
f.ItemTotal = total
}
start := (page - 1) * pageSize
end := pageSize + start
var result []*FileInfo
if start < 0 || start > f.ItemTotal || end < 0 || start > end {
result = items
} else {
if end > f.ItemTotal {
result = items[start:]
} else {
result = items[start:end]
}
}
f.Items = result
return nil
}
func getContent(f *FileInfo) error {
if f.Size <= 10*1024*1024 {
afs := &afero.Afero{Fs: f.Fs}
cByte, err := afs.ReadFile(f.Path)
if err != nil {
return nil
}
if len(cByte) > 0 && detectBinary(cByte) {
return errors.New("ErrFileCanNotRead")
}
f.Content = string(cByte)
return nil
} else {
return errors.New("ErrFileCanNotRead")
}
}
func detectBinary(buf []byte) bool {
whiteByte := 0
n := 1024
if len(buf) < 1024 {
n = len(buf)
}
for i := 0; i < n; i++ {
if (buf[i] >= 0x20) || buf[i] == 9 || buf[i] == 10 || buf[i] == 13 {
whiteByte++
} else if buf[i] <= 6 || (buf[i] >= 14 && buf[i] <= 31) {
return true
}
}
return whiteByte < 1
}

View File

@@ -9,7 +9,7 @@ import (
"strings"
"time"
"github.com/shirou/gopsutil/v3/net"
"github.com/shirou/gopsutil/v4/net"
"github.com/go-resty/resty/v2"
"github.com/gorilla/mux"

View File

@@ -12,10 +12,10 @@ import (
"time"
"be.ems/lib/log"
"github.com/shirou/gopsutil/v3/cpu"
"github.com/shirou/gopsutil/v3/disk"
"github.com/shirou/gopsutil/v3/mem"
"github.com/shirou/gopsutil/v3/process"
"github.com/shirou/gopsutil/v4/cpu"
"github.com/shirou/gopsutil/v4/disk"
"github.com/shirou/gopsutil/v4/mem"
"github.com/shirou/gopsutil/v4/process"
)
type SysInfo struct {

View File

@@ -11,10 +11,10 @@ import (
"syscall"
"time"
"github.com/shirou/gopsutil/v3/cpu"
"github.com/shirou/gopsutil/v3/disk"
"github.com/shirou/gopsutil/v3/mem"
"github.com/shirou/gopsutil/v3/process"
"github.com/shirou/gopsutil/v4/cpu"
"github.com/shirou/gopsutil/v4/disk"
"github.com/shirou/gopsutil/v4/mem"
"github.com/shirou/gopsutil/v4/process"
)
type SysInfo struct {

View File

@@ -2,55 +2,10 @@ package state
import (
"be.ems/lib/log"
"github.com/shirou/gopsutil/cpu"
"github.com/shirou/gopsutil/disk"
"github.com/shirou/gopsutil/host"
"github.com/shirou/gopsutil/mem"
"github.com/shirou/gopsutil/v4/cpu"
"github.com/shirou/gopsutil/v4/mem"
)
func getSystemInfo() {
// 获取主机信息
hostInfo, err := host.Info()
if err != nil {
log.Errorf("Failed to get host info: %v", err)
return
}
log.Tracef("Host info: %+v", hostInfo)
// 获取CPU信息
cpuInfo, err := cpu.Info()
if err != nil {
log.Errorf("Failed to get CPU info: %v", err)
return
}
log.Tracef("CPU info: %+v", cpuInfo)
// 获取内存信息
memInfo, err := mem.VirtualMemory()
if err != nil {
log.Errorf("Failed to get memory info: %v", err)
return
}
log.Tracef("Memory info: %+v", memInfo)
// 获取磁盘分区信息
diskPartitions, err := disk.Partitions(true)
if err != nil {
log.Errorf("Failed to get disk partitions: %v", err)
return
}
log.Tracef("Disk partitions: %+v", diskPartitions)
for _, partition := range diskPartitions {
// 获取每个磁盘分区的使用情况
usage, err := disk.Usage(partition.Mountpoint)
if err != nil {
log.Errorf("Failed to get disk usage for %s: %v", partition.Mountpoint, err)
continue
}
log.Tracef("%s usage: %+v", partition.Mountpoint, usage)
}
}
func getCpuNumber() int {
// 获取CPU信息
cpuInfo, err := cpu.Info()

145
go.mod
View File

@@ -1,168 +1,127 @@
module be.ems
go 1.22.3
go 1.21
require (
github.com/chenjiandongx/ginprom v0.0.0-20210617023641-6c809602c38a
github.com/dgrijalva/jwt-go v3.2.0+incompatible
github.com/dlclark/regexp2 v1.11.0
github.com/dlclark/regexp2 v1.11.4
github.com/gin-gonic/gin v1.10.0
github.com/go-admin-team/go-admin-core/sdk v1.5.2
github.com/go-resty/resty/v2 v2.13.1
github.com/go-resty/resty/v2 v2.14.0
github.com/go-sql-driver/mysql v1.8.1
github.com/goccy/go-json v0.10.3
github.com/golang-jwt/jwt/v5 v5.2.1
github.com/gorilla/mux v1.8.1
github.com/gorilla/websocket v1.5.1
github.com/gosnmp/gosnmp v1.37.0
github.com/gorilla/websocket v1.5.3
github.com/gosnmp/gosnmp v1.38.0
github.com/jasonlvhit/gocron v0.0.1
github.com/lestrrat/go-file-rotatelogs v0.0.0-20180223000712-d3151e2a480f
github.com/linxGnu/gosmpp v0.2.1
github.com/linxGnu/gosmpp v0.3.0
github.com/matoous/go-nanoid/v2 v2.1.0
github.com/metaleap/go-xsd v0.0.0-20180330193350-61f7638f502f
github.com/mojocn/base64Captcha v1.3.6
github.com/mssola/user_agent v0.6.0
github.com/mssola/useragent v1.0.0
github.com/patrickmn/go-cache v2.1.0+incompatible
github.com/pkg/sftp v1.13.6
github.com/prometheus-community/pro-bing v0.4.0
github.com/prometheus/client_golang v1.19.1
github.com/redis/go-redis/v9 v9.5.2
github.com/reiver/go-telnet v0.0.0-20180421082511-9ff0b2ab096e
github.com/prometheus-community/pro-bing v0.4.1
github.com/redis/go-redis/v9 v9.6.1
github.com/robfig/cron/v3 v3.0.1
github.com/shirou/gopsutil v3.21.11+incompatible
github.com/shirou/gopsutil/v3 v3.24.5
github.com/spf13/afero v1.11.0
github.com/shirou/gopsutil/v4 v4.24.7
github.com/spf13/pflag v1.0.5
github.com/spf13/viper v1.19.0
github.com/xuri/excelize/v2 v2.8.1
github.com/xuri/xgen v0.0.0-20230702070049-db840e1a4605
github.com/ziutek/telnet v0.0.0-20180329124119-c3b780dc415b
golang.org/x/crypto v0.23.0
golang.org/x/net v0.25.0
golang.org/x/term v0.20.0
golang.org/x/text v0.15.0
github.com/xuri/xgen v0.0.0-20240722131518-d0691b701898
golang.org/x/crypto v0.26.0
golang.org/x/net v0.28.0
golang.org/x/term v0.23.0
golang.org/x/text v0.17.0
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
gopkg.in/yaml.v3 v3.0.1
gorm.io/driver/mysql v1.5.6
gorm.io/gorm v1.25.10
gorm.io/driver/mysql v1.5.7
gorm.io/gorm v1.25.11
xorm.io/xorm v1.3.9
)
require (
filippo.io/edwards25519 v1.1.0 // indirect
github.com/AlecAivazis/survey/v2 v2.3.6 // indirect
github.com/Masterminds/goutils v1.1.1 // indirect
github.com/Masterminds/semver/v3 v3.2.0 // indirect
github.com/Masterminds/sprig/v3 v3.2.3 // indirect
github.com/andeya/ameda v1.5.3 // indirect
github.com/andeya/goutil v1.0.1 // indirect
github.com/andygrunwald/go-jira v1.16.0 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/bsm/redislock v0.9.4 // indirect
github.com/bytedance/go-tagexpr/v2 v2.9.11 // indirect
github.com/bytedance/sonic v1.11.6 // indirect
github.com/bytedance/sonic/loader v0.1.1 // indirect
github.com/casbin/casbin/v2 v2.80.0 // indirect
github.com/casbin/govaluate v1.1.0 // indirect
github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/chanxuehong/rand v0.0.0-20211009035549-2f07823e8e99 // indirect
github.com/chanxuehong/wechat v0.0.0-20230222024006-36f0325263cd // indirect
github.com/bytedance/sonic v1.12.1 // indirect
github.com/bytedance/sonic/loader v0.2.0 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/chenjiandongx/ginprom v0.0.0-20210617023641-6c809602c38a
github.com/cloudwego/base64x v0.1.4 // indirect
github.com/cloudwego/iasm v0.2.0 // indirect
github.com/coreos/go-semver v0.3.1 // indirect
github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
github.com/fastly/go-utils v0.0.0-20180712184237-d95a45783239 // indirect
github.com/fatih/color v1.15.0 // indirect
github.com/fatih/structs v1.1.0 // indirect
github.com/fsnotify/fsnotify v1.7.0 // indirect
github.com/gabriel-vasile/mimetype v1.4.3 // indirect
github.com/gabriel-vasile/mimetype v1.4.5 // indirect
github.com/gin-contrib/sse v0.1.0 // indirect
github.com/git-chglog/git-chglog v0.15.4 // indirect
github.com/go-admin-team/go-admin-core v1.5.2 // indirect
github.com/go-admin-team/redisqueue/v2 v2.0.1-0.20231102124201-508101cc789a // indirect
github.com/go-forks/fsnotify v1.4.7 // indirect
github.com/go-ole/go-ole v1.2.6 // indirect
github.com/go-ole/go-ole v1.3.0 // indirect
github.com/go-playground/locales v0.14.1 // indirect
github.com/go-playground/universal-translator v0.18.1 // indirect
github.com/go-playground/validator/v10 v10.20.0 // indirect
github.com/golang-jwt/jwt/v4 v4.5.0 // indirect
github.com/go-playground/validator/v10 v10.22.0 // indirect
github.com/goccy/go-json v0.10.3
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/golang/snappy v0.0.4 // indirect
github.com/google/go-querystring v1.1.0 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
github.com/huandu/xstrings v1.3.3 // indirect
github.com/imdario/mergo v0.3.13 // indirect
github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 // indirect
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.5 // indirect
github.com/jonboulle/clockwork v0.4.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect
github.com/klauspost/cpuid/v2 v2.2.7 // indirect
github.com/klauspost/compress v1.17.9 // indirect
github.com/klauspost/cpuid/v2 v2.2.8 // indirect
github.com/kr/fs v0.1.0 // indirect
github.com/kyokomi/emoji/v2 v2.2.11 // indirect
github.com/leodido/go-urn v1.4.0 // indirect
github.com/lestrrat/go-envload v0.0.0-20180220120943-6ed08b54a570 // indirect
github.com/lestrrat/go-strftime v0.0.0-20180220042222-ba3bf9c1d042 // indirect
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
github.com/lufia/plan9stats v0.0.0-20240513124658-fba389f38bae // indirect
github.com/magiconair/properties v1.8.7 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mattn/goveralls v0.0.12 // indirect
github.com/metaleap/go-util v0.0.0-20180330192724-a09253046f73 // indirect
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b // indirect
github.com/mitchellh/copystructure v1.0.0 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/mitchellh/reflectwalk v1.0.0 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect
github.com/nsqio/go-nsq v1.1.0 // indirect
github.com/nyaruka/phonenumbers v1.0.55 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/onsi/ginkgo v1.16.5 // indirect
github.com/onsi/gomega v1.21.1 // indirect
github.com/orcaman/concurrent-map/v2 v2.0.1 // indirect
github.com/pelletier/go-toml/v2 v2.2.2 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
github.com/prometheus/client_model v0.5.0 // indirect
github.com/prometheus/common v0.48.0 // indirect
github.com/prometheus/procfs v0.12.0 // indirect
github.com/reiver/go-oi v1.0.0 // indirect
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect
github.com/prometheus/client_golang v1.20.0
github.com/prometheus/client_model v0.6.1 // indirect
github.com/prometheus/common v0.55.0 // indirect
github.com/prometheus/procfs v0.15.1 // indirect
github.com/richardlehane/mscfb v1.0.4 // indirect
github.com/richardlehane/msoleps v1.0.3 // indirect
github.com/russross/blackfriday/v2 v2.1.0 // indirect
github.com/sagikazarmark/locafero v0.4.0 // indirect
github.com/sagikazarmark/locafero v0.6.0 // indirect
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
github.com/shoenig/go-m1cpu v0.1.6 // indirect
github.com/shopspring/decimal v1.3.1 // indirect
github.com/sourcegraph/conc v0.3.0 // indirect
github.com/spf13/cast v1.6.0 // indirect
github.com/spf13/afero v1.11.0 // indirect
github.com/spf13/cast v1.7.0 // indirect
github.com/subosito/gotenv v1.6.0 // indirect
github.com/syndtr/goleveldb v1.0.0 // indirect
github.com/tebeka/strftime v0.1.5 // indirect
github.com/tklauser/go-sysconf v0.3.12 // indirect
github.com/tklauser/numcpus v0.6.1 // indirect
github.com/trivago/tgo v1.0.7 // indirect
github.com/tsuyoshiwada/go-gitcmd v0.0.0-20180205145712-5f1f5f9475df // indirect
github.com/tklauser/go-sysconf v0.3.14 // indirect
github.com/tklauser/numcpus v0.8.0 // indirect
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
github.com/ugorji/go/codec v1.2.12 // indirect
github.com/urfave/cli/v2 v2.24.3 // indirect
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect
github.com/xuri/efp v0.0.0-20231025114914-d1ff6096ae53 // indirect
github.com/xuri/nfp v0.0.0-20230919160717-d98342af3f05 // indirect
github.com/xuri/efp v0.0.0-20240408161823-9ad904a10d6d // indirect
github.com/xuri/nfp v0.0.0-20240318013403-ab9948c2c4a7 // indirect
github.com/yusufpapurcu/wmi v1.2.4 // indirect
go.uber.org/multierr v1.11.0 // indirect
golang.org/x/arch v0.8.0 // indirect
golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect
golang.org/x/image v0.14.0 // indirect
golang.org/x/mod v0.12.0 // indirect
golang.org/x/sync v0.6.0 // indirect
golang.org/x/sys v0.20.0 // indirect
golang.org/x/tools v0.13.0 // indirect
google.golang.org/protobuf v1.34.1 // indirect
golang.org/x/arch v0.9.0 // indirect
golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa // indirect
golang.org/x/image v0.19.0 // indirect
golang.org/x/sync v0.8.0 // indirect
golang.org/x/sys v0.24.0 // indirect
golang.org/x/tools/cmd/guru v0.1.1-deprecated // indirect
google.golang.org/protobuf v1.34.2 // indirect
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
xorm.io/builder v0.3.11-0.20220531020008-1bd24a7dc978 // indirect
xorm.io/builder v0.3.13 // indirect
)

384
go.sum
View File

@@ -2,166 +2,104 @@ filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a h1:lSA0F4e9A2NcQSqGqTOXqu2aRi/XEQxDCBwM8yJtE6s=
gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:EXuID2Zs0pAQhH8yz+DNjUbjppKQzKFAn28TMYPB6IU=
github.com/AlecAivazis/survey/v2 v2.3.6 h1:NvTuVHISgTHEHeBFqt6BHOe4Ny/NwGZr7w+F8S9ziyw=
github.com/AlecAivazis/survey/v2 v2.3.6/go.mod h1:4AuI9b7RjAR+G7v9+C4YSlX/YL3K3cWNXgWXOhllqvI=
github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI=
github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
github.com/Masterminds/semver/v3 v3.2.0 h1:3MEsd0SM6jqZojhjLWWeBY+Kcjy9i6MQAeY7YgDP83g=
github.com/Masterminds/semver/v3 v3.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ=
github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj9n6YA=
github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM=
github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2 h1:+vx7roKuyA63nhn5WAunQHLTznkw5W8b1Xc0dNjp83s=
github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2/go.mod h1:HBCaDeC1lPdgDeDbhX8XFpy1jqjK0IBG8W5K+xYqA0w=
github.com/andeya/ameda v1.5.3 h1:SvqnhQPZwwabS8HQTRGfJwWPl2w9ZIPInHAw9aE1Wlk=
github.com/andeya/ameda v1.5.3/go.mod h1:FQDHRe1I995v6GG+8aJ7UIUToEmbdTJn/U26NCPIgXQ=
github.com/andeya/goutil v1.0.1 h1:eiYwVyAnnK0dXU5FJsNjExkJW4exUGn/xefPt3k4eXg=
github.com/andeya/goutil v1.0.1/go.mod h1:jEG5/QnnhG7yGxwFUX6Q+JGMif7sjdHmmNVjn7nhJDo=
github.com/andygrunwald/go-jira v1.16.0 h1:PU7C7Fkk5L96JvPc6vDVIrd99vdPnYudHu4ju2c2ikQ=
github.com/andygrunwald/go-jira v1.16.0/go.mod h1:UQH4IBVxIYWbgagc0LF/k9FRs9xjIiQ8hIcC6HfLwFU=
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs=
github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c=
github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA=
github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0=
github.com/bsm/redislock v0.9.4 h1:X/Wse1DPpiQgHbVYRE9zv6m070UcKoOGekgvpNhiSvw=
github.com/bsm/redislock v0.9.4/go.mod h1:Epf7AJLiSFwLCiZcfi6pWFO/8eAYrYpQXFxEDPoDeAk=
github.com/bytedance/go-tagexpr/v2 v2.9.11 h1:jJgmoDKPKacGl0llPYbYL/+/2N+Ng0vV0ipbnVssXHY=
github.com/bytedance/go-tagexpr/v2 v2.9.11/go.mod h1:UAyKh4ZRLBPGsyTRFZoPqTni1TlojMdOJXQnEIPCX84=
github.com/bytedance/sonic v1.11.6 h1:oUp34TzMlL+OY1OUWxHqsdkgC/Zfc85zGqw9siXjrc0=
github.com/bytedance/sonic v1.11.6/go.mod h1:LysEHSvpvDySVdC2f87zGWf6CIKJcAvqab1ZaiQtds4=
github.com/bytedance/sonic/loader v0.1.1 h1:c+e5Pt1k/cy5wMveRDyk2X4B9hF4g7an8N3zCYjJFNM=
github.com/bytedance/sonic v1.12.1 h1:jWl5Qz1fy7X1ioY74WqO0KjAMtAGQs4sYnjiEBiyX24=
github.com/bytedance/sonic v1.12.1/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKzMzT9r/rk=
github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
github.com/casbin/casbin/v2 v2.80.0 h1:khGQBLnC+4XuAoGH/KW1JvyY0/nfFG8AhgzDrQKCH/g=
github.com/casbin/casbin/v2 v2.80.0/go.mod h1:jX8uoN4veP85O/n2674r2qtfSXI6myvxW85f6TH50fw=
github.com/casbin/govaluate v1.1.0 h1:6xdCWIpE9CwHdZhlVQW+froUrCsjb6/ZYNcXODfLT+E=
github.com/casbin/govaluate v1.1.0/go.mod h1:G/UnbIjZk/0uMNaLwZZmFQrR72tYRZWQkO70si/iR7A=
github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/chanxuehong/rand v0.0.0-20211009035549-2f07823e8e99 h1:K62Lb6bsgLOB++z/VAvRvtiEBdNCuMfmQGTGGWMdPpM=
github.com/chanxuehong/rand v0.0.0-20211009035549-2f07823e8e99/go.mod h1:9+sJ9zvvkXC5sPjPEZM3Jpb9n2Q2VtcrGZly0UHYF5I=
github.com/chanxuehong/util v0.0.0-20200304121633-ca8141845b13/go.mod h1:XEYt99iTxMqkv+gW85JX/DdUINHUe43Sbe5AtqSaDAQ=
github.com/chanxuehong/wechat v0.0.0-20230222024006-36f0325263cd h1:v3JNsFZmplLO/Cmiyr/rGvR7lW1ld9lB+d5h4yR0MTI=
github.com/chanxuehong/wechat v0.0.0-20230222024006-36f0325263cd/go.mod h1:mysjrtCs9MmN8hqDf4/mc4eQ26Rt9s1p5oO+fhJlLB4=
github.com/bytedance/sonic/loader v0.2.0 h1:zNprn+lsIP06C/IqCHs3gPQIvnvpKbbxyXQP1iU4kWM=
github.com/bytedance/sonic/loader v0.2.0/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/chenjiandongx/ginprom v0.0.0-20210617023641-6c809602c38a h1:yTfhjWYoPomJkHVArtNHpo36FuOa6Kc2ZjTLvyyQ5Lg=
github.com/chenjiandongx/ginprom v0.0.0-20210617023641-6c809602c38a/go.mod h1:lINNCb1ZH3c0uL/9ApaQ8muR4QILsi0STj8Ojt8ZmwU=
github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y=
github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w=
github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg=
github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY=
github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4=
github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec=
github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/creack/pty v1.1.17 h1:QeVUsEDNrLBW4tMgZHvxy18sKtr6VI492kBhUfhDJNI=
github.com/creack/pty v1.1.17/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM=
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI=
github.com/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
github.com/dlclark/regexp2 v1.11.4 h1:rPYF9/LECdNymJufQKmri9gV604RvvABwgOA8un7yAo=
github.com/dlclark/regexp2 v1.11.4/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/fastly/go-utils v0.0.0-20180712184237-d95a45783239 h1:Ghm4eQYC0nEPnSJdVkTrXpu9KtoVCSo1hg7mtI7G9KU=
github.com/fastly/go-utils v0.0.0-20180712184237-d95a45783239/go.mod h1:Gdwt2ce0yfBxPvZrHkprdPPTTS3N5rwmLE8T22KBXlw=
github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs=
github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw=
github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo=
github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M=
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0=
github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk=
github.com/gabriel-vasile/mimetype v1.4.5 h1:J7wGKdGu33ocBOhGy0z653k/lFKLFDPJMG8Gql0kxn4=
github.com/gabriel-vasile/mimetype v1.4.5/go.mod h1:ibHel+/kbxn9x2407k1izTA1S81ku1z/DlgOW2QE0M4=
github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
github.com/gin-gonic/gin v1.10.0 h1:nTuyha1TYqgedzytsKYqna+DfLos46nTv2ygFy86HFU=
github.com/gin-gonic/gin v1.10.0/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y=
github.com/git-chglog/git-chglog v0.15.4 h1:BwPDj7AghQTfpXO+UxG4mZM5MUTe9wfDuenF3jpyNf0=
github.com/git-chglog/git-chglog v0.15.4/go.mod h1:BmWdTpqBVzPjKNrBTZGcQCrQV9zq6gFKurhWNnJbYDA=
github.com/go-admin-team/go-admin-core v1.5.2 h1:aT5jutQpjQ0m+/JH+VenBLElwv7icoqEFqbMS+PbPyI=
github.com/go-admin-team/go-admin-core v1.5.2/go.mod h1:Rndwzpg7o1fMjNHuT6By0rVr6R5pnfTyddDumpu0/14=
github.com/go-admin-team/go-admin-core/sdk v1.5.2 h1:3+QmBne3y3H/DNk8V5vSGbGeZG6W8x+Zw2NNYTevg/E=
github.com/go-admin-team/go-admin-core/sdk v1.5.2/go.mod h1:jXdKROWUiNlpZ7KHu6DC2dW6Zb99LSzBw4gN6Gn1l3M=
github.com/go-admin-team/redisqueue/v2 v2.0.1-0.20231102124201-508101cc789a h1:Esco41hlHjyFdJTiSdB3tNUZrInInsPrG5Pf6eNziMk=
github.com/go-admin-team/redisqueue/v2 v2.0.1-0.20231102124201-508101cc789a/go.mod h1:9c1VaSgp3KI6jnzjvlCORtVMpkG3YtxSzjkNhudfyOU=
github.com/go-forks/fsnotify v1.4.7 h1:lyiU2Wqd4fNGCQDn9dZ4UxSiSFgeU1rM6yIfahk8haY=
github.com/go-forks/fsnotify v1.4.7/go.mod h1:AU8mot+GznW5+B4jRJHxKg/2EeO+jMORGRkKSxs0biw=
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
github.com/go-playground/validator/v10 v10.20.0 h1:K9ISHbSaI0lyB2eWMPJo+kOS/FBExVwjEviJTixqxL8=
github.com/go-playground/validator/v10 v10.20.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM=
github.com/go-playground/validator/v10 v10.22.0 h1:k6HsTZ0sTnROkhS//R0O+55JgM8C4Bx7ia+JlgcnOao=
github.com/go-playground/validator/v10 v10.22.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM=
github.com/go-redis/redis v6.15.5+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA=
github.com/go-resty/resty/v2 v2.13.1 h1:x+LHXBI2nMB1vqndymf26quycC4aggYJ7DECYbiz03g=
github.com/go-resty/resty/v2 v2.13.1/go.mod h1:GznXlLxkq6Nh4sU59rPmUw3VtgpO3aS96ORAI6Q7d+0=
github.com/go-resty/resty/v2 v2.14.0 h1:/rhkzsAqGQkozwfKS5aFAbb6TyKd3zyFRWcdRXLPCAU=
github.com/go-resty/resty/v2 v2.14.0/go.mod h1:IW6mekUOsElt9C7oWr0XRt9BNSD6D5rr9mhk6NjmNHg=
github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y=
github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg=
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
github.com/goccy/go-json v0.10.3 h1:KZ5WoDbxAIgm2HNbYckL0se1fHD6rz5j4ywS6ebzDqA=
github.com/goccy/go-json v0.10.3/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg=
github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk=
github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g=
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k=
github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc=
github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=
github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/gopherjs/gopherjs v1.17.2 h1:fQnZVsXk8uxXIStYb0N4bGk7jeyTalG/wsZjQ25dO0g=
github.com/gopherjs/gopherjs v1.17.2/go.mod h1:pRRIvn/QzFLrKfvEz3qUuEhtE/zLCWfreZ6J5gM2i+k=
github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY=
github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY=
github.com/gosnmp/gosnmp v1.37.0 h1:/Tf8D3b9wrnNuf/SfbvO+44mPrjVphBhRtcGg22V07Y=
github.com/gosnmp/gosnmp v1.37.0/go.mod h1:GDH9vNqpsD7f2HvZhKs5dlqSEcAS6s6Qp099oZRCR+M=
github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=
github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/gosnmp/gosnmp v1.38.0 h1:I5ZOMR8kb0DXAFg/88ACurnuwGwYkXWq3eLpJPHMEYc=
github.com/gosnmp/gosnmp v1.38.0/go.mod h1:FE+PEZvKrFz9afP9ii1W3cprXuVZ17ypCcyyfYuu5LY=
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
github.com/hinshun/vt10x v0.0.0-20220119200601-820417d04eec h1:qv2VnGeEQHchGaZ/u7lxST/RaJw+cv273q79D81Xbog=
github.com/hinshun/vt10x v0.0.0-20220119200601-820417d04eec/go.mod h1:Q48J4R4DvxnHolD5P8pOtXigYlRuPLGl6moFx3ulM68=
github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/huandu/xstrings v1.3.3 h1:/Gcsuc1x8JVbJ9/rlye4xZnVAbEkGauT8lbebqcQws4=
github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk=
github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg=
github.com/jasonlvhit/gocron v0.0.1 h1:qTt5qF3b3srDjeOIR4Le1LfeyvoYzJlYpqvG7tJX5YU=
github.com/jasonlvhit/gocron v0.0.1/go.mod h1:k9a3TV8VcU73XZxfVHCHWMWF9SOqgoku0/QlY2yvlA4=
github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 h1:IPJ3dvxmJ4uczJe5YQdrYB16oTJlGSC/OyZDqUk9xX4=
@@ -174,13 +112,13 @@ github.com/jonboulle/clockwork v0.4.0 h1:p4Cf1aMWXnXAUh8lVfewRBx1zaTSYKrKMF2g3ST
github.com/jonboulle/clockwork v0.4.0/go.mod h1:xgRqUGwRcjKCO1vbZUEtSLrqKoPSsUpK7fnezOII0kc=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs=
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA=
github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM=
github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
github.com/klauspost/cpuid/v2 v2.2.8 h1:+StwCXwm9PdpiEkPyzBXIy+M9KUb4ODm0Zarf1kS5BM=
github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M=
github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8=
github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
@@ -188,8 +126,8 @@ github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/kyokomi/emoji/v2 v2.2.11 h1:Pf/ZWVTbnAVkHOLJLWjPxM/FmgyPe+d85cv/OLP5Yus=
github.com/kyokomi/emoji/v2 v2.2.11/go.mod h1:JUcn42DTdsXJo1SWanHh4HKDEyPaR5CqkmoirZZP9qE=
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ=
github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI=
github.com/lestrrat/go-envload v0.0.0-20180220120943-6ed08b54a570 h1:0iQektZGS248WXmGIYOwRXSQhD4qn3icjMpuxwO7qlo=
@@ -198,33 +136,22 @@ github.com/lestrrat/go-file-rotatelogs v0.0.0-20180223000712-d3151e2a480f h1:sgU
github.com/lestrrat/go-file-rotatelogs v0.0.0-20180223000712-d3151e2a480f/go.mod h1:UGmTpUd3rjbtfIpwAPrcfmGf/Z1HS95TATB+m57TPB8=
github.com/lestrrat/go-strftime v0.0.0-20180220042222-ba3bf9c1d042 h1:Bvq8AziQ5jFF4BHGAEDSqwPW1NJS3XshxbRCxtjFAZc=
github.com/lestrrat/go-strftime v0.0.0-20180220042222-ba3bf9c1d042/go.mod h1:TPpsiPUEh0zFL1Snz4crhMlBe60PYxRHr5oFF3rRYg0=
github.com/linxGnu/gosmpp v0.2.1 h1:FQUJaK9sx1MhwEhwmjWHhbdpls9lY9m3kZbwf4u2+lM=
github.com/linxGnu/gosmpp v0.2.1/go.mod h1:Usmjxk7DsvJlyJkolNbtJlBy0+Urzfzd6t2kd9SHa8o=
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4=
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=
github.com/linxGnu/gosmpp v0.3.0 h1:LL+eY+zc9Ei/YY0po9A6L6SHf8nPyGvqsLddttr/y/4=
github.com/linxGnu/gosmpp v0.3.0/go.mod h1:Ba6SULQql3IbF2A5Mtj3DqMKoFbx1pEz/8xyiOh8ZOs=
github.com/lufia/plan9stats v0.0.0-20240513124658-fba389f38bae h1:dIZY4ULFcto4tAFlj1FYZl8ztUZ13bdq+PLY+NOfbyI=
github.com/lufia/plan9stats v0.0.0-20240513124658-fba389f38bae/go.mod h1:ilwx/Dta8jXAgpFYFvSWEMwxmbWXyiUHkd5FwyKhb5k=
github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
github.com/matoous/go-nanoid/v2 v2.1.0 h1:P64+dmq21hhWdtvZfEAofnvJULaRR1Yib0+PnU669bE=
github.com/matoous/go-nanoid/v2 v2.1.0/go.mod h1:KlbGNQ+FhrUNIHUxZdL63t7tl4LaPkZNpUULS8H4uVM=
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y=
github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
github.com/mattn/goveralls v0.0.12 h1:PEEeF0k1SsTjOBQ8FOmrOAoCu4ytuMaWCnWe94zxbCg=
github.com/mattn/goveralls v0.0.12/go.mod h1:44ImGEUfmqH8bBtaMrYKsM65LXfNLWmwaxFGjZwgMSQ=
github.com/metaleap/go-util v0.0.0-20180330192724-a09253046f73 h1:4vKVhAdype/dejZjdQZZXVTKLz8mD0oakKz128L+IFQ=
github.com/metaleap/go-util v0.0.0-20180330192724-a09253046f73/go.mod h1:l71/5fppWP5A6nqhcxz6wQAYok6pr/vM2+KHIy50/LY=
github.com/metaleap/go-xsd v0.0.0-20180330193350-61f7638f502f h1:eeJGcYszuvOpmuJxeq57LaOO8mJurfjpOHJJMfQSD0s=
github.com/metaleap/go-xsd v0.0.0-20180330193350-61f7638f502f/go.mod h1:WK3zEKtwVd/v+NM3lh1ZE6MdDfHsdOFFOD5Ezi4Hutg=
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b h1:j7+1HpAFS1zy5+Q4qx1fWh90gTKwiN4QCGoY9TWyyO4=
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ=
github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/mitchellh/reflectwalk v1.0.0 h1:9D+8oIskB4VJBN5SFlmc27fSlIBZaov1Wpk/IfikLNY=
@@ -238,19 +165,29 @@ github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
github.com/mojocn/base64Captcha v1.3.6 h1:gZEKu1nsKpttuIAQgWHO+4Mhhls8cAKyiV2Ew03H+Tw=
github.com/mojocn/base64Captcha v1.3.6/go.mod h1:i5CtHvm+oMbj1UzEPXaA8IH/xHFZ3DGY3Wh3dBpZ28E=
github.com/mssola/user_agent v0.6.0 h1:uwPR4rtWlCHRFyyP9u2KOV0u8iQXmS7Z7feTrstQwk4=
github.com/mssola/user_agent v0.6.0/go.mod h1:TTPno8LPY3wAIEKRpAtkdMT0f8SE24pLRGPahjCH4uw=
github.com/nsqio/go-nsq v1.1.0 h1:PQg+xxiUjA7V+TLdXw7nVrJ5Jbl3sN86EhGCQj4+FYE=
github.com/nsqio/go-nsq v1.1.0/go.mod h1:vKq36oyeVXgsS5Q8YEO7WghqidAVXQlcFxzQbQTuDEY=
github.com/nyaruka/phonenumbers v1.0.55 h1:bj0nTO88Y68KeUQ/n3Lo2KgK7lM1hF7L9NFuwcCl3yg=
github.com/nyaruka/phonenumbers v1.0.55/go.mod h1:sDaTZ/KPX5f8qyV9qN+hIm+4ZBARJrupC6LuhshJq1U=
github.com/mssola/useragent v1.0.0 h1:WRlDpXyxHDNfvZaPEut5Biveq86Ze4o4EMffyMxmH5o=
github.com/mssola/useragent v1.0.0/go.mod h1:hz9Cqz4RXusgg1EdI4Al0INR62kP7aPSRNHnpU+b85Y=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.10.1 h1:q/mM8GF/n0shIN8SaAZ0V+jnLPzen6WIVZdiwrRlMlo=
github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/onsi/gomega v1.7.0 h1:XPnZz8VVBHjVsy1vzJmRwIcSwiUO+JFfrv/xGiigmME=
github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
github.com/onsi/gomega v1.21.1 h1:OB/euWYIExnPBohllTicTHmGTrMaqJ67nIu80j0/uEM=
github.com/onsi/gomega v1.21.1/go.mod h1:iYAIXgPSaDHak0LCMA+AWBpIKBr8WZicMxnE8luStNc=
github.com/orcaman/concurrent-map/v2 v2.0.1 h1:jOJ5Pg2w1oeB6PeDurIYf6k9PQ+aTITr/6lP/L/zp6c=
github.com/orcaman/concurrent-map/v2 v2.0.1/go.mod h1:9Eq3TG2oBe5FirmYWQfYO5iH1q0Jv47PLaNK++uCdOM=
github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc=
github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ=
github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
@@ -262,24 +199,20 @@ github.com/pkg/sftp v1.13.6/go.mod h1:tz1ryNURKu77RL+GuCzmoJYxQczL3wLNNpPWagdg4Q
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw=
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
github.com/prometheus-community/pro-bing v0.4.0 h1:YMbv+i08gQz97OZZBwLyvmmQEEzyfyrrjEaAchdy3R4=
github.com/prometheus-community/pro-bing v0.4.0/go.mod h1:b7wRYZtCcPmt4Sz319BykUU241rWLe1VFXyiyWK/dH4=
github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE=
github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho=
github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw=
github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI=
github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE=
github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc=
github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
github.com/redis/go-redis/v9 v9.5.2 h1:L0L3fcSNReTRGyZ6AqAEN0K56wYeYAwapBIhkvh0f3E=
github.com/redis/go-redis/v9 v9.5.2/go.mod h1:hdY0cQFCN4fnSYT6TkisLufl/4W5UIXyv0b/CLO2V2M=
github.com/reiver/go-oi v1.0.0 h1:nvECWD7LF+vOs8leNGV/ww+F2iZKf3EYjYZ527turzM=
github.com/reiver/go-oi v1.0.0/go.mod h1:RrDBct90BAhoDTxB1fenZwfykqeGvhI6LsNfStJoEkI=
github.com/reiver/go-telnet v0.0.0-20180421082511-9ff0b2ab096e h1:quuzZLi72kkJjl+f5AQ93FMcadG19WkS7MO6TXFOSas=
github.com/reiver/go-telnet v0.0.0-20180421082511-9ff0b2ab096e/go.mod h1:+5vNVvEWwEIx86DB9Ke/+a5wBI464eDRo3eF0LcfpWg=
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU=
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
github.com/prometheus-community/pro-bing v0.4.1 h1:aMaJwyifHZO0y+h8+icUz0xbToHbia0wdmzdVZ+Kl3w=
github.com/prometheus-community/pro-bing v0.4.1/go.mod h1:aLsw+zqCaDoa2RLVVSX3+UiCkBBXTMtZC3c7EkfWnAE=
github.com/prometheus/client_golang v1.20.0 h1:jBzTZ7B099Rg24tny+qngoynol8LtVYlA2bqx3vEloI=
github.com/prometheus/client_golang v1.20.0/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE=
github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc=
github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8=
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
github.com/redis/go-redis/v9 v9.6.1 h1:HHDteefn6ZkTtY5fGUE8tj8uy85AHk6zP7CpzIAM0y4=
github.com/redis/go-redis/v9 v9.6.1/go.mod h1:0C0c6ycQsdpVNQpxb1njEQIqkx5UcsM8FJCQLgE9+RA=
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 h1:OdAsTTz6OkFY5QxjkYwrChwuRruF69c169dPK26NUlk=
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
github.com/richardlehane/mscfb v1.0.4 h1:WULscsljNPConisD5hR0+OyZjwK46Pfyr6mPu5ZawpM=
@@ -291,34 +224,22 @@ github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ=
github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4=
github.com/sagikazarmark/locafero v0.6.0 h1:ON7AQg37yzcRPU69mt7gwhFEBwxI6P9T4Qu3N51bwOk=
github.com/sagikazarmark/locafero v0.6.0/go.mod h1:77OmuIc6VTraTXKXIs/uvUxKGUXjE1GbemJYHqdNjX0=
github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE=
github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ=
github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI=
github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
github.com/shirou/gopsutil/v3 v3.24.5 h1:i0t8kL+kQTvpAYToeuiVk3TgDeKOFioZO3Ztz/iZ9pI=
github.com/shirou/gopsutil/v3 v3.24.5/go.mod h1:bsoOS1aStSs9ErQ1WWfxllSeS1K5D+U30r2NfcubMVk=
github.com/shirou/gopsutil/v4 v4.24.7 h1:V9UGTK4gQ8HvcnPKf6Zt3XHyQq/peaekfxpJ2HSocJk=
github.com/shirou/gopsutil/v4 v4.24.7/go.mod h1:0uW/073rP7FYLOkvxolUQM5rMOLTNmRXnFKafpb71rw=
github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM=
github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ=
github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU=
github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k=
github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8=
github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
github.com/smarty/assertions v1.15.0 h1:cR//PqUBUiQRakZWqBiFFQ9wb8emQGDb0HeGdqGByCY=
github.com/smarty/assertions v1.15.0/go.mod h1:yABtdzeQs6l1brC900WlRNwj6ZR55d7B+E8C6HtKdec=
github.com/smartystreets/goconvey v1.8.1 h1:qGjIddxOk4grTu9JPOU31tVfq3cNdBlNa5sSznIX1xY=
github.com/smartystreets/goconvey v1.8.1/go.mod h1:+/u4qLyY6x1jReYOp7GOM2FSt8aP9CzCZL03bI28W60=
github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=
github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0=
github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8=
github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY=
github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0=
github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w=
github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI=
@@ -327,11 +248,9 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.5/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
@@ -346,104 +265,110 @@ github.com/syndtr/goleveldb v1.0.0 h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFd
github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ=
github.com/tebeka/strftime v0.1.5 h1:1NQKN1NiQgkqd/2moD6ySP/5CoZQsKa1d3ZhJ44Jpmg=
github.com/tebeka/strftime v0.1.5/go.mod h1:29/OidkoWHdEKZqzyDLUyC+LmgDgdHo4WAFCDT7D/Ig=
github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU=
github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI=
github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk=
github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY=
github.com/trivago/tgo v1.0.7 h1:uaWH/XIy9aWYWpjm2CU3RpcqZXmX2ysQ9/Go+d9gyrM=
github.com/trivago/tgo v1.0.7/go.mod h1:w4dpD+3tzNIIiIfkWWa85w5/B77tlvdZckQ+6PkFnhc=
github.com/tsuyoshiwada/go-gitcmd v0.0.0-20180205145712-5f1f5f9475df h1:Y2l28Jr3vOEeYtxfVbMtVfOdAwuUqWaP9fvNKiBVeXY=
github.com/tsuyoshiwada/go-gitcmd v0.0.0-20180205145712-5f1f5f9475df/go.mod h1:pnyouUty/nBr/zm3GYwTIt+qFTLWbdjeLjZmJdzJOu8=
github.com/tklauser/go-sysconf v0.3.14 h1:g5vzr9iPFFz24v2KZXs/pvpvh8/V9Fw6vQK5ZZb78yU=
github.com/tklauser/go-sysconf v0.3.14/go.mod h1:1ym4lWMLUOhuBOPGtRcJm7tEGX4SCYNEEEtghGG/8uY=
github.com/tklauser/numcpus v0.8.0 h1:Mx4Wwe/FjZLeQsK/6kt2EOepwwSl7SmJrK5bV/dXYgY=
github.com/tklauser/numcpus v0.8.0/go.mod h1:ZJZlAY+dmR4eut8epnzf0u/VwodKmryxR8txiloSqBE=
github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE=
github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
github.com/urfave/cli/v2 v2.24.3 h1:7Q1w8VN8yE0MJEHP06bv89PjYsN4IHWED2s1v/Zlfm0=
github.com/urfave/cli/v2 v2.24.3/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc=
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU=
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8=
github.com/xuri/efp v0.0.0-20231025114914-d1ff6096ae53 h1:Chd9DkqERQQuHpXjR/HSV1jLZA6uaoiwwH3vSuF3IW0=
github.com/xuri/efp v0.0.0-20231025114914-d1ff6096ae53/go.mod h1:ybY/Jr0T0GTCnYjKqmdwxyxn2BQf2RcQIIvex5QldPI=
github.com/xuri/efp v0.0.0-20240408161823-9ad904a10d6d h1:llb0neMWDQe87IzJLS4Ci7psK/lVsjIS2otl+1WyRyY=
github.com/xuri/efp v0.0.0-20240408161823-9ad904a10d6d/go.mod h1:ybY/Jr0T0GTCnYjKqmdwxyxn2BQf2RcQIIvex5QldPI=
github.com/xuri/excelize/v2 v2.8.1 h1:pZLMEwK8ep+CLIUWpWmvW8IWE/yxqG0I1xcN6cVMGuQ=
github.com/xuri/excelize/v2 v2.8.1/go.mod h1:oli1E4C3Pa5RXg1TBXn4ENCXDV5JUMlBluUhG7c+CEE=
github.com/xuri/nfp v0.0.0-20230919160717-d98342af3f05 h1:qhbILQo1K3mphbwKh1vNm4oGezE1eF9fQWmNiIpSfI4=
github.com/xuri/nfp v0.0.0-20230919160717-d98342af3f05/go.mod h1:WwHg+CVyzlv/TX9xqBFXEZAuxOPxn2k1GNHwG41IIUQ=
github.com/xuri/xgen v0.0.0-20230702070049-db840e1a4605 h1:urU5p/tQOOUd9B0c6O+6aBk7udJI5HcN4VYmX2tMTcI=
github.com/xuri/xgen v0.0.0-20230702070049-db840e1a4605/go.mod h1:tBkmlRf8JH62H5fAW+BPFj0LNZWRmKglWTLFfpXhhbg=
github.com/xuri/nfp v0.0.0-20240318013403-ab9948c2c4a7 h1:hPVCafDV85blFTabnqKgNhDCkJX25eik94Si9cTER4A=
github.com/xuri/nfp v0.0.0-20240318013403-ab9948c2c4a7/go.mod h1:WwHg+CVyzlv/TX9xqBFXEZAuxOPxn2k1GNHwG41IIUQ=
github.com/xuri/xgen v0.0.0-20240722131518-d0691b701898 h1:qqSByV3qojIVp1XbrFgD3nO38w1m6aePzmknorZQmRc=
github.com/xuri/xgen v0.0.0-20240722131518-d0691b701898/go.mod h1:tBkmlRf8JH62H5fAW+BPFj0LNZWRmKglWTLFfpXhhbg=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0=
github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
github.com/ziutek/telnet v0.0.0-20180329124119-c3b780dc415b h1:VfPXB/wCGGt590QhD1bOpv2J/AmC/RJNTg/Q59HKSB0=
github.com/ziutek/telnet v0.0.0-20180329124119-c3b780dc415b/go.mod h1:IZpXDfkJ6tWD3PhBK5YzgQT+xJWh7OsdwiG8hA2MkO4=
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
golang.org/x/arch v0.8.0 h1:3wRIsP3pM4yUptoR96otTUOXI367OS0+c9eeRi9doIc=
golang.org/x/arch v0.8.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys=
golang.org/x/arch v0.9.0 h1:ub9TgUInamJ8mrZIGlBG6/4TqWeMszd4N8lNorbrr6k=
golang.org/x/arch v0.9.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI=
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g=
golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k=
golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M=
golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw=
golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54=
golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa h1:ELnwvuAXPNtPk1TJRuGkI9fDTwym6AYBu0qzT8AcHdI=
golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ=
golang.org/x/image v0.13.0/go.mod h1:6mmbMOeV28HuMTgA6OSRkdXKYw/t5W9Uwn2Yv1r3Yxk=
golang.org/x/image v0.14.0 h1:tNgSxAFe3jC4uYqvZdTr84SZoM1KfwdC9SKIFrLjFn4=
golang.org/x/image v0.14.0/go.mod h1:HUYqC05R2ZcZ3ejNQsIHQDQiwWM4JBqmm6MKANTp4LE=
golang.org/x/image v0.19.0 h1:D9FX4QWkLfkeqaC62SonffIIuYdOk/UE2XKUBgRIBIQ=
golang.org/x/image v0.19.0/go.mod h1:y0zrRqlQRWQ5PXaYCOMLTW2fpsxZ8Qh9I/ohnInJEys=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc=
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0=
golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac=
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE=
golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE=
golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ=
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220330033206-e17cdc41300f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg=
golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210503060354-a79de5458b56/go.mod h1:tfny5GFUkzUvx4ps4ajbZsCe5lw1metzhBm9T3x7oIY=
@@ -451,11 +376,13 @@ golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuX
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY=
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw=
golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4=
golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU=
golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
@@ -464,31 +391,39 @@ golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk=
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc=
golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U=
golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4=
golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ=
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24=
golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ=
golang.org/x/tools/cmd/guru v0.1.1-deprecated h1:WiL3pQGXG71u4N45C0eRkE2IcEMAiQdDZ2H5lGspNjM=
golang.org/x/tools/cmd/guru v0.1.1-deprecated/go.mod h1:yFb7vixnH8+ByFZ63niwlvUUxyTE/6ULZ6AiEHZwlTk=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg=
google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk=
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df h1:n7WqCuqOuCbNr617RXOY0AWRXxgwEyPp2z+p0+hgMuE=
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw=
@@ -499,17 +434,15 @@ gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWD
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gorm.io/driver/mysql v1.5.6 h1:Ld4mkIickM+EliaQZQx3uOJDJHtrd70MxAUqWqlx3Y8=
gorm.io/driver/mysql v1.5.6/go.mod h1:sEtPWMiqiN1N1cMXoXmBbd8C6/l+TESwriotuRRpkDM=
gorm.io/driver/mysql v1.5.7 h1:MndhOPYOfEp2rHKgkZIhJ16eVUIRf2HmzgoPmh7FCWo=
gorm.io/driver/mysql v1.5.7/go.mod h1:sEtPWMiqiN1N1cMXoXmBbd8C6/l+TESwriotuRRpkDM=
gorm.io/gorm v1.25.7/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8=
gorm.io/gorm v1.25.10 h1:dQpO+33KalOA+aFYGlK+EfxcI5MbO7EP2yYygwh9h+s=
gorm.io/gorm v1.25.10/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8=
gorm.io/gorm v1.25.11 h1:/Wfyg1B/je1hnDx3sMkX+gAlxrlZpn6X0BXRlwXlvHg=
gorm.io/gorm v1.25.11/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ=
lukechampine.com/uint128 v1.2.0 h1:mBi/5l91vocEN8otkC5bDLhi2KdCticRiwbdB0O+rjI=
lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk=
modernc.org/cc/v3 v3.40.0 h1:P3g79IUS/93SYhtoeaHW+kRCIrYaxJ27MFPv+7kaTOw=
@@ -531,8 +464,7 @@ modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw
modernc.org/token v1.0.1 h1:A3qvTqOwexpfZZeyI0FeGPDlSWX5pjZu9hF4lU+EKWg=
modernc.org/token v1.0.1/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50=
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
xorm.io/builder v0.3.11-0.20220531020008-1bd24a7dc978 h1:bvLlAPW1ZMTWA32LuZMBEGHAUOcATZjzHcotf3SWweM=
xorm.io/builder v0.3.11-0.20220531020008-1bd24a7dc978/go.mod h1:aUW0S9eb9VCaPohFCH3j7czOx1PMW3i1HrSzbLYGBSE=
xorm.io/builder v0.3.13 h1:a3jmiVVL19psGeXx8GIurTp7p0IIgqeDmwhcR6BAOAo=
xorm.io/builder v0.3.13/go.mod h1:aUW0S9eb9VCaPohFCH3j7czOx1PMW3i1HrSzbLYGBSE=
xorm.io/xorm v1.3.9 h1:TUovzS0ko+IQ1XnNLfs5dqK1cJl1H5uHpWbWqAQ04nU=
xorm.io/xorm v1.3.9/go.mod h1:LsCCffeeYp63ssk0pKumP6l96WZcHix7ChpurcLNuMw=

View File

@@ -1,161 +0,0 @@
package file
import (
"fmt"
"net/http"
"os"
)
// const (
// //经过测试linux下延时需要大于100ms
// TIME_DELAY_AFTER_WRITE = 200
// )
// type Response struct {
// Data []string `json:"data"`
// }
// type MMLRequest struct {
// MML []string `json:"mml"`
// }
// func GetFile(w http.ResponseWriter, r *http.Request) {
// log.Debug("PostMMLToNF processing... ")
// vars := mux.Vars(r)
// neType := vars["elementTypeValue"]
// params := r.URL.Query()
// neId := params["ne_id"]
// log.Debug("neType:", neType, "neId", neId)
// neInfo := new(dborm.NeInfo)
// var err error
// if len(neId) == 0 {
// log.Error("ne_id NOT FOUND")
// services.ResponseBadRequest400WrongParamValue(w)
// return
// }
// neInfo, err = dborm.XormGetNeInfo(neType, neId[0])
// if err != nil {
// log.Error("dborm.XormGetNeInfo is failed:", err)
// services.ResponseInternalServerError500DatabaseOperationFailed(w)
// return
// }
// var buf [8192]byte
// var n int
// var mmlResult []string
// if neInfo != nil {
// hostMML := fmt.Sprintf("%s:%d", neInfo.Ip, config.GetYamlConfig().MML.Port)
// conn, err := net.Dial("tcp", hostMML)
// if err != nil {
// errMsg := fmt.Sprintf("Failed to dial %s: %v", hostMML, err)
// log.Error(errMsg)
// mmlResult = append(mmlResult, errMsg)
// response := Response{mmlResult}
// services.ResponseWithJson(w, http.StatusOK, response)
// return
// }
// 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)
// n, err = conn.Write([]byte(mmlCommand))
// 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-len(neType)-2]))
// mmlResult = append(mmlResult, string(buf[0:n-len(neType)-2]))
// }
// }
// response := Response{mmlResult}
// services.ResponseWithJson(w, http.StatusOK, response)
// }
// 格式文件大小单位
func FormatFileSize(fileSize float64) (size string) {
if fileSize < 1024 {
return fmt.Sprintf("%.2fB", fileSize/float64(1))
} else if fileSize < (1024 * 1024) {
return fmt.Sprintf("%.2fKB", fileSize/float64(1024))
} else if fileSize < (1024 * 1024 * 1024) {
return fmt.Sprintf("%.2fMB", fileSize/float64(1024*1024))
} else if fileSize < (1024 * 1024 * 1024 * 1024) {
return fmt.Sprintf("%.2fGB", fileSize/float64(1024*1024*1024))
} else if fileSize < (1024 * 1024 * 1024 * 1024 * 1024) {
return fmt.Sprintf("%.2fTB", fileSize/float64(1024*1024*1024*1024))
} else {
return fmt.Sprintf("%.2fEB", fileSize/float64(1024*1024*1024*1024*1024))
}
}
func IsSymlink(mode os.FileMode) bool {
return mode&os.ModeSymlink != 0
}
const dotCharacter = 46
func IsHidden(path string) bool {
return path[0] == dotCharacter
}
func GetMimeType(path string) string {
file, err := os.Open(path)
if err != nil {
return ""
}
defer file.Close()
buffer := make([]byte, 512)
_, err = file.Read(buffer)
if err != nil {
return ""
}
mimeType := http.DetectContentType(buffer)
return mimeType
}
func GetSymlink(path string) string {
linkPath, err := os.Readlink(path)
if err != nil {
return ""
}
return linkPath
}

View File

@@ -4,7 +4,6 @@ import (
"crypto/sha256"
"crypto/sha512"
"encoding/hex"
"fmt"
"math/rand"
"net/http"
"strings"
@@ -12,35 +11,9 @@ import (
"be.ems/lib/log"
"github.com/dgrijalva/jwt-go"
"golang.org/x/crypto/bcrypt"
)
// GenToken 生成Token值
func GenToken(mapClaims jwt.MapClaims) (string, error) {
token := jwt.NewWithClaims(jwt.SigningMethodHS256, mapClaims)
var nowDate = time.Now()
var secret = fmt.Sprintf("%v%v", nowDate, "xxxx")
return token.SignedString([]byte(secret))
}
// GenerateToken 生成Token值
func GenerateToken(mapClaims jwt.MapClaims, key string) (string, error) {
token := jwt.NewWithClaims(jwt.SigningMethodHS256, mapClaims)
return token.SignedString([]byte(key))
}
// ParseToken: "解析token"
func ParseToken(token string, secret string) (string, error) {
claim, err := jwt.Parse(token, func(token *jwt.Token) (interface{}, error) {
return []byte(secret), nil
})
if err != nil {
return "", err
}
return claim.Claims.(jwt.MapClaims)["cmd"].(string), nil
}
func RandAccessToken(n int) (ret string) {
allString := "52661fbd-6b84-4fc2-aa1e-17879a5c6c9b"
ret = ""

View File

@@ -292,10 +292,6 @@ func init() {
// UE event AMF上报的UE事件, 无前缀给到Gin处理
//Register("POST", event.UriUEEvent, event.PostUEEventFromAMF, nil)
// 文件资源
Register("GET", file.UriDiskList, file.DiskList, nil)
Register("POST", file.UriListFiles, file.ListFiles, nil)
// 数据库连接情况
Register("GET", dbrest.UriDbConnection, dbrest.DbConnection, nil)
Register("GET", dbrest.CustomUriDbConnection, dbrest.DbConnection, nil)

View File

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

View File

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

View File

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

View File

@@ -97,7 +97,10 @@ func initAppEngine() *gin.Engine {
// 初始全局默认
func initDefeat(app *gin.Engine) {
// 全局中间件
app.Use(errorcatch.ErrorCatch(), middleware.Report(), middleware.Cors(), security.Security())
if config.Env() == "local" {
app.Use(middleware.Report())
}
app.Use(errorcatch.ErrorCatch(), middleware.Cors(), security.Security())
// 静态目录-静态资源
if v := config.Get("staticFile.default"); v != nil {

View File

@@ -1,7 +1,7 @@
# 项目信息
framework:
name: "OMC"
version: "2.2408.2"
version: "2.2408.3"
# 应用服务配置
server:
@@ -172,6 +172,13 @@ redis:
# 多个数据源时可以用这个指定默认的数据源
defaultDataSourceName: "default"
# AES 加密
aes:
# 接口密钥
apiKey: "T9ox2DCzpLfJIPzkH9pKhsOTMOEMJcFv"
# 网元主机密钥
hostKey: "AGT66VfY4SMaiT97a7df0aef1704d5c5"
# 用户配置
user:
# 密码

View File

@@ -8,8 +8,13 @@ const (
// 响应-msg错误失败
MSG_ERROR = "error"
// 响应-msg正常成功
CODE_SUCCESS = 1
// 响应-code正常成功
CODE_SUCCESS = 1
// 响应-msg正常成功
MSG_SUCCESS = "success"
// 响应-code加密数据
CODE_ENCRYPT = 2
// 响应-msg加密数据
MSG_ENCRYPT = "encrypt"
)

View File

@@ -20,14 +20,14 @@ func ErrorCatch() gin.HandlerFunc {
// 返回错误响应给客户端
if config.Env() == "prod" {
c.JSON(500, result.ErrMsg("Internal Server Errors"))
c.JSON(500, result.CodeMsg(500, "Internal Server Errors"))
} else {
// 通过实现 error 接口的 Error() 方法自定义错误类型进行捕获
switch v := err.(type) {
case error:
c.JSON(500, result.ErrMsg(v.Error()))
c.JSON(500, result.CodeMsg(500, v.Error()))
default:
c.JSON(500, result.ErrMsg(fmt.Sprint(err)))
c.JSON(500, result.CodeMsg(500, fmt.Sprint(err)))
}
}

View File

@@ -0,0 +1,151 @@
package middleware
import (
"bytes"
"encoding/json"
"fmt"
"io"
"strings"
"be.ems/src/framework/config"
constResult "be.ems/src/framework/constants/result"
"be.ems/src/framework/logger"
"be.ems/src/framework/utils/crypto"
"be.ems/src/framework/utils/parse"
"github.com/gin-gonic/gin"
)
// CryptoApi 接口加解密
//
// 示例参数middleware.CryptoApi(true, true)
//
// 参数表示:对请求解密,对响应加密
//
// 请将中间件放在最前置,对请求优先处理
func CryptoApi(requestDecrypt, responseEncrypt bool) gin.HandlerFunc {
return func(c *gin.Context) {
// 请求解密时对请求data注入
if requestDecrypt {
method := c.Request.Method
contentType := c.ContentType()
contentDe := ""
// 请求参数解析
if method == "GET" {
contentDe = c.Query("data")
} else if contentType == gin.MIMEJSON {
var body struct {
Data string `json:"data" binding:"required"`
}
if err := c.ShouldBindJSON(&body); err == nil {
contentDe = body.Data
}
}
// 是否存在data字段数据
if contentDe == "" {
c.JSON(400, map[string]any{
"code": constResult.CODE_ERROR,
"msg": "decrypt not found field data",
})
c.Abort() // 停止执行后续的处理函数
return
}
// 解密-原数据加密前含16位长度iv
apiKey := config.Get("aes.apiKey").(string)
dataBodyStr, err := crypto.AESDecryptBase64(contentDe, apiKey)
if err != nil {
logger.Errorf("CryptoApi decrypt err => %v", err)
c.JSON(400, map[string]any{
"code": constResult.CODE_ERROR,
"msg": "decrypted data could not be parsed",
})
c.Abort() // 停止执行后续的处理函数
return
}
// 分配回请求体
if method == "GET" {
var urlParams map[string]any
json.Unmarshal([]byte(dataBodyStr), &urlParams)
rawQuery := []string{}
for k, v := range urlParams {
rawQuery = append(rawQuery, fmt.Sprintf("%s=%v", k, v))
}
c.Request.URL.RawQuery = strings.Join(rawQuery, "&")
} else if contentType == gin.MIMEJSON {
c.Request.Body = io.NopCloser(bytes.NewBuffer([]byte(dataBodyStr)))
}
}
// 响应加密时替换原有的响应体
var rbw *replaceBodyWriter
if responseEncrypt {
rbw = &replaceBodyWriter{
body: &bytes.Buffer{},
ResponseWriter: c.Writer,
}
c.Writer = rbw
}
// 调用下一个处理程序
c.Next()
// 响应加密时对响应data数据进行加密
if responseEncrypt {
// 满足成功并带数据的响应进行加密
if c.Writer.Status() == 200 {
var resBody map[string]any
json.Unmarshal(rbw.body.Bytes(), &resBody)
codeV, codeOk := resBody["code"]
dataV, dataOk := resBody["data"]
if codeOk && dataOk {
if parse.Number(codeV) == constResult.CODE_SUCCESS {
byteBodyData, _ := json.Marshal(dataV)
// 加密-原数据头加入标记16位长度iv终止符
apiKey := config.Get("aes.apiKey").(string)
contentEn, err := crypto.AESEncryptBase64("=:)"+string(byteBodyData), apiKey)
if err != nil {
logger.Errorf("CryptoApi encrypt err => %v", err)
rbw.ReplaceWrite([]byte(fmt.Sprintf(`{"code":"%d","msg":"encrypt err"}`, constResult.CODE_ERROR)))
} else {
// 响应加密
byteBody, _ := json.Marshal(map[string]any{
"code": constResult.CODE_ENCRYPT,
"msg": constResult.MSG_ENCRYPT,
"data": contentEn,
})
rbw.ReplaceWrite(byteBody)
}
}
} else {
rbw.ReplaceWrite(nil)
}
} else {
rbw.ReplaceWrite(nil)
}
}
//
}
}
// replaceBodyWriter 替换默认的响应体
type replaceBodyWriter struct {
gin.ResponseWriter
body *bytes.Buffer
}
// Write 写入响应体
func (r replaceBodyWriter) Write(b []byte) (int, error) {
return r.body.Write(b)
}
// ReplaceWrite 替换响应体
func (r *replaceBodyWriter) ReplaceWrite(b []byte) (int, error) {
if b == nil {
return r.ResponseWriter.Write(r.body.Bytes())
}
r.body = &bytes.Buffer{}
r.body.Write(b)
return r.ResponseWriter.Write(r.body.Bytes())
}

View File

@@ -1,6 +1,7 @@
package middleware
import (
"runtime"
"time"
"be.ems/src/framework/logger"
@@ -18,6 +19,10 @@ func Report() gin.HandlerFunc {
// 计算请求处理时间,并打印日志
duration := time.Since(start)
logger.Infof("%s %s report end=> %v", c.Request.Method, c.Request.RequestURI, duration)
// logger.Infof("%s %s report end=> %v", c.Request.Method, c.Request.RequestURI, duration)
// 获取当前活跃的goroutine数量
num := runtime.NumGoroutine()
// logger.Infof("当前活跃的goroutine数量 %d\n", num)
logger.Infof("\n访问接口 %s %s\n总耗时 %v\n当前活跃的goroutine数量 %d\n", c.Request.Method, c.Request.RequestURI, duration, num)
}
}

View File

@@ -10,12 +10,12 @@ import (
"io"
)
// StringEncryptByAES 字符串AES加密
func StringEncryptByAES(text string) (string, error) {
// AESEncryptBase64 AES加密转Base64字符串
func AESEncryptBase64(text, key string) (string, error) {
if len(text) == 0 {
return "", nil
}
xpass, err := aesEncryptWithSalt([]byte(text))
xpass, err := AESEncrypt([]byte(text), []byte(key))
if err != nil {
return "", err
}
@@ -23,8 +23,8 @@ func StringEncryptByAES(text string) (string, error) {
return pass64, nil
}
// StringDecryptByAES 字符串AES解密
func StringDecryptByAES(text string) (string, error) {
// AESDecryptBase64 AES解密解Base64字符串
func AESDecryptBase64(text, key string) (string, error) {
if len(text) == 0 {
return "", nil
}
@@ -32,21 +32,16 @@ func StringDecryptByAES(text string) (string, error) {
if err != nil {
return "", err
}
tpass, err := aesDecryptWithSalt(bytesPass)
tpass, err := AESDecrypt(bytesPass, []byte(key))
if err != nil {
return "", err
}
return string(tpass), nil
}
// aesKey 字符串AES加解密密钥
const aesKey = "AGT66VfY4SMaiT97a7df0aef1704d5c5"
// const aesKey = "AGT66VfY4SMaiT97"
// aesEncryptWithSalt AES加密
func aesEncryptWithSalt(plaintext []byte) ([]byte, error) {
block, err := aes.NewCipher([]byte(aesKey))
// AESEncrypt AES加密
func AESEncrypt(plaintext, aeskey []byte) ([]byte, error) {
block, err := aes.NewCipher(aeskey)
if err != nil {
return nil, err
}
@@ -68,8 +63,8 @@ func aesEncryptWithSalt(plaintext []byte) ([]byte, error) {
return ciphertext, nil
}
// aesDecryptWithSalt AES解密
func aesDecryptWithSalt(ciphertext []byte) ([]byte, error) {
// AESDecrypt AES解密
func AESDecrypt(ciphertext, aeskey []byte) ([]byte, error) {
blockSize := aes.BlockSize
if len(ciphertext) < blockSize {
return nil, fmt.Errorf("ciphertext too short")
@@ -77,12 +72,14 @@ func aesDecryptWithSalt(ciphertext []byte) ([]byte, error) {
iv := ciphertext[:blockSize]
ciphertext = ciphertext[blockSize:]
block, err := aes.NewCipher([]byte(aeskey))
block, err := aes.NewCipher([]byte(aesKey))
if err != nil {
return nil, err
}
if len(ciphertext) == 0 {
return nil, fmt.Errorf("ciphertext is invalid")
}
if len(ciphertext)%blockSize != 0 {
return nil, fmt.Errorf("ciphertext is not a multiple of the block size")
}

View File

@@ -8,6 +8,7 @@ import (
"runtime"
"time"
"be.ems/src/framework/config"
"be.ems/src/framework/constants/common"
"be.ems/src/framework/logger"
"be.ems/src/framework/utils/cmd"
@@ -68,7 +69,8 @@ func codeFileRead() (map[string]any, error) {
}
content := string(bytes)
// 解密
contentDe, err := crypto.StringDecryptByAES(content)
hostKey := config.Get("aes.hostKey").(string)
contentDe, err := crypto.AESDecryptBase64(content, hostKey)
if err != nil {
logger.Errorf("CodeFileRead decrypt: %v", err.Error())
return mapData, fmt.Errorf("decrypt fail")
@@ -86,7 +88,8 @@ func codeFileRead() (map[string]any, error) {
func codeFileWrite(data map[string]any) error {
jsonByte, _ := json.Marshal(data)
// 加密
contentEn, err := crypto.StringEncryptByAES(string(jsonByte))
hostKey := config.Get("aes.hostKey").(string)
contentEn, err := crypto.AESEncryptBase64(string(jsonByte), hostKey)
if err != nil {
logger.Errorf("insert encrypt: %v", err.Error())
return fmt.Errorf("encrypt fail")

View File

@@ -1,8 +1,8 @@
package ua
import "github.com/mssola/user_agent"
import "github.com/mssola/useragent"
// 获取user-agent信息
func Info(userAgent string) *user_agent.UserAgent {
return user_agent.New(userAgent)
func Info(userAgent string) *useragent.UserAgent {
return useragent.New(userAgent)
}

View File

@@ -3,7 +3,7 @@ package result
import (
"fmt"
"be.ems/src/framework/constants/result"
constResult "be.ems/src/framework/constants/result"
)
// CodeMsg 响应结果
@@ -17,8 +17,8 @@ func CodeMsg(code int, msg string) map[string]any {
// 响应成功结果 map[string]any{}
func Ok(v map[string]any) map[string]any {
args := make(map[string]any)
args["code"] = result.CODE_SUCCESS
args["msg"] = result.MSG_SUCCESS
args["code"] = constResult.CODE_SUCCESS
args["msg"] = constResult.MSG_SUCCESS
// v合并到args
for key, value := range v {
args[key] = value
@@ -29,7 +29,7 @@ func Ok(v map[string]any) map[string]any {
// 响应成功结果信息
func OkMsg(msg string) map[string]any {
args := make(map[string]any)
args["code"] = result.CODE_SUCCESS
args["code"] = constResult.CODE_SUCCESS
args["msg"] = msg
return args
}
@@ -37,8 +37,8 @@ func OkMsg(msg string) map[string]any {
// 响应成功结果数据
func OkData(data any) map[string]any {
args := make(map[string]any)
args["code"] = result.CODE_SUCCESS
args["msg"] = result.MSG_SUCCESS
args["code"] = constResult.CODE_SUCCESS
args["msg"] = constResult.MSG_SUCCESS
args["data"] = data
return args
}
@@ -46,8 +46,8 @@ func OkData(data any) map[string]any {
// 响应失败结果 map[string]any{}
func Err(v map[string]any) map[string]any {
args := make(map[string]any)
args["code"] = result.CODE_ERROR
args["msg"] = result.MSG_ERROR
args["code"] = constResult.CODE_ERROR
args["msg"] = constResult.MSG_ERROR
// v合并到args
for key, value := range v {
args[key] = value
@@ -58,7 +58,7 @@ func Err(v map[string]any) map[string]any {
// 响应失败结果信息
func ErrMsg(msg string, fmt ...any) map[string]any {
args := make(map[string]any)
args["code"] = result.CODE_ERROR
args["code"] = constResult.CODE_ERROR
args["msg"] = msg
return args
}
@@ -66,7 +66,7 @@ func ErrMsg(msg string, fmt ...any) map[string]any {
// 响应失败结果信息
func ErrMsgFmt(msg string, args ...any) map[string]any {
argv := make(map[string]any)
argv["code"] = result.CODE_ERROR
argv["code"] = constResult.CODE_ERROR
argv["msg"] = fmt.Sprintf(msg, args...)
return argv
}
@@ -74,8 +74,8 @@ func ErrMsgFmt(msg string, args ...any) map[string]any {
// 响应失败结果数据
func ErrData(data any) map[string]any {
args := make(map[string]any)
args["code"] = result.CODE_ERROR
args["msg"] = result.MSG_ERROR
args["code"] = constResult.CODE_ERROR
args["msg"] = constResult.MSG_ERROR
args["data"] = data
return args
}

View File

@@ -52,6 +52,7 @@ func Setup(router *gin.Engine) {
// Count: 10,
// Type: middleware.LIMIT_IP,
// }),
middleware.CryptoApi(true, true),
controller.NewAccount.Login,
)
indexGroup.GET("/getInfo", middleware.PreAuthorize(nil), controller.NewAccount.Info)
@@ -74,6 +75,7 @@ func Setup(router *gin.Engine) {
// Count: 10,
// Type: middleware.LIMIT_IP,
// }),
middleware.CryptoApi(true, true),
controller.NewRegister.Register,
)
}

View File

@@ -28,21 +28,14 @@ type MonitorController struct {
func (s *MonitorController) Load(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var querys struct {
// 数据类型all/load/cpu/memory/io/network
Type string `form:"type" binding:"required,oneof=all load cpu memory io network"`
// 开始时间
StartTime int64 `form:"startTime" binding:"required"`
// 结束时间
EndTime int64 `form:"endTime" binding:"required"`
// 网元类型
NeType string `form:"neType"`
// 网元ID
NeID string `form:"neId"`
// 名称networ和iok时有效
Name string `form:"name"`
Type string `form:"type" binding:"required,oneof=all load cpu memory io network"` // 数据类型all/load/cpu/memory/io/network
StartTime int64 `form:"startTime" binding:"required"` // 开始时间
EndTime int64 `form:"endTime" binding:"required"` // 结束时间
NeType string `form:"neType"` // 网元类型
NeID string `form:"neId"` // 网元ID
Name string `form:"name"` // 名称networ和io时有效
}
err := c.ShouldBindQuery(&querys)
if err != nil {
if err := c.ShouldBindQuery(&querys); err != nil {
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
return
}

View File

@@ -24,12 +24,13 @@ type SystemInfoController struct {
//
// GET /
func (s *SystemInfoController) Info(c *gin.Context) {
c.JSON(200, result.OkData(map[string]any{
data := map[string]any{
"cpu": s.systemInfogService.CPUInfo(),
"memory": s.systemInfogService.MemoryInfo(),
"network": s.systemInfogService.NetworkInfo(),
"time": s.systemInfogService.TimeInfo(),
"system": s.systemInfogService.SystemInfo(),
"disk": s.systemInfogService.DiskInfo(),
}))
}
c.JSON(200, result.OkData(data))
}

View File

@@ -9,11 +9,11 @@ import (
"be.ems/src/modules/monitor/model"
"be.ems/src/modules/monitor/repository"
systemService "be.ems/src/modules/system/service"
"github.com/shirou/gopsutil/v3/cpu"
"github.com/shirou/gopsutil/v3/disk"
"github.com/shirou/gopsutil/v3/load"
"github.com/shirou/gopsutil/v3/mem"
"github.com/shirou/gopsutil/v3/net"
"github.com/shirou/gopsutil/v4/cpu"
"github.com/shirou/gopsutil/v4/disk"
"github.com/shirou/gopsutil/v4/load"
"github.com/shirou/gopsutil/v4/mem"
"github.com/shirou/gopsutil/v4/net"
)
// 实例化服务层 MonitorImpl 结构体

View File

@@ -5,11 +5,11 @@ import (
"testing"
"time"
"github.com/shirou/gopsutil/v3/cpu"
"github.com/shirou/gopsutil/v3/disk"
"github.com/shirou/gopsutil/v3/load"
"github.com/shirou/gopsutil/v3/mem"
"github.com/shirou/gopsutil/v3/net"
"github.com/shirou/gopsutil/v4/cpu"
"github.com/shirou/gopsutil/v4/disk"
"github.com/shirou/gopsutil/v4/load"
"github.com/shirou/gopsutil/v4/mem"
"github.com/shirou/gopsutil/v4/net"
)
func init() {

View File

@@ -1,6 +1,7 @@
package service
import (
"context"
"fmt"
"os"
"runtime"
@@ -10,11 +11,11 @@ import (
"be.ems/src/framework/config"
"be.ems/src/framework/utils/parse"
"github.com/shirou/gopsutil/v3/cpu"
"github.com/shirou/gopsutil/v3/disk"
"github.com/shirou/gopsutil/v3/host"
"github.com/shirou/gopsutil/v3/mem"
"github.com/shirou/gopsutil/v3/net"
"github.com/shirou/gopsutil/v4/cpu"
"github.com/shirou/gopsutil/v4/disk"
"github.com/shirou/gopsutil/v4/host"
"github.com/shirou/gopsutil/v4/mem"
"github.com/shirou/gopsutil/v4/net"
)
// 实例化服务层 SystemInfoImpl 结构体
@@ -150,9 +151,12 @@ func (s *SystemInfoImpl) NetworkInfo() map[string]string {
// DiskInfo 磁盘信息
func (s *SystemInfoImpl) DiskInfo() []map[string]string {
disks := make([]map[string]string, 0)
ctx := context.Background()
ctx, cancel := context.WithTimeout(ctx, 1*time.Second)
defer cancel()
partitions, err := disk.Partitions(false)
if err != nil {
partitions, err := disk.PartitionsWithContext(ctx, false)
if err != context.DeadlineExceeded {
return disks
}

View File

@@ -29,7 +29,7 @@ const (
// 配置文件路径
configParamDir = "../../../config/param"
// configParamFile = "*" // 目录下全部更新
configParamFile = "upf_param_config.yaml" // 单文件更新
configParamFile = "ims_param_config.yaml" // 单文件更新
)
func TestEncrypt(t *testing.T) {
@@ -217,7 +217,7 @@ func parseParamConfig(data map[string]any) ([]map[string]string, error) {
itemMap["paramSort"] = fmt.Sprint(iiv)
case "perms", "method":
itemMap["paramPerms"] = iiv.(string)
case "data", "list", "array":
case "list", "array": // 参数类型为数组
itemMap["paramType"] = iik
strByte, _ := json.Marshal(iiv)
itemMap["paramJson"] = string(strByte)

View File

@@ -80,15 +80,18 @@ func Setup(router *gin.Engine) {
controller.NewNeInfo.List,
)
neInfoGroup.GET("/:infoId",
middleware.CryptoApi(false, true),
middleware.PreAuthorize(nil),
controller.NewNeInfo.Info,
)
neInfoGroup.POST("",
middleware.CryptoApi(true, true),
middleware.PreAuthorize(nil),
collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.neInfo", collectlogs.BUSINESS_TYPE_INSERT)),
controller.NewNeInfo.Add,
)
neInfoGroup.PUT("",
middleware.CryptoApi(true, true),
middleware.PreAuthorize(nil),
collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.neInfo", collectlogs.BUSINESS_TYPE_UPDATE)),
controller.NewNeInfo.Edit,
@@ -108,6 +111,7 @@ func Setup(router *gin.Engine) {
controller.NewNeHost.List,
)
neHostGroup.GET("/:hostId",
middleware.CryptoApi(false, true),
middleware.PreAuthorize(nil),
controller.NewNeHost.Info,
)

View File

@@ -7,7 +7,6 @@ import (
"be.ems/src/framework/datasource"
"be.ems/src/framework/logger"
"be.ems/src/framework/utils/crypto"
"be.ems/src/framework/utils/parse"
"be.ems/src/framework/utils/repo"
"be.ems/src/modules/network_element/model"
@@ -170,32 +169,7 @@ func (r *NeHostImpl) SelectByIds(hostIds []string) []model.NeHost {
return []model.NeHost{}
}
// 转换实体
rows := r.convertResultRows(results)
arr := &rows
for i := range *arr {
passwordDe, err := crypto.StringDecryptByAES((*arr)[i].Password)
if err != nil {
logger.Errorf("selectById %s decrypt: %v", (*arr)[i].HostID, err.Error())
(*arr)[i].Password = ""
} else {
(*arr)[i].Password = passwordDe
}
privateKeyDe, err := crypto.StringDecryptByAES((*arr)[i].PrivateKey)
if err != nil {
logger.Errorf("selectById %s decrypt: %v", (*arr)[i].HostID, err.Error())
(*arr)[i].PrivateKey = ""
} else {
(*arr)[i].PrivateKey = privateKeyDe
}
passPhraseDe, err := crypto.StringDecryptByAES((*arr)[i].PassPhrase)
if err != nil {
logger.Errorf("selectById %s decrypt: %v", (*arr)[i].HostID, err.Error())
(*arr)[i].PassPhrase = ""
} else {
(*arr)[i].PassPhrase = passPhraseDe
}
}
return rows
return r.convertResultRows(results)
}
// CheckUniqueNeHost 校验主机是否唯一
@@ -263,28 +237,13 @@ func (r *NeHostImpl) Insert(neHost model.NeHost) string {
params["auth_mode"] = neHost.AuthMode
}
if neHost.Password != "" {
passwordEn, err := crypto.StringEncryptByAES(neHost.Password)
if err != nil {
logger.Errorf("insert encrypt: %v", err.Error())
return ""
}
params["password"] = passwordEn
params["password"] = neHost.Password
}
if neHost.PrivateKey != "" {
privateKeyEn, err := crypto.StringEncryptByAES(neHost.PrivateKey)
if err != nil {
logger.Errorf("insert encrypt: %v", err.Error())
return ""
}
params["private_key"] = privateKeyEn
params["private_key"] = neHost.PrivateKey
}
if neHost.PassPhrase != "" {
passPhraseEn, err := crypto.StringEncryptByAES(neHost.PassPhrase)
if err != nil {
logger.Errorf("insert encrypt: %v", err.Error())
return ""
}
params["pass_phrase"] = passPhraseEn
params["pass_phrase"] = neHost.PassPhrase
}
if neHost.Remark != "" {
params["remark"] = neHost.Remark
@@ -361,28 +320,13 @@ func (r *NeHostImpl) Update(neHost model.NeHost) int64 {
params["auth_mode"] = neHost.AuthMode
}
if neHost.Password != "" {
passwordEn, err := crypto.StringEncryptByAES(neHost.Password)
if err != nil {
logger.Errorf("update encrypt: %v", err.Error())
return 0
}
params["password"] = passwordEn
params["password"] = neHost.Password
}
if neHost.PrivateKey != "" {
privateKeyEn, err := crypto.StringEncryptByAES(neHost.PrivateKey)
if err != nil {
logger.Errorf("update encrypt: %v", err.Error())
return 0
}
params["private_key"] = privateKeyEn
params["private_key"] = neHost.PrivateKey
}
if neHost.PassPhrase != "" {
passPhraseEn, err := crypto.StringEncryptByAES(neHost.PassPhrase)
if err != nil {
logger.Errorf("update encrypt: %v", err.Error())
return 0
}
params["pass_phrase"] = passPhraseEn
params["pass_phrase"] = neHost.PassPhrase
}
params["remark"] = neHost.Remark
if neHost.UpdateBy != "" {

View File

@@ -3,6 +3,9 @@ package service
import (
"fmt"
"be.ems/src/framework/config"
"be.ems/src/framework/logger"
"be.ems/src/framework/utils/crypto"
"be.ems/src/modules/network_element/model"
"be.ems/src/modules/network_element/repository"
)
@@ -30,12 +33,39 @@ func (r *NeHostImpl) SelectList(neHost model.NeHost) []model.NeHost {
// SelectByIds 通过ID查询
func (r *NeHostImpl) SelectById(hostId string) model.NeHost {
neHost := model.NeHost{}
if hostId == "" {
return model.NeHost{}
return neHost
}
neHosts := r.neHostRepository.SelectByIds([]string{hostId})
if len(neHosts) > 0 {
return neHosts[0]
neHost := neHosts[0]
hostKey := config.Get("aes.hostKey").(string)
if neHost.Password != "" {
passwordDe, err := crypto.AESDecryptBase64(neHost.Password, hostKey)
if err != nil {
logger.Errorf("select encrypt: %v", err.Error())
return neHost
}
neHost.Password = passwordDe
}
if neHost.PrivateKey != "" {
privateKeyDe, err := crypto.AESDecryptBase64(neHost.PrivateKey, hostKey)
if err != nil {
logger.Errorf("select encrypt: %v", err.Error())
return neHost
}
neHost.PrivateKey = privateKeyDe
}
if neHost.PassPhrase != "" {
passPhraseDe, err := crypto.AESDecryptBase64(neHost.PassPhrase, hostKey)
if err != nil {
logger.Errorf("select encrypt: %v", err.Error())
return neHost
}
neHost.PassPhrase = passPhraseDe
}
return neHost
}
return model.NeHost{}
}
@@ -54,11 +84,61 @@ func (r *NeHostImpl) Inserts(neHosts []model.NeHost) int64 {
// Insert 新增信息
func (r *NeHostImpl) Insert(neHost model.NeHost) string {
hostKey := config.Get("aes.hostKey").(string)
if neHost.Password != "" {
passwordEn, err := crypto.AESEncryptBase64(neHost.Password, hostKey)
if err != nil {
logger.Errorf("insert encrypt: %v", err.Error())
return ""
}
neHost.Password = passwordEn
}
if neHost.PrivateKey != "" {
privateKeyEn, err := crypto.AESEncryptBase64(neHost.PrivateKey, hostKey)
if err != nil {
logger.Errorf("insert encrypt: %v", err.Error())
return ""
}
neHost.PrivateKey = privateKeyEn
}
if neHost.PassPhrase != "" {
passPhraseEn, err := crypto.AESEncryptBase64(neHost.PassPhrase, hostKey)
if err != nil {
logger.Errorf("insert encrypt: %v", err.Error())
return ""
}
neHost.PassPhrase = passPhraseEn
}
return r.neHostRepository.Insert(neHost)
}
// Update 修改信息
func (r *NeHostImpl) Update(neHost model.NeHost) int64 {
hostKey := config.Get("aes.hostKey").(string)
if neHost.Password != "" {
passwordEn, err := crypto.AESEncryptBase64(neHost.Password, hostKey)
if err != nil {
logger.Errorf("update password encrypt: %v", err.Error())
return 0
}
neHost.Password = passwordEn
}
if neHost.PrivateKey != "" {
privateKeyEn, err := crypto.AESEncryptBase64(neHost.PrivateKey, hostKey)
if err != nil {
logger.Errorf("update private key encrypt: %v", err.Error())
return 0
}
neHost.PrivateKey = privateKeyEn
}
if neHost.PassPhrase != "" {
passPhraseEn, err := crypto.AESEncryptBase64(neHost.PassPhrase, hostKey)
if err != nil {
logger.Errorf("update pass phrase encrypt: %v", err.Error())
return 0
}
neHost.PassPhrase = passPhraseEn
}
return r.neHostRepository.Update(neHost)
}

View File

@@ -208,7 +208,17 @@ func (r *NeInfoImpl) bandNeHosts(arr *[]model.NeInfo) {
for i := range *arr {
v := (*arr)[i]
if v.HostIDs != "" {
(*arr)[i].Hosts = NewNeHostImpl.neHostRepository.SelectByIds(strings.Split(v.HostIDs, ","))
hostIds := strings.Split(v.HostIDs, ",")
if len(hostIds) <= 1 {
continue
}
for _, hostId := range hostIds {
neHost := NewNeHostImpl.SelectById(hostId)
if neHost.HostID == "" || neHost.HostID != hostId {
continue
}
(*arr)[i].Hosts = append((*arr)[i].Hosts, neHost)
}
}
}
}
@@ -222,12 +232,11 @@ func (r *NeInfoImpl) SelectById(infoId string, bandHost bool) model.NeInfo {
}
neInfos := r.neInfoRepository.SelectByIds([]string{infoId})
if len(neInfos) > 0 {
neInfo := neInfos[0]
// 带主机信息
if neInfo.HostIDs != "" && bandHost {
neInfo.Hosts = NewNeHostImpl.neHostRepository.SelectByIds(strings.Split(neInfo.HostIDs, ","))
if neInfos[0].HostIDs != "" && bandHost {
r.bandNeHosts(&neInfos)
}
return neInfo
return neInfos[0]
}
return model.NeInfo{}
}
@@ -335,12 +344,17 @@ func (r *NeInfoImpl) NeRunSSHClient(neType, neId string) (*ssh.ConnSSH, error) {
logger.Errorf("NeRunSSHClient NeType:%s NeID:%s hostId not found", neType, neId)
return nil, fmt.Errorf("neinfo hostId not found")
}
neInfo.Hosts = NewNeHostImpl.neHostRepository.SelectByIds(strings.Split(neInfo.HostIDs, ","))
if len(neInfo.Hosts) <= 0 {
logger.Errorf("NeRunSSHClient Hosts %s not found", neInfo.HostIDs)
hostIds := strings.Split(neInfo.HostIDs, ",")
if len(hostIds) <= 1 {
logger.Errorf("NeRunTelnetClient hosts id %s not found", neInfo.HostIDs)
return nil, fmt.Errorf("neinfo host id not found")
}
hostId := hostIds[0] // 网元主机ssh 022
neHost := NewNeHostImpl.SelectById(hostId)
if neHost.HostID == "" || neHost.HostID != hostId {
logger.Errorf("NeRunTelnetClient Hosts %s not found", neInfo.HostIDs)
return nil, fmt.Errorf("neinfo host not found")
}
neHost := neInfo.Hosts[0] // 网元主机ssh 022
if neHost.HostType != "ssh" {
logger.Errorf("NeRunSSHClient Hosts first HostType %s not ssh", neHost.HostType)
return nil, fmt.Errorf("neinfo host type not ssh")
@@ -392,12 +406,17 @@ func (r *NeInfoImpl) NeRunTelnetClient(neType, neId string, num int) (*telnet.Co
logger.Errorf("NeRunTelnetClient NeType:%s NeID:%s hostId not found", neType, neId)
return nil, fmt.Errorf("neinfo hostId not found")
}
neInfo.Hosts = NewNeHostImpl.neHostRepository.SelectByIds(strings.Split(neInfo.HostIDs, ","))
if len(neInfo.Hosts) <= 0 {
hostIds := strings.Split(neInfo.HostIDs, ",")
if len(hostIds) <= 1 {
logger.Errorf("NeRunTelnetClient hosts id %s not found", neInfo.HostIDs)
return nil, fmt.Errorf("neinfo host id not found")
}
hostId := hostIds[num] // 网元主机telnet 14100 25200
neHost := NewNeHostImpl.SelectById(hostId)
if neHost.HostID == "" || neHost.HostID != hostId {
logger.Errorf("NeRunTelnetClient Hosts %s not found", neInfo.HostIDs)
return nil, fmt.Errorf("neinfo host not found")
}
neHost := neInfo.Hosts[num]
// 创建链接Telnet客户端
var connTelnet telnet.ConnTelnet

View File

@@ -1,6 +1,6 @@
package model
import "github.com/shirou/gopsutil/v3/net"
import "github.com/shirou/gopsutil/v4/net"
// NetConnectData 网络连接进程数据
type NetConnectData struct {

View File

@@ -8,8 +8,8 @@ import (
"be.ems/src/framework/logger"
"be.ems/src/framework/vo/result"
"be.ems/src/modules/ws/model"
"github.com/shirou/gopsutil/v3/net"
"github.com/shirou/gopsutil/v3/process"
"github.com/shirou/gopsutil/v4/net"
"github.com/shirou/gopsutil/v4/process"
)
// GetNetConnections 获取网络连接进程

View File

@@ -12,7 +12,7 @@ import (
"be.ems/src/framework/utils/parse"
"be.ems/src/framework/vo/result"
"be.ems/src/modules/ws/model"
"github.com/shirou/gopsutil/v3/process"
"github.com/shirou/gopsutil/v4/process"
)
// GetProcessData 获取进程数据

View File

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

View File

@@ -1,94 +0,0 @@
package main
import (
"flag"
"fmt"
"io/ioutil"
"os"
"strings"
"be.ems/lib/log"
"gopkg.in/yaml.v3"
)
// Yaml struct of config
type YamlConfig struct {
Logger struct {
File string `yaml:"file"`
Level string `yaml:"level"`
Duration int `yaml:"duration"`
}
Rest struct {
BindIP string `yaml:"bindip"`
Port uint16 `yaml:"port"`
}
}
var yamlConfig YamlConfig
func ReadConfig(configFile string) {
yamlFile, err := ioutil.ReadFile(configFile)
if err != nil {
fmt.Printf("ioutil.ReadFile %s err %v", configFile, err)
}
// fmt.Println("yamlfile:", string(yamlFile))
err = yaml.Unmarshal(yamlFile, &yamlConfig)
if err != nil {
fmt.Printf("Unmarshal: %v when to struct", err)
}
}
func GetYamlConfig() *YamlConfig {
return &yamlConfig
}
func GetLogLevel() log.LogLevel {
var logLevel log.LogLevel
switch strings.ToLower(yamlConfig.Logger.Level) {
case "trace":
logLevel = log.LOG_TRACE
case "info":
logLevel = log.LOG_INFO
case "debug":
logLevel = log.LOG_DEBUG
case "warn":
logLevel = log.LOG_WARN
case "error":
logLevel = log.LOG_ERROR
case "fatal":
logLevel = log.LOG_FATAL
case "off":
logLevel = log.LOG_OFF
default:
logLevel = log.LOG_DEBUG
}
return logLevel
}
const defaultConfigFile = "./tt.yaml"
var (
version string
buildTime string
goVer string
)
func init() {
cfile := flag.String("c", defaultConfigFile, "config file")
pv := flag.Bool("v", false, "print version")
ph := flag.Bool("h", false, "print help")
flag.Parse()
if *pv {
fmt.Printf("OMC version: %s\n%s\n%s\n\n", version, buildTime, goVer)
os.Exit(0)
}
if *ph {
flag.Usage()
os.Exit(0)
}
ReadConfig(*cfile)
}

View File

@@ -1,87 +0,0 @@
package main
import (
"fmt"
"net"
"os"
"time"
"be.ems/lib/log"
)
const (
//经过测试linux下延时需要大于100ms
TIME_DELAY_AFTER_WRITE = 500 //500ms
)
func main() {
log.InitLogger(yamlConfig.Logger.File, yamlConfig.Logger.Duration, "omc:tt", GetLogLevel())
fmt.Printf("OMC tt version: %s\n", version)
log.Infof("========================= OMC tt startup =========================")
log.Infof("OMC tt version: %s %s %s", version, buildTime, goVer)
conn, err := net.Dial("tcp", "192.168.4.233:4100")
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
return
}
var buf [8192]byte
var n int
n, err = conn.Write([]byte("admin\nadmin\n"))
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
return
}
time.Sleep(time.Millisecond * TIME_DELAY_AFTER_WRITE)
n, err = conn.Read(buf[0:])
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
return
}
log.Debug(string(buf[0:n]))
n, err = conn.Write([]byte("date\n"))
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
return
}
time.Sleep(time.Millisecond * TIME_DELAY_AFTER_WRITE)
n, err = conn.Read(buf[0:])
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
return
}
log.Debug(string(buf[0 : n-5]))
/*
n, err = conn.Write([]byte("\n"))
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
return
}
time.Sleep(time.Millisecond * TIME_DELAY_AFTER_WRITE)
n, err = conn.Read(buf[0:])
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
return
}
log.Debug(string(buf[0:n]))
log.Debug(string(buf[0:n]))
*/
/* n, err = conn.Write([]byte("\n"))
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
return
}
n, err = conn.Read(buf[0:])
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
return
}
*/
}

View File

@@ -1,15 +0,0 @@
logger:
file: ./tt.log
level: trace
rest:
addr: 0.0.0.0
port: 3040
database:
type: mysql
user: root
password: 1000omc@kp!
host: 127.0.0.1
port: 33066
name: tenants_db

View File

@@ -1,11 +0,0 @@
package main
import (
"github.com/reiver/go-telnet"
)
func main() {
var caller telnet.Caller = telnet.StandardCaller
telnet.DialToAndCall("192.168.4.233:4100", caller)
}

View File

@@ -1,301 +0,0 @@
package main
import (
"fmt"
"io"
"net"
"net/http"
"os"
"time"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/api"
"github.com/gorilla/websocket"
"github.com/ziutek/telnet"
"golang.org/x/crypto/ssh"
"golang.org/x/crypto/ssh/terminal"
)
type TgWs struct {
api.Api
}
var upGrader = websocket.Upgrader{
ReadBufferSize: 1024,
WriteBufferSize: 1024 * 1024 * 10,
CheckOrigin: func(r *http.Request) bool {
return true
},
}
type ShellInfoStruct struct {
Proto string `json:"proto"`
IpAddr string `json:"ipaddr"`
Port string `json:"port"`
}
type wsWrapper struct {
*websocket.Conn
}
func main() {
telnetHandle(rw io.ReadWriter, ip, port string, errhandle func(string)) {
}
func init() {
routerCheckRole = append(routerCheckRole, registerTgWsRouter)
}
// 需认证的路由代码
func registerTgWsRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
api := apis.TgWs{}
r := v1.Group("")
{
// 协议、IP、端口
r.GET("/tgws/:proto/:ipaddr/:port", api.TgWsWeb)
}
}
func (e TgWs) TgWsWeb(c *gin.Context) {
// 初始化返回信息
err := e.MakeContext(c).Errors
if err != nil {
e.Logger.Error(err)
e.Error(500, err, fmt.Sprintf(" %s ", err.Error()))
return
}
// 升级为websocket
wsConn, err := upGrader.Upgrade(c.Writer, c.Request, nil)
if err != nil {
e.Logger.Error(err)
e.Error(500, err, "websocket client connect error")
return
}
defer wsConn.Close()
proto := c.Param("proto")
ipaddr := c.Param("ipaddr")
port := c.Param("port")
shellinfo := ShellInfoStruct{
Proto: proto,
IpAddr: ipaddr,
Port: port,
}
quitChan := make(chan bool, 1)
go websocketHandle(wsConn, shellinfo, quitChan)
<-quitChan
}
func websocketHandle(con *websocket.Conn, shellinfo ShellInfoStruct, exitCh chan bool) {
defer setQuit(exitCh)
rw := io.ReadWriter(&wsWrapper{con})
webprintln := func(data string) {
rw.Write([]byte(data + "\r\n"))
}
con.SetCloseHandler(func(code int, text string) error {
con.Close()
return nil
})
switch shellinfo.Proto {
case "ssh":
sshHandle(rw, shellinfo.IpAddr, shellinfo.Port, "XXX", "XXX", webprintln)
case "telnet":
telnetHandle(rw, shellinfo.IpAddr, shellinfo.Port, webprintln)
case "bind_shell":
bindShellHandler(rw, shellinfo.IpAddr, shellinfo.Port, webprintln)
default:
webprintln("Not Support Protocol '" + shellinfo.Proto + "'")
}
return
}
func (wsw *wsWrapper) Write(p []byte) (n int, err error) {
writer, err := wsw.Conn.NextWriter(websocket.TextMessage)
if err != nil {
return 0, err
}
defer writer.Close()
return writer.Write(p)
}
func (wsw *wsWrapper) Read(p []byte) (n int, err error) {
for {
msgType, reader, err := wsw.Conn.NextReader()
if err != nil {
return 0, err
}
if msgType != websocket.TextMessage {
continue
}
return reader.Read(p)
}
}
// SSH连接
func sshHandle(rw io.ReadWriter, ip, port, user, passwd string, errhandle func(string)) {
sshConfig := &ssh.ClientConfig{
User: user,
Auth: []ssh.AuthMethod{ssh.Password(passwd)},
Timeout: 6 * time.Second,
}
sshConfig.HostKeyCallback = ssh.InsecureIgnoreHostKey()
if port == "" {
ip = ip + ":22"
} else {
ip = ip + ":" + port
}
client, err := ssh.Dial("tcp", ip, sshConfig)
if err != nil {
errhandle(err.Error())
return
}
defer client.Close()
session, err := client.NewSession()
if err != nil {
errhandle(err.Error())
return
}
defer session.Close()
fd := int(os.Stdin.Fd())
session.Stdout = rw
session.Stderr = rw
session.Stdin = rw
modes := ssh.TerminalModes{
ssh.ECHO: 1,
ssh.TTY_OP_ISPEED: 14400,
ssh.TTY_OP_OSPEED: 14400,
}
termWidth, termHeight, err := terminal.GetSize(fd)
err = session.RequestPty("xterm", termHeight, termWidth, modes)
if err != nil {
errhandle(err.Error())
}
err = session.Shell()
if err != nil {
errhandle(err.Error())
}
err = session.Wait()
if err != nil {
errhandle(err.Error())
}
return
}
// telnet连接
func telnetHandle(rw io.ReadWriter, ip, port string, errhandle func(string)) {
if port == "" {
ip = ip + ":23"
} else {
ip = ip + ":" + port
}
con, err := telnet.Dial("tcp", ip)
if err != nil {
errhandle(err.Error())
return
}
defer con.Close()
buf := make([]byte, 16*1024)
// 从远端读取返回结果并回显页面
go func() {
for {
n, err := con.Read(buf)
if err != nil {
errhandle(err.Error())
break
}
_, err = rw.Write(buf[:n])
if err != nil {
errhandle(err.Error())
break
}
}
}()
for {
// 从页面读取命令
n, err := rw.Read(buf)
if err != nil {
errhandle(err.Error())
break
}
if buf[0] == 13 { // 处理换行
data := []byte{telnet.CR, telnet.LF}
_, err = con.Write(data)
} else {
_, err = con.Write(buf[:n])
}
if err != nil {
errhandle(err.Error())
break
}
}
return
}
// 正向shell
func bindShellHandler(rw io.ReadWriter, ip, port string, errhandle func(string)) {
server := ip + ":" + port
//获取命令行参数 socket地址
addr, err := net.ResolveTCPAddr("tcp4", server)
if err != nil {
errhandle(err.Error())
return
}
//建立tcp连接
con, err := net.DialTCP("tcp4", nil, addr)
if err != nil {
errhandle(err.Error())
return
}
rw.Write([]byte("reverse shell connected " + "\r\n"))
defer con.Close()
buf := make([]byte, 16*1024)
go func() {
for {
n, err := con.Read(buf)
if err != nil {
errhandle(err.Error())
break
}
_, err = rw.Write(buf[:n])
if err != nil {
errhandle(err.Error())
break
}
}
}()
for {
n, err := rw.Read(buf)
if err != nil {
errhandle(err.Error())
break
}
_, err = rw.Write(buf[:n])
if err != nil {
errhandle(err.Error())
break
}
if buf[0] == 13 {
data := []byte{telnet.LF}
_, err = con.Write(data)
rw.Write([]byte("\r\n"))
} else {
_, err = con.Write(buf[:n])
}
if err != nil {
errhandle(err.Error())
break
}
}
return
}
func setQuit(ch chan bool) {
ch <- true
}

View File

@@ -1,290 +0,0 @@
package main
import (
"fmt"
"net"
"os"
)
func main() {
conn, err := net.Dial("tcp", "192.168.4.233:4100")
if err != nil {
fmt.Sprint(os.Stderr, "Error: %s", err.Error())
return
}
var buf [16192]byte
/*
// for {
n, err := conn.Read(buf[0:])
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
return
}
fmt.Println(string(buf[0:n]))
*/
n, err := conn.Write([]byte("admin\nadmin\n\ndate\n"))
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
return
}
/*
n, err = conn.Read(buf[0:])
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
return
}
fmt.Println(string(buf[0:n]))
n, err = conn.Write([]byte("admin\n"))
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s\n", err.Error())
return
}
*/
n, err = conn.Read(buf[0:])
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
return
}
fmt.Println((string(buf[0:n])))
fmt.Println(string(buf[0:n]))
n, err = conn.Write([]byte("date\n"))
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s\n", err.Error())
return
}
n, err = conn.Read(buf[0:])
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
return
}
fmt.Println((string(buf[0:n])))
fmt.Println(string(buf[0:n]))
/*
buf[1] = 252
buf[4] = 252
buf[7] = 252
buf[10] = 252
fmt.Println((buf[0:n]))
n, err = conn.Write(buf[0:n])
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s\n", err.Error())
return
}
n, err = conn.Read(buf[0:])
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
return
}
fmt.Println(string(buf[0:n]))
fmt.Println((buf[0:n]))
*/
/*
buf[1] = 252
buf[4] = 251
buf[7] = 252
buf[10] = 254
buf[13] = 252
fmt.Println((buf[0:n]))
n, err = conn.Write(buf[0:n])
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s\n", err.Error())
return
}
n, err = conn.Read(buf[0:])
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
return
}
fmt.Println(string(buf[0:n]))
fmt.Println((buf[0:n]))
buf[1] = 252
buf[4] = 252
fmt.Println((buf[0:n]))
n, err = conn.Write(buf[0:n])
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s\n", err.Error())
return
}
n, err = conn.Read(buf[0:])
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
return
}
fmt.Println(string(buf[0:n]))
fmt.Println((buf[0:n]))
*/
/*
buf[0] = 255
buf[1] = 252
buf[2] = 1
buf[3] = 255
buf[4] = 253
buf[5] = 1
buf[6] = 255
buf[7] = 252
buf[8] = 1
buf[9] = 255
buf[10] = 253
buf[11] = 1
fmt.Println((buf[0:12]))
n, err = conn.Write(buf[0:12])
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s\n", err.Error())
return
}
n, err = conn.Read(buf[0:])
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
return
}
*/
/*
n, err = conn.Write([]byte("admin\n"))
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s\n", err.Error())
return
}
n, err = conn.Read(buf[0:])
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
return
}
fmt.Println(string(buf[0:n]))
n, err = conn.Write([]byte("\n"))
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s\n", err.Error())
return
}
n, err = conn.Read(buf[0:])
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
return
}
fmt.Println(string(buf[0:n]))
for {
n, err = conn.Read(buf[0:])
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
return
}
fmt.Println(string(buf[0:n]))
if strings.HasSuffix(string(buf[0:n]), "> ") {
break
}
}
n, err = conn.Write([]byte("enable\n"))
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
return
}
n, err = conn.Read(buf[0:])
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
return
}
fmt.Println(string(buf[0:n]))
n, err = conn.Write([]byte("terminal length 0\n"))
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
return
}
n, err = conn.Read(buf[0:])
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
return
}
fmt.Println(string(buf[0:n]))
n, err = conn.Write([]byte("show port\n"))
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
return
}
for {
n, err = conn.Read(buf[0:])
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
return
}
fmt.Println(string(buf[0:n]))
if strings.HasSuffix(string(buf[0:n]), "# ") {
break
}
}
n, err = conn.Write([]byte("show interface\n\n"))
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
return
}
for {
n, err = conn.Read(buf[0:])
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
return
}
fmt.Println(string(buf[0:n]))
if strings.HasSuffix(string(buf[0:n]), "# ") {
break
}
}
n, err = conn.Write([]byte("show running-config\n"))
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
return
}
reader := bufio.NewReader(conn)
if reader == nil {
fmt.Fprintf(os.Stderr, "Create reader failed.")
}
for {
n, err := reader.Read(buf[0:])
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
return
}
fmt.Println(string(buf[0:n]))
if strings.HasSuffix(string(buf[0:n]), "# ") {
break
}
}
*/
/*
for {
n, err = conn.Read(buf[0:])
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
return
}
fmt.Println(string(buf[0:n]))
fmt.Println(n)
if strings.HasSuffix(string(buf[0:n]), "# ") {
break
}
}
*/
}

View File

@@ -1,218 +0,0 @@
package main
import (
"bufio"
"fmt"
"io"
"log"
"net"
"os"
"strings"
"time"
)
type TelnetClient struct {
IP string
Port string
IsAuthentication bool
UserName string
Password string
}
const (
//经过测试linux下延时需要大于100ms
TIME_DELAY_AFTER_WRITE = 500 //500ms
)
var g_WriteChan chan string
func main() {
g_WriteChan = make(chan string)
telnetClientObj := new(TelnetClient)
telnetClientObj.IP = "192.168.4.233"
telnetClientObj.Port = "4100"
telnetClientObj.IsAuthentication = true
telnetClientObj.UserName = "admin"
telnetClientObj.Password = "admin"
//fmt.Println(telnetClientObj.PortIsOpen(5))
go telnetClientObj.Telnet(20)
for {
line := readLine()
g_WriteChan <- string(line)
}
}
func readLine() string {
//fmt.Print("> ")
line, err := bufio.NewReader(os.Stdin).ReadString('\n')
if err != nil && err != io.EOF {
log.Fatal(err)
}
return strings.TrimSpace(line)
}
func (this *TelnetClient) PortIsOpen(timeout int) bool {
raddr := this.IP + ":" + this.Port
conn, err := net.DialTimeout("tcp", raddr, time.Duration(timeout)*time.Second)
if nil != err {
log.Println("pkg: model, func: PortIsOpen, method: net.DialTimeout, errInfo:", err)
return false
}
defer conn.Close()
return true
}
func (this *TelnetClient) Telnet(timeout int) (err error) {
raddr := this.IP + ":" + this.Port
conn, err := net.DialTimeout("tcp", raddr, time.Duration(timeout)*time.Second)
if nil != err {
log.Println("pkg: model, func: Telnet, method: net.DialTimeout, errInfo:", err)
return
}
defer conn.Close()
if false == this.telnetProtocolHandshake(conn) {
log.Println("pkg: model, func: Telnet, method: this.telnetProtocolHandshake, errInfo: telnet protocol handshake failed!!!")
return
}
go func() {
for {
data := make([]byte, 1024)
_, err := conn.Read(data)
if err != nil {
fmt.Println(err)
break
}
//strData := string(data)
fmt.Printf("%s", data)
}
}()
// conn.SetReadDeadline(time.Now().Add(time.Second * 30))
for {
select {
case cmd, _ := <-g_WriteChan:
_, err = conn.Write([]byte(cmd + "\n"))
if nil != err {
log.Println("pkg: model, func: Telnet, method: conn.Write, errInfo:", err)
return
}
break
default:
time.Sleep(100 * time.Millisecond)
continue
}
}
fmt.Println("Out telnet!!!!!!")
return
}
func (this *TelnetClient) telnetProtocolHandshake(conn net.Conn) bool {
var buf [4096]byte
n, err := conn.Read(buf[0:])
if nil != err {
log.Println("pkg: model, func: telnetProtocolHandshake, method: conn.Read, errInfo:", err)
return false
}
//fmt.Println(string(buf[0:n]))
//fmt.Println((buf[0:n]))
buf[1] = 252
buf[4] = 252
buf[7] = 252
buf[10] = 252
//fmt.Println((buf[0:n]))
n, err = conn.Write(buf[0:n])
if nil != err {
log.Println("pkg: model, func: telnetProtocolHandshake, method: conn.Write, errInfo:", err)
return false
}
n, err = conn.Read(buf[0:])
if nil != err {
log.Println("pkg: model, func: telnetProtocolHandshake, method: conn.Read, errInfo:", err)
return false
}
//fmt.Println(string(buf[0:n]))
//fmt.Println((buf[0:n]))
buf[1] = 252
buf[4] = 251
buf[7] = 252
buf[10] = 254
buf[13] = 252
fmt.Println((buf[0:n]))
n, err = conn.Write(buf[0:n])
if nil != err {
log.Println("pkg: model, func: telnetProtocolHandshake, method: conn.Write, errInfo:", err)
return false
}
n, err = conn.Read(buf[0:])
if nil != err {
log.Println("pkg: model, func: telnetProtocolHandshake, method: conn.Read, errInfo:", err)
return false
}
//fmt.Println(string(buf[0:n]))
//fmt.Println((buf[0:n]))
buf[1] = 252
buf[4] = 252
//fmt.Println((buf[0:n]))
n, err = conn.Write(buf[0:n])
if nil != err {
log.Println("pkg: model, func: telnetProtocolHandshake, method: conn.Write, errInfo:", err)
return false
}
n, err = conn.Read(buf[0:])
if nil != err {
log.Println("pkg: model, func: telnetProtocolHandshake, method: conn.Read, errInfo:", err)
return false
}
//fmt.Println(string(buf[0:n]))
//fmt.Println((buf[0:n]))
if false == this.IsAuthentication {
return true
}
n, err = conn.Write([]byte(this.UserName + "\n"))
if nil != err {
log.Println("pkg: model, func: telnetProtocolHandshake, method: conn.Write, errInfo:", err)
return false
}
time.Sleep(time.Millisecond * TIME_DELAY_AFTER_WRITE)
n, err = conn.Read(buf[0:])
if nil != err {
log.Println("pkg: model, func: telnetProtocolHandshake, method: conn.Read, errInfo:", err)
return false
}
//fmt.Println(string(buf[0:n]))
n, err = conn.Write([]byte(this.Password + "\n"))
if nil != err {
log.Println("pkg: model, func: telnetProtocolHandshake, method: conn.Write, errInfo:", err)
return false
}
n, err = conn.Read(buf[0:])
if nil != err {
log.Println("pkg: model, func: telnetProtocolHandshake, method: conn.Read, errInfo:", err)
return false
}
n, err = conn.Write([]byte("date" + "\n"))
if nil != err {
log.Println("pkg: model, func: telnetProtocolHandshake, method: conn.Write, errInfo:", err)
return false
}
time.Sleep(time.Millisecond * TIME_DELAY_AFTER_WRITE)
n, err = conn.Read(buf[0:])
if nil != err {
log.Println("pkg: model, func: telnetProtocolHandshake, method: conn.Read, errInfo:", err)
return false
}
fmt.Println(string(buf[0:n]))
return true
}