From 7ccfc5f7d393b79242346e6be7b9af5ba0926677 Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Fri, 6 Jan 2023 19:12:53 +0800 Subject: [PATCH] =?UTF-8?q?WAF=E8=A7=84=E5=88=99=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E4=B8=AD=E6=96=87=E6=98=BE=E7=A4=BA=E8=BF=90=E7=AE=97=E7=AC=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/gen/generate.go | 11 +++++++++++ internal/web/actions/default/ui/components.go | 11 +++++++++++ .../server/http-firewall-rule-label.js | 13 ++++++++++++- .../components/server/http-firewall-rules-box.js | 16 ++++++++++++++-- 4 files changed, 48 insertions(+), 3 deletions(-) diff --git a/internal/gen/generate.go b/internal/gen/generate.go index f3512a6e..1d511005 100644 --- a/internal/gen/generate.go +++ b/internal/gen/generate.go @@ -9,6 +9,7 @@ import ( "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/conds/condutils" "github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" + "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/firewallconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared" "github.com/iwind/TeaGo/Tea" "github.com/iwind/TeaGo/files" @@ -115,6 +116,16 @@ func generateComponentsJSFile() error { buffer.Write([]byte{'\n', '\n'}) } + // WAF操作符 + wafOperatorsJSON, err := json.Marshal(firewallconfigs.AllRuleOperators) + if err != nil { + logs.Println("ComponentsAction marshal waf rule operators failed: " + err.Error()) + } else { + buffer.WriteString("window.WAF_RULE_OPERATORS = ") + buffer.Write(wafOperatorsJSON) + buffer.Write([]byte{'\n', '\n'}) + } + fp, err := os.OpenFile(filepath.Clean(Tea.PublicFile("/js/components.src.js")), os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0777) if err != nil { return err diff --git a/internal/web/actions/default/ui/components.go b/internal/web/actions/default/ui/components.go index 947af66f..b3aefc2a 100644 --- a/internal/web/actions/default/ui/components.go +++ b/internal/web/actions/default/ui/components.go @@ -8,6 +8,7 @@ import ( "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/conds/condutils" "github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" + "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/firewallconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared" "github.com/iwind/TeaGo/Tea" "github.com/iwind/TeaGo/actions" @@ -123,6 +124,16 @@ func (this *ComponentsAction) RunGet(params struct{}) { buffer.Write([]byte{'\n', '\n'}) } + // WAF操作符 + wafOperatorsJSON, err := json.Marshal(firewallconfigs.AllRuleOperators) + if err != nil { + logs.Println("ComponentsAction marshal waf rule operators failed: " + err.Error()) + } else { + buffer.WriteString("window.WAF_RULE_OPERATORS = ") + buffer.Write(wafOperatorsJSON) + buffer.Write([]byte{'\n', '\n'}) + } + componentsData = buffer.Bytes() // ETag diff --git a/web/public/js/components/server/http-firewall-rule-label.js b/web/public/js/components/server/http-firewall-rule-label.js index 55e27d45..f991bb95 100644 --- a/web/public/js/components/server/http-firewall-rule-label.js +++ b/web/public/js/components/server/http-firewall-rule-label.js @@ -10,7 +10,18 @@ Vue.component("http-firewall-rule-label", { showErr: function (err) { teaweb.popupTip("规则校验错误,请修正:" + teaweb.encodeHTML(err) + "") }, + operatorName: function (operatorCode) { + var operatorName = operatorCode + if (typeof (window.WAF_RULE_OPERATORS) != null) { + window.WAF_RULE_OPERATORS.forEach(function (v) { + if (v.code == operatorCode) { + operatorName = v.name + } + }) + } + return operatorName + } }, template: `
@@ -29,7 +40,7 @@ Vue.component("http-firewall-rule-label", { | {{paramFilter.code}} - {{rule.operator}} + {{operatorName(rule.operator)}} {{rule.value}} diff --git a/web/public/js/components/server/http-firewall-rules-box.js b/web/public/js/components/server/http-firewall-rules-box.js index 32481ad7..d2e9c2f2 100644 --- a/web/public/js/components/server/http-firewall-rules-box.js +++ b/web/public/js/components/server/http-firewall-rules-box.js @@ -35,12 +35,24 @@ Vue.component("http-firewall-rules-box", { teaweb.confirm("确定要删除此规则吗?", function () { that.rules.$remove(index) }) + }, + operatorName: function (operatorCode) { + var operatorName = operatorCode + if (typeof (window.WAF_RULE_OPERATORS) != null) { + window.WAF_RULE_OPERATORS.forEach(function (v) { + if (v.code == operatorCode) { + operatorName = v.name + } + }) + } + + return operatorName } }, template: `
-
+
{{rule.name}}[{{rule.param}}] @@ -55,7 +67,7 @@ Vue.component("http-firewall-rules-box", { - | {{paramFilter.code}} {{rule.operator}} {{rule.value}} + | {{paramFilter.code}} {{operatorName(rule.operator)}} {{rule.value}}