mirror of
https://github.com/TeaOSLab/EdgeAdmin.git
synced 2025-11-03 12:20:28 +08:00
waf/ip名单有变更立即发送通知
This commit is contained in:
@@ -2,6 +2,7 @@ package ipadmin
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
|
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
|
||||||
|
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/components/waf/ipadmin/ipadminutils"
|
||||||
"github.com/TeaOSLab/EdgeAdmin/internal/web/models"
|
"github.com/TeaOSLab/EdgeAdmin/internal/web/models"
|
||||||
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
||||||
"github.com/iwind/TeaGo/actions"
|
"github.com/iwind/TeaGo/actions"
|
||||||
@@ -32,11 +33,12 @@ func (this *CreateIPPopupAction) RunGet(params struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (this *CreateIPPopupAction) RunPost(params struct {
|
func (this *CreateIPPopupAction) RunPost(params struct {
|
||||||
ListId int64
|
FirewallPolicyId int64
|
||||||
IpFrom string
|
ListId int64
|
||||||
IpTo string
|
IpFrom string
|
||||||
ExpiredAt int64
|
IpTo string
|
||||||
Reason string
|
ExpiredAt int64
|
||||||
|
Reason string
|
||||||
|
|
||||||
Must *actions.Must
|
Must *actions.Must
|
||||||
CSRF *actionutils.CSRF
|
CSRF *actionutils.CSRF
|
||||||
@@ -60,5 +62,12 @@ func (this *CreateIPPopupAction) RunPost(params struct {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 发送通知
|
||||||
|
err = ipadminutils.NotifyUpdateToClustersWithFirewallPolicyId(this.AdminContext(), params.FirewallPolicyId)
|
||||||
|
if err != nil {
|
||||||
|
this.ErrorPage(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
this.Success()
|
this.Success()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package ipadmin
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
|
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
|
||||||
|
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/components/waf/ipadmin/ipadminutils"
|
||||||
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -10,7 +11,8 @@ type DeleteIPAction struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (this *DeleteIPAction) RunPost(params struct {
|
func (this *DeleteIPAction) RunPost(params struct {
|
||||||
ItemId int64
|
FirewallPolicyId int64
|
||||||
|
ItemId int64
|
||||||
}) {
|
}) {
|
||||||
// TODO 判断权限
|
// TODO 判断权限
|
||||||
|
|
||||||
@@ -20,5 +22,12 @@ func (this *DeleteIPAction) RunPost(params struct {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 发送通知
|
||||||
|
err = ipadminutils.NotifyUpdateToClustersWithFirewallPolicyId(this.AdminContext(), params.FirewallPolicyId)
|
||||||
|
if err != nil {
|
||||||
|
this.ErrorPage(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
this.Success()
|
this.Success()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
package ipadminutils
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"github.com/TeaOSLab/EdgeAdmin/internal/rpc"
|
||||||
|
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/nodes/nodeutils"
|
||||||
|
"github.com/TeaOSLab/EdgeCommon/pkg/messageconfigs"
|
||||||
|
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
||||||
|
"github.com/iwind/TeaGo/lists"
|
||||||
|
)
|
||||||
|
|
||||||
|
// 通知使用此WAF策略的集群更新
|
||||||
|
func NotifyUpdateToClustersWithFirewallPolicyId(ctx context.Context, firewallPolicyId int64) error {
|
||||||
|
client, err := rpc.SharedRPC()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
resp, err := client.ServerRPC().FindAllEnabledServersWithHTTPFirewallPolicyId(ctx, &pb.FindAllEnabledServersWithHTTPFirewallPolicyIdRequest{FirewallPolicyId: firewallPolicyId})
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
clusterIds := []int64{}
|
||||||
|
for _, server := range resp.Servers {
|
||||||
|
if !lists.ContainsInt64(clusterIds, server.Cluster.Id) {
|
||||||
|
clusterIds = append(clusterIds, server.Cluster.Id)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for _, clusterId := range clusterIds {
|
||||||
|
_, err = nodeutils.SendMessageToCluster(ctx, clusterId, messageconfigs.MessageCodeIPListChanged, &messageconfigs.IPListChangedMessage{}, 3)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
@@ -2,6 +2,7 @@ package ipadmin
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
|
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
|
||||||
|
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/components/waf/ipadmin/ipadminutils"
|
||||||
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
||||||
"github.com/iwind/TeaGo/actions"
|
"github.com/iwind/TeaGo/actions"
|
||||||
"github.com/iwind/TeaGo/maps"
|
"github.com/iwind/TeaGo/maps"
|
||||||
@@ -41,7 +42,8 @@ func (this *UpdateIPPopupAction) RunGet(params struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (this *UpdateIPPopupAction) RunPost(params struct {
|
func (this *UpdateIPPopupAction) RunPost(params struct {
|
||||||
ItemId int64
|
FirewallPolicyId int64
|
||||||
|
ItemId int64
|
||||||
|
|
||||||
IpFrom string
|
IpFrom string
|
||||||
IpTo string
|
IpTo string
|
||||||
@@ -70,5 +72,12 @@ func (this *UpdateIPPopupAction) RunPost(params struct {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 发送通知
|
||||||
|
err = ipadminutils.NotifyUpdateToClustersWithFirewallPolicyId(this.AdminContext(), params.FirewallPolicyId)
|
||||||
|
if err != nil {
|
||||||
|
this.ErrorPage(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
this.Success()
|
this.Success()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -114,6 +114,7 @@ func (this *UserMustAuth) BeforeAction(actionPtr actions.ActionWrapper, paramNam
|
|||||||
action.Data["teaTabbar"] = []map[string]interface{}{}
|
action.Data["teaTabbar"] = []map[string]interface{}{}
|
||||||
action.Data["teaVersion"] = teaconst.Version
|
action.Data["teaVersion"] = teaconst.Version
|
||||||
action.Data["teaIsSuper"] = false
|
action.Data["teaIsSuper"] = false
|
||||||
|
action.Data["teaDemoEnabled"] = teaconst.IsDemo
|
||||||
|
|
||||||
// 菜单
|
// 菜单
|
||||||
action.Data["firstMenuItem"] = ""
|
action.Data["firstMenuItem"] = ""
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ Tea.context(function () {
|
|||||||
this.moreOptionsVisible = false
|
this.moreOptionsVisible = false
|
||||||
this.globalChangedClusters = []
|
this.globalChangedClusters = []
|
||||||
this.globalMessageBadge = 0
|
this.globalMessageBadge = 0
|
||||||
this.teaDemoEnabled = false
|
|
||||||
|
|
||||||
if (typeof this.leftMenuItemIsDisabled == "undefined") {
|
if (typeof this.leftMenuItemIsDisabled == "undefined") {
|
||||||
this.leftMenuItemIsDisabled = false
|
this.leftMenuItemIsDisabled = false
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
<h3 v-if="type == 'black'">添加IP到黑名单</h3>
|
<h3 v-if="type == 'black'">添加IP到黑名单</h3>
|
||||||
|
|
||||||
<form class="ui form" data-tea-action="$" data-tea-success="success">
|
<form class="ui form" data-tea-action="$" data-tea-success="success">
|
||||||
|
<input type="hidden" name="firewallPolicyId" :value="firewallPolicyId"/>
|
||||||
<input type="hidden" name="listId" :value="listId"/>
|
<input type="hidden" name="listId" :value="listId"/>
|
||||||
<csrf-token></csrf-token>
|
<csrf-token></csrf-token>
|
||||||
<table class="ui table definition selectable">
|
<table class="ui table definition selectable">
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
Tea.context(function () {
|
Tea.context(function () {
|
||||||
this.updateItem = function (itemId) {
|
this.updateItem = function (itemId) {
|
||||||
teaweb.popup(Tea.url(".updateIPPopup", {itemId: itemId}), {
|
teaweb.popup(Tea.url(".updateIPPopup?firewallPolicyId=" + this.firewallPolicyId, {itemId: itemId}), {
|
||||||
height: "23em",
|
height: "23em",
|
||||||
callback: function () {
|
callback: function () {
|
||||||
teaweb.success("保存成功", function () {
|
teaweb.success("保存成功", function () {
|
||||||
@@ -15,6 +15,7 @@ Tea.context(function () {
|
|||||||
teaweb.confirm("确定要删除这个IP吗?", function () {
|
teaweb.confirm("确定要删除这个IP吗?", function () {
|
||||||
that.$post(".deleteIP")
|
that.$post(".deleteIP")
|
||||||
.params({
|
.params({
|
||||||
|
"firewallPolicyId": this.firewallPolicyId,
|
||||||
"itemId": itemId
|
"itemId": itemId
|
||||||
})
|
})
|
||||||
.refresh()
|
.refresh()
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
<h3>修改IP</h3>
|
<h3>修改IP</h3>
|
||||||
|
|
||||||
<form class="ui form" data-tea-action="$" data-tea-success="success">
|
<form class="ui form" data-tea-action="$" data-tea-success="success">
|
||||||
|
<input type="hidden" name="firewallPolicyId" :value="firewallPolicyId"/>
|
||||||
<input type="hidden" name="itemId" :value="item.id"/>
|
<input type="hidden" name="itemId" :value="item.id"/>
|
||||||
<csrf-token></csrf-token>
|
<csrf-token></csrf-token>
|
||||||
<table class="ui table definition selectable">
|
<table class="ui table definition selectable">
|
||||||
|
|||||||
Reference in New Issue
Block a user