diff --git a/.gitignore b/.gitignore
index dc6e5bb4..8d6576a2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
*_plus.go
-*-plus.sh
\ No newline at end of file
+*-plus.sh
+*@plus.js
\ No newline at end of file
diff --git a/internal/web/actions/default/clusters/cluster/node/detail.go b/internal/web/actions/default/clusters/cluster/node/detail.go
index 858c1ad1..7044123d 100644
--- a/internal/web/actions/default/clusters/cluster/node/detail.go
+++ b/internal/web/actions/default/clusters/cluster/node/detail.go
@@ -84,6 +84,8 @@ func (this *DetailAction) RunGet(params struct {
"name": addr.Name,
"ip": addr.Ip,
"canAccess": addr.CanAccess,
+ "isOn": addr.IsOn,
+ "isUp": addr.IsUp,
})
}
@@ -121,7 +123,7 @@ func (this *DetailAction) RunGet(params struct {
}
for _, addr := range ipAddresses {
- if !addr.CanAccess {
+ if !addr.CanAccess || !addr.IsUp || !addr.IsOn {
continue
}
for _, route := range dnsInfo.Routes {
diff --git a/internal/web/actions/default/clusters/cluster/node/update.go b/internal/web/actions/default/clusters/cluster/node/update.go
index dc9e3f7b..f2f5f40a 100644
--- a/internal/web/actions/default/clusters/cluster/node/update.go
+++ b/internal/web/actions/default/clusters/cluster/node/update.go
@@ -62,6 +62,8 @@ func (this *UpdateAction) RunGet(params struct {
"name": addr.Name,
"ip": addr.Ip,
"canAccess": addr.CanAccess,
+ "isOn": addr.IsOn,
+ "isUp": addr.IsUp,
})
}
diff --git a/internal/web/actions/default/nodes/ipAddresses/createPopup.go b/internal/web/actions/default/nodes/ipAddresses/createPopup.go
index 323c1c44..57541bcd 100644
--- a/internal/web/actions/default/nodes/ipAddresses/createPopup.go
+++ b/internal/web/actions/default/nodes/ipAddresses/createPopup.go
@@ -42,6 +42,8 @@ func (this *CreatePopupAction) RunPost(params struct {
"canAccess": params.CanAccess,
"ip": params.IP,
"id": 0,
+ "isOn": true,
+ "isUp": true,
}
this.Success()
}
diff --git a/internal/web/actions/default/nodes/ipAddresses/ipaddressutils/utils.go b/internal/web/actions/default/nodes/ipAddresses/ipaddressutils/utils.go
index 1c4f644f..c62a66fe 100644
--- a/internal/web/actions/default/nodes/ipAddresses/ipaddressutils/utils.go
+++ b/internal/web/actions/default/nodes/ipAddresses/ipaddressutils/utils.go
@@ -18,11 +18,18 @@ func UpdateNodeIPAddresses(parentAction *actionutils.ParentAction, nodeId int64,
for _, addr := range addresses {
addrId := addr.GetInt64("id")
if addrId > 0 {
+ var isOn = false
+ if !addr.Has("isOn") { // 兼容老版本
+ isOn = true
+ } else {
+ isOn = addr.GetBool("isOn")
+ }
_, err = parentAction.RPC().NodeIPAddressRPC().UpdateNodeIPAddress(parentAction.AdminContext(), &pb.UpdateNodeIPAddressRequest{
AddressId: addrId,
Ip: addr.GetString("ip"),
Name: addr.GetString("name"),
CanAccess: addr.GetBool("canAccess"),
+ IsOn: isOn,
})
if err != nil {
return err
diff --git a/internal/web/actions/default/nodes/ipAddresses/updatePopup.go b/internal/web/actions/default/nodes/ipAddresses/updatePopup.go
index ba218975..65d92e7f 100644
--- a/internal/web/actions/default/nodes/ipAddresses/updatePopup.go
+++ b/internal/web/actions/default/nodes/ipAddresses/updatePopup.go
@@ -2,6 +2,7 @@ package ipAddresses
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
+ "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/actions"
"github.com/iwind/TeaGo/maps"
"net"
@@ -26,15 +27,25 @@ func (this *UpdatePopupAction) RunPost(params struct {
IP string `alias:"ip"`
Name string
CanAccess bool
+ IsOn bool
Must *actions.Must
}) {
- // TODO 严格校验IP地址
-
params.Must.
Field("ip", params.IP).
Require("请输入IP地址")
+ // 获取IP地址信息
+ addressResp, err := this.RPC().NodeIPAddressRPC().FindEnabledNodeIPAddress(this.AdminContext(), &pb.FindEnabledNodeIPAddressRequest{AddressId: params.AddressId})
+ if err != nil {
+ this.ErrorPage(err)
+ return
+ }
+ var address = addressResp.IpAddress
+ if address == nil {
+ this.Fail("找不到要修改的地址")
+ }
+
ip := net.ParseIP(params.IP)
if len(ip) == 0 {
this.Fail("请输入正确的IP")
@@ -45,6 +56,8 @@ func (this *UpdatePopupAction) RunPost(params struct {
"ip": params.IP,
"id": params.AddressId,
"canAccess": params.CanAccess,
+ "isOn": params.IsOn,
+ "isUp": address.IsUp,
}
this.Success()
diff --git a/web/public/js/components/common/labels.js b/web/public/js/components/common/labels.js
index 0f1bea25..fdbc9263 100644
--- a/web/public/js/components/common/labels.js
+++ b/web/public/js/components/common/labels.js
@@ -22,3 +22,9 @@ Vue.component("tiny-basic-label", {
Vue.component("micro-basic-label", {
template: `