diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b7ee4b9..17b6459c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # 版本发布日志 +## 2.2408.3-20240816 + +- 新增 中间件-接口加解密,配合前端CryptoJS加解密 +- 新增 KPI添加SMSC +- 更新 IMS参数配置可选属性 + ## 2.2408.2-20240809 - 新增 SMSC-CDR 功能接口 diff --git a/captrace/makefile b/captrace/makefile index 5f16a91f..465abec6 100644 --- a/captrace/makefile +++ b/captrace/makefile @@ -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 diff --git a/config/goldkpi/kpi_title_all.csv b/config/goldkpi/kpi_title_all.csv index 3a526a38..a8d5dbd2 100644 --- a/config/goldkpi/kpi_title_all.csv +++ b/config/goldkpi/kpi_title_all.csv @@ -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 diff --git a/config/goldkpi/核心网网元黄金指标集.xlsx b/config/goldkpi/核心网网元黄金指标集.xlsx index c4ceb7ac..0b4a97c4 100644 Binary files a/config/goldkpi/核心网网元黄金指标集.xlsx and b/config/goldkpi/核心网网元黄金指标集.xlsx differ diff --git a/config/param/amf_param_config.yaml b/config/param/amf_param_config.yaml index 5abb58c3..011fad79 100644 --- a/config/param/amf_param_config.yaml +++ b/config/param/amf_param_config.yaml @@ -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: "" diff --git a/config/param/ausf_param_config.yaml b/config/param/ausf_param_config.yaml index 0b570ea8..67b3b00b 100644 --- a/config/param/ausf_param_config.yaml +++ b/config/param/ausf_param_config.yaml @@ -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: "" diff --git a/config/param/ims_param_config.yaml b/config/param/ims_param_config.yaml index 8a9fbef6..a7cd91a2 100644 --- a/config/param/ims_param_config.yaml +++ b/config/param/ims_param_config.yaml @@ -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" diff --git a/config/param/mme_param_config.yaml b/config/param/mme_param_config.yaml index 5ddd5caa..d4f994bb 100644 --- a/config/param/mme_param_config.yaml +++ b/config/param/mme_param_config.yaml @@ -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" diff --git a/config/param/mocngw_param_config.yaml b/config/param/mocngw_param_config.yaml index a213de42..133de9a9 100644 --- a/config/param/mocngw_param_config.yaml +++ b/config/param/mocngw_param_config.yaml @@ -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: "" diff --git a/config/param/n3iwf_param_config.yaml b/config/param/n3iwf_param_config.yaml index 54113a0f..0a420c0d 100644 --- a/config/param/n3iwf_param_config.yaml +++ b/config/param/n3iwf_param_config.yaml @@ -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: "" diff --git a/config/param/nrf_param_config.yaml b/config/param/nrf_param_config.yaml index 8441a44a..45674c6b 100644 --- a/config/param/nrf_param_config.yaml +++ b/config/param/nrf_param_config.yaml @@ -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: "" diff --git a/config/param/nssf_param_config.yaml b/config/param/nssf_param_config.yaml index 0906ae59..05216278 100644 --- a/config/param/nssf_param_config.yaml +++ b/config/param/nssf_param_config.yaml @@ -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: "" \ No newline at end of file + comment: "" diff --git a/config/param/pcf_param_config.yaml b/config/param/pcf_param_config.yaml index fa5c701a..eab8cf97 100644 --- a/config/param/pcf_param_config.yaml +++ b/config/param/pcf_param_config.yaml @@ -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: "" diff --git a/config/param/smf_param_config.yaml b/config/param/smf_param_config.yaml index b6863a8d..9e780d33 100644 --- a/config/param/smf_param_config.yaml +++ b/config/param/smf_param_config.yaml @@ -1,597 +1,604 @@ smf: smfSystem: display: "SMF System Config" + sort: 1 list: - - name: "sbiIpAddr" - type: "string" - value: "172.16.5.150" - access: "read-write" - filter: '' - display: "SBI IP" - comment: "" - - name: "sbiPort" - type: "int" - value: "8080" - access: "read-write" - filter: "0~65535" - display: "SBI Port" - comment: "0~65535" - - name: "sbiScheme" - type: "enum" - value: "http" - access: "read-write" - filter: "{\"0\":\"http\", \"1\":\"https\"}" - display: "SBI Scheme" - comment: "" - - name: "n4Ipv4" - type: "ipv4" - value: "172.16.5.150" - access: "read-write" - filter: '' - display: "N4 IPv4" - comment: "" - - name: "n4Ipv6" - type: "ipv6" - value: "" - access: "read-write" - filter: '' - display: "N4 IPv6" - comment: "" - - name: "n4UIpv4" - type: "ipv4" - value: "" - access: "read-write" - filter: '' - display: "N4U IPv4" - comment: "" - - name: "n4UIpv6" - type: "ipv6" - value: "" - access: "read-write" - filter: '' - display: "N4U IPv6" - comment: "" - - name: "amfUri" - type: "string" - value: "http://172.16.5.120:8080" - access: "read-write" - filter: '' - display: "AMF URI" - comment: "" - - name: "pcfEnable" - type: "bool" - value: "true" - access: "read-write" - filter: '' - display: "PCF Enable" - comment: "" - - name: "pcfUri" - type: "string" - value: "http://172.16.5.160:8080" - access: "read-write" - filter: '' - display: "PCF URI" - comment: "" - - name: "udmUri" - type: "string" - value: "http://172.16.5.140:8080" - access: "read-write" - filter: '' - display: "UDM URI" - comment: "" - - name: "chfEnable" - type: "bool" - value: "false" - access: "read-write" - filter: "{\"0\":\"false\", \"1\":\"true\"}" - display: "5G Charging Enable" - - name: "chfPrimaryUri" - type: "string" - value: "http://172.16.5.240:8080" - access: "read-write" - filter: '' - display: "CHF Primary URI" - comment: "" - - name: "chfSecondaryUri" - type: "string" - value: "" - access: "read-write" - filter: '' - display: "CHF Secondary URI" - comment: "" - - name: "nrfEnable" - type: "bool" - value: "false" - access: "read-write" - filter: "{\"0\":\"false\", \"1\":\"true\"}" - display: "NRF Enable" - comment: "" - - name: "nrfUri" - type: "string" - value: "http://172.16.5.180:8080" - access: "read-write" - filter: '' - display: "NRF URI" - comment: "" - - name: "primaryDnsIpv4" - type: "ipv4" - value: "114.114.114.114" - access: "read-write" - filter: "" - display: "Primary DNS IPv4" - comment: "" - - name: "secondaryDnsIpv4" - type: "ipv4" - value: "" - access: "read-write" - filter: "" - display: "Secondary DNS IPv4" - comment: "" - - name: "primaryDnsIpv6" - type: "ipv6" - value: "" - access: "read-write" - filter: "" - display: "Primary DNS IPv6" - comment: "" - - name: "secondaryDnsIpv6" - type: "ipv6" - value: "" - access: "read-write" - filter: "" - display: "Secondary DNS IPv6" - comment: "" - - name: "primaryPcscfIpv4" - type: "ipv4" - value: "172.16.5.110" - access: "read-write" - filter: "" - display: "Primary PCSCF IPv4" - comment: "" - - name: "secondaryPcscfIpv4" - type: "ipv4" - value: "" - access: "read-write" - filter: "" - display: "Secondary PCSCF IPv4" - comment: "" - - name: "primaryPcscfIpv6" - type: "ipv6" - value: "" - access: "read-write" - filter: "" - display: "Primary PCSCF IPv6" - comment: "" - - name: "secondaryPcscfIpv6" - type: "ipv6" - value: "" - access: "read-write" - filter: "" - display: "Secondary PCSCF IPv6" - comment: "" - - name: "ueMtu" - type: "int" - value: "" - access: "read-write" - filter: "0~65535" - display: "UE MTU" - comment: "" + - name: "sbiIpAddr" + type: "string" + value: "172.16.5.150" + access: "read-write" + filter: "" + display: "SBI IP" + comment: "" + - name: "sbiPort" + type: "int" + value: "8080" + access: "read-write" + filter: "0~65535" + display: "SBI Port" + comment: "0~65535" + - name: "sbiScheme" + type: "enum" + value: "http" + access: "read-write" + filter: '{"0":"http", "1":"https"}' + display: "SBI Scheme" + comment: "" + - name: "n4Ipv4" + type: "ipv4" + value: "172.16.5.150" + access: "read-write" + filter: "" + display: "N4 IPv4" + comment: "" + - name: "n4Ipv6" + type: "ipv6" + value: "" + access: "read-write" + filter: "" + display: "N4 IPv6" + comment: "" + - name: "n4UIpv4" + type: "ipv4" + value: "" + access: "read-write" + filter: "" + display: "N4U IPv4" + comment: "" + - name: "n4UIpv6" + type: "ipv6" + value: "" + access: "read-write" + filter: "" + display: "N4U IPv6" + comment: "" + - name: "amfUri" + type: "string" + value: "http://172.16.5.120:8080" + access: "read-write" + filter: "" + display: "AMF URI" + comment: "" + - name: "pcfEnable" + type: "bool" + value: "true" + access: "read-write" + filter: "" + display: "PCF Enable" + comment: "" + - name: "pcfUri" + type: "string" + value: "http://172.16.5.160:8080" + access: "read-write" + filter: "" + display: "PCF URI" + comment: "" + - name: "udmUri" + type: "string" + value: "http://172.16.5.140:8080" + access: "read-write" + filter: "" + display: "UDM URI" + comment: "" + - name: "chfEnable" + type: "bool" + value: "false" + access: "read-write" + filter: '{"0":"false", "1":"true"}' + display: "5G Charging Enable" + - name: "chfPrimaryUri" + type: "string" + value: "http://172.16.5.240:8080" + access: "read-write" + filter: "" + display: "CHF Primary URI" + comment: "" + - name: "chfSecondaryUri" + type: "string" + value: "" + access: "read-write" + filter: "" + display: "CHF Secondary URI" + comment: "" + - name: "nrfEnable" + type: "bool" + value: "false" + access: "read-write" + filter: '{"0":"false", "1":"true"}' + display: "NRF Enable" + comment: "" + - name: "nrfUri" + type: "string" + value: "http://172.16.5.180:8080" + access: "read-write" + filter: "" + display: "NRF URI" + comment: "" + - name: "primaryDnsIpv4" + type: "ipv4" + value: "114.114.114.114" + access: "read-write" + filter: "" + display: "Primary DNS IPv4" + comment: "" + - name: "secondaryDnsIpv4" + type: "ipv4" + value: "" + access: "read-write" + filter: "" + display: "Secondary DNS IPv4" + comment: "" + - name: "primaryDnsIpv6" + type: "ipv6" + value: "" + access: "read-write" + filter: "" + display: "Primary DNS IPv6" + comment: "" + - name: "secondaryDnsIpv6" + type: "ipv6" + value: "" + access: "read-write" + filter: "" + display: "Secondary DNS IPv6" + comment: "" + - name: "primaryPcscfIpv4" + type: "ipv4" + value: "172.16.5.110" + access: "read-write" + filter: "" + display: "Primary PCSCF IPv4" + comment: "" + - name: "secondaryPcscfIpv4" + type: "ipv4" + value: "" + access: "read-write" + filter: "" + display: "Secondary PCSCF IPv4" + comment: "" + - name: "primaryPcscfIpv6" + type: "ipv6" + value: "" + access: "read-write" + filter: "" + display: "Primary PCSCF IPv6" + comment: "" + - name: "secondaryPcscfIpv6" + type: "ipv6" + value: "" + access: "read-write" + filter: "" + display: "Secondary PCSCF IPv6" + comment: "" + - name: "ueMtu" + type: "int" + value: "" + access: "read-write" + filter: "0~65535" + display: "UE MTU" + comment: "" spgwSystem: display: "SPGW Sytem Config" + sort: 3 list: - - name: "s11Ip" - type: "string" - value: "172.16.5.150" - access: "read-write" - filter: '' - display: "Local S11 IP" - comment: "" - - name: "localDiameterIp" - type: "string" - value: "172.16.5.150" - access: "read-write" - filter: '' - display: "Local Diameter IP" - comment: "" - - name: "localDiameterHostName" - type: "string" - value: "smf.mnc001.mcc001.3gppnetwork.org" - access: "read-write" - filter: '' - display: "Local Diameter Host Name" - comment: "" - - name: "localDiameterRealmName" - type: "string" - value: "mnc001.mcc001.3gppnetwork.org" - access: "read-write" - filter: '' - display: "Local Diameter Realm Name" - comment: "" - - name: "peerGyEnable" - type: "bool" - value: 'false' - access: "read-write" - filter: 'false;true;' - display: "Gy Enable" - comment: "" - - name: "primaryPeerGyIp" - type: "string" - value: "" - access: "read-write" - filter: '' - display: "Primary Remote Gy IP" - comment: "" - - name: "primaryPeerGyPort" - type: "int" - value: "3868" - access: "read-write" - filter: "0~65535" - display: "Primary Remote Gy Port" - comment: "0~65535" - - name: "secondaryPeerGyIp" - type: "string" - value: "" - access: "read-write" - filter: '' - display: "Secondary Remote Gy IP" - comment: "" - - name: "secondaryPeerGyPort" - type: "int" - value: "3868" - access: "read-write" - filter: "0~65535" - display: "Secondary Remote Gy Port" - comment: "0~65535" - - name: "peerGxEnable" - type: "bool" - value: 'false' - access: "read-write" - filter: 'false;true;' - display: "Gx Enable" - comment: "" - - name: "gxChargingEnable" - type: "bool" - value: 'false' - access: "read-write" - filter: 'false;true;' - display: "Gx Charging Enable" - comment: "" - - name: "primaryPeerGxIp" - type: "string" - value: "" - access: "read-write" - filter: '' - display: "Primary Remote Gx IP" - comment: "" - - name: "primaryPeerGxPort" - type: "int" - value: "3868" - access: "read-write" - filter: "0~65535" - display: "Primary Remote Gx Port" - comment: "0~65535" - - name: "secondaryPeerGxIp" - type: "string" - value: "" - access: "read-write" - filter: '' - display: "Secondary Remote Gx IP" - comment: "" - - name: "secondaryPeerGxPort" - type: "int" - value: "3868" - access: "read-write" - filter: "0~65535" - display: "Secondary Remote Gx Port" - comment: "0~65535" + - name: "s11Ip" + type: "string" + value: "172.16.5.150" + access: "read-write" + filter: "" + display: "Local S11 IP" + comment: "" + - name: "localDiameterIp" + type: "string" + value: "172.16.5.150" + access: "read-write" + filter: "" + display: "Local Diameter IP" + comment: "" + - name: "localDiameterHostName" + type: "string" + value: "smf.mnc001.mcc001.3gppnetwork.org" + access: "read-write" + filter: "" + display: "Local Diameter Host Name" + comment: "" + - name: "localDiameterRealmName" + type: "string" + value: "mnc001.mcc001.3gppnetwork.org" + access: "read-write" + filter: "" + display: "Local Diameter Realm Name" + comment: "" + - name: "peerGyEnable" + type: "bool" + value: "false" + access: "read-write" + filter: "false;true;" + display: "Gy Enable" + comment: "" + - name: "primaryPeerGyIp" + type: "string" + value: "" + access: "read-write" + filter: "" + display: "Primary Remote Gy IP" + comment: "" + - name: "primaryPeerGyPort" + type: "int" + value: "3868" + access: "read-write" + filter: "0~65535" + display: "Primary Remote Gy Port" + comment: "0~65535" + - name: "secondaryPeerGyIp" + type: "string" + value: "" + access: "read-write" + filter: "" + display: "Secondary Remote Gy IP" + comment: "" + - name: "secondaryPeerGyPort" + type: "int" + value: "3868" + access: "read-write" + filter: "0~65535" + display: "Secondary Remote Gy Port" + comment: "0~65535" + - name: "peerGxEnable" + type: "bool" + value: "false" + access: "read-write" + filter: "false;true;" + display: "Gx Enable" + comment: "" + - name: "gxChargingEnable" + type: "bool" + value: "false" + access: "read-write" + filter: "false;true;" + display: "Gx Charging Enable" + comment: "" + - name: "primaryPeerGxIp" + type: "string" + value: "" + access: "read-write" + filter: "" + display: "Primary Remote Gx IP" + comment: "" + - name: "primaryPeerGxPort" + type: "int" + value: "3868" + access: "read-write" + filter: "0~65535" + display: "Primary Remote Gx Port" + comment: "0~65535" + - name: "secondaryPeerGxIp" + type: "string" + value: "" + access: "read-write" + filter: "" + display: "Secondary Remote Gx IP" + comment: "" + - name: "secondaryPeerGxPort" + type: "int" + value: "3868" + access: "read-write" + filter: "0~65535" + display: "Secondary Remote Gx Port" + comment: "0~65535" upfConfig: display: "UPF Config" + sort: 5 array: - - name: "index" - type: "int" - value: "" - access: "read-only" - filter: '0~2047' - display: "Index" - comment: "" - - name: "id" - type: "string" - value: "" - access: "read-write" - filter: '1~64' - display: "UPF ID" - comment: "" - - name: "addr" - type: "string" - value: "" - access: "read-write" - filter: '7~45' - display: "Address" - comment: "e.g. ip:port" - - name: "ipPoolType" - type: "string" - value: "IPv4v6" - access: "read-write" - filter: '' - display: "Ip Pool Type" - comment: "IPv4,IPv6,IPv4v6" - - name: "ipv4Pools" - type: "string" - value: "" - access: "read-write" - filter: '10~256' - display: "IPv4 Pools" - comment: "CIDR format, e.g. 192.168.1.0/24" - - name: "ipv6Pools" - type: "string" - value: "" - access: "read-write" - filter: '5~512' - display: "IPv6 Pools" - comment: "CIDR format, e.g. fe80::20c:29ff:fee4:dab7/50" - - name: "staticIpv4Enable" - type: "bool" - value: "" - access: "read-write" - filter: "{\"0\":\"false\", \"1\":\"true\"}" - display: "Static IPv4 Enable" - comment: "" - - name: "staticIpv4Start" - type: "ipv4" - value: "" - access: "read-write" - filter: '' - display: "Static IPv4 Start" - comment: "ipv4 format" - - name: "staticIpv4End" - type: "ipv4" - value: "" - access: "read-write" - filter: '' - display: "Static IPv4 End" - comment: "ipv4 format" - - name: "staticIpv6Enable" - type: "bool" - value: "" - access: "read-write" - filter: "{\"0\":\"false\", \"1\":\"true\"}" - display: "Static IPv6 Enable" - comment: "" - - name: "staticIpv6Start" - type: "ipv6" - value: "" - access: "read-write" - filter: '' - display: "Static IPv6 Start" - comment: "ipv6 format" - - name: "staticIpv6End" - type: "ipv6" - value: "" - access: "read-write" - filter: '' - display: "Static IPv6 End" - comment: "ipv6 format" - - name: "ueDnnIpPool" - display: "UE DNN IP Pool" - array: - name: "index" type: "int" value: "" access: "read-only" - filter: '0~2047' + filter: "0~2047" display: "Index" comment: "" - - name: "dnn" + - name: "id" type: "string" value: "" access: "read-write" - filter: '1~64' - display: "DNN" + filter: "1~64" + display: "UPF ID" comment: "" + - name: "addr" + type: "string" + value: "" + access: "read-write" + filter: "7~45" + display: "Address" + comment: "e.g. ip:port" - name: "ipPoolType" - type: "string" + type: "string" value: "IPv4v6" access: "read-write" - filter: '' + filter: "" display: "Ip Pool Type" comment: "IPv4,IPv6,IPv4v6" - name: "ipv4Pools" - type: "string" + type: "string" value: "" access: "read-write" - filter: '10~256' + filter: "10~256" display: "IPv4 Pools" comment: "CIDR format, e.g. 192.168.1.0/24" - name: "ipv6Pools" - type: "string" + type: "string" value: "" access: "read-write" - filter: '5~512' + filter: "5~512" display: "IPv6 Pools" comment: "CIDR format, e.g. fe80::20c:29ff:fee4:dab7/50" - name: "staticIpv4Enable" type: "bool" value: "" access: "read-write" - filter: "{\"0\":\"false\", \"1\":\"true\"}" + filter: '{"0":"false", "1":"true"}' display: "Static IPv4 Enable" comment: "" - name: "staticIpv4Start" type: "ipv4" value: "" access: "read-write" - filter: '' + filter: "" display: "Static IPv4 Start" comment: "ipv4 format" - name: "staticIpv4End" type: "ipv4" value: "" access: "read-write" - filter: '' + filter: "" display: "Static IPv4 End" comment: "ipv4 format" - name: "staticIpv6Enable" type: "bool" value: "" access: "read-write" - filter: "{\"0\":\"false\", \"1\":\"true\"}" + filter: '{"0":"false", "1":"true"}' display: "Static IPv6 Enable" comment: "" - name: "staticIpv6Start" type: "ipv6" value: "" access: "read-write" - filter: '' + filter: "" display: "Static IPv6 Start" comment: "ipv6 format" - name: "staticIpv6End" type: "ipv6" value: "" access: "read-write" - filter: '' + filter: "" display: "Static IPv6 End" comment: "ipv6 format" + - name: "ueDnnIpPool" + display: "UE DNN IP Pool" + array: + - name: "index" + type: "int" + value: "" + access: "read-only" + filter: "0~2047" + display: "Index" + comment: "" + - name: "dnn" + type: "string" + value: "" + access: "read-write" + filter: "1~64" + display: "DNN" + comment: "" + - name: "ipPoolType" + type: "string" + value: "IPv4v6" + access: "read-write" + filter: "" + display: "Ip Pool Type" + comment: "IPv4,IPv6,IPv4v6" + - name: "ipv4Pools" + type: "string" + value: "" + access: "read-write" + filter: "10~256" + display: "IPv4 Pools" + comment: "CIDR format, e.g. 192.168.1.0/24" + - name: "ipv6Pools" + type: "string" + value: "" + access: "read-write" + filter: "5~512" + display: "IPv6 Pools" + comment: "CIDR format, e.g. fe80::20c:29ff:fee4:dab7/50" + - name: "staticIpv4Enable" + type: "bool" + value: "" + access: "read-write" + filter: '{"0":"false", "1":"true"}' + display: "Static IPv4 Enable" + comment: "" + - name: "staticIpv4Start" + type: "ipv4" + value: "" + access: "read-write" + filter: "" + display: "Static IPv4 Start" + comment: "ipv4 format" + - name: "staticIpv4End" + type: "ipv4" + value: "" + access: "read-write" + filter: "" + display: "Static IPv4 End" + comment: "ipv4 format" + - name: "staticIpv6Enable" + type: "bool" + value: "" + access: "read-write" + filter: '{"0":"false", "1":"true"}' + display: "Static IPv6 Enable" + comment: "" + - name: "staticIpv6Start" + type: "ipv6" + value: "" + access: "read-write" + filter: "" + display: "Static IPv6 Start" + comment: "ipv6 format" + - name: "staticIpv6End" + type: "ipv6" + value: "" + access: "read-write" + filter: "" + display: "Static IPv6 End" + comment: "ipv6 format" dnnSelectUpf: display: "DNN Select UPF" + sort: 7 array: - - name: "index" - type: "int" - value: "0" - access: "read-only" - filter: '0~65535' - display: "Index" - comment: "" - - name: "dnn" - type: "string" - value: "" - access: "read-write" - filter: '1~64' - display: "DNN" - comment: "" - - name: "upfId" - type: "string" - value: "" - access: "read-write" - filter: '1~64' - display: "UPF ID" - comment: "" + - name: "index" + type: "int" + value: "0" + access: "read-only" + filter: "0~65535" + display: "Index" + comment: "" + - name: "dnn" + type: "string" + value: "" + access: "read-write" + filter: "1~64" + display: "DNN" + comment: "" + - name: "upfId" + type: "string" + value: "" + access: "read-write" + filter: "1~64" + display: "UPF ID" + comment: "" dnnTaiSelectUpf: display: "DNN TAI Select UPF" + sort: 9 array: - - name: "index" - type: "int" - value: "" - access: "read-only" - filter: '0~65535' - display: "Index" - comment: "" - - name: "dnn" - type: "string" - value: "" - access: "read-write" - filter: '1~64' - display: "DNN" - comment: "" - - name: "tai" - type: "string" - value: "" - access: "read-write" - filter: '1~64' - display: "TAI" - comment: "MCC+MNC+TAC" - - name: "upfId" - type: "string" - value: "upf2-Id" - access: "read-write" - filter: '1~64' - display: "UPF ID" - comment: "" + - name: "index" + type: "int" + value: "" + access: "read-only" + filter: "0~65535" + display: "Index" + comment: "" + - name: "dnn" + type: "string" + value: "" + access: "read-write" + filter: "1~64" + display: "DNN" + comment: "" + - name: "tai" + type: "string" + value: "" + access: "read-write" + filter: "1~64" + display: "TAI" + comment: "MCC+MNC+TAC" + - name: "upfId" + type: "string" + value: "upf2-Id" + access: "read-write" + filter: "1~64" + display: "UPF ID" + comment: "" snssaiSelectUpf: display: "SNSSAI Select UPF" + sort: 11 array: - - name: "index" - type: "int" - value: "" - access: "read-only" - filter: '0~65535' - display: "Index" - comment: "" - - name: "enable" - type: "bool" - value: 'true' - access: "read-write" - filter: 'false;true;' - display: "Enable" - - name: "snssai" - type: "string" - value: "1-000001" - access: "read-write" - filter: '1~64' - display: "SNSSAI" - comment: "sst1-sd1;sst2-sd2;sst3-sd3" - - name: "upfId" - type: "string" - value: "upf1-Id" - access: "read-write" - filter: '1~64' - display: "UPF ID" - comment: "upf1-id;upf2-id;upf3-id" + - name: "index" + type: "int" + value: "" + access: "read-only" + filter: "0~65535" + display: "Index" + comment: "" + - name: "enable" + type: "bool" + value: "true" + access: "read-write" + filter: "false;true;" + display: "Enable" + - name: "snssai" + type: "string" + value: "1-000001" + access: "read-write" + filter: "1~64" + display: "SNSSAI" + comment: "sst1-sd1;sst2-sd2;sst3-sd3" + - name: "upfId" + type: "string" + value: "upf1-Id" + access: "read-write" + filter: "1~64" + display: "UPF ID" + comment: "upf1-id;upf2-id;upf3-id" offlineChargingConfig: display: "Offline Charging Config" + sort: 13 list: - - name: "cdrFileName" - type: "string" - value: "smf.cdr" - access: "read-write" - filter: "1~64" - display: "CDR File Name" - comment: "" - - name: "cdrFilePath" - type: "string" - value: "/var/log/smfCdr" - access: "read-write" - filter: "1~256" - display: "CDR File Path" - comment: "" - - name: "cdrFileNum" - type: "int" - value: "50" - access: "read-write" - filter: "1~999999999" - display: "CDR File Num" - comment: "" - - name: "cdrFileSize" - type: "int" - value: "300" - access: "read-write" - filter: "1~999999" - display: "CDR File Size" - comment: "Megabytes" - - name: "cdrFileMaxAge" - type: "int" - value: "30" - access: "read-write" - filter: "0~9999" - display: "CDR File Max Age" - comment: "Days" - - name: "freeSubsCdrEnable" - type: "bool" - value: "false" - access: "read-write" - filter: "" - display: "Free Subscribers CDR Enable" - comment: "" - - name: "timeThreshold" - type: "int" - value: "600" - access: "read-write" - filter: "0~999999999" - display: "Time Threshold" - comment: "Seconds" - - name: "volumeThreshold" - type: "int" - value: "0" - access: "read-write" - filter: "0~999999999999999" - display: "Volume Threshold" - comment: "Bytes" \ No newline at end of file + - name: "cdrFileName" + type: "string" + value: "smf.cdr" + access: "read-write" + filter: "1~64" + display: "CDR File Name" + comment: "" + - name: "cdrFilePath" + type: "string" + value: "/var/log/smfCdr" + access: "read-write" + filter: "1~256" + display: "CDR File Path" + comment: "" + - name: "cdrFileNum" + type: "int" + value: "50" + access: "read-write" + filter: "1~999999999" + display: "CDR File Num" + comment: "" + - name: "cdrFileSize" + type: "int" + value: "300" + access: "read-write" + filter: "1~999999" + display: "CDR File Size" + comment: "Megabytes" + - name: "cdrFileMaxAge" + type: "int" + value: "30" + access: "read-write" + filter: "0~9999" + display: "CDR File Max Age" + comment: "Days" + - name: "freeSubsCdrEnable" + type: "bool" + value: "false" + access: "read-write" + filter: "" + display: "Free Subscribers CDR Enable" + comment: "" + - name: "timeThreshold" + type: "int" + value: "600" + access: "read-write" + filter: "0~999999999" + display: "Time Threshold" + comment: "Seconds" + - name: "volumeThreshold" + type: "int" + value: "0" + access: "read-write" + filter: "0~999999999999999" + display: "Volume Threshold" + comment: "Bytes" diff --git a/config/param/smsc_param_config.yaml b/config/param/smsc_param_config.yaml index 5b135e87..1f06e7d6 100644 --- a/config/param/smsc_param_config.yaml +++ b/config/param/smsc_param_config.yaml @@ -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: "" diff --git a/config/param/udm_param_config.yaml b/config/param/udm_param_config.yaml index 5da1286c..75dfc3eb 100644 --- a/config/param/udm_param_config.yaml +++ b/config/param/udm_param_config.yaml @@ -1,262 +1,267 @@ udm: system: display: "System" + sort: 1 list: - - name: "serviceIP" - type: "ipv4" - value: "172.16.5.140" - 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: "nrfUri" - type: "string" - value: "http://172.16.5.180:8080" - access: "read-write" - filter: '' - display: "NRF URI" - comment: "" - - name: "ausfIP" - type: "ipv4" - value: "172.16.5.130" - access: "read-write" - filter: '' - display: "AUSF IP" - comment: "" - - name: "fqdn" - type: "string" - value: "omc.com" - access: "read-write" - filter: '' - display: "FQDN" - comment: "" - - name: "priority" - type: "int" - value: "1" - access: "read-write" - filter: "0~4095" - display: "Priority" - comment: "" - - name: "capacity" - type: "int" - value: "4096" - access: "read-write" - filter: "0~65535" - display: "Capacity" - comment: "" - - name: "groupId" - type: "string" - value: "0" - access: "read-write" - filter: '' - display: "Group ID" - 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: "supiRanges" - type: "regex" - value: "imsi-001010100080000~imsi-001010100080099" - access: "read-write" - filter: '^imsi-\d{15}~imsi-\d{15}$' - display: "SUPI Ranges" - comment: "" - - name: "gpsiRanges" - type: "regex" - value: "msisdn-69072000~msisdn-69072099" - access: "read-write" - filter: '^msisdn-\d{2,15}~msisdn-\d{2,15}$' - display: "GPSI Ranges" - comment: "" - - name: "scheme" - type: "enum" - value: "0" - access: "read-write" - filter: "{\"0\":\"HTTP\", \"1\":\"HTTPS\"}" - display: "Scheme" - comment: "" - - name: "redisLink" - type: "enum" - value: '0' - access: "read-write" - filter: "{\"0\":\"TCP\",\"1\":\"SCTP\"}" - display: "Redis Link" - comment: "" - - name: "redisAddr" - type: "string" - value: "172.16.5.140:6379" - access: "read-write" - filter: '' - display: "Redis Address" - comment: "" + - name: "serviceIP" + type: "ipv4" + value: "172.16.5.140" + 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: "nrfUri" + type: "string" + value: "http://172.16.5.180:8080" + access: "read-write" + filter: "" + display: "NRF URI" + comment: "" + - name: "ausfIP" + type: "ipv4" + value: "172.16.5.130" + access: "read-write" + filter: "" + display: "AUSF IP" + comment: "" + - name: "fqdn" + type: "string" + value: "omc.com" + access: "read-write" + filter: "" + display: "FQDN" + comment: "" + - name: "priority" + type: "int" + value: "1" + access: "read-write" + filter: "0~4095" + display: "Priority" + comment: "" + - name: "capacity" + type: "int" + value: "4096" + access: "read-write" + filter: "0~65535" + display: "Capacity" + comment: "" + - name: "groupId" + type: "string" + value: "0" + access: "read-write" + filter: "" + display: "Group ID" + 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: "supiRanges" + type: "regex" + value: "imsi-001010100080000~imsi-001010100080099" + access: "read-write" + filter: '^imsi-\d{15}~imsi-\d{15}$' + display: "SUPI Ranges" + comment: "" + - name: "gpsiRanges" + type: "regex" + value: "msisdn-69072000~msisdn-69072099" + access: "read-write" + filter: '^msisdn-\d{2,15}~msisdn-\d{2,15}$' + display: "GPSI Ranges" + comment: "" + - name: "scheme" + type: "enum" + value: "0" + access: "read-write" + filter: '{"0":"HTTP", "1":"HTTPS"}' + display: "Scheme" + comment: "" + - name: "redisLink" + type: "enum" + value: "0" + access: "read-write" + filter: '{"0":"TCP","1":"SCTP"}' + display: "Redis Link" + comment: "" + - name: "redisAddr" + type: "string" + value: "172.16.5.140:6379" + access: "read-write" + filter: "" + display: "Redis Address" + comment: "" subsUEAmbr: display: "Subs UE AMBR" + 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: "uplink" type: "regex" - value: '1 Gbps' + value: "1 Gbps" access: "read-write" filter: '^\d+(\.\d+)?( ?)(bps|Kbps|Mbps|Gbps|Tbps)$' display: "Uplink" comment: "" - name: "downlink" type: "regex" - value: '2 Gbps' + value: "2 Gbps" access: "read-write" filter: '^\d+(\.\d+)?( ?)(bps|Kbps|Mbps|Gbps|Tbps)$' display: "Downlink" comment: "" subsNssais: display: "Subs NSSAIs" + sort: 5 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_nssai' + value: "def_nssai" access: "read-write" - filter: '^.{1,32}$' + filter: "^.{1,32}$" display: "Name" comment: "" - name: "supportedFeatures" type: "regex" value: "00000001" access: "read-write" - filter: '^[0-9a-fA-F]{8}$' + filter: "^[0-9a-fA-F]{8}$" display: "Supported Features" comment: "" - name: "defaultSingleNSSAIs" type: "string" - value: '1-000001' + value: "1-000001" access: "read-write" - filter: '' + filter: "" display: "Default Single NSSAIs" comment: "" - name: "singleNssais" type: "string" - value: '1-000002' + value: "1-000002" access: "read-write" - filter: '' + filter: "" display: "Single NSSAIs" comment: "" forbiddenAreas: display: "Forbidden Areas" + sort: 7 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: "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: "" serviceAreaRestriction: display: "Service Area Restriction" + sort: 9 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" @@ -268,107 +273,109 @@ udm: comment: "" smfSelection: display: "Subs SMF Selection" + sort: 11 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_snssai' + value: "def_snssai" access: "read-write" - filter: '^.{1,32}$' + filter: "^.{1,32}$" display: "Name" comment: "" - name: "snssai" type: "string" - value: '1-000001' + value: "1-000001" access: "read-write" filter: '^\d{1,3}[A-Fa-f0-9]{6}$' display: "SNSSAI" comment: "" - name: "dnnList" type: "int" - value: '1' + value: "1" access: "read-only" - filter: '1~4' + filter: "1~4" display: "DNN List" comment: "" array: - - name: "index" - type: "int" - value: "1" - access: "read-only" - filter: '1~4' - display: "Index" - comment: "" - - name: "dnn" - type: "string" - value: 'internet' - access: "read-write" - filter: '^.{1,32}$' - display: "DNN" - comment: "" - - name: "defaultDnnInd" - type: "bool" - value: 'true' - access: "read-write" - filter: 'false;true;' - display: "Default DNN Indicator" - comment: "" - - name: "lboRoamingAllowed" - type: "bool" - value: 'false' - access: "read-write" - filter: 'false;true;' - display: "LBO Roaming Allowed" - comment: "" - - name: "iwkEpsInd" - type: "bool" - value: 'false' - access: "read-write" - filter: 'false;true;' - display: "Interworking EPS Indicator" - comment: "" - - name: "ladnIndicator" - type: "bool" - value: 'false' - access: "read-write" - filter: 'false;true;' - display: "LADN Indicator" - comment: "" + - name: "index" + type: "int" + value: "1" + access: "read-only" + filter: "1~4" + display: "Index" + comment: "" + - name: "dnn" + type: "string" + value: "internet" + access: "read-write" + filter: "^.{1,32}$" + display: "DNN" + comment: "" + - name: "defaultDnnInd" + type: "bool" + value: "true" + access: "read-write" + filter: "false;true;" + display: "Default DNN Indicator" + comment: "" + - name: "lboRoamingAllowed" + type: "bool" + value: "false" + access: "read-write" + filter: "false;true;" + display: "LBO Roaming Allowed" + comment: "" + - name: "iwkEpsInd" + type: "bool" + value: "false" + access: "read-write" + filter: "false;true;" + display: "Interworking EPS Indicator" + comment: "" + - name: "ladnIndicator" + type: "bool" + value: "false" + access: "read-write" + filter: "false;true;" + display: "LADN Indicator" + comment: "" dnn: display: "DNN Conf" + sort: 13 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_nssai' + value: "def_nssai" access: "read-write" - filter: '^.{1,32}$' + filter: "^.{1,32}$" display: "Name" comment: "" - name: "defaultPDUSessionType" type: "enum" value: "0" access: "read-write" - filter: "{\"0\":\"IPv4\",\"1\":\"IPv6\",\"2\":\"IPv4v6\",\"3\":\"Ethernet\",\"4\":\"Unstruction\"}" + filter: '{"0":"IPv4","1":"IPv6","2":"IPv4v6","3":"Ethernet","4":"Unstruction"}' display: "Default PDU Session Type" comment: "" - name: "allowedPDUSessionTypes" type: "enum" - value: '0' + value: "0" access: "read-write" - filter: "{\"0\":\"IPv4\",\"1\":\"IPv6\",\"2\":\"IPv4v6\",\"3\":\"Ethernet\",\"4\":\"Unstruction\",\"5\":\"IPv4 & IPv6\",\"6\":\"IPv4 & IPv4v6\",\"7\":\"IPv6 & IPv4v6\",\"8\":\"IPv4 & IPv6 & IPv4v6\"}" + filter: '{"0":"IPv4","1":"IPv6","2":"IPv4v6","3":"Ethernet","4":"Unstruction","5":"IPv4 & IPv6","6":"IPv4 & IPv4v6","7":"IPv6 & IPv4v6","8":"IPv4 & IPv6 & IPv4v6"}' display: "Allowed PDU Session Types" comment: "" - name: "5qi" @@ -389,35 +396,35 @@ udm: type: "enum" value: "0" access: "read-write" - filter: "{\"0\":\"SSC Mode1\",\"1\":\"SSC Mode2\",\"2\":\"SSC Mode3\"}" + filter: '{"0":"SSC Mode1","1":"SSC Mode2","2":"SSC Mode3"}' display: "Default SSC Mode" comment: "" - name: "allowedSSCmodes" type: "enum" value: "0" access: "read-write" - filter: "{\"0\":\"SSC Mode1\",\"1\":\"SSC Mode2\",\"2\":\"SSC Mode3\",\"3\":\"SSC Mode1 & SSC Mode2\",\"4\":\"SSC Mode1 & SSC Mode3\",\"5\":\"SSC Mode2 & SSC Mode3\",\"6\":\"SSC Mode1 & SSC Mode2 & SSC Mode3\"}" + filter: '{"0":"SSC Mode1","1":"SSC Mode2","2":"SSC Mode3","3":"SSC Mode1 & SSC Mode2","4":"SSC Mode1 & SSC Mode3","5":"SSC Mode2 & SSC Mode3","6":"SSC Mode1 & SSC Mode2 & SSC Mode3"}' display: "Allowed SSC Modes" comment: "" - name: "interworkingEPSIndicator" type: "bool" value: "1" access: "read-write" - filter: '' + filter: "" display: "Interworking EPS Indicator" comment: "" - name: "ladnIndicator" type: "bool" value: "1" access: "read-write" - filter: '' + filter: "" display: "LADN Indicator" comment: "" - name: "chargingCharacteristics" type: "string" value: "0001" access: "read-write" - filter: '4~4' + filter: "4~4" display: "Charging Characteristics" comment: "" - name: "subscribedSessionAmbrUL" @@ -438,21 +445,21 @@ udm: type: "ipv4" value: "192.168.1.100" access: "read-write" - filter: '' + filter: "" display: "Static IP Address" comment: "" - name: "userPlaneIntegrity" type: "enum" value: "3" access: "read-write" - filter: "{\"0\":\"Null\",\"1\":\"Required\",\"2\":\"Preferred\",\"3\":\"Not Needed\"}" + filter: '{"0":"Null","1":"Required","2":"Preferred","3":"Not Needed"}' display: "User Plane Integrity" comment: "" - name: "userPlaneConfidentiality" type: "enum" value: "3" access: "read-write" - filter: "{\"0\":\"Null\",\"1\":\"Required\",\"2\":\"Preferred\",\"3\":\"Not Needed\"}" + filter: '{"0":"Null","1":"Required","2":"Preferred","3":"Not Needed"}' display: "User Plane Confidentiality" comment: "" - name: "arpPriorityLevel" @@ -466,413 +473,420 @@ udm: 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: "" epsTemplate: display: "EPS User Template" + sort: 15 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_eps' + value: "def_eps" access: "read-write" - filter: '^.{0,31}$' + filter: "^.{0,31}$" display: "Name" comment: "" - name: "ambrUplink" type: "int" - value: '100000000' + value: "100000000" access: "read-write" - filter: '0~4294967295' + filter: "0~4294967295" display: "AMBR Uplink" comment: "" - name: "ambrDownlink" type: "int" - value: '200000000' + value: "200000000" access: "read-write" - filter: '0~4294967295' + filter: "0~4294967295" display: "AMBR Downlink" comment: "" - name: "apnOIReplacement" type: "string" - value: 'money' + value: "money" access: "read-write" - filter: '^.{0,31}$' + filter: "^.{0,31}$" display: "APN OI Replacement" comment: "" - name: "rfsp" type: "int" - value: '1' + value: "1" access: "read-write" - filter: '' + filter: "" display: "RFSP" comment: "" - name: "rauTauTimer" type: "int" - value: '120' + value: "120" access: "read-write" - filter: '' + filter: "" display: "RAU TAU Timer" comment: "" - name: "chargingCharacteristic" type: "string" - value: '0001' + value: "0001" access: "read-write" - filter: '4~4' + filter: "4~4" display: "Charging Characteristic" comment: "" epsApn: display: "EPS APN" + sort: 17 array: - name: "index" type: "int" value: "1" access: "read-only" - filter: '1~16' + filter: "1~16" display: "Index" comment: "" - name: "dnn" type: "string" - value: 'internet' + value: "internet" access: "read-write" - filter: '^.{0,127}$' + filter: "^.{0,127}$" display: "DNN" comment: "" - name: "pdnType" type: "enum" - value: '0' + value: "0" access: "read-write" - filter: "{\"0\":\"IPv4\",\"1\":\"IPv6\",\"2\":\"IPv4v6\",\"3\":\"IPv4 or IPv6\"}" + filter: '{"0":"IPv4","1":"IPv6","2":"IPv4v6","3":"IPv4 or IPv6"}' display: "PDN Type" comment: "" - name: "qci" type: "int" - value: '9' + value: "9" access: "read-write" - filter: '1~255' + filter: "1~255" display: "QCI" comment: "" - name: "arpPriorityLevel" type: "int" - value: '8' + value: "8" access: "read-write" - filter: '1~127' + filter: "1~127" display: "ARP Priority" comment: "" - name: "arpPreemptCap" type: "enum" - value: '0' + value: "0" access: "read-write" - filter: "{\"0\":\"Not Preempt\",\"1\":\"May Preempt\"}" + filter: '{"0":"Not Preempt","1":"May Preempt"}' display: "ARP Preemption Capability" comment: "" - name: "arpPreemptVuln" type: "enum" - value: '0' + value: "0" access: "read-write" - filter: "{\"0\":\"Not Preemptable\",\"1\":\"Preemptable\"}" + filter: '{"0":"Not Preemptable","1":"Preemptable"}' display: "ARP Preemption Vulnerability" comment: "" - name: "contextIdentifier" type: "int" - value: '1' + value: "1" access: "read-write" - filter: '' + filter: "" display: "Context Identifier" comment: "" - name: "vplmnDynamicAddressAllowed" type: "bool" - value: 'true' + value: "true" access: "read-write" - filter: 'false;true;' + filter: "false;true;" display: "VPLMN Dynamic Address Allowed" comment: "" - name: "pdnGWAllocationType" type: "enum" - value: '0' + value: "0" access: "read-write" - filter: "{\"0\":\"Static\",\"1\":\"Dynamic\"}" + filter: '{"0":"Static","1":"Dynamic"}' display: "PDN GW Allocation Type" comment: "" - name: "ambrUplink" type: "int" - value: '100000000' + value: "100000000" access: "read-write" - filter: '0~4294967295' + filter: "0~4294967295" display: "AMBR Uplink" comment: "" - name: "ambrDownlink" type: "int" - value: '200000000' + value: "200000000" access: "read-write" - filter: '0~4294967295' + filter: "0~4294967295" display: "AMBR Downlink" comment: "" - name: "chargingCharacteristic" type: "string" - value: '0001' + value: "0001" access: "read-write" - filter: '4~4' + filter: "4~4" display: "Charging Characteristic" comment: "" applicationServer: display: "Application Server" + sort: 19 array: - name: "index" type: "int" value: "1" access: "read-only" - filter: '1~32' + filter: "1~32" display: "Index" comment: "" - name: "name" type: "string" - value: 'mmtel_as' + value: "mmtel_as" access: "read-write" - filter: '^.{1,31}$' + filter: "^.{1,31}$" display: "AS Name" comment: "" - name: "defaultHandling" type: "enum" - value: '0' + value: "0" access: "read-write" - filter: "{\"0\":\"Session Continued\",\"1\":\"Session Terminated\"}" + filter: '{"0":"Session Continued","1":"Session Terminated"}' display: "Default Handling" comment: "" - name: "serverName" type: "string" - value: 'sip:192.168.8.26:7060' + value: "sip:192.168.8.26:7060" access: "read-write" - filter: '^.{1,127}$' + filter: "^.{1,127}$" display: "Server Name" comment: "" - name: "diameterAddress" type: "string" - value: 'mmtel.ims.mnc001.mcc001.3gppnetwork.org' + value: "mmtel.ims.mnc001.mcc001.3gppnetwork.org" access: "read-write" - filter: '^.{1,127}$' + filter: "^.{1,127}$" display: "Diameter Address" comment: "" - name: "repDataSizeLimit" type: "int" - value: '0' + value: "0" access: "read-write" - filter: '0~65535' + filter: "0~65535" display: "Rep Data Size Limit" comment: "" - name: "includeRegisterRequest" type: "bool" - value: 'false' + value: "false" access: "read-write" - filter: 'false;true;' + filter: "false;true;" display: "Include Register Request" comment: "" - name: "includeRegisterResponse" type: "bool" - value: 'false' + value: "false" access: "read-write" - filter: 'false;true;' + filter: "false;true;" display: "Include Register Response" comment: "" scscfSet: display: "SCSCF Set" + sort: 21 array: - name: "index" type: "int" value: "1" access: "read-only" - filter: '1~8' + filter: "1~8" display: "Index" comment: "" - name: "name" type: "string" - value: 'mmtel_as' + value: "mmtel_as" access: "read-write" - filter: '^.{1,31}$' + filter: "^.{1,31}$" display: "Name" comment: "" - name: "priority" type: "int" - value: '1' + value: "1" access: "read-write" - filter: '' + filter: "" display: "Priority" comment: "" - name: "serverName" type: "string" - value: 'sip:scscf.ims.mnc001.mcc001.3gppnetwork.org:6060' + value: "sip:scscf.ims.mnc001.mcc001.3gppnetwork.org:6060" access: "read-write" - filter: '^.{1,127}$' + filter: "^.{1,127}$" display: "Server Name" comment: "" triggerPoint: display: "Trigger Point" + sort: 23 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_snssai' + value: "def_snssai" access: "read-write" - filter: '^.{1,32}$' + filter: "^.{1,32}$" display: "Name" comment: "" - name: "conditionTypeCNF" type: "int" - value: '0' + value: "0" access: "read-write" - filter: '0~1' + filter: "0~1" display: "Condition Type CNF" comment: "" - name: "sptList" type: "int" - value: '1' + value: "1" access: "read-only" - filter: '1~4' + filter: "1~4" display: "SPT List" comment: "" array: - - name: "index" - type: "int" - value: "1" - access: "read-only" - filter: '1~4' - display: "Index" - comment: "" - - name: "enable" - type: "bool" - value: 'true' - access: "read-write" - filter: '' - display: "Enable" - comment: "" - - name: "conditionNegated" - type: "int" - value: '0' - access: "read-write" - filter: '0~1' - display: "Condition Negated" - comment: "" - - name: "group" - type: "int" - value: '1' - access: "read-write" - filter: '0~4096' - display: "Group" - comment: "" - - name: "method" - type: "string" - value: '' - access: "read-write" - filter: '^.{0,32}$' - display: "Method" - comment: "" - - name: "sipHeader" - type: "string" - value: '' - access: "read-write" - filter: '^.{0,64}$' - display: "SIP Header" - comment: "" - - name: "sipContent" - type: "string" - value: '' - access: "read-write" - filter: '^.{0,64}$' - display: "SIP Content" - comment: "" + - name: "index" + type: "int" + value: "1" + access: "read-only" + filter: "1~4" + display: "Index" + comment: "" + - name: "enable" + type: "bool" + value: "true" + access: "read-write" + filter: "" + display: "Enable" + comment: "" + - name: "conditionNegated" + type: "int" + value: "0" + access: "read-write" + filter: "0~1" + display: "Condition Negated" + comment: "" + - name: "group" + type: "int" + value: "1" + access: "read-write" + filter: "0~4096" + display: "Group" + comment: "" + - name: "method" + type: "string" + value: "" + access: "read-write" + filter: "^.{0,32}$" + display: "Method" + comment: "" + - name: "sipHeader" + type: "string" + value: "" + access: "read-write" + filter: "^.{0,64}$" + display: "SIP Header" + comment: "" + - name: "sipContent" + type: "string" + value: "" + access: "read-write" + filter: "^.{0,64}$" + display: "SIP Content" + comment: "" s6aServer: display: "S6a Server" + sort: 25 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: '^.{1,127}$' - display: "Host" - comment: "" - - name: "realm" - type: "string" - value: "ims.mnc001.mcc001.3gppnetwork.org" - access: "read-write" - filter: '^.{1,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: "^.{1,127}$" + display: "Host" + comment: "" + - name: "realm" + type: "string" + value: "ims.mnc001.mcc001.3gppnetwork.org" + access: "read-write" + filter: "^.{1,127}$" + display: "Realm" + comment: "" cxServer: display: "Cx Server" + sort: 27 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: '^.{1,127}$' - display: "Host" - comment: "" - - name: "realm" - type: "string" - value: "ims.mnc001.mcc001.3gppnetwork.org" - access: "read-write" - filter: '^.{1,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: "^.{1,127}$" + display: "Host" + comment: "" + - name: "realm" + type: "string" + value: "ims.mnc001.mcc001.3gppnetwork.org" + access: "read-write" + filter: "^.{1,127}$" + display: "Realm" + comment: "" diff --git a/config/param/upf_param_config.yaml b/config/param/upf_param_config.yaml index b5fc23ee..0da0be98 100644 --- a/config/param/upf_param_config.yaml +++ b/config/param/upf_param_config.yaml @@ -1,446 +1,454 @@ upf: general: display: "General" + sort: 1 list: - - name: "configFileDirectory" - type: "string" - value: "/usr/local/etc/upf/" - access: "read-write" - filter: '' - display: "Config File Directory" - comment: "" - - name: "exeFileDirectory" - type: "string" - value: "/usr/local/bin/" - access: "read-write" - filter: '' - display: "EXE File Directory" - comment: "" - - name: "systemId" - type: "int" - value: "1" - access: "read-write" - filter: '' - display: "System ID" - comment: "1~255" - - name: "dataForwarderNum" - type: "int" - value: "1" - access: "read-write" - filter: '1~8' - display: "Data Forwarder Number" - comment: "1~8" - - name: "commonStatisticInterval" - type: "int" - value: "60" - access: "read-write" - filter: '' - display: "Common Statistic Interval" - comment: "" - - name: "userStatisticInterval" - type: "int" - value: "60" - access: "read-write" - filter: '' - display: "User Statistic Interval" - comment: "" - - name: "rxN3OverLoadThresholdMbps" - type: "int" - value: "0" - access: "read-write" - filter: '' - display: "RX N3 OverLoad Threshold Mbps" - comment: "" - - name: "rxN6OverLoadThresholdMbps" - type: "int" - value: "0" - access: "read-write" - filter: '' - display: "RX N6 OverLoad Threshold Mbps" - comment: "" - - name: "checksumOffload" - type: "int" - value: "0" - access: "read-write" - filter: '0~255' - display: "Checksum Offload" - comment: "0~255" - - name: "maxDownlinkBufferNum" - type: "int" - value: "50" - access: "read-write" - filter: '' - display: "Max Downlink Buffer Num" - comment: "" + - name: "configFileDirectory" + type: "string" + value: "/usr/local/etc/upf/" + access: "read-write" + filter: "" + display: "Config File Directory" + comment: "" + - name: "exeFileDirectory" + type: "string" + value: "/usr/local/bin/" + access: "read-write" + filter: "" + display: "EXE File Directory" + comment: "" + - name: "systemId" + type: "int" + value: "1" + access: "read-write" + filter: "" + display: "System ID" + comment: "1~255" + - name: "dataForwarderNum" + type: "int" + value: "1" + access: "read-write" + filter: "1~8" + display: "Data Forwarder Number" + comment: "1~8" + - name: "commonStatisticInterval" + type: "int" + value: "60" + access: "read-write" + filter: "" + display: "Common Statistic Interval" + comment: "" + - name: "userStatisticInterval" + type: "int" + value: "60" + access: "read-write" + filter: "" + display: "User Statistic Interval" + comment: "" + - name: "rxN3OverLoadThresholdMbps" + type: "int" + value: "0" + access: "read-write" + filter: "" + display: "RX N3 OverLoad Threshold Mbps" + comment: "" + - name: "rxN6OverLoadThresholdMbps" + type: "int" + value: "0" + access: "read-write" + filter: "" + display: "RX N6 OverLoad Threshold Mbps" + comment: "" + - name: "checksumOffload" + type: "int" + value: "0" + access: "read-write" + filter: "0~255" + display: "Checksum Offload" + comment: "0~255" + - name: "maxDownlinkBufferNum" + type: "int" + value: "50" + access: "read-write" + filter: "" + display: "Max Downlink Buffer Num" + comment: "" logger: display: "Logger" + sort: 3 list: - name: "logFileFullPath" type: "string" value: "/var/log/upf.log" access: "read-write" - filter: '' + filter: "" display: "Log File Full Path" comment: "" - name: "logLevel" type: "string" value: "error" access: "read-write" - filter: '' + filter: "" display: "Log Level" comment: "error|warning|info|debug" - name: "upfdLogLevel" type: "string" value: "error" access: "read-write" - filter: '' + filter: "" display: "Upfd Log Level" comment: "error|warning|info|debug" - name: "upfdLogTransfer" type: "bool" value: "false" access: "read-write" - filter: '' + filter: "" display: "Upfd Log Transfer" comment: "" - name: "reportCaller" type: "bool" value: "false" access: "read-write" - filter: '' + filter: "" display: "Report Caller" comment: "" pfcp: display: "PFCP" + sort: 5 list: - name: "ipType" type: "string" value: "ipv4" access: "read-write" - filter: '' + filter: "" display: "IP Type" comment: "ipv4|ipv6|ipv46" - name: "localIpv4" type: "string" value: "0.0.0.0" access: "read-write" - filter: '' + filter: "" display: "Local IPv4" comment: "" - name: "localIpv6" type: "string" value: "" access: "read-write" - filter: '' + filter: "" display: "Local IPv6" comment: "" - name: "localUdpPort" type: "int" value: "8805" access: "read-write" - filter: '1~65535' + filter: "1~65535" display: "Local UDP Port" comment: "1~65535" - name: "smfIpv4" type: "string" value: "0.0.0.0" access: "read-write" - filter: '' + filter: "" display: "SMF IPv4" comment: "" - name: "smfIpv6" type: "string" value: "" access: "read-write" - filter: '' + filter: "" display: "SMF IPv6" comment: "" - name: "smfUdpPort" type: "int" value: "8805" access: "read-write" - filter: '1~65535' + filter: "1~65535" display: "SMF UDP Port" comment: "1~65535" - name: "retryInterval" type: "int" value: "2" access: "read-write" - filter: '1~255' + filter: "1~255" display: "Retry Interval" comment: "1~255" - name: "maxRetry" type: "int" value: "3" access: "read-write" - filter: '0~255' + filter: "0~255" display: "Max Retry" comment: "0~255" - name: "heartbeatInterval" type: "int" value: "15" access: "read-write" - filter: '1~255' + filter: "1~255" display: "Heartbeat Interval" comment: "1~255" telnet: display: "Telnet" + sort: 7 list: - name: "enabled" type: "bool" value: "false" access: "read-write" - filter: '' + filter: "" display: "Enabled" comment: "" - name: "ipType" type: "string" value: "ipv4" access: "read-write" - filter: '' + filter: "" display: "IP Type" comment: "ipv4|ipv6|ipv46" - name: "localIpv4" type: "string" value: "0.0.0.0" access: "read-write" - filter: '' + filter: "" display: "Local IPv4" comment: "" - name: "localIpv6" type: "string" value: "" access: "read-write" - filter: '' + filter: "" display: "Local IPv6" comment: "" - name: "localPort" type: "int" value: "4100" access: "read-write" - filter: '1~65535' + filter: "1~65535" display: "Local Port" comment: "1~65535" redisDb: display: "Redis DB" + sort: 9 list: - name: "enabled" type: "bool" value: "false" access: "read-write" - filter: '' + filter: "" display: "Enabled" comment: "" - name: "netType" type: "string" value: "tcp" access: "read-write" - filter: '' + filter: "" display: "Net Type" comment: "tcp|udp" - name: "serverAddr" type: "string" value: "0.0.0.0:0" access: "read-write" - filter: '' + filter: "" display: "Server Address" comment: "" dataForwarderCommon: display: "Data Forwarder Common" + sort: 11 list: - name: "type" type: "string" value: "upfd" access: "read-write" - filter: '' + filter: "" display: "Type" comment: "upfd|tun" - name: "instanceId" type: "int" value: "1" access: "read-only" - filter: '1~8' + filter: "1~8" display: "Instance ID" comment: "1~8" - name: "mainCpu" type: "int" value: "1" access: "read-write" - filter: '1~255' + filter: "1~255" display: "Main CPU" comment: "1~255" - name: "cpuWorkers" type: "string" value: "" access: "read-write" - filter: '' + filter: "" display: "CPU Workers" comment: "2,3,4,5 or 2-5" - name: "isRun" type: "int" value: "0" access: "read-write" - filter: '0~1' + filter: "0~1" display: "Is Run" comment: "data forwarder already run or not" - name: "isHotStandby" type: "int" value: "0" access: "read-write" - filter: '0~1' + filter: "0~1" display: "Is Hot Standby" comment: "Hot Standby work or not" - name: "teidStart" type: "int" value: "16777216" access: "read-write" - filter: '' + filter: "" display: "TEID Start" comment: "The value from which TEID is allocated" - name: "n3HeartbeatInterval" type: "int" value: "30" access: "read-write" - filter: '' + filter: "" display: "N3 Heartbeat Interval" comment: "" - name: "rxTxQueueNum" type: "int" value: "1" access: "read-write" - filter: '' + filter: "" display: "RX TX Queue Num" comment: "" - name: "useSocket" type: "int" value: "0" access: "read-write" - filter: '0~1' + filter: "0~1" display: "Use Socket" comment: "data rx&tx use C socket" - name: "enableTap" type: "int" value: "0" access: "read-write" - filter: '0~1' + filter: "0~1" display: "Enable Tap" comment: "Enable 5G ethernet LAN" - name: "enableQer" type: "int" value: "0" access: "read-write" - filter: '0~1' + filter: "0~1" display: "Enable Qer" comment: "Enable PFCP Qer Control" dataForwarderUpfd: display: "Data Forwarder Upfd" + sort: 13 list: - name: "uioDriver" type: "string" value: "vfio-pci" access: "read-write" - filter: '' + filter: "" display: "UIO Driver" comment: "Currently only support vfio-pci" - name: "commandlineListen" type: "string" value: "localhost:5002" access: "read-write" - filter: '' + filter: "" display: "Telnet Address IP:Port" comment: "The format must be IP:Port" - name: "heapSizeGB" type: "int" value: "2" access: "read-write" - filter: '1~8' + filter: "1~8" display: "Heap Size GB" comment: "the unit is GB" - name: "stateSegSizeMB" type: "int" value: "256" access: "read-write" - filter: '64~512' + filter: "64~512" display: "State Seg Size MB" comment: "the unit is MB" - name: "dpdkNoPci" type: "int" value: "0" access: "read-write" - filter: '0~1' + filter: "0~1" display: "DPDK No PCI" comment: "" - name: "memChannelNum" type: "int" value: "0" access: "read-write" - filter: '0~128' + filter: "0~128" display: "Mem Channel Num" comment: "" - name: "sessionBaseVa" type: "string" value: "0x2000000000" access: "read-write" - filter: '' + filter: "" display: "Session Base Va" comment: "" - name: "buffersPerNuma" type: "int" value: "0" access: "read-write" - filter: '' + filter: "" display: "Buffers Per Numa" comment: "" - name: "n3RssHash" type: "string" value: "" access: "read-write" - filter: '' + filter: "" display: "N3 RSS Hash" comment: "" dataInterfaceList: display: "Data Interface List" + sort: 15 array: - name: "index" type: "int" value: "1" access: "read-only" - filter: '1~32' + filter: "1~32" display: "Index" comment: "1~32" - name: "interfaceType" type: "string" value: "N3" access: "read-write" - filter: '' + filter: "" display: "Interface Type" comment: "N3|N6|N9|N19" - name: "interfaceId" type: "int" value: "1" access: "read-write" - filter: '1~32' + filter: "1~32" display: "Interface ID" comment: "" - name: "driverType" type: "string" value: "host" access: "read-write" - filter: '' + filter: "" display: "Driver Type" comment: "host|vmxnet3|dpdk|socket|uds" - name: "ipType" type: "string" value: "ipv4" access: "read-write" - filter: '' + filter: "" display: "IP Type" comment: "ipv4|ipv6|ipv4v6" - name: "ipv4AddrList" type: "int" value: "1" access: "read-write" - filter: '0~8' + filter: "0~8" display: "IPv4 Address List" comment: "" array: @@ -448,28 +456,28 @@ upf: type: "int" value: "1" access: "read-only" - filter: '1~8' + filter: "1~8" display: "Index" comment: "1~8" - name: "ipv4" type: "string" value: "0.0.0.0" access: "read-write" - filter: '' + filter: "" display: "IPv4" comment: "IPv4" - name: "ipv4Mask" type: "string" value: "0.0.0.0" access: "read-write" - filter: '' + filter: "" display: "IPv4 Mask" comment: "" - name: "ipv6AddrList" type: "int" value: "1" access: "read-write" - filter: '0~8' + filter: "0~8" display: "IPv6 Address List" comment: "" array: @@ -477,407 +485,409 @@ upf: type: "int" value: "1" access: "read-only" - filter: '1~8' + filter: "1~8" display: "Index" comment: "1~8" - name: "ipv6" type: "string" value: "" access: "read-write" - filter: '' + filter: "" display: "IPv6" comment: "" - name: "ipv6Prefix" type: "int" value: "64" access: "read-write" - filter: '' + filter: "" display: "IPv6 Prefix" comment: "" - name: "macAddr" type: "string" value: "00:00:00:00:00:00" access: "read-write" - filter: '' + filter: "" display: "MAC Address" comment: "" - name: "interfacePCI" type: "string" value: "0000:00:00.0" access: "read-write" - filter: '' + filter: "" display: "Interface PCI" comment: "" - name: "systemNetworkCardName" type: "string" value: "" access: "read-write" - filter: '' + filter: "" display: "System Network Card Name" comment: "" - name: "gatewayIpv4" type: "string" value: "0.0.0.0" access: "read-write" - filter: '' + filter: "" display: "Gateway IPv4" comment: "" - name: "bondType" type: "string" value: "0" access: "read-write" - filter: '' + filter: "" display: "Bond Type" comment: "null|bak|sub|xor|round|lacp" - name: "bondId" type: "int" value: "1" access: "read-write" - filter: '0~32' + filter: "0~32" display: "Bond ID" comment: "" - name: "bfdTxIntervalMs" type: "int" value: "1" access: "read-write" - filter: '' + filter: "" display: "BFD TX Interval Ms" comment: "" - name: "bfdRxIntervalMs" type: "int" value: "1" access: "read-write" - filter: '' + filter: "" display: "BFD RX Interval Ms" comment: "" - name: "dnnName" type: "string" value: "default" access: "read-write" - filter: '' + filter: "" display: "DNN Name" comment: "" - name: "gatewayIpv6" type: "string" value: "" access: "read-write" - filter: '' + filter: "" display: "Gateway IPv6" comment: "" - name: "bfdGatewayIpv4" type: "string" value: "0.0.0.0" access: "read-write" - filter: '' + filter: "" display: "BFD Gateway IPv4" comment: "" - name: "bfdGatewayIpv6" type: "string" value: "" access: "read-write" - filter: '' + filter: "" display: "BFD Gateway IPv6" comment: "" - name: "mtu" type: "int" value: "1500" access: "read-write" - filter: '0~65535' + filter: "0~65535" display: "MTU" comment: "" - name: "vlanIdMin" type: "int" value: "0" access: "read-write" - filter: '' + filter: "" display: "Vlan ID Min" comment: "" - name: "vlanIdMax" type: "int" value: "" access: "read-write" - filter: '' + filter: "" display: "Vlan ID Max" comment: "" - name: "udpSrcPort" type: "int" value: "0" access: "read-write" - filter: '1~65535' + filter: "1~65535" display: "UDP Src Port" comment: "" - name: "udpListenPort" type: "int" value: "2152" access: "read-write" - filter: '0~65536' + filter: "0~65536" display: "UDP Listen Port" comment: "" - name: "udsLocalFileFullPath" type: "string" value: "" access: "read-write" - filter: '' + filter: "" display: "UDS Local File Full Path" comment: "" - name: "udsRemoteFileFullPath" type: "string" value: "" access: "read-write" - filter: '' + filter: "" display: "UDS Remote File Full Path" comment: "" - name: "linkDetectionType" type: "int" value: "0" access: "read-write" - filter: '0~1' + filter: "0~1" display: "Link Detection Type" comment: "" - name: "natInterfaceId" type: "int" value: "0" access: "read-write" - filter: '0~1' + filter: "0~1" display: "NAT Interface ID" comment: "" - name: "ueIpv4" type: "string" value: "0.0.0.0" access: "read-write" - filter: '' + filter: "" display: "IPv4" comment: "" - name: "ueIpv4Mask" type: "string" value: "255.255.255.0" access: "read-write" - filter: '' + filter: "" display: "UE IPv4 Mask" comment: "" - name: "ueIpv6" type: "string" value: "" access: "read-write" - filter: '' + filter: "" display: "UE IPv6" comment: "" - name: "ueIpv6Prefix" type: "int" value: "64" access: "read-write" - filter: '1~128' + filter: "1~128" display: "UE IPv6 Prefix" comment: "" - name: "gtpuRemoteIpv4PoolList" type: "int" value: "1" access: "read-write" - filter: '1~32' + filter: "1~32" display: "GTPU Remote IPv4 Pool List" comment: "" array: - - name: "index" - type: "int" - value: "1" - access: "read-only" - filter: '1~32' - display: "Index" - comment: "1~32" - - name: "ipv4" - type: "string" - value: "0.0.0.0" - access: "read-write" - filter: '' - display: "IPv4" - comment: "" - - name: "ipv4Mask" - type: "string" - value: "0.0.0.0" - access: "read-write" - filter: '' - display: "IPv4 Mask" - comment: "" + - name: "index" + type: "int" + value: "1" + access: "read-only" + filter: "1~32" + display: "Index" + comment: "1~32" + - name: "ipv4" + type: "string" + value: "0.0.0.0" + access: "read-write" + filter: "" + display: "IPv4" + comment: "" + - name: "ipv4Mask" + type: "string" + value: "0.0.0.0" + access: "read-write" + filter: "" + display: "IPv4 Mask" + comment: "" - name: "gtpuRemoteIpv6PoolList" type: "int" value: "1" access: "read-write" - filter: '0~32' + filter: "0~32" display: "GTPU Remote IPv6 Pool List" comment: "" array: - - name: "index" - type: "int" - value: "1" - access: "read-only" - filter: '1~32' - display: "Index" - comment: "1~32" - - name: "ipv6" - type: "string" - value: "" - access: "read-write" - filter: '' - display: "IPv6" - comment: "" - - name: "ipv6Prefix" - type: "int" - value: "64" - access: "read-write" - filter: '' - display: "IPv6 Prefix" - comment: "" + - name: "index" + type: "int" + value: "1" + access: "read-only" + filter: "1~32" + display: "Index" + comment: "1~32" + - name: "ipv6" + type: "string" + value: "" + access: "read-write" + filter: "" + display: "IPv6" + comment: "" + - name: "ipv6Prefix" + type: "int" + value: "64" + access: "read-write" + filter: "" + display: "IPv6 Prefix" + comment: "" - name: "gtpuSignalingHandle" type: "int" value: "0" access: "read-write" - filter: '0~1' + filter: "0~1" display: "GTPU Signaling Handle" comment: "" - name: "imsDefaultDSCPValue" type: "int" value: "0" access: "read-write" - filter: '0~1' + filter: "0~1" display: "IMS Default DSCP Value" comment: "" - name: "dataDefaultDSCPValue" type: "int" value: "0" access: "read-write" - filter: '0~1' + filter: "0~1" display: "Data Default DSCP Value" comment: "" - name: "innerDSCPValueMap" type: "int" value: "0" access: "read-write" - filter: '0~1' + filter: "0~1" display: "Inner DSCP Value Map" comment: "" - name: "maxSupportSpeedMbps" type: "int" value: "0" access: "read-write" - filter: '0~65536' + filter: "0~65536" display: "Max Support Speed Mbps" comment: "" - name: "dpdkRxQueuesNumber" type: "int" value: "0" access: "read-write" - filter: '0~127' + filter: "0~127" display: "DPDK RX Queues Number" comment: "" - name: "dpdkTxQueuesNumber" type: "int" value: "0" access: "read-write" - filter: '0~127' + filter: "0~127" display: "DPDK TX Queues Number" comment: "" - name: "dpdkRxDescNumber" type: "int" value: "0" access: "read-write" - filter: '0~32768' + filter: "0~32768" display: "DPDK RX Desc Number" comment: "" - name: "dpdkTxDescNumber" type: "int" value: "0" access: "read-write" - filter: '0~32768' + filter: "0~32768" display: "DPDK TX Desc Number" comment: "" - name: "dpdkworkers" type: "string" value: "" access: "read-write" - filter: '' + filter: "" display: "DPDK Workers" comment: "" networkControlCommon: display: "Network Control Common" + sort: 17 list: - name: "localSwitchDisabled" type: "int" value: "0" access: "read-write" - filter: '0~1' + filter: "0~1" display: "Local Switch Disabled" comment: "" - name: "maxTCPSyncPerSecond" type: "int" value: "0" access: "read-write" - filter: '' + filter: "" display: "Max TCP Sync Per Second" comment: "" - name: "upfMaxSupportMbps" type: "int" value: "0" access: "read-write" - filter: '' + filter: "" display: "UPF Max Support Mbps" comment: "" - name: "dscpInnerMapping" type: "int" value: "0" access: "read-write" - filter: '' + filter: "" display: "dscp Inner Mapping" comment: "" networkControlDnnList: display: "Network Control DNN List" + sort: 19 array: - name: "index" type: "int" value: "1" access: "read-only" - filter: '1~32' + filter: "1~32" display: "Index" comment: "1~32" - name: "dnnName" type: "string" value: "" access: "read-write" - filter: '' + filter: "" display: "DNN Name" comment: "" - name: "n3InterfaceId" type: "int" value: "0" access: "read-write" - filter: '0~32' + filter: "0~32" display: "N3 Interface ID" comment: "" - name: "n6InterfaceId" type: "int" value: "0" access: "read-write" - filter: '0~32' + filter: "0~32" display: "N6 Interface ID" comment: "" - name: "httpProtoEnabled" type: "int" value: "0" access: "read-write" - filter: '0~1' + filter: "0~1" display: "HTTP Proto Enabled" comment: "" - name: "httpsProtoEnabled" type: "int" value: "0" access: "read-write" - filter: '0~1' + filter: "0~1" display: "HTTPS Proto Enabled" comment: "" - name: "headerEnrichInfoList" type: "int" value: "1" access: "read-write" - filter: '0~32' + filter: "0~32" display: "Header Enrich Info List" comment: "" array: @@ -885,56 +895,56 @@ upf: type: "int" value: "1" access: "read-only" - filter: '1~32' + filter: "1~32" display: "Index" comment: "1~32" - name: "type" type: "int" value: "0" access: "read-write" - filter: '' + filter: "" display: "Type" comment: "" - name: "name" type: "string" value: "" access: "read-write" - filter: '' + filter: "" display: "Name" comment: "" - name: "value" type: "string" value: "" access: "read-write" - filter: '' + filter: "" display: "Value" comment: "" - name: "statisticEnabled" type: "int" value: "0" access: "read-write" - filter: '0~1' + filter: "0~1" display: "Statistic Enabled" comment: "" - name: "localSwitchCheck" type: "int" value: "0" access: "read-write" - filter: '0~1' + filter: "0~1" display: "Local Switch Check" comment: "" - name: "qerMaxSupportMbps" type: "int" value: "0" access: "read-write" - filter: '' + filter: "" display: "QER Max Support Mbps" comment: "" - name: "ueIpv4PoolList" type: "int" value: "1" access: "read-write" - filter: '0~32' + filter: "0~32" display: "UE IPv4 Pool List" comment: "" array: @@ -942,28 +952,28 @@ upf: type: "int" value: "1" access: "read-only" - filter: '1~32' + filter: "1~32" display: "Index" comment: "1~32" - name: "ipv4" type: "string" value: "0.0.0.0" access: "read-write" - filter: '' + filter: "" display: "IPv4" comment: "" - name: "ipv4Mask" type: "string" value: "255.255.255.0" access: "read-write" - filter: '' + filter: "" display: "IPv4 Mask" comment: "" - name: "ueIpv6PoolList" type: "int" value: "1" access: "read-write" - filter: '0~32' + filter: "0~32" display: "UE IPv6 Pool List" comment: "" array: @@ -971,28 +981,28 @@ upf: type: "int" value: "1" access: "read-only" - filter: '1~32' + filter: "1~32" display: "Index" comment: "1~32" - name: "ipv6" type: "string" value: "" access: "read-write" - filter: '' + filter: "" display: "IPv6" comment: "" - name: "ipv6Prefix" type: "int" value: "64" access: "read-write" - filter: '1~128' + filter: "1~128" display: "IPv6 Prefix" comment: "" - name: "dstServerIpv4PoolList" type: "int" value: "1" access: "read-write" - filter: '0~32' + filter: "0~32" display: "Dst Server IPv4 Pool List" comment: "" array: @@ -1000,28 +1010,28 @@ upf: type: "int" value: "1" access: "read-only" - filter: '1~32' + filter: "1~32" display: "Index" comment: "1~32" - name: "ipv4" type: "string" value: "0.0.0.0" access: "read-write" - filter: '' + filter: "" display: "IPv4" comment: "" - name: "ipv4Mask" type: "string" value: "255.255.255.0" access: "read-write" - filter: '' + filter: "" display: "IPv4 Mask" comment: "" - name: "dstServerIpv6PoolList" type: "int" value: "1" access: "read-write" - filter: '0~32' + filter: "0~32" display: "Dst Server IPv6 Pool List" comment: "" array: @@ -1029,399 +1039,406 @@ upf: type: "int" value: "1" access: "read-only" - filter: '1~32' + filter: "1~32" display: "Index" comment: "1~32" - name: "ipv6" type: "string" value: "" access: "read-write" - filter: '' + filter: "" display: "IPv6" comment: "" - name: "ipv6Prefix" type: "int" value: "64" access: "read-write" - filter: '1~128' + filter: "1~128" display: "IPv6 Prefix" comment: "" - name: "gatewayIpType" type: "string" value: "ipv4" access: "read-write" - filter: '' + filter: "" display: "Gateway IP Type" comment: "ipv4|ipv6|ipv4v6" - name: "gatewayIpv4" type: "string" value: "0.0.0.0" access: "read-write" - filter: '' + filter: "" display: "Gateway IPv4" comment: "" - name: "gatewayIpv6" type: "string" value: "" access: "read-write" - filter: '' + filter: "" display: "Gateway IPv6" comment: "" - name: "secondaryGatewayIpv4" type: "string" value: "0.0.0.0" access: "read-write" - filter: '' + filter: "" display: "Secondary Gateway IPv4" comment: "" - name: "secondaryGatewayIpv6" type: "string" value: "" access: "read-write" - filter: '' + filter: "" display: "Secondary Gateway IPv6" comment: "" networkControlSnssaiList: display: "Network Control SNSSAI List" + sort: 21 array: - name: "index" type: "int" value: "1" access: "read-only" - filter: '1~32' + filter: "1~32" display: "Index" comment: "1~32" - name: "sst" type: "int" value: "1" access: "read-write" - filter: '' + filter: "" display: "SST" comment: "" - name: "sd" type: "int" value: "1" access: "read-write" - filter: '' + filter: "" display: "SD" comment: "" - name: "n3InterfaceId" type: "int" value: "0" access: "read-write" - filter: '0~32' + filter: "0~32" display: "N3 Interface ID" comment: "" - name: "n6InterfaceId" type: "int" value: "0" access: "read-write" - filter: '0~32' + filter: "0~32" display: "N6 Interface ID" comment: "" - name: "qerMaxSupportMbps" type: "int" value: "0" access: "read-write" - filter: '' + filter: "" display: "QER Max Support Mbps" comment: "" - name: "statisticEnabled" type: "int" value: "0" access: "read-write" - filter: '0~1' + filter: "0~1" display: "Statistic Enabled" comment: "" - name: "vlanIdMin" type: "int" value: "0" access: "read-write" - filter: '' + filter: "" display: "Vlan ID Min" comment: "" - name: "vlanIdMax" type: "int" value: "0" access: "read-write" - filter: '' + filter: "" display: "Vlan ID Max" comment: "" networkControlAclWhiteList: display: "Network Control ACL White List" + sort: 23 array: - name: "index" type: "int" value: "1" access: "read-only" - filter: '1~32' + filter: "1~32" display: "Index" comment: "1~32" - name: "ueIpv4" type: "string" value: "0.0.0.0" access: "read-write" - filter: '' + filter: "" display: "UE IPv4" comment: "" - name: "ueIpv4Mask" type: "string" value: "255.255.255.0" access: "read-write" - filter: '' + filter: "" display: "UE IPv4 Mask" comment: "" - name: "ueIpv6" type: "string" value: "" access: "read-write" - filter: '' + filter: "" display: "UE IPv6" comment: "" - name: "ueIpv6Prefix" type: "int" value: "64" access: "read-write" - filter: '1~128' + filter: "1~128" display: "UE IPv6 Prefix" comment: "" - name: "dstServerIpv4" type: "string" value: "0.0.0.0" access: "read-write" - filter: '' + filter: "" display: "Dst Server IPv4" comment: "" - name: "dstServerIpv4Mask" type: "string" value: "255.255.255.0" access: "read-write" - filter: '' + filter: "" display: "Dst Server IPv4 Mask" comment: "" - name: "dstServerIpv6" type: "string" value: "" access: "read-write" - filter: '' + filter: "" display: "Dst Server IPv6" comment: "" - name: "dstServerIpv6Prefix" type: "int" value: "64" access: "read-write" - filter: '1~128' + filter: "1~128" display: "Dst Server IPv6 Prefix" comment: "" networkControlAclBlackList: display: "Network Control ACL Black List" + sort: 25 array: - name: "index" type: "int" value: "1" access: "read-only" - filter: '1~32' + filter: "1~32" display: "Index" comment: "1~32" - name: "ueIpv4" type: "string" value: "0.0.0.0" access: "read-write" - filter: '' + filter: "" display: "UE IPv4" comment: "" - name: "ueIpv4Mask" type: "string" value: "255.255.255.0" access: "read-write" - filter: '' + filter: "" display: "UE IPv4 Mask" comment: "" - name: "ueIpv6" type: "string" value: "" access: "read-write" - filter: '' + filter: "" display: "UE IPv6" comment: "" - name: "ueIpv6Prefix" type: "int" value: "64" access: "read-write" - filter: '1~128' + filter: "1~128" display: "UE IPv6 Prefix" comment: "" - name: "dstServerIpv4" type: "string" value: "0.0.0.0" access: "read-write" - filter: '' + filter: "" display: "Dst Server IPv4" comment: "" - name: "dstServerIpv4Mask" type: "string" value: "255.255.255.0" access: "read-write" - filter: '' + filter: "" display: "Dst Server IPv4 Mask" comment: "" - name: "dstServerIpv6" type: "string" value: "" access: "read-write" - filter: '' + filter: "" display: "Dst Server IPv6" comment: "" - name: "dstServerIpv6Prefix" type: "int" value: "64" access: "read-write" - filter: '1~128' + filter: "1~128" display: "Dst Server IPv6 Prefix" comment: "" networkControlDnsServerList: display: "Network Control DNS Server List" + sort: 27 array: - name: "index" type: "int" value: "1" access: "read-only" - filter: '1~32' + filter: "1~32" display: "Index" comment: "1~32" - name: "enabled" type: "int" value: "0" access: "read-write" - filter: '0~1' + filter: "0~1" display: "Enabled" comment: "0~1" - name: "dnsName" type: "string" value: "" access: "read-write" - filter: '' + filter: "" display: "DNS Name" comment: "" - name: "serverIpv4" type: "string" value: "0.0.0.0" access: "read-write" - filter: '' + filter: "" display: "Server IPv4" comment: "" - name: "serverIpv6" type: "string" value: "" access: "read-write" - filter: '' + filter: "" display: "Server IPv6" comment: "" dpiCommon: display: "DPI Common" + sort: 29 list: - name: "maxDetectPacketNum" type: "int" value: "20" access: "read-write" - filter: '' + filter: "" display: "Max Detect Packet Num" comment: "" - name: "httpProtoEnabled" type: "int" value: "0" access: "read-write" - filter: '0~1' + filter: "0~1" display: "HTTP Proto Enabled" comment: "" - name: "httpsProtoEnabled" type: "int" value: "0" access: "read-write" - filter: '0~1' + filter: "0~1" display: "HTTPS Proto Enabled" comment: "" dpiHeaderEnrichInfoList: display: "DPI Header Enrich Info List" + sort: 31 array: - name: "index" type: "int" value: "1" access: "read-only" - filter: '1~32' + filter: "1~32" display: "Index" comment: "1~32" - name: "type" type: "int" value: "0" access: "read-write" - filter: '' + filter: "" display: "Type" comment: "" - name: "name" type: "string" value: "" access: "read-write" - filter: '' + filter: "" display: "Name" comment: "" - name: "value" type: "string" value: "" access: "read-write" - filter: '' + filter: "" display: "Value" comment: "" dpiAppList: display: "DPI APP List" + sort: 33 array: - name: "index" type: "int" value: "1" access: "read-write" - filter: '1~32' + filter: "1~32" display: "Index" comment: "1~32" - name: "appName" type: "string" value: "" access: "read-write" - filter: '' + filter: "" display: "APP Name" comment: "" - name: "proxyEnabled" type: "int" value: "0" access: "read-write" - filter: '0~1' + filter: "0~1" display: "Proxy Enabled" comment: "" - name: "forceCheckType" type: "int" value: "0" access: "read-write" - filter: '0~1' + filter: "0~1" display: "Force Check Type" comment: "" - name: "n3InterfaceId" type: "int" value: "0" access: "read-write" - filter: '0~32' + filter: "0~32" display: "N3 Interface ID" comment: "" - name: "n6InterfaceId" type: "int" value: "0" access: "read-write" - filter: '0~32' + filter: "0~32" display: "N6 Interface ID" comment: "" - name: "ruleList" type: "int" value: "1" access: "read-write" - filter: '0~32' + filter: "0~32" display: "Rule List" comment: "" array: @@ -1429,34 +1446,34 @@ upf: type: "int" value: "1" access: "read-only" - filter: '1~32' + filter: "1~32" display: "Index" comment: "1~32" - name: "ruleId" type: "int" value: "" access: "read-write" - filter: '' + filter: "" display: "Rule ID" comment: "" - name: "regexMatch" type: "string" value: "" access: "read-write" - filter: '' + filter: "" display: "REGEX Match" comment: "" - name: "flowDescription" type: "string" value: "" access: "read-write" - filter: '' + filter: "" display: "Flow Description" comment: "" - name: "customName" type: "string" value: "" access: "read-write" - filter: '' + filter: "" display: "Custom Name" - comment: "" \ No newline at end of file + comment: "" diff --git a/crontask/makefile b/crontask/makefile index bbd9ee01..5dc6c1ea 100644 --- a/crontask/makefile +++ b/crontask/makefile @@ -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 diff --git a/crontask/tasks.go b/crontask/tasks.go index ab94d3fc..2d5dfb7a 100644 --- a/crontask/tasks.go +++ b/crontask/tasks.go @@ -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) + // } + // } + // } + // } + // } } diff --git a/data2html/makefile b/data2html/makefile index faa47e31..c6d46802 100644 --- a/data2html/makefile +++ b/data2html/makefile @@ -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) diff --git a/database/common/kpi_title.sql b/database/common/kpi_title.sql index d6b6fa7f..a000bbe5 100644 --- a/database/common/kpi_title.sql +++ b/database/common/kpi_title.sql @@ -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; diff --git a/database/common/ne_config.sql b/database/common/ne_config.sql index 24e201ce..af4241c7 100644 --- a/database/common/ne_config.sql +++ b/database/common/ne_config.sql @@ -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); diff --git a/features/file/file.go b/features/file/file.go index 8300f043..1906acf6 100644 --- a/features/file/file.go +++ b/features/file/file.go @@ -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) -} diff --git a/features/file/model.go b/features/file/model.go deleted file mode 100644 index 1de351f7..00000000 --- a/features/file/model.go +++ /dev/null @@ -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 -} diff --git a/features/file/service.go b/features/file/service.go deleted file mode 100644 index 3742b7a7..00000000 --- a/features/file/service.go +++ /dev/null @@ -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 -} diff --git a/features/state/getstate.go b/features/state/getstate.go index 482e9f51..9a79e508 100644 --- a/features/state/getstate.go +++ b/features/state/getstate.go @@ -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" diff --git a/features/state/state_linux.go b/features/state/state_linux.go index 4a4419f7..a0944a1a 100644 --- a/features/state/state_linux.go +++ b/features/state/state_linux.go @@ -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 { diff --git a/features/state/state_windows.go b/features/state/state_windows.go index ef37c5ca..3ddf4844 100644 --- a/features/state/state_windows.go +++ b/features/state/state_windows.go @@ -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 { diff --git a/features/state/sysinfo.go b/features/state/sysinfo.go index a9d0519a..f6f25b1c 100644 --- a/features/state/sysinfo.go +++ b/features/state/sysinfo.go @@ -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() diff --git a/go.mod b/go.mod index 181b5e64..47b699dd 100644 --- a/go.mod +++ b/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 ) diff --git a/go.sum b/go.sum index 6be4f0f1..0389d634 100644 --- a/go.sum +++ b/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= diff --git a/lib/file/file.go b/lib/file/file.go deleted file mode 100644 index a03e354c..00000000 --- a/lib/file/file.go +++ /dev/null @@ -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 -} diff --git a/lib/oauth/oauth.go b/lib/oauth/oauth.go index 2d456034..b261f35f 100644 --- a/lib/oauth/oauth.go +++ b/lib/oauth/oauth.go @@ -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 = "" diff --git a/lib/routes/routes.go b/lib/routes/routes.go index 896c2ea9..7892c7c9 100644 --- a/lib/routes/routes.go +++ b/lib/routes/routes.go @@ -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) diff --git a/makefile b/makefile index 9085764d..936cd59f 100644 --- a/makefile +++ b/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) diff --git a/mkpkg.sh b/mkpkg.sh index b8a43db3..37876362 100644 --- a/mkpkg.sh +++ b/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} diff --git a/restagent/makefile b/restagent/makefile index 95266785..668f1384 100644 --- a/restagent/makefile +++ b/restagent/makefile @@ -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 diff --git a/src/app.go b/src/app.go index 75dd363f..731e823d 100644 --- a/src/app.go +++ b/src/app.go @@ -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 { diff --git a/src/framework/config/config/config.default.yaml b/src/framework/config/config/config.default.yaml index f60e8a09..c082b4a3 100644 --- a/src/framework/config/config/config.default.yaml +++ b/src/framework/config/config/config.default.yaml @@ -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: # 密码 diff --git a/src/framework/constants/result/result.go b/src/framework/constants/result/result.go index dbd86302..19761ce4 100644 --- a/src/framework/constants/result/result.go +++ b/src/framework/constants/result/result.go @@ -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" ) diff --git a/src/framework/errorcatch/errorcatch.go b/src/framework/errorcatch/errorcatch.go index dc32b6d8..6e6f9e94 100644 --- a/src/framework/errorcatch/errorcatch.go +++ b/src/framework/errorcatch/errorcatch.go @@ -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))) } } diff --git a/src/framework/middleware/crypto_api.go b/src/framework/middleware/crypto_api.go new file mode 100644 index 00000000..bfb8f7a0 --- /dev/null +++ b/src/framework/middleware/crypto_api.go @@ -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()) +} diff --git a/src/framework/middleware/report.go b/src/framework/middleware/report.go index 680e7bad..3a6522ba 100644 --- a/src/framework/middleware/report.go +++ b/src/framework/middleware/report.go @@ -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) } } diff --git a/src/framework/utils/crypto/aes.go b/src/framework/utils/crypto/aes.go index 290eb718..fd39516b 100644 --- a/src/framework/utils/crypto/aes.go +++ b/src/framework/utils/crypto/aes.go @@ -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") } diff --git a/src/framework/utils/machine/launch.go b/src/framework/utils/machine/launch.go index 3839d146..60d3aa84 100644 --- a/src/framework/utils/machine/launch.go +++ b/src/framework/utils/machine/launch.go @@ -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") diff --git a/src/framework/utils/ua/ua.go b/src/framework/utils/ua/ua.go index 1a125315..d1115beb 100644 --- a/src/framework/utils/ua/ua.go +++ b/src/framework/utils/ua/ua.go @@ -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) } diff --git a/src/framework/vo/result/result.go b/src/framework/vo/result/result.go index 95310127..0a9d653a 100644 --- a/src/framework/vo/result/result.go +++ b/src/framework/vo/result/result.go @@ -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 } diff --git a/src/modules/common/common.go b/src/modules/common/common.go index bb6c68b0..3bbbd97a 100644 --- a/src/modules/common/common.go +++ b/src/modules/common/common.go @@ -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, ) } diff --git a/src/modules/monitor/controller/monitor.go b/src/modules/monitor/controller/monitor.go index 52e90373..67921d1a 100644 --- a/src/modules/monitor/controller/monitor.go +++ b/src/modules/monitor/controller/monitor.go @@ -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 } diff --git a/src/modules/monitor/controller/system_info.go b/src/modules/monitor/controller/system_info.go index a6d47764..d93e0ffa 100644 --- a/src/modules/monitor/controller/system_info.go +++ b/src/modules/monitor/controller/system_info.go @@ -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)) } diff --git a/src/modules/monitor/service/monitor.impl.go b/src/modules/monitor/service/monitor.impl.go index 2a4d4d1b..4152193f 100644 --- a/src/modules/monitor/service/monitor.impl.go +++ b/src/modules/monitor/service/monitor.impl.go @@ -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 结构体 diff --git a/src/modules/monitor/service/monitor_test.go b/src/modules/monitor/service/monitor_test.go index 11a87a8f..00ae73e8 100644 --- a/src/modules/monitor/service/monitor_test.go +++ b/src/modules/monitor/service/monitor_test.go @@ -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() { diff --git a/src/modules/monitor/service/system_info.impl.go b/src/modules/monitor/service/system_info.impl.go index 663499de..a071a792 100644 --- a/src/modules/monitor/service/system_info.impl.go +++ b/src/modules/monitor/service/system_info.impl.go @@ -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 } diff --git a/src/modules/network_element/ne_config_test.go b/src/modules/network_element/ne_config_test.go index 1678ddf7..cc626cee 100644 --- a/src/modules/network_element/ne_config_test.go +++ b/src/modules/network_element/ne_config_test.go @@ -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) diff --git a/src/modules/network_element/network_element.go b/src/modules/network_element/network_element.go index bc068e48..89cd4624 100644 --- a/src/modules/network_element/network_element.go +++ b/src/modules/network_element/network_element.go @@ -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, ) diff --git a/src/modules/network_element/repository/ne_host.impl.go b/src/modules/network_element/repository/ne_host.impl.go index fdc9f030..5988ad94 100644 --- a/src/modules/network_element/repository/ne_host.impl.go +++ b/src/modules/network_element/repository/ne_host.impl.go @@ -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 != "" { diff --git a/src/modules/network_element/service/ne_host.impl.go b/src/modules/network_element/service/ne_host.impl.go index 101c3c10..fa5fee26 100644 --- a/src/modules/network_element/service/ne_host.impl.go +++ b/src/modules/network_element/service/ne_host.impl.go @@ -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) } diff --git a/src/modules/network_element/service/ne_info.impl.go b/src/modules/network_element/service/ne_info.impl.go index a75bc5b3..0dedbb18 100644 --- a/src/modules/network_element/service/ne_info.impl.go +++ b/src/modules/network_element/service/ne_info.impl.go @@ -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 diff --git a/src/modules/ws/model/net_connect.go b/src/modules/ws/model/net_connect.go index 8116c285..945ede5d 100644 --- a/src/modules/ws/model/net_connect.go +++ b/src/modules/ws/model/net_connect.go @@ -1,6 +1,6 @@ package model -import "github.com/shirou/gopsutil/v3/net" +import "github.com/shirou/gopsutil/v4/net" // NetConnectData 网络连接进程数据 type NetConnectData struct { diff --git a/src/modules/ws/processor/net_connect.go b/src/modules/ws/processor/net_connect.go index 6530d0c1..187de88b 100644 --- a/src/modules/ws/processor/net_connect.go +++ b/src/modules/ws/processor/net_connect.go @@ -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 获取网络连接进程 diff --git a/src/modules/ws/processor/ps_process.go b/src/modules/ws/processor/ps_process.go index 45fe6ff3..660cc765 100644 --- a/src/modules/ws/processor/ps_process.go +++ b/src/modules/ws/processor/ps_process.go @@ -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 获取进程数据 diff --git a/sshsvc/makefile b/sshsvc/makefile index 5498fbcc..81efdcb6 100644 --- a/sshsvc/makefile +++ b/sshsvc/makefile @@ -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 diff --git a/tools/websocket/load.go b/tools/websocket/load.go deleted file mode 100644 index 37f6127e..00000000 --- a/tools/websocket/load.go +++ /dev/null @@ -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) -} diff --git a/tools/websocket/tt.go b/tools/websocket/tt.go deleted file mode 100644 index a45007a2..00000000 --- a/tools/websocket/tt.go +++ /dev/null @@ -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 - } - */ -} diff --git a/tools/websocket/tt.yaml b/tools/websocket/tt.yaml deleted file mode 100644 index 9662b3dd..00000000 --- a/tools/websocket/tt.yaml +++ /dev/null @@ -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 diff --git a/tools/websocket/ttt.go b/tools/websocket/ttt.go deleted file mode 100644 index db761727..00000000 --- a/tools/websocket/ttt.go +++ /dev/null @@ -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) -} diff --git a/tools/websocket/websocket.go b/tools/websocket/websocket.go deleted file mode 100644 index 011d3fef..00000000 --- a/tools/websocket/websocket.go +++ /dev/null @@ -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 -} diff --git a/tools/websocket/webtel.go b/tools/websocket/webtel.go deleted file mode 100644 index 9fe3ad62..00000000 --- a/tools/websocket/webtel.go +++ /dev/null @@ -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 - } - - } - */ -} diff --git a/tools/websocket/webtelnet.go b/tools/websocket/webtelnet.go deleted file mode 100644 index 41b066c3..00000000 --- a/tools/websocket/webtelnet.go +++ /dev/null @@ -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 -}