From f3e3bffa2b13bcd83a7d3f19bec4fbb0abae37a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Fri, 6 Nov 2020 11:30:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=B0=81=E7=A6=81=E7=9C=81?= =?UTF-8?q?=E4=BB=BD=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/waf/ipadmin/provinces.go | 94 ++++++++++++++++++- .../servers/components/waf/ipadmin/index.html | 6 +- .../servers/components/waf/ipadmin/index.js | 1 - .../components/waf/ipadmin/provinces.css | 9 ++ .../components/waf/ipadmin/provinces.css.map | 1 + .../components/waf/ipadmin/provinces.html | 32 +++++++ .../components/waf/ipadmin/provinces.js | 23 +++++ .../components/waf/ipadmin/provinces.less | 11 +++ 8 files changed, 172 insertions(+), 5 deletions(-) create mode 100644 web/views/@default/servers/components/waf/ipadmin/provinces.css create mode 100644 web/views/@default/servers/components/waf/ipadmin/provinces.css.map create mode 100644 web/views/@default/servers/components/waf/ipadmin/provinces.js create mode 100644 web/views/@default/servers/components/waf/ipadmin/provinces.less diff --git a/internal/web/actions/default/servers/components/waf/ipadmin/provinces.go b/internal/web/actions/default/servers/components/waf/ipadmin/provinces.go index 008398db..e4691cd8 100644 --- a/internal/web/actions/default/servers/components/waf/ipadmin/provinces.go +++ b/internal/web/actions/default/servers/components/waf/ipadmin/provinces.go @@ -1,6 +1,17 @@ package ipadmin -import "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" +import ( + "encoding/json" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeAdmin/internal/web/models" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" + "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/firewallconfigs" + "github.com/iwind/TeaGo/actions" + "github.com/iwind/TeaGo/lists" + "github.com/iwind/TeaGo/maps" +) + +const ChinaCountryId = 1 type ProvincesAction struct { actionutils.ParentAction @@ -10,7 +21,86 @@ func (this *ProvincesAction) Init() { this.Nav("", "", "ipadmin") } -func (this *ProvincesAction) RunGet(params struct{}) { +func (this *ProvincesAction) RunGet(params struct { + FirewallPolicyId int64 +}) { this.Data["subMenuItem"] = "province" + + // 当前选中的省份 + policyConfig, err := models.SharedHTTPFirewallPolicyDAO.FindEnabledPolicyConfig(this.AdminContext(), params.FirewallPolicyId) + if err != nil { + this.ErrorPage(err) + return + } + if policyConfig == nil { + this.NotFound("firewallPolicy", params.FirewallPolicyId) + return + } + selectedProvinceIds := []int64{} + if policyConfig.Inbound != nil && policyConfig.Inbound.Region != nil { + selectedProvinceIds = policyConfig.Inbound.Region.DenyProvinceIds + } + + provincesResp, err := this.RPC().RegionProvinceRPC().FindAllEnabledRegionProvincesWithCountryId(this.AdminContext(), &pb.FindAllEnabledRegionProvincesWithCountryIdRequest{ + CountryId: int64(ChinaCountryId), + }) + if err != nil { + this.ErrorPage(err) + return + } + provinceMaps := []maps.Map{} + for _, province := range provincesResp.Provinces { + provinceMaps = append(provinceMaps, maps.Map{ + "id": province.Id, + "name": province.Name, + "isChecked": lists.ContainsInt64(selectedProvinceIds, province.Id), + }) + } + this.Data["provinces"] = provinceMaps + this.Show() } + +func (this *ProvincesAction) RunPost(params struct { + FirewallPolicyId int64 + ProvinceIds []int64 + + Must *actions.Must +}) { + policyConfig, err := models.SharedHTTPFirewallPolicyDAO.FindEnabledPolicyConfig(this.AdminContext(), params.FirewallPolicyId) + if err != nil { + this.ErrorPage(err) + return + } + if policyConfig == nil { + this.NotFound("firewallPolicy", params.FirewallPolicyId) + return + } + + if policyConfig.Inbound == nil { + policyConfig.Inbound = &firewallconfigs.HTTPFirewallInboundConfig{IsOn: true} + } + if policyConfig.Inbound.Region == nil { + policyConfig.Inbound.Region = &firewallconfigs.HTTPFirewallRegionConfig{ + IsOn: true, + } + } + policyConfig.Inbound.Region.DenyProvinceIds = params.ProvinceIds + + inboundJSON, err := json.Marshal(policyConfig.Inbound) + if err != nil { + this.ErrorPage(err) + return + } + + _, err = this.RPC().HTTPFirewallPolicyRPC().UpdateHTTPFirewallInboundConfig(this.AdminContext(), &pb.UpdateHTTPFirewallInboundConfigRequest{ + FirewallPolicyId: params.FirewallPolicyId, + InboundJSON: inboundJSON, + }) + if err != nil { + this.ErrorPage(err) + return + } + + this.Success() +} diff --git a/web/views/@default/servers/components/waf/ipadmin/index.html b/web/views/@default/servers/components/waf/ipadmin/index.html index d02b0617..7bc290a8 100644 --- a/web/views/@default/servers/components/waf/ipadmin/index.html +++ b/web/views/@default/servers/components/waf/ipadmin/index.html @@ -20,7 +20,9 @@ 选择封禁区域 -