diff --git a/internal/web/actions/default/servers/components/waf/group.go b/internal/web/actions/default/servers/components/waf/group.go
index 3a7daa9d..81be0c7c 100644
--- a/internal/web/actions/default/servers/components/waf/group.go
+++ b/internal/web/actions/default/servers/components/waf/group.go
@@ -80,6 +80,7 @@ func (this *GroupAction) RunGet(params struct {
"value": rule.Value,
"isCaseInsensitive": rule.IsCaseInsensitive,
"isComposed": firewallconfigs.CheckCheckpointIsComposed(rule.Prefix()),
+ "checkpointOptions": rule.CheckpointOptions,
}
}),
"isOn": set.IsOn,
diff --git a/internal/web/actions/default/servers/server/settings/waf/group.go b/internal/web/actions/default/servers/server/settings/waf/group.go
index 97ce1299..1c0739f3 100644
--- a/internal/web/actions/default/servers/server/settings/waf/group.go
+++ b/internal/web/actions/default/servers/server/settings/waf/group.go
@@ -81,6 +81,7 @@ func (this *GroupAction) RunGet(params struct {
"value": rule.Value,
"isCaseInsensitive": rule.IsCaseInsensitive,
"isComposed": firewallconfigs.CheckCheckpointIsComposed(rule.Prefix()),
+ "checkpointOptions": rule.CheckpointOptions,
}
}),
"isOn": set.IsOn,
diff --git a/web/public/js/components/server/http-firewall-rule-label.js b/web/public/js/components/server/http-firewall-rule-label.js
new file mode 100644
index 00000000..d88b7e6e
--- /dev/null
+++ b/web/public/js/components/server/http-firewall-rule-label.js
@@ -0,0 +1,24 @@
+// 显示WAF规则的标签
+Vue.component("http-firewall-rule-label", {
+ props: ["v-rule"],
+ data: function () {
+ return {
+ rule: this.vRule
+ }
+ },
+ template: `
+
+ {{rule.name}}[{{rule.param}}]
+
+
+
+ {{rule.checkpointOptions.period}}秒/{{rule.checkpointOptions.threshold}}请求
+
+
+ | {{paramFilter.code}}
+ {{rule.operator}}
+ {{rule.value}}
+
+
+
`
+})
\ No newline at end of file
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 6d552c06..4e90a51f 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,16 @@ Vue.component("http-firewall-rules-box", {
-
{{rule.param}} | {{paramFilter.code}} {{rule.operator}} {{rule.value}}
+ {{rule.name}}[{{rule.param}}]
+
+
+
+ {{rule.checkpointOptions.period}}秒/{{rule.checkpointOptions.threshold}}请求
+
+
+ | {{paramFilter.code}} {{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
index d7bb87da..8e2f9d15 100644
--- a/web/public/js/components/server/http-firewall-rules.js
+++ b/web/public/js/components/server/http-firewall-rules.js
@@ -83,4 +83,116 @@ Vue.component("http-cond-general-header-length", {
`
+})
+
+// CC
+Vue.component("http-firewall-checkpoint-cc", {
+ props: ["v-checkpoint"],
+ data: function () {
+ let keys = []
+ let period = 60
+ let threshold = 1000
+
+ let options = {}
+ if (window.parent.UPDATING_RULE != null) {
+ options = window.parent.UPDATING_RULE.checkpointOptions
+ }
+
+ if (options == null) {
+ options = {}
+ }
+ if (options.keys != null) {
+ keys = options.keys
+ }
+ if (keys.length == 0) {
+ keys = ["${remoteAddr}", "${requestPath}"]
+ }
+ if (options.period != null) {
+ period = options.period
+ }
+ if (options.threshold != null) {
+ threshold = options.threshold
+ }
+
+ let that = this
+ setTimeout(function () {
+ that.change()
+ }, 100)
+
+ return {
+ keys: keys,
+ period: period,
+ threshold: threshold,
+ options: {},
+ value: threshold
+ }
+ },
+ watch: {
+ period: function () {
+ this.change()
+ },
+ threshold: function () {
+ this.change()
+ }
+ },
+ methods: {
+ changeKeys: function (keys) {
+ this.keys = keys
+ this.change()
+ },
+ change: function () {
+ let period = parseInt(this.period.toString())
+ if (isNaN(period) || period <= 0) {
+ period = 60
+ }
+
+ let threshold = parseInt(this.threshold.toString())
+ if (isNaN(threshold) || threshold <= 0) {
+ threshold = 1000
+ }
+ this.value = threshold
+
+ this.vCheckpoint.options = [
+ {
+ code: "keys",
+ value: this.keys
+ },
+ {
+ code: "period",
+ value: period,
+ },
+ {
+ code: "threshold",
+ value: threshold
+ }
+ ]
+ }
+ },
+ template: ``
})
\ No newline at end of file
diff --git a/web/public/js/components/server/metric-keys-config-box.js b/web/public/js/components/server/metric-keys-config-box.js
index 3f8a99cc..2d8eb5ab 100644
--- a/web/public/js/components/server/metric-keys-config-box.js
+++ b/web/public/js/components/server/metric-keys-config-box.js
@@ -16,6 +16,11 @@ Vue.component("metric-keys-config-box", {
keyDefs: window.METRIC_HTTP_KEYS
}
},
+ watch: {
+ keys: function () {
+ this.$emit("change", this.keys)
+ }
+ },
methods: {
cancel: function () {
this.key = ""
diff --git a/web/views/@default/servers/components/waf/createRulePopup.html b/web/views/@default/servers/components/waf/createRulePopup.html
index 2b6e0894..655b9b79 100644
--- a/web/views/@default/servers/components/waf/createRulePopup.html
+++ b/web/views/@default/servers/components/waf/createRulePopup.html
@@ -34,10 +34,16 @@
+
+ | 配置选项 |
+
- | 配置选项 |
-
+ |
+
+
+
+
|
diff --git a/web/views/@default/servers/components/waf/group.html b/web/views/@default/servers/components/waf/group.html
index f43e8fbb..36115ceb 100644
--- a/web/views/@default/servers/components/waf/group.html
+++ b/web/views/@default/servers/components/waf/group.html
@@ -46,7 +46,7 @@
- {{rule.name}}[{{rule.param}}] | {{paramFilter.code}} {{rule.operator}} {{rule.value}}
+
暂时还没有规则
|
diff --git a/web/views/@default/servers/server/settings/headers/createSetPopup.html b/web/views/@default/servers/server/settings/headers/createSetPopup.html
index 3a49c5d5..f9909bf3 100644
--- a/web/views/@default/servers/server/settings/headers/createSetPopup.html
+++ b/web/views/@default/servers/server/settings/headers/createSetPopup.html
@@ -9,6 +9,7 @@
名称(Name) |
+
|
diff --git a/web/views/@default/servers/server/settings/waf/group.html b/web/views/@default/servers/server/settings/waf/group.html
index d0bb4e2e..b8ad3146 100644
--- a/web/views/@default/servers/server/settings/waf/group.html
+++ b/web/views/@default/servers/server/settings/waf/group.html
@@ -48,7 +48,7 @@
|
- {{rule.name}}[{{rule.param}}] | {{paramFilter.code}} {{rule.operator}} {{rule.value}}
+
暂时还没有规则
|