From 65bdd413eb9d9a89182f4151902ee663784ce47b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Thu, 25 Aug 2022 20:36:51 +0800 Subject: [PATCH] =?UTF-8?q?Ln=E8=8A=82=E7=82=B9=E5=8F=AF=E4=BB=A5=E6=8C=87?= =?UTF-8?q?=E5=AE=9A=E8=AE=BF=E9=97=AEIP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../default/clusters/cluster/node/detail.go | 6 ++++ .../default/clusters/cluster/node/update.go | 34 +++++++++++++++++-- .../js/components/node/node-level-selector.js | 5 +++ .../clusters/cluster/node/detail.html | 4 +++ .../clusters/cluster/node/update.html | 11 ++++-- .../@default/clusters/cluster/node/update.js | 8 +++++ 6 files changed, 64 insertions(+), 4 deletions(-) diff --git a/internal/web/actions/default/clusters/cluster/node/detail.go b/internal/web/actions/default/clusters/cluster/node/detail.go index fb29f89e..f85fe305 100644 --- a/internal/web/actions/default/clusters/cluster/node/detail.go +++ b/internal/web/actions/default/clusters/cluster/node/detail.go @@ -295,6 +295,11 @@ func (this *DetailAction) RunGet(params struct { } } + var lnAddrs = node.LnAddrs + if lnAddrs == nil { + lnAddrs = []string{} + } + this.Data["node"] = maps.Map{ "id": node.Id, "name": node.Name, @@ -312,6 +317,7 @@ func (this *DetailAction) RunGet(params struct { "routes": routeMaps, "level": node.Level, "levelInfo": nodeconfigs.FindNodeLevel(int(node.Level)), + "lnAddrs": lnAddrs, "status": maps.Map{ "isActive": status.IsActive, diff --git a/internal/web/actions/default/clusters/cluster/node/update.go b/internal/web/actions/default/clusters/cluster/node/update.go index 7c2722a6..f1f57e64 100644 --- a/internal/web/actions/default/clusters/cluster/node/update.go +++ b/internal/web/actions/default/clusters/cluster/node/update.go @@ -11,6 +11,7 @@ import ( "github.com/iwind/TeaGo/actions" "github.com/iwind/TeaGo/maps" "github.com/iwind/TeaGo/types" + "net" ) type UpdateAction struct { @@ -61,7 +62,7 @@ func (this *UpdateAction) RunGet(params struct { this.ErrorPage(err) return } - ipAddressMaps := []maps.Map{} + var ipAddressMaps = []maps.Map{} for _, addr := range ipAddressesResp.NodeIPAddresses { thresholds, err := ipaddressutils.InitNodeIPAddressThresholds(this.Parent(), addr.Id) if err != nil { @@ -109,6 +110,12 @@ func (this *UpdateAction) RunGet(params struct { "level": node.Level, } + if node.LnAddrs == nil { + nodeMap["lnAddrs"] = []string{} + } else { + nodeMap["lnAddrs"] = node.LnAddrs + } + if node.NodeCluster != nil { nodeMap["primaryCluster"] = maps.Map{ "id": node.NodeCluster.Id, @@ -149,6 +156,7 @@ func (this *UpdateAction) RunPost(params struct { SecondaryClusterIds []byte IsOn bool Level int32 + LnAddrs []string Must *actions.Must }) { @@ -178,7 +186,7 @@ func (this *UpdateAction) RunPost(params struct { } // IP地址 - ipAddresses := []maps.Map{} + var ipAddresses = []maps.Map{} if len(params.IPAddressesJSON) > 0 { err := json.Unmarshal(params.IPAddressesJSON, &ipAddresses) if err != nil { @@ -195,6 +203,27 @@ func (this *UpdateAction) RunPost(params struct { this.Fail("没有权限修改节点级别:" + types.String(params.Level)) } + // 检查Ln节点地址 + var lnAddrs = []string{} + if params.Level > 1 { + for _, lnAddr := range params.LnAddrs { + if len(lnAddr) == 0 { + continue + } + + // 处理 host:port + host, _, err := net.SplitHostPort(lnAddr) + if err == nil { + lnAddr = host + } + + if net.ParseIP(lnAddr) == nil { + this.Fail("L2级别访问地址 '" + lnAddr + "' 格式错误,请纠正后再提交") + } + lnAddrs = append(lnAddrs, lnAddr) + } + } + _, err := this.RPC().NodeRPC().UpdateNode(this.AdminContext(), &pb.UpdateNodeRequest{ NodeId: params.NodeId, NodeGroupId: params.GroupId, @@ -204,6 +233,7 @@ func (this *UpdateAction) RunPost(params struct { SecondaryNodeClusterIds: secondaryClusterIds, IsOn: params.IsOn, Level: params.Level, + LnAddrs: lnAddrs, }) if err != nil { this.ErrorPage(err) diff --git a/web/public/js/components/node/node-level-selector.js b/web/public/js/components/node/node-level-selector.js index 2273cdf7..3333a562 100644 --- a/web/public/js/components/node/node-level-selector.js +++ b/web/public/js/components/node/node-level-selector.js @@ -22,6 +22,11 @@ Vue.component("node-level-selector", { levelCode: levelCode } }, + watch: { + levelCode: function (code) { + this.$emit("change", code) + } + }, template: `