From c8187e55ab19128caa16bb02b7f9bca57b718ebc Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Wed, 9 Apr 2025 19:04:27 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=20mml=E8=A1=A5=E5=85=85UDM=E7=89=B9?= =?UTF-8?q?=E6=AE=8A=E5=91=BD=E4=BB=A4=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- database/common/mml_subscriber.sql | 11 +++++++---- database/install/sys_role_menu.sql | 2 ++ database/omc_db.sqlite | Bin 64114688 -> 64114688 bytes database/upgrade/upg_20250409.sql | 25 +++++++++++++++++++++++++ features/mml/mml.go | 10 ++++++++++ 5 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 database/upgrade/upg_20250409.sql diff --git a/database/common/mml_subscriber.sql b/database/common/mml_subscriber.sql index 6179e2e2..f2b4a4dd 100644 --- a/database/common/mml_subscriber.sql +++ b/database/common/mml_subscriber.sql @@ -43,7 +43,7 @@ INSERT INTO `mml_subscriber` VALUES (592, 'UDM', 'authdataManagement', 'Authenti INSERT INTO `mml_subscriber` VALUES (593, 'UDM', 'authdataManagement', 'Authentication Data Management', 'baa', 'authdat', 'Batch Add Auth Data', '[{\"comment\":\"\",\"display\":\"Starting IMSI\",\"filter\":\"\",\"name\":\"start_imsi\",\"optional\":\"false\",\"type\":\"string\"},{\"comment\":\"\",\"display\":\"Auth Data Number\",\"filter\":\"\",\"name\":\"sub_num\",\"optional\":\"false\",\"type\":\"int\"},{\"comment\":\"\",\"display\":\"KI\",\"filter\":\"\",\"name\":\"ki\",\"optional\":\"false\",\"type\":\"string\"},{\"comment\":\"\",\"display\":\"AMF\",\"filter\":\"\",\"name\":\"amf\",\"optional\":\"false\",\"type\":\"string\"},{\"comment\":\"\",\"display\":\"Algo Index\",\"filter\":\"0~15\",\"name\":\"algo\",\"optional\":\"false\",\"type\":\"int\"},{\"comment\":\"\",\"display\":\"OPC\",\"filter\":\"\",\"name\":\"opc\",\"optional\":\"true\",\"type\":\"string\"}]', 'Active'); INSERT INTO `mml_subscriber` VALUES (594, 'UDM', 'authdataManagement', 'Authentication Data Management', 'bde', 'authdat', 'Batch Delete Auth Data', '[{\"comment\":\"\",\"display\":\"Starting IMSI\",\"filter\":\"\",\"name\":\"start_imsi\",\"optional\":\"false\",\"type\":\"string\"},{\"comment\":\"\",\"display\":\"Auth Data Number\",\"filter\":\"\",\"name\":\"sub_num\",\"optional\":\"false\",\"type\":\"int\"}]', 'Active'); INSERT INTO `mml_subscriber` VALUES (595, 'UDM', 'authdataManagement', 'Authentication Data Management', 'import', 'authdat', 'Import Auth Data From File', '[{\"comment\":\"\",\"display\":\"Path File\",\"filter\":\".txt\",\"name\":\"path\",\"optional\":\"false\",\"type\":\"file\"}]', 'Active'); -INSERT INTO `mml_subscriber` VALUES (596, 'UDM', 'authdataManagement', 'Authentication Data Management', 'export', 'authdat', 'Export Auth Data to File', '[{\"comment\":\"\",\"display\":\"Path File\",\"filter\":\"\",\"name\":\"path\",\"optional\":\"false\",\"type\":\"string\"}]', 'Active'); +INSERT INTO `mml_subscriber` VALUES (596, 'UDM', 'authdataManagement', 'Authentication Data Management', 'export', 'authdat', 'Export Auth Data to File', '[{\"comment\":\"\",\"display\":\"Path File\",\"filter\":\"\",\"name\":\"path\",\"optional\":\"false\",\"type\":\"string\"}]', 'Inactive'); INSERT INTO `mml_subscriber` VALUES (597, 'UDM', 'subscriberManagement', 'Subcriber Management', 'dsp', 'udmuser', 'Display UDM Subscriber', '[{\"comment\":\"\",\"display\":\"IMSI\",\"filter\":\"\",\"name\":\"imsi\",\"optional\":\"false\",\"type\":\"string\"}]', 'Active'); INSERT INTO `mml_subscriber` VALUES (598, 'UDM', 'subscriberManagement', 'Subcriber Management', 'add', 'udmuser', 'Add UDM Subscriber', '[{\"comment\":\"\",\"display\":\"IMSI\",\"filter\":\"\",\"name\":\"imsi\",\"optional\":\"false\",\"type\":\"string\"},{\"comment\":\"\",\"display\":\"MSISDN\",\"filter\":\"\",\"name\":\"msisdn\",\"optional\":\"false\",\"type\":\"string\"},{\"comment\":\"\",\"display\":\"5G UE AMBR\",\"filter\":\"\",\"name\":\"ambr\",\"optional\":\"true\",\"type\":\"string\"},{\"comment\":\"\",\"display\":\"5G SNSSAIs\",\"filter\":\"\",\"name\":\"nssai\",\"optional\":\"true\",\"type\":\"string\"},{\"comment\":\"\",\"display\":\"5G Forbidden Areas\",\"filter\":\"\",\"name\":\"arfb\",\"optional\":\"true\",\"type\":\"string\"},{\"comment\":\"\",\"display\":\"5G Service Area Restriction\",\"filter\":\"\",\"name\":\"sar\",\"optional\":\"true\",\"type\":\"string\"},{\"comment\":\"\",\"display\":\"RAT Type\",\"filter\":\"\",\"name\":\"rat\",\"optional\":\"true\",\"type\":\"string\"},{\"comment\":\"\",\"display\":\"Core Network\",\"filter\":\"\",\"name\":\"cn\",\"optional\":\"true\",\"type\":\"string\"},{\"comment\":\"\",\"display\":\"5G SMF Selection Data\",\"filter\":\"\",\"name\":\"smf_sel\",\"optional\":\"true\",\"type\":\"string\"},{\"comment\":\"\",\"display\":\"5G SM Data\",\"filter\":\"\",\"name\":\"sm_data\",\"optional\":\"false\",\"type\":\"string\"},{\"comment\":\"Specify mobile phone static IP address, and \'-\' indicates the use of dynamic IP address\",\"display\":\"4G Static IP\",\"filter\":\"\",\"name\":\"static_ip\",\"optional\":\"true\",\"type\":\"string\"},{\"comment\":\"\",\"display\":\"4G Context ID\",\"filter\":\"\",\"name\":\"context_id\",\"optional\":\"true\",\"type\":\"int\"},{\"comment\":\"\",\"display\":\"4G APN Context\",\"filter\":\"\",\"name\":\"apn_context\",\"optional\":\"true\",\"type\":\"int\"},{\"comment\":\"\",\"display\":\"4G EPS User Template Name\",\"filter\":\"\",\"name\":\"epstpl\",\"optional\":\"true\",\"type\":\"string\"},{\"comment\":\"\",\"display\":\"4G EPS Flag\",\"filter\":\"{\\\"0\\\":\\\"Disable\\\", \\\"1\\\":\\\"Enable\\\"}\",\"name\":\"eps_flag\",\"optional\":\"true\",\"type\":\"enum\"},{\"comment\":\"\",\"display\":\"4G EPS ODB\",\"filter\":\"\",\"name\":\"eps_odb\",\"optional\":\"true\",\"type\":\"int\"},{\"comment\":\"\",\"display\":\"4G HPLMN ODB\",\"filter\":\"\",\"name\":\"hplmn_odb\",\"optional\":\"true\",\"type\":\"int\"},{\"comment\":\"\",\"display\":\"4G Access Restriction Data\",\"filter\":\"\",\"name\":\"ard\",\"optional\":\"true\",\"type\":\"int\"}]', 'Active'); INSERT INTO `mml_subscriber` VALUES (599, 'UDM', 'subscriberManagement', 'Subcriber Management', 'del', 'udmuser', 'Delete Subscriber Data', '[{\"comment\":\"\",\"display\":\"IMSI\",\"filter\":\"\",\"name\":\"imsi\",\"optional\":\"false\",\"type\":\"string\"}]', 'Active'); @@ -53,8 +53,11 @@ INSERT INTO `mml_subscriber` VALUES (602, 'UDM', 'subscriberManagement', 'Subcri INSERT INTO `mml_subscriber` VALUES (603, 'UDM', 'subscriberManagement', 'Subcriber Management', 'bmd', 'udmuser', 'Batch Modify Subscriber Data', '[{\"comment\":\"\",\"display\":\"Starting IMSI\",\"filter\":\"\",\"name\":\"start_imsi\",\"optional\":\"false\",\"type\":\"string\"},{\"comment\":\"\",\"display\":\"Subcribers Number\",\"filter\":\"\",\"name\":\"sub_num\",\"optional\":\"false\",\"type\":\"string\"},{\"comment\":\"\",\"display\":\"5G UE AMBR\",\"filter\":\"\",\"name\":\"ambr\",\"optional\":\"true\",\"type\":\"string\"},{\"comment\":\"\",\"display\":\"5G SNSSAIs\",\"filter\":\"\",\"name\":\"nssai\",\"optional\":\"true\",\"type\":\"string\"},{\"comment\":\"\",\"display\":\"5G Forbidden Areas\",\"filter\":\"\",\"name\":\"arfb\",\"optional\":\"true\",\"type\":\"string\"},{\"comment\":\"\",\"display\":\"5G Service Area Restriction\",\"filter\":\"\",\"name\":\"sar\",\"optional\":\"true\",\"type\":\"string\"},{\"comment\":\"\",\"display\":\"RAT Type\",\"filter\":\"\",\"name\":\"rat\",\"optional\":\"true\",\"type\":\"string\"},{\"comment\":\"\",\"display\":\"Core Network\",\"filter\":\"\",\"name\":\"cn\",\"optional\":\"true\",\"type\":\"string\"},{\"comment\":\"\",\"display\":\"5G SMF Selection Data\",\"filter\":\"\",\"name\":\"smf_sel\",\"optional\":\"true\",\"type\":\"string\"},{\"comment\":\"\",\"display\":\"5G SM Data\",\"filter\":\"\",\"name\":\"sm_data\",\"optional\":\"true\",\"type\":\"string\"},{\"comment\":\"Specify mobile phone static IP address, and \'-\' indicates the use of dynamic IP address\",\"display\":\"4G Static IP\",\"filter\":\"\",\"name\":\"static_ip\",\"optional\":\"true\",\"type\":\"string\"},{\"comment\":\"\",\"display\":\"4G Context ID\",\"filter\":\"\",\"name\":\"context_id\",\"optional\":\"true\",\"type\":\"int\"},{\"comment\":\"\",\"display\":\"4G APN Context\",\"filter\":\"\",\"name\":\"apn_context\",\"optional\":\"true\",\"type\":\"int\"},{\"comment\":\"\",\"display\":\"4G EPS User Template Name\",\"filter\":\"\",\"name\":\"epstpl\",\"optional\":\"true\",\"type\":\"string\"},{\"comment\":\"\",\"display\":\"4G EPS Flag\",\"filter\":\"{\\\"0\\\":\\\"Disable\\\", \\\"1\\\":\\\"Enable\\\"}\",\"name\":\"eps_flag\",\"optional\":\"true\",\"type\":\"enum\"},{\"comment\":\"\",\"display\":\"4G EPS ODB\",\"filter\":\"\",\"name\":\"eps_odb\",\"optional\":\"true\",\"type\":\"int\"},{\"comment\":\"\",\"display\":\"4G HPLMN ODB\",\"filter\":\"\",\"name\":\"hplmn_odb\",\"optional\":\"true\",\"type\":\"int\"},{\"comment\":\"\",\"display\":\"4G Access Restriction Data\",\"filter\":\"\",\"name\":\"ard\",\"optional\":\"true\",\"type\":\"int\"}]', 'Active'); INSERT INTO `mml_subscriber` VALUES (604, 'UDM', 'subscriberManagement', 'Subcriber Management', 'import', 'udmuser', 'Import Subscriber Data From File', '[{\"comment\":\"\",\"display\":\"Path File\",\"filter\":\".txt\",\"name\":\"path\",\"optional\":\"false\",\"type\":\"file\"}]', 'Active'); INSERT INTO `mml_subscriber` VALUES (605, 'UDM', 'subscriberManagement', 'Subcriber Management', 'upload', 'udmuser', 'Upload Subscriber Data', '[{\"comment\":\"\",\"display\":\"Path File\",\"filter\":\".txt\",\"name\":\"path\",\"optional\":\"false\",\"type\":\"file\"}]', 'Inactive'); -INSERT INTO `mml_subscriber` VALUES (606, 'UDM', 'subscriberManagement', 'Subcriber Management', 'export', 'udmuser', 'Export Subscriber Data to File', '[{\"comment\":\"\",\"display\":\"Path File\",\"filter\":\"\",\"name\":\"path\",\"optional\":\"false\",\"type\":\"string\"}]', 'Active'); -INSERT INTO `mml_subscriber` VALUES (607, 'UDM', 'subscriberManagement', 'Subcriber Management', 'sync', 'start', 'Sync UDM Data From Public UDM', 'null', 'Active'); -INSERT INTO `mml_subscriber` VALUES (608, 'UDM', 'subscriberManagement', 'Subcriber Management', 'sync', 'state', 'Query State of Sync Task', 'null', 'Active'); +INSERT INTO `mml_subscriber` VALUES (606, 'UDM', 'subscriberManagement', 'Subcriber Management', 'export', 'udmuser', 'Export Subscriber Data to File', '[{\"comment\":\"\",\"display\":\"Path File\",\"filter\":\"\",\"name\":\"path\",\"optional\":\"false\",\"type\":\"string\"}]', 'Inactive'); +INSERT INTO `mml_subscriber` VALUES (607, 'UDM', 'subscriberManagement', 'Subcriber Management', 'sync', 'start', 'Sync UDM Data From Public UDM', 'null', 'Inactive'); +INSERT INTO `mml_subscriber` VALUES (608, 'UDM', 'subscriberManagement', 'Subcriber Management', 'sync', 'state', 'Query State of Sync Task', 'null', 'Inactive'); +INSERT INTO `mml_subscriber` VALUES (609, 'UDM', 'other', 'Other', 'set suci', '', 'Set SUCI', '[{\"comment\":\"\",\"display\":\"ID\",\"filter\":\"\",\"name\":\"id\",\"optional\":\"false\",\"type\":\"string\"},{\"comment\":\"\",\"display\":\"Scheme\",\"filter\":\"\",\"name\":\"scheme\",\"optional\":\"false\",\"type\":\"string\"},{\"comment\":\"\",\"display\":\"Private Key\",\"filter\":\"\",\"name\":\"privatekey\",\"optional\":\"false\",\"type\":\"string\"},{\"comment\":\"\",\"display\":\"Public Key\",\"filter\":\"\",\"name\":\"publickey\",\"optional\":\"false\",\"type\":\"string\"}]', 'Active'); +INSERT INTO `mml_subscriber` VALUES (610, 'UDM', 'other', 'Other', 'set op', '', 'Set OP', '[{\"comment\":\"\",\"display\":\"ID\",\"filter\":\"\",\"name\":\"id\",\"optional\":\"false\",\"type\":\"string\"},{\"comment\":\"\",\"display\":\"Value\",\"filter\":\"\",\"name\":\"value\",\"optional\":\"false\",\"type\":\"string\"}]', 'Active'); +INSERT INTO `mml_subscriber` VALUES (611, 'UDM', 'other', 'Other', 'dec key', '', 'Check Key Profile', 'null', 'Active'); SET FOREIGN_KEY_CHECKS = 1; diff --git a/database/install/sys_role_menu.sql b/database/install/sys_role_menu.sql index 76bc1502..14fe515e 100644 --- a/database/install/sys_role_menu.sql +++ b/database/install/sys_role_menu.sql @@ -67,6 +67,8 @@ INSERT INTO `sys_role_menu` VALUES (2, 2096); INSERT INTO `sys_role_menu` VALUES (2, 2097); INSERT INTO `sys_role_menu` VALUES (2, 2099); INSERT INTO `sys_role_menu` VALUES (2, 2102); +INSERT INTO `sys_role_menu` VALUES (2, 2107); +INSERT INTO `sys_role_menu` VALUES (2, 2109); INSERT INTO `sys_role_menu` VALUES (2, 2113); INSERT INTO `sys_role_menu` VALUES (2, 2114); INSERT INTO `sys_role_menu` VALUES (2, 2118); diff --git a/database/omc_db.sqlite b/database/omc_db.sqlite index 6bd9008bf60152ab2938b47a2980a4d5b937115e..a13b2d156c3b64ad3a36ff5c953de3b51a779f14 100644 GIT binary patch delta 6406 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 F{{i})Jq!Q< delta 6049 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 diff --git a/database/upgrade/upg_20250409.sql b/database/upgrade/upg_20250409.sql new file mode 100644 index 00000000..305c0bda --- /dev/null +++ b/database/upgrade/upg_20250409.sql @@ -0,0 +1,25 @@ +PRAGMA foreign_keys = false; + +DELETE FROM "mml_subscriber" WHERE "id" = 609; +INSERT INTO "mml_subscriber" ("id", "ne_type", "category", "cat_display", "operation", "object", "mml_display", "param_json", "status") VALUES (609, 'UDM', 'other', 'Other', 'set suci', '', 'Set SUCI', '[{"comment":"","display":"ID","filter":"","name":"id","optional":"false","type":"string"},{"comment":"","display":"Scheme","filter":"","name":"scheme","optional":"false","type":"string"},{"comment":"","display":"Private Key","filter":"","name":"privatekey","optional":"false","type":"string"},{"comment":"","display":"Public Key","filter":"","name":"publickey","optional":"false","type":"string"}]', 'Active'); + +DELETE FROM "mml_subscriber" WHERE "id" = 610; +INSERT INTO "mml_subscriber" ("id", "ne_type", "category", "cat_display", "operation", "object", "mml_display", "param_json", "status") VALUES (610, 'UDM', 'other', 'Other', 'set op', '', 'Set OP', '[{"comment":"","display":"ID","filter":"","name":"id","optional":"false","type":"string"},{"comment":"","display":"Value","filter":"","name":"value","optional":"false","type":"string"}]', 'Active'); + +DELETE FROM "mml_subscriber" WHERE "id" = 611; +INSERT INTO "mml_subscriber" ("id", "ne_type", "category", "cat_display", "operation", "object", "mml_display", "param_json", "status") VALUES (611, 'UDM', 'other', 'Other', 'dec key', '', 'Check Key Profile', 'null', 'Active'); + +UPDATE "mml_subscriber" SET "ne_type" = 'UDM', "category" = 'authdataManagement', "cat_display" = 'Authentication Data Management', "operation" = 'export', "object" = 'authdat', "mml_display" = 'Export Auth Data to File', "param_json" = '[{"comment":"","display":"Path File","filter":"","name":"path","optional":"false","type":"string"}]', "status" = 'Inactive' WHERE "id" = 596; + +UPDATE "mml_subscriber" SET "ne_type" = 'UDM', "category" = 'subscriberManagement', "cat_display" = 'Subcriber Management', "operation" = 'export', "object" = 'udmuser', "mml_display" = 'Export Subscriber Data to File', "param_json" = '[{"comment":"","display":"Path File","filter":"","name":"path","optional":"false","type":"string"}]', "status" = 'Inactive' WHERE "id" = 606; + +UPDATE "mml_subscriber" SET "ne_type" = 'UDM', "category" = 'subscriberManagement', "cat_display" = 'Subcriber Management', "operation" = 'sync', "object" = 'start', "mml_display" = 'Sync UDM Data From Public UDM', "param_json" = 'null', "status" = 'Inactive' WHERE "id" = 607; + +UPDATE "mml_subscriber" SET "ne_type" = 'UDM', "category" = 'subscriberManagement', "cat_display" = 'Subcriber Management', "operation" = 'sync', "object" = 'state', "mml_display" = 'Query State of Sync Task', "param_json" = 'null', "status" = 'Inactive' WHERE "id" = 608; + +DELETE FROM "sys_role_menu" WHERE "role_id" = 2 AND "menu_id" = 2107; +INSERT INTO `sys_role_menu` VALUES (2, 2107); +DELETE FROM "sys_role_menu" WHERE "role_id" = 2 AND "menu_id" = 2109; +INSERT INTO `sys_role_menu` VALUES (2, 2109); + +PRAGMA foreign_keys = true; \ No newline at end of file diff --git a/features/mml/mml.go b/features/mml/mml.go index 8c1b07a5..97a23de6 100644 --- a/features/mml/mml.go +++ b/features/mml/mml.go @@ -616,6 +616,16 @@ func PostMMLToNF(w http.ResponseWriter, r *http.Request) { result := re1.ReplaceAllString(string(buf[0:n-len(neType)-2]), "") result = re2.ReplaceAllString(result, "") mmlResult = append(mmlResult, result) + + // UDM 特殊命令处理 + if neType == "UDM" && strings.Contains(mml, "dec key") { + output, err := neService.NewNeInfo.NeRunSSHCmd(neInfo.NeType, neInfo.NeId, "cat /usr/local/etc/udm/ueKeyProfile.tmp") + if err != nil { + mmlResult = append(mmlResult, err.Error()) + } else { + mmlResult = append(mmlResult, output) + } + } } }