fix发送MML数据格式解析

This commit is contained in:
TsMask
2023-09-11 21:04:17 +08:00
parent f9596f6363
commit 344ff25aea

View File

@@ -5,10 +5,10 @@ import (
"strings" "strings"
) )
// 发送MML // 发送MML原始消息
// ip 网元IP地址 // ip 网元IP地址
// msg 指令 // msg 指令
func MMLSendMsgToString(ip, msg string) (string, error) { func MMLSendMsg(ip, msg string) (string, error) {
// 创建MMLClient实例 // 创建MMLClient实例
client, err := NewMMLClient(ip) client, err := NewMMLClient(ip)
if err != nil { if err != nil {
@@ -31,23 +31,55 @@ func MMLSendMsgToString(ip, msg string) (string, error) {
return data, nil 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 // 发送MML
// ip 网元IP地址 // ip 网元IP地址
// msg 指令 // msg 指令
func MMLSendMsgToMap(ip, msg string) (map[string]string, error) { 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用于存储拆分后的键值对 // 初始化一个map用于存储拆分后的键值对
m := make(map[string]string) m := make(map[string]string)
var items []string var items []string
// 按照分隔符"\r\n"进行拆分
if strings.Contains(str, "\r\n") { if strings.Contains(str, "\r\n") {
// 按照分隔符"\r\n"进行拆分
items = strings.Split(str, "\r\n") items = strings.Split(str, "\r\n")
} } else if strings.Contains(str, "\n") {
// 按照分隔符"\n"进行拆分 // 按照分隔符"\n"进行拆分
if strings.Contains(str, "\n") {
items = strings.Split(str, "\n") items = strings.Split(str, "\n")
} }
@@ -55,13 +87,11 @@ func MMLSendMsgToMap(ip, msg string) (map[string]string, error) {
for _, item := range items { for _, item := range items {
var pair []string var pair []string
// 按照分隔符"="进行拆分键值对
if strings.Contains(item, "=") { if strings.Contains(item, "=") {
// 按照分隔符"="进行拆分键值对
pair = strings.Split(item, "=") pair = strings.Split(item, "=")
} } else if strings.Contains(item, ":") {
// 按照分隔符":"进行拆分键值对
// 按照分隔符":"进行拆分键值对
if strings.Contains(item, ":") {
pair = strings.Split(item, ":") pair = strings.Split(item, ":")
} }