diff --git a/internal/web/actions/default/servers/server/settings/waf/ipadmin/countries.go b/internal/web/actions/default/servers/server/settings/waf/ipadmin/countries.go index 7e28e32d..3479cffb 100644 --- a/internal/web/actions/default/servers/server/settings/waf/ipadmin/countries.go +++ b/internal/web/actions/default/servers/server/settings/waf/ipadmin/countries.go @@ -7,6 +7,7 @@ import ( "github.com/TeaOSLab/EdgeCommon/pkg/rpc/dao" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/firewallconfigs" + "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared" "github.com/iwind/TeaGo/actions" "github.com/iwind/TeaGo/lists" "github.com/iwind/TeaGo/maps" @@ -41,7 +42,7 @@ func (this *CountriesAction) RunGet(params struct { this.NotFound("firewallPolicy", params.FirewallPolicyId) return } - selectedCountryIds := []int64{} + var selectedCountryIds = []int64{} if policyConfig.Inbound != nil && policyConfig.Inbound.Region != nil { selectedCountryIds = policyConfig.Inbound.Region.DenyCountryIds } @@ -51,7 +52,7 @@ func (this *CountriesAction) RunGet(params struct { this.ErrorPage(err) return } - countryMaps := []maps.Map{} + var countryMaps = []maps.Map{} for _, country := range countriesResp.RegionCountries { countryMaps = append(countryMaps, maps.Map{ "id": country.Id, @@ -62,6 +63,18 @@ func (this *CountriesAction) RunGet(params struct { } this.Data["countries"] = countryMaps + // except & only URL Patterns + this.Data["exceptURLPatterns"] = []*shared.URLPattern{} + this.Data["onlyURLPatterns"] = []*shared.URLPattern{} + if policyConfig.Inbound != nil && policyConfig.Inbound.Region != nil { + if len(policyConfig.Inbound.Region.CountryExceptURLPatterns) > 0 { + this.Data["exceptURLPatterns"] = policyConfig.Inbound.Region.CountryExceptURLPatterns + } + if len(policyConfig.Inbound.Region.CountryOnlyURLPatterns) > 0 { + this.Data["onlyURLPatterns"] = policyConfig.Inbound.Region.CountryOnlyURLPatterns + } + } + // WAF是否启用 webConfig, err := dao.SharedHTTPWebDAO.FindWebConfigWithServerId(this.AdminContext(), params.ServerId) if err != nil { @@ -77,6 +90,9 @@ func (this *CountriesAction) RunPost(params struct { FirewallPolicyId int64 CountryIds []int64 + ExceptURLPatternsJSON []byte + OnlyURLPatternsJSON []byte + Must *actions.Must }) { // 日志 @@ -102,6 +118,34 @@ func (this *CountriesAction) RunPost(params struct { } policyConfig.Inbound.Region.DenyCountryIds = params.CountryIds + // 例外URL + var exceptURLPatterns = []*shared.URLPattern{} + if len(params.ExceptURLPatternsJSON) > 0 { + err = json.Unmarshal(params.ExceptURLPatternsJSON, &exceptURLPatterns) + if err != nil { + this.Fail("校验例外URL参数失败:" + err.Error()) + return + } + } + policyConfig.Inbound.Region.CountryExceptURLPatterns = exceptURLPatterns + + // 限制URL + var onlyURLPatterns = []*shared.URLPattern{} + if len(params.OnlyURLPatternsJSON) > 0 { + err = json.Unmarshal(params.OnlyURLPatternsJSON, &onlyURLPatterns) + if err != nil { + this.Fail("校验限制URL参数失败:" + err.Error()) + return + } + } + policyConfig.Inbound.Region.CountryOnlyURLPatterns = onlyURLPatterns + + err = policyConfig.Init() + if err != nil { + this.Fail("配置校验失败:" + err.Error()) + return + } + inboundJSON, err := json.Marshal(policyConfig.Inbound) if err != nil { this.ErrorPage(err) diff --git a/internal/web/actions/default/servers/server/settings/waf/ipadmin/provinces.go b/internal/web/actions/default/servers/server/settings/waf/ipadmin/provinces.go index b76d57dd..caa6a0cd 100644 --- a/internal/web/actions/default/servers/server/settings/waf/ipadmin/provinces.go +++ b/internal/web/actions/default/servers/server/settings/waf/ipadmin/provinces.go @@ -7,6 +7,7 @@ import ( "github.com/TeaOSLab/EdgeCommon/pkg/rpc/dao" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/firewallconfigs" + "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared" "github.com/iwind/TeaGo/actions" "github.com/iwind/TeaGo/lists" "github.com/iwind/TeaGo/maps" @@ -41,7 +42,7 @@ func (this *ProvincesAction) RunGet(params struct { this.NotFound("firewallPolicy", params.FirewallPolicyId) return } - selectedProvinceIds := []int64{} + var selectedProvinceIds = []int64{} if policyConfig.Inbound != nil && policyConfig.Inbound.Region != nil { selectedProvinceIds = policyConfig.Inbound.Region.DenyProvinceIds } @@ -53,7 +54,7 @@ func (this *ProvincesAction) RunGet(params struct { this.ErrorPage(err) return } - provinceMaps := []maps.Map{} + var provinceMaps = []maps.Map{} for _, province := range provincesResp.RegionProvinces { provinceMaps = append(provinceMaps, maps.Map{ "id": province.Id, @@ -63,6 +64,18 @@ func (this *ProvincesAction) RunGet(params struct { } this.Data["provinces"] = provinceMaps + // except & only URL Patterns + this.Data["exceptURLPatterns"] = []*shared.URLPattern{} + this.Data["onlyURLPatterns"] = []*shared.URLPattern{} + if policyConfig.Inbound != nil && policyConfig.Inbound.Region != nil { + if len(policyConfig.Inbound.Region.ProvinceExceptURLPatterns) > 0 { + this.Data["exceptURLPatterns"] = policyConfig.Inbound.Region.ProvinceExceptURLPatterns + } + if len(policyConfig.Inbound.Region.ProvinceOnlyURLPatterns) > 0 { + this.Data["onlyURLPatterns"] = policyConfig.Inbound.Region.ProvinceOnlyURLPatterns + } + } + // WAF是否启用 webConfig, err := dao.SharedHTTPWebDAO.FindWebConfigWithServerId(this.AdminContext(), params.ServerId) if err != nil { @@ -78,6 +91,9 @@ func (this *ProvincesAction) RunPost(params struct { FirewallPolicyId int64 ProvinceIds []int64 + ExceptURLPatternsJSON []byte + OnlyURLPatternsJSON []byte + Must *actions.Must }) { // 日志 @@ -103,6 +119,34 @@ func (this *ProvincesAction) RunPost(params struct { } policyConfig.Inbound.Region.DenyProvinceIds = params.ProvinceIds + // 例外URL + var exceptURLPatterns = []*shared.URLPattern{} + if len(params.ExceptURLPatternsJSON) > 0 { + err = json.Unmarshal(params.ExceptURLPatternsJSON, &exceptURLPatterns) + if err != nil { + this.Fail("校验例外URL参数失败:" + err.Error()) + return + } + } + policyConfig.Inbound.Region.ProvinceExceptURLPatterns = exceptURLPatterns + + // 限制URL + var onlyURLPatterns = []*shared.URLPattern{} + if len(params.OnlyURLPatternsJSON) > 0 { + err = json.Unmarshal(params.OnlyURLPatternsJSON, &onlyURLPatterns) + if err != nil { + this.Fail("校验限制URL参数失败:" + err.Error()) + return + } + } + policyConfig.Inbound.Region.ProvinceOnlyURLPatterns = onlyURLPatterns + + err = policyConfig.Init() + if err != nil { + this.Fail("配置校验失败:" + err.Error()) + return + } + inboundJSON, err := json.Marshal(policyConfig.Inbound) if err != nil { this.ErrorPage(err) diff --git a/web/views/@default/servers/server/settings/waf/ipadmin/countries.css b/web/views/@default/servers/server/settings/waf/ipadmin/countries.css index 1cd34e35..aa3b2c53 100644 --- a/web/views/@default/servers/server/settings/waf/ipadmin/countries.css +++ b/web/views/@default/servers/server/settings/waf/ipadmin/countries.css @@ -12,5 +12,6 @@ } .country-group .country-list .item .checkbox label { font-size: 12px !important; + cursor: pointer !important; } /*# sourceMappingURL=countries.css.map */ \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/waf/ipadmin/countries.css.map b/web/views/@default/servers/server/settings/waf/ipadmin/countries.css.map index 6f08bd35..15d53e6c 100644 --- a/web/views/@default/servers/server/settings/waf/ipadmin/countries.css.map +++ b/web/views/@default/servers/server/settings/waf/ipadmin/countries.css.map @@ -1 +1 @@ -{"version":3,"sources":["countries.less"],"names":[],"mappings":"AAAA,oBACC;EACC,4BAAA;EACA,6BAAA;;AAIF;EAaC,mBAAA;;AAbD,cACC,cACC;EACC,WAAA;EACA,WAAA;EACA,oBAAA;;AALH,cACC,cACC,MAKC,UAAU;EACT,0BAAA","file":"countries.css"} \ No newline at end of file +{"version":3,"sources":["countries.less"],"names":[],"mappings":"AAAA,oBACC;EACC,4BAAA;EACA,6BAAA;;AAIF;EAcC,mBAAA;;AAdD,cACC,cACC;EACC,WAAA;EACA,WAAA;EACA,oBAAA;;AALH,cACC,cACC,MAKC,UAAU;EACT,0BAAA;EACA,0BAAA","file":"countries.css"} \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/waf/ipadmin/countries.html b/web/views/@default/servers/server/settings/waf/ipadmin/countries.html index 253f6846..0b530e97 100644 --- a/web/views/@default/servers/server/settings/waf/ipadmin/countries.html +++ b/web/views/@default/servers/server/settings/waf/ipadmin/countries.html @@ -12,6 +12,8 @@
+ + @@ -24,9 +26,9 @@ - + + + + + + + + +
已封禁
选择封禁区域选择封禁区域 * - 选择区域 + 选择区域完成选择
例外URL  
限制URL  
diff --git a/web/views/@default/servers/server/settings/waf/ipadmin/countries.less b/web/views/@default/servers/server/settings/waf/ipadmin/countries.less index f6774ab9..6888538f 100644 --- a/web/views/@default/servers/server/settings/waf/ipadmin/countries.less +++ b/web/views/@default/servers/server/settings/waf/ipadmin/countries.less @@ -14,6 +14,7 @@ .checkbox label { font-size: 12px !important; + cursor: pointer !important; } } } diff --git a/web/views/@default/servers/server/settings/waf/ipadmin/provinces.css b/web/views/@default/servers/server/settings/waf/ipadmin/provinces.css index 99e6ff0c..9b90dcdc 100644 --- a/web/views/@default/servers/server/settings/waf/ipadmin/provinces.css +++ b/web/views/@default/servers/server/settings/waf/ipadmin/provinces.css @@ -5,5 +5,6 @@ } .province-list .item .checkbox label { font-size: 12px !important; + cursor: pointer !important; } /*# sourceMappingURL=provinces.css.map */ \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/waf/ipadmin/provinces.css.map b/web/views/@default/servers/server/settings/waf/ipadmin/provinces.css.map index 777cb7a0..70006c08 100644 --- a/web/views/@default/servers/server/settings/waf/ipadmin/provinces.css.map +++ b/web/views/@default/servers/server/settings/waf/ipadmin/provinces.css.map @@ -1 +1 @@ -{"version":3,"sources":["provinces.less"],"names":[],"mappings":"AAAA,cACC;EACC,WAAA;EACA,WAAA;EACA,oBAAA;;AAJF,cACC,MAKC,UAAU;EACT,0BAAA","file":"provinces.css"} \ No newline at end of file +{"version":3,"sources":["provinces.less"],"names":[],"mappings":"AAAA,cACC;EACC,WAAA;EACA,WAAA;EACA,oBAAA;;AAJF,cACC,MAKC,UAAU;EACT,0BAAA;EACA,0BAAA","file":"provinces.css"} \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/waf/ipadmin/provinces.html b/web/views/@default/servers/server/settings/waf/ipadmin/provinces.html index 1568bffd..8ac806c0 100644 --- a/web/views/@default/servers/server/settings/waf/ipadmin/provinces.html +++ b/web/views/@default/servers/server/settings/waf/ipadmin/provinces.html @@ -12,6 +12,8 @@
+ + @@ -28,7 +30,7 @@ + + + + + + + +
已封禁 - 选择省份/自治区 + 选择省份/自治区完成选择
@@ -48,6 +50,14 @@
例外URL  
限制URL  
diff --git a/web/views/@default/servers/server/settings/waf/ipadmin/provinces.less b/web/views/@default/servers/server/settings/waf/ipadmin/provinces.less index a9bc1668..6caf042a 100644 --- a/web/views/@default/servers/server/settings/waf/ipadmin/provinces.less +++ b/web/views/@default/servers/server/settings/waf/ipadmin/provinces.less @@ -6,6 +6,7 @@ .checkbox label { font-size: 12px !important; + cursor: pointer !important; } } }