diff --git a/internal/const/const.go b/internal/const/const.go index 3ad5cd9d..64153265 100644 --- a/internal/const/const.go +++ b/internal/const/const.go @@ -1,7 +1,7 @@ package teaconst const ( - Version = "0.0.1" + Version = "0.0.2" ProductName = "Edge Admin" ProcessName = "edge-admin" diff --git a/internal/web/actions/default/servers/components/waf/createRulePopup.go b/internal/web/actions/default/servers/components/waf/createRulePopup.go index 1042c66f..247ec671 100644 --- a/internal/web/actions/default/servers/components/waf/createRulePopup.go +++ b/internal/web/actions/default/servers/components/waf/createRulePopup.go @@ -22,15 +22,16 @@ func (this *CreateRulePopupAction) RunGet(params struct { }) { // check points checkpointList := []maps.Map{} - for _, def := range firewallconfigs.AllCheckpoints { - if (params.Type == "inbound" && def.IsRequest) || (params.Type == "outbound" && !def.IsRequest) { + for _, checkpoint := range firewallconfigs.AllCheckpoints { + if (params.Type == "inbound" && checkpoint.IsRequest) || (params.Type == "outbound" && !checkpoint.IsRequest) { checkpointList = append(checkpointList, maps.Map{ - "name": def.Name, - "prefix": def.Prefix, - "description": def.Description, - "hasParams": len(def.Params) > 0, - "params": def.Params, - "options": def.Options, + "name": checkpoint.Name, + "prefix": checkpoint.Prefix, + "description": checkpoint.Description, + "hasParams": len(checkpoint.Params) > 0, + "params": checkpoint.Params, + "options": checkpoint.Options, + "isComposed": checkpoint.IsComposed, }) } } @@ -89,7 +90,7 @@ func (this *CreateRulePopupAction) RunPost(params struct { rule.CheckpointOptions = map[string]interface{}{} for _, option := range options { - rule.CheckpointOptions[option.GetString("code")] = option.GetString("value") + rule.CheckpointOptions[option.GetString("code")] = option.Get("value") } } diff --git a/internal/web/actions/default/servers/components/waf/group.go b/internal/web/actions/default/servers/components/waf/group.go index 6b7fe9b8..a5189cfa 100644 --- a/internal/web/actions/default/servers/components/waf/group.go +++ b/internal/web/actions/default/servers/components/waf/group.go @@ -86,15 +86,15 @@ func (this *GroupAction) RunGet(params struct { "name": set.Name, "rules": lists.Map(set.Rules, func(k int, v interface{}) interface{} { rule := v.(*firewallconfigs.HTTPFirewallRule) - return maps.Map{ "param": rule.Param, "operator": rule.Operator, "value": rule.Value, "isCaseInsensitive": rule.IsCaseInsensitive, + "isComposed": firewallconfigs.CheckCheckpointIsComposed(rule.Prefix()), } }), - "isOn": set.IsOn, + "isOn": set.IsOn, "action": strings.ToUpper(set.Action), "actionOptions": set.ActionOptions, "actionName": firewallconfigs.FindActionName(set.Action), diff --git a/internal/web/actions/default/servers/components/waf/policy.go b/internal/web/actions/default/servers/components/waf/policy.go index 3845c8b3..32dc8adb 100644 --- a/internal/web/actions/default/servers/components/waf/policy.go +++ b/internal/web/actions/default/servers/components/waf/policy.go @@ -3,6 +3,7 @@ package waf import ( "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/TeaOSLab/EdgeAdmin/internal/web/models" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" "github.com/iwind/TeaGo/maps" ) @@ -53,5 +54,20 @@ func (this *PolicyAction) RunGet(params struct { "groups": internalGroups, } + // 正在使用此策略的服务 + listServersResp, err := this.RPC().ServerRPC().FindAllEnabledServersWithHTTPFirewallPolicyId(this.AdminContext(), &pb.FindAllEnabledServersWithHTTPFirewallPolicyIdRequest{FirewallPolicyId: params.FirewallPolicyId}) + if err != nil { + this.ErrorPage(err) + return + } + serverMaps := []maps.Map{} + for _, server := range listServersResp.Servers { + serverMaps = append(serverMaps, maps.Map{ + "id": server.Id, + "name": server.Name, + }) + } + this.Data["servers"] = serverMaps + this.Show() } 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 9ed7a7db..b520b7e8 100644 --- a/web/public/js/components/server/http-firewall-rules-box.js +++ b/web/public/js/components/server/http-firewall-rules-box.js @@ -39,7 +39,7 @@ Vue.component("http-firewall-rules-box", {
- {{rule.param}} {{rule.operator}} {{rule.value}} + {{rule.param}} {{rule.operator}} {{rule.value}}
diff --git a/web/public/js/components/server/http-firewall-rules.js b/web/public/js/components/server/http-firewall-rules.js new file mode 100644 index 00000000..d7bb87da --- /dev/null +++ b/web/public/js/components/server/http-firewall-rules.js @@ -0,0 +1,86 @@ +// 通用Header长度 +let defaultGeneralHeaders = ["Cache-Control", "Connection", "Date", "Pragma", "Trailer", "Transfer-Encoding", "Upgrade", "Via", "Warning"] +Vue.component("http-cond-general-header-length", { + props: ["v-checkpoint"], + data: function () { + let headers = null + let length = null + + if (window.parent.UPDATING_RULE != null) { + let options = window.parent.UPDATING_RULE.checkpointOptions + if (options.headers != null && Array.$isArray(options.headers)) { + headers = options.headers + } + if (options.length != null) { + length = options.length + } + } + + + if (headers == null) { + headers = defaultGeneralHeaders + } + + if (length == null) { + length = 128 + } + + let that = this + setTimeout(function () { + that.change() + }, 100) + + return { + headers: headers, + length: length + } + }, + watch: { + length: function (v) { + let len = parseInt(v) + if (isNaN(len)) { + len = 0 + } + if (len < 0) { + len = 0 + } + this.length = len + this.change() + } + }, + methods: { + change: function () { + this.vCheckpoint.options = [ + { + code: "headers", + value: this.headers + }, + { + code: "length", + value: this.length + } + ] + } + }, + template: `
+ + + + + + + + + +
通用Header列表 + +

需要检查的Header列表。

+
Header值超出长度 +
+ + 字节 +
+

超出此长度认为匹配成功,0表示不限制。

+
+
` +}) \ No newline at end of file diff --git a/web/views/@default/servers/components/waf/createRulePopup.html b/web/views/@default/servers/components/waf/createRulePopup.html index 3725aeaa..f0193283 100644 --- a/web/views/@default/servers/components/waf/createRulePopup.html +++ b/web/views/@default/servers/components/waf/createRulePopup.html @@ -12,7 +12,10 @@

${{{checkpoint.prefix}}}{{checkpoint.description}}

@@ -27,59 +30,71 @@ - - - - {{option.name}} - -
-
- -
-
- {{option.rightLabel}} -
-
-
-
- -
-
- {{option.rightLabel}} -
-
-

{{option.comment}}

- - + + + + 配置选项 + + + + - - 操作符 - - -

- - - - 开启大小写不敏感 - -
- - -
-

开启后忽略英文字母大小写

- - - - 对比值 - - - - + + + + {{option.name}} + +
+
+ +
+
+ {{option.rightLabel}} +
+
+
+
+ +
+
+ {{option.rightLabel}} +
+
+

{{option.comment}}

+ + + + + + + 操作符 + + +

+ + + + 开启大小写不敏感 + +
+ + +
+

开启后忽略英文字母大小写

+ + + + 对比值 + + + + + diff --git a/web/views/@default/servers/components/waf/group.html b/web/views/@default/servers/components/waf/group.html index ced5daa1..e5cfd42d 100644 --- a/web/views/@default/servers/components/waf/group.html +++ b/web/views/@default/servers/components/waf/group.html @@ -48,7 +48,7 @@
- {{rule.name}}[{{rule.param}}] {{rule.operator}} {{rule.value}} + {{rule.name}}[{{rule.param}}] {{rule.operator}} {{rule.value}}
暂时还没有规则 diff --git a/web/views/@default/servers/components/waf/policy.html b/web/views/@default/servers/components/waf/policy.html index 993c1a5a..d780ae2f 100644 --- a/web/views/@default/servers/components/waf/policy.html +++ b/web/views/@default/servers/components/waf/policy.html @@ -29,4 +29,12 @@ + +

使用此策略的服务

+

暂时还没有代理服务使用此策略。

+ + + + +
{{server.name}}
\ No newline at end of file