Merge remote-tracking branch 'origin/main' into multi-tenant
This commit is contained in:
@@ -1,5 +1,11 @@
|
||||
# 版本发布日志
|
||||
|
||||
## 2.2408.3-20240816
|
||||
|
||||
- 新增 中间件-接口加解密,配合前端CryptoJS加解密
|
||||
- 新增 KPI添加SMSC
|
||||
- 更新 IMS参数配置可选属性
|
||||
|
||||
## 2.2408.2-20240809
|
||||
|
||||
- 新增 SMSC-CDR 功能接口
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
Binary file not shown.
@@ -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: ""
|
||||
|
||||
@@ -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: ""
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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: ""
|
||||
|
||||
@@ -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: ""
|
||||
|
||||
@@ -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: ""
|
||||
|
||||
@@ -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: ""
|
||||
|
||||
@@ -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
@@ -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
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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"
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
145
go.mod
@@ -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
384
go.sum
@@ -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=
|
||||
|
||||
161
lib/file/file.go
161
lib/file/file.go
@@ -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
|
||||
}
|
||||
@@ -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 = ""
|
||||
|
||||
@@ -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)
|
||||
|
||||
2
makefile
2
makefile
@@ -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)
|
||||
|
||||
2
mkpkg.sh
2
mkpkg.sh
@@ -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}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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:
|
||||
# 密码
|
||||
|
||||
@@ -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"
|
||||
)
|
||||
|
||||
@@ -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)))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
151
src/framework/middleware/crypto_api.go
Normal file
151
src/framework/middleware/crypto_api.go
Normal 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())
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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")
|
||||
}
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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))
|
||||
}
|
||||
|
||||
@@ -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 结构体
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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,
|
||||
)
|
||||
|
||||
@@ -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 != "" {
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
@@ -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 0:22
|
||||
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 0:22
|
||||
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 1:4100 2:5200
|
||||
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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package model
|
||||
|
||||
import "github.com/shirou/gopsutil/v3/net"
|
||||
import "github.com/shirou/gopsutil/v4/net"
|
||||
|
||||
// NetConnectData 网络连接进程数据
|
||||
type NetConnectData struct {
|
||||
|
||||
@@ -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 获取网络连接进程
|
||||
|
||||
@@ -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 获取进程数据
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
*/
|
||||
}
|
||||
@@ -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
|
||||
@@ -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)
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
|
||||
}
|
||||
*/
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user