From 344ff25aea100cae2852cd31e365c0aa3b369b42 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Mon, 11 Sep 2023 21:04:17 +0800 Subject: [PATCH] =?UTF-8?q?fix=E5=8F=91=E9=80=81MML=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/core/mml_client/send.go | 54 ++++++++++++++++++++++++++++--------- 1 file changed, 42 insertions(+), 12 deletions(-) diff --git a/lib/core/mml_client/send.go b/lib/core/mml_client/send.go index 7a637f57..09a008f6 100644 --- a/lib/core/mml_client/send.go +++ b/lib/core/mml_client/send.go @@ -5,10 +5,10 @@ import ( "strings" ) -// 发送MML +// 发送MML原始消息 // ip 网元IP地址 // msg 指令 -func MMLSendMsgToString(ip, msg string) (string, error) { +func MMLSendMsg(ip, msg string) (string, error) { // 创建MMLClient实例 client, err := NewMMLClient(ip) if err != nil { @@ -31,23 +31,55 @@ func MMLSendMsgToString(ip, msg string) (string, error) { return data, nil } +// 发送MML +// ip 网元IP地址 +// msg 指令 +func MMLSendMsgToString(ip, msg string) (string, error) { + // 发送获取数据 + str, err := MMLSendMsg(ip, msg) + if err != nil { + return "", err + } + + // 截断 + index := strings.Index(str, "\nUDM>") + if index != -1 { + str = str[:index] + str = strings.ToLower(str) + } + + // 命令成功 + if strings.HasPrefix(str, "command ok") { + return str, nil + } + + return "", fmt.Errorf(str) +} + // 发送MML // ip 网元IP地址 // msg 指令 func MMLSendMsgToMap(ip, msg string) (map[string]string, error) { // 发送获取数据 - str, err := MMLSendMsgToString(ip, msg) + str, err := MMLSendMsg(ip, msg) + if err != nil { + return nil, err + } + + // 无数据 + if strings.HasPrefix(str, "No Auth Data") { + return nil, fmt.Errorf("no auth data") + } // 初始化一个map用于存储拆分后的键值对 m := make(map[string]string) var items []string - // 按照分隔符"\r\n"进行拆分 if strings.Contains(str, "\r\n") { + // 按照分隔符"\r\n"进行拆分 items = strings.Split(str, "\r\n") - } - // 按照分隔符"\n"进行拆分 - if strings.Contains(str, "\n") { + } else if strings.Contains(str, "\n") { + // 按照分隔符"\n"进行拆分 items = strings.Split(str, "\n") } @@ -55,13 +87,11 @@ func MMLSendMsgToMap(ip, msg string) (map[string]string, error) { for _, item := range items { var pair []string - // 按照分隔符"="进行拆分键值对 if strings.Contains(item, "=") { + // 按照分隔符"="进行拆分键值对 pair = strings.Split(item, "=") - } - - // 按照分隔符":"进行拆分键值对 - if strings.Contains(item, ":") { + } else if strings.Contains(item, ":") { + // 按照分隔符":"进行拆分键值对 pair = strings.Split(item, ":") }