Files
EdgeAdmin/internal/web/actions/default/servers/components/waf/index.go

96 lines
2.5 KiB
Go
Raw Normal View History

2020-09-13 20:37:07 +08:00
package waf
import (
2020-10-06 21:02:37 +08:00
"encoding/json"
2020-09-13 20:37:07 +08:00
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
2020-10-06 21:02:37 +08:00
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/firewallconfigs"
"github.com/iwind/TeaGo/maps"
2020-09-13 20:37:07 +08:00
)
type IndexAction struct {
actionutils.ParentAction
}
func (this *IndexAction) Init() {
this.FirstMenu("index")
}
2021-06-07 08:58:54 +08:00
func (this *IndexAction) RunGet(params struct {
Keyword string
}) {
this.Data["keyword"] = params.Keyword
countResp, err := this.RPC().HTTPFirewallPolicyRPC().CountAllEnabledHTTPFirewallPolicies(this.AdminContext(), &pb.CountAllEnabledHTTPFirewallPoliciesRequest{
Keyword: params.Keyword,
})
2020-10-06 21:02:37 +08:00
if err != nil {
this.ErrorPage(err)
return
}
count := countResp.Count
page := this.NewPage(count)
listResp, err := this.RPC().HTTPFirewallPolicyRPC().ListEnabledHTTPFirewallPolicies(this.AdminContext(), &pb.ListEnabledHTTPFirewallPoliciesRequest{
2021-06-07 08:58:54 +08:00
Keyword: params.Keyword,
Offset: page.Offset,
Size: page.Size,
2020-10-06 21:02:37 +08:00
})
if err != nil {
this.ErrorPage(err)
return
}
policyMaps := []maps.Map{}
for _, policy := range listResp.HttpFirewallPolicies {
2020-10-06 21:02:37 +08:00
countInbound := 0
countOutbound := 0
if len(policy.InboundJSON) > 0 {
inboundConfig := &firewallconfigs.HTTPFirewallInboundConfig{}
err = json.Unmarshal(policy.InboundJSON, inboundConfig)
if err != nil {
this.ErrorPage(err)
return
}
countInbound = len(inboundConfig.GroupRefs)
}
if len(policy.OutboundJSON) > 0 {
outboundConfig := &firewallconfigs.HTTPFirewallInboundConfig{}
err = json.Unmarshal(policy.OutboundJSON, outboundConfig)
if err != nil {
this.ErrorPage(err)
return
}
countOutbound = len(outboundConfig.GroupRefs)
}
countClustersResp, err := this.RPC().NodeClusterRPC().CountAllEnabledNodeClustersWithHTTPFirewallPolicyId(this.AdminContext(), &pb.CountAllEnabledNodeClustersWithHTTPFirewallPolicyIdRequest{HttpFirewallPolicyId: policy.Id})
2020-10-06 21:02:37 +08:00
if err != nil {
this.ErrorPage(err)
return
}
countClusters := countClustersResp.Count
2020-10-06 21:02:37 +08:00
// mode
if len(policy.Mode) == 0 {
policy.Mode = firewallconfigs.FirewallModeDefend
}
2020-10-06 21:02:37 +08:00
policyMaps = append(policyMaps, maps.Map{
"id": policy.Id,
"isOn": policy.IsOn,
"name": policy.Name,
"mode": policy.Mode,
"modeInfo": firewallconfigs.FindFirewallMode(policy.Mode),
2020-10-06 21:02:37 +08:00
"countInbound": countInbound,
"countOutbound": countOutbound,
"countClusters": countClusters,
2020-10-06 21:02:37 +08:00
})
}
this.Data["policies"] = policyMaps
this.Data["page"] = page.AsHTML()
2020-09-13 20:37:07 +08:00
this.Show()
}