fix: MML命令连接改为网元信息配置telnet
This commit is contained in:
@@ -69,15 +69,11 @@ redis:
|
||||
# sleep: time delay for after write buffer (millisecond)
|
||||
# deadLine: timeout for io read and write (second)
|
||||
mml:
|
||||
port: 4100
|
||||
port2: 5002
|
||||
sleep: 200
|
||||
deadLine: 10
|
||||
sizeRow: 600
|
||||
sizeCol: 128
|
||||
bufferSize: 65535
|
||||
user: admin
|
||||
password: admin
|
||||
mmlHome: ./mmlhome
|
||||
|
||||
# Tracking configuration
|
||||
|
||||
@@ -10,15 +10,15 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"be.ems/lib/dborm"
|
||||
"be.ems/lib/core/ctx"
|
||||
"be.ems/lib/global"
|
||||
"be.ems/lib/log"
|
||||
"be.ems/lib/mmlp"
|
||||
"be.ems/lib/services"
|
||||
"be.ems/restagent/config"
|
||||
|
||||
tokenConst "be.ems/src/framework/constants/token"
|
||||
"github.com/gorilla/mux"
|
||||
neModel "be.ems/src/modules/network_element/model"
|
||||
neService "be.ems/src/modules/network_element/service"
|
||||
)
|
||||
|
||||
// const (
|
||||
@@ -74,30 +74,35 @@ func InitMML() {
|
||||
func PostMML2ToNF(w http.ResponseWriter, r *http.Request) {
|
||||
log.Info("PostMML2ToNF processing... ")
|
||||
|
||||
vars := mux.Vars(r)
|
||||
neType := vars["elementTypeValue"]
|
||||
neInfo := new(dborm.NeInfo)
|
||||
params := r.URL.Query()
|
||||
neId := params["ne_id"]
|
||||
neInfo, err := dborm.XormGetNeInfo(neType, neId[0])
|
||||
if err != nil {
|
||||
log.Error("Failed to dborm.XormGetNeInfo:", err)
|
||||
services.ResponseInternalServerError500ProcessError(w, err)
|
||||
neType := ctx.GetParam(r, "elementTypeValue")
|
||||
neId := ctx.GetQuery(r, "ne_id")
|
||||
if neId == "" {
|
||||
log.Error("NOT FOUND ne_id")
|
||||
services.ResponseBadRequest400WrongParamValue(w)
|
||||
return
|
||||
}
|
||||
log.Debug("neType:", neType, "neId", neId)
|
||||
|
||||
neInfoArr := neService.NewNeInfoImpl.SelectList(neModel.NeInfo{NeType: neType, NeId: neId}, false, true)
|
||||
if len(neInfoArr) < 1 {
|
||||
services.ResponseInternalServerError500DatabaseOperationFailed(w)
|
||||
return
|
||||
}
|
||||
neInfo := neInfoArr[0]
|
||||
if neInfo.NeId != neId || neInfo.IP == "" || len(neInfo.Hosts) < 2 {
|
||||
services.ResponseWithJson(w, 200, map[string]any{
|
||||
"code": 0,
|
||||
"msg": "neInfo not found",
|
||||
})
|
||||
return
|
||||
}
|
||||
telnetHost := neInfo.Hosts[1]
|
||||
|
||||
buf := make([]byte, BUFFER_SIZE)
|
||||
var n int
|
||||
var mmlResult []string
|
||||
port2 := 5002
|
||||
if config.GetYamlConfig().MML.Port2 != 0 {
|
||||
port2 = config.GetYamlConfig().MML.Port2
|
||||
}
|
||||
|
||||
if neInfo != nil {
|
||||
hostMML := fmt.Sprintf("%s:%d", neInfo.Ip, port2)
|
||||
hostMML := fmt.Sprintf("%s:%d", telnetHost.Addr, telnetHost.Port)
|
||||
conn, err := net.Dial("tcp", hostMML)
|
||||
//conn, err := net.Dial("tcp", hostMML)
|
||||
if err != nil {
|
||||
errMsg := fmt.Sprintf("Failed to dial %s: %v", hostMML, err)
|
||||
log.Error(errMsg)
|
||||
@@ -129,7 +134,7 @@ func PostMML2ToNF(w http.ResponseWriter, r *http.Request) {
|
||||
}) // 发送设置 WINDOW SIZE
|
||||
|
||||
conn.SetDeadline(time.Now().Add(TIME_DEAD_LINE * time.Second))
|
||||
loginStr := fmt.Sprintf("%s\n%s\n", config.GetYamlConfig().MML.User, config.GetYamlConfig().MML.Password)
|
||||
loginStr := fmt.Sprintf("%s\n%s\n", telnetHost.User, telnetHost.Password)
|
||||
_, err = conn.Write([]byte(loginStr))
|
||||
if err != nil {
|
||||
log.Error("Failed to write:", err)
|
||||
@@ -194,8 +199,6 @@ func PostMML2ToNF(w http.ResponseWriter, r *http.Request) {
|
||||
mmlResult = append(mmlResult, result)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
response := Response{mmlResult}
|
||||
services.ResponseWithJson(w, http.StatusOK, response)
|
||||
}
|
||||
@@ -218,62 +221,39 @@ func PostMMLToNF(w http.ResponseWriter, r *http.Request) {
|
||||
// TIME_DEAD_LINE = time.Duration(config.GetYamlConfig().MML.DeadLine)
|
||||
// }
|
||||
|
||||
pack := "mml"
|
||||
vars := mux.Vars(r)
|
||||
module := vars["managedType"]
|
||||
neType := vars["elementTypeValue"]
|
||||
params := r.URL.Query()
|
||||
neId := params["ne_id"]
|
||||
if len(neId) == 0 {
|
||||
neType := ctx.GetParam(r, "elementTypeValue")
|
||||
neId := ctx.GetQuery(r, "ne_id")
|
||||
if neId == "" {
|
||||
log.Error("NOT FOUND ne_id")
|
||||
services.ResponseBadRequest400WrongParamValue(w)
|
||||
return
|
||||
}
|
||||
log.Debug("neType:", neType, "neId", neId)
|
||||
|
||||
log.Debugf("method:%s, managementType:%s dbname:%s, tbname:%s pack:%s", r.Method, module, neType, neId[0], pack)
|
||||
|
||||
var buf [20 * 1024]byte
|
||||
//buf := make([]byte, 0)
|
||||
var n int
|
||||
var mmlResult []string
|
||||
|
||||
// exist, err := services.CheckUserPermission(token, strings.ToLower(r.Method), module, neType, neId[0], pack)
|
||||
// if err != nil {
|
||||
// log.Error("Failed to get permission:", err)
|
||||
// errMsg := fmt.Sprintf("RetCode = -1 operation failed: do not have the operation permissions")
|
||||
// log.Error(errMsg)
|
||||
// mmlResult = append(mmlResult, errMsg)
|
||||
// response := Response{mmlResult}
|
||||
// services.ResponseWithJson(w, http.StatusOK, response)
|
||||
// //services.ResponseForbidden403NotPermission(w)
|
||||
// return
|
||||
// }
|
||||
// if !exist {
|
||||
// log.Error("Not permission!")
|
||||
// errMsg := fmt.Sprintf("RetCode = -1 operation failed: do not have the operation permissions")
|
||||
// log.Error(errMsg)
|
||||
// mmlResult = append(mmlResult, errMsg)
|
||||
// response := Response{mmlResult}
|
||||
// services.ResponseWithJson(w, http.StatusOK, response)
|
||||
// //services.ResponseForbidden403NotPermission(w)
|
||||
// return
|
||||
// }
|
||||
|
||||
if strings.ToLower(neType) == "omc" {
|
||||
PostMMLToOMC(w, r)
|
||||
return
|
||||
}
|
||||
|
||||
neInfo := new(dborm.NeInfo)
|
||||
neInfo, err := dborm.XormGetNeInfo(neType, neId[0])
|
||||
if err != nil {
|
||||
log.Error("dborm.XormGetNeInfo is failed:", err)
|
||||
neInfoArr := neService.NewNeInfoImpl.SelectList(neModel.NeInfo{NeType: neType, NeId: neId}, false, true)
|
||||
if len(neInfoArr) < 1 {
|
||||
services.ResponseInternalServerError500DatabaseOperationFailed(w)
|
||||
return
|
||||
}
|
||||
neInfo := neInfoArr[0]
|
||||
if neInfo.NeId != neId || neInfo.IP == "" || len(neInfo.Hosts) < 2 {
|
||||
services.ResponseWithJson(w, 200, map[string]any{
|
||||
"code": 0,
|
||||
"msg": "neInfo not found",
|
||||
})
|
||||
return
|
||||
}
|
||||
telnetHost := neInfo.Hosts[1]
|
||||
|
||||
if neInfo != nil {
|
||||
var buf [20 * 1024]byte
|
||||
//buf := make([]byte, 0)
|
||||
var n int
|
||||
var mmlResult []string
|
||||
switch strings.ToLower(neType) {
|
||||
case "xxx":
|
||||
body, err := io.ReadAll(io.LimitReader(r.Body, global.RequestBodyMaxLen))
|
||||
@@ -365,7 +345,7 @@ func PostMMLToNF(w http.ResponseWriter, r *http.Request) {
|
||||
// log.Debug(string(buf[0:n]))
|
||||
|
||||
for _, mml := range mmlRequest.MML {
|
||||
hostMML := fmt.Sprintf("%s:%d", neInfo.Ip, config.GetYamlConfig().MML.Port)
|
||||
hostMML := fmt.Sprintf("%s:%d", telnetHost.Addr, telnetHost.Port)
|
||||
conn, err := net.Dial("tcp", hostMML)
|
||||
if err != nil {
|
||||
errMsg := fmt.Sprintf("Failed to dial %s: %v", hostMML, err)
|
||||
@@ -379,7 +359,7 @@ func PostMMLToNF(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
conn.SetDeadline(time.Now().Add(TIME_DEAD_LINE * time.Second))
|
||||
|
||||
loginStr := fmt.Sprintf("%s\n%s\n", config.GetYamlConfig().MML.User, config.GetYamlConfig().MML.Password)
|
||||
loginStr := fmt.Sprintf("%s\n%s\n", telnetHost.User, telnetHost.Password)
|
||||
_, err = conn.Write([]byte(loginStr))
|
||||
if err != nil {
|
||||
log.Error("Failed to write:", err)
|
||||
@@ -430,7 +410,7 @@ func PostMMLToNF(w http.ResponseWriter, r *http.Request) {
|
||||
// mmlResult = append(mmlResult, "COMMAND OK\n")
|
||||
}
|
||||
case "ims":
|
||||
hostMML := fmt.Sprintf("%s:%d", neInfo.Ip, config.GetYamlConfig().MML.Port)
|
||||
hostMML := fmt.Sprintf("%s:%d", telnetHost.Addr, telnetHost.Port)
|
||||
conn, err := net.Dial("tcp", hostMML)
|
||||
if err != nil {
|
||||
errMsg := fmt.Sprintf("Failed to dial %s: %v", hostMML, err)
|
||||
@@ -454,7 +434,7 @@ func PostMMLToNF(w http.ResponseWriter, r *http.Request) {
|
||||
// }
|
||||
conn.SetDeadline(time.Now().Add(TIME_DEAD_LINE * time.Second))
|
||||
|
||||
_, err = conn.Write([]byte(config.GetYamlConfig().MML.User + "\r\n"))
|
||||
_, err = conn.Write([]byte(telnetHost.User + "\r\n"))
|
||||
if err != nil {
|
||||
log.Error("Failed to write:", err)
|
||||
mmlResult = append(mmlResult, err.Error())
|
||||
@@ -474,7 +454,7 @@ func PostMMLToNF(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
log.Trace(string(buf[0:n]))
|
||||
|
||||
_, err = conn.Write([]byte(config.GetYamlConfig().MML.Password + "\r\n"))
|
||||
_, err = conn.Write([]byte(telnetHost.Password + "\r\n"))
|
||||
if err != nil {
|
||||
log.Error("Failed to write:", err)
|
||||
mmlResult = append(mmlResult, err.Error())
|
||||
@@ -549,7 +529,7 @@ func PostMMLToNF(w http.ResponseWriter, r *http.Request) {
|
||||
mmlResult = append(mmlResult, result)
|
||||
}
|
||||
default:
|
||||
hostMML := fmt.Sprintf("%s:%d", neInfo.Ip, config.GetYamlConfig().MML.Port)
|
||||
hostMML := fmt.Sprintf("%s:%d", telnetHost.Addr, telnetHost.Port)
|
||||
conn, err := net.Dial("tcp", hostMML)
|
||||
if err != nil {
|
||||
errMsg := fmt.Sprintf("Failed to dial %s: %v", hostMML, err)
|
||||
@@ -573,7 +553,7 @@ func PostMMLToNF(w http.ResponseWriter, r *http.Request) {
|
||||
// }
|
||||
|
||||
conn.SetDeadline(time.Now().Add(TIME_DEAD_LINE * time.Second))
|
||||
loginStr := fmt.Sprintf("%s\n%s\n", config.GetYamlConfig().MML.User, config.GetYamlConfig().MML.Password)
|
||||
loginStr := fmt.Sprintf("%s\n%s\n", telnetHost.User, telnetHost.Password)
|
||||
_, err = conn.Write([]byte(loginStr))
|
||||
if err != nil {
|
||||
log.Error("Failed to write:", err)
|
||||
@@ -638,7 +618,6 @@ func PostMMLToNF(w http.ResponseWriter, r *http.Request) {
|
||||
mmlResult = append(mmlResult, result)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
response := Response{mmlResult}
|
||||
services.ResponseWithJson(w, http.StatusOK, response)
|
||||
@@ -647,28 +626,28 @@ func PostMMLToNF(w http.ResponseWriter, r *http.Request) {
|
||||
func PostMMLToOMC(w http.ResponseWriter, r *http.Request) {
|
||||
log.Debug("PostMMLToOMC processing... ")
|
||||
|
||||
// token, err := services.CheckExtValidRequest(w, r)
|
||||
// if err != nil {
|
||||
// log.Error("Failed to CheckMmlValidRequest:", err)
|
||||
// return
|
||||
// }
|
||||
|
||||
params := r.URL.Query()
|
||||
neId := params["ne_id"]
|
||||
if len(neId) == 0 {
|
||||
neType := "OMC" //ctx.GetParam(r, "elementTypeValue")
|
||||
neId := ctx.GetQuery(r, "ne_id")
|
||||
if neId == "" {
|
||||
log.Error("NOT FOUND ne_id")
|
||||
services.ResponseBadRequest400WrongParamValue(w)
|
||||
return
|
||||
}
|
||||
log.Debug("neType:", neType, "neId", neId)
|
||||
|
||||
neInfo := new(dborm.NeInfo)
|
||||
neInfo, err := dborm.XormGetNeInfo("OMC", neId[0])
|
||||
if err != nil {
|
||||
log.Error("dborm.XormGetNeInfo is failed:", err)
|
||||
neInfoArr := neService.NewNeInfoImpl.SelectList(neModel.NeInfo{NeType: neType, NeId: neId}, false, false)
|
||||
if len(neInfoArr) < 1 {
|
||||
services.ResponseInternalServerError500DatabaseOperationFailed(w)
|
||||
return
|
||||
}
|
||||
log.Trace("neInfo:", neInfo)
|
||||
neInfo := neInfoArr[0]
|
||||
if neInfo.NeId != neId || neInfo.IP == "" {
|
||||
services.ResponseWithJson(w, 200, map[string]any{
|
||||
"code": 0,
|
||||
"msg": "neInfo not found",
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
body, err := io.ReadAll(io.LimitReader(r.Body, global.RequestBodyMaxLen))
|
||||
if err != nil {
|
||||
@@ -678,8 +657,7 @@ func PostMMLToOMC(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
log.Trace("Body:", string(body))
|
||||
|
||||
hostUri := fmt.Sprintf("http://%s:%s", neInfo.Ip, neInfo.Port)
|
||||
|
||||
hostUri := fmt.Sprintf("http://%s:%d", neInfo.IP, neInfo.Port)
|
||||
omcMmlVar := &mmlp.MmlVar{
|
||||
Version: global.Version,
|
||||
Output: mmlp.DefaultFormatType,
|
||||
|
||||
@@ -184,15 +184,11 @@ type AlarmConfig struct {
|
||||
}
|
||||
|
||||
type MMLParam struct {
|
||||
Port int `yaml:"port"`
|
||||
Port2 int `yaml:"port2"`
|
||||
Sleep int64 `yaml:"sleep"`
|
||||
DeadLine int64 `yaml:"deadLine"`
|
||||
SizeRow int16 `yaml:"sizeRow"`
|
||||
SizeCol int16 `yaml:"sizeCol"`
|
||||
BufferSize int `yaml:"bufferSize"`
|
||||
User string `yaml:"user"`
|
||||
Password string `ymal:"password"`
|
||||
MmlHome string `yaml:"mmlHome"`
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user