diff --git a/web/public/js/components/common/values-box.js b/web/public/js/components/common/values-box.js
index b5cbd50a..a40cd435 100644
--- a/web/public/js/components/common/values-box.js
+++ b/web/public/js/components/common/values-box.js
@@ -1,5 +1,5 @@
Vue.component("values-box", {
- props: ["values", "v-values", "size", "maxlength", "name", "placeholder", "v-allow-empty"],
+ props: ["values", "v-values", "size", "maxlength", "name", "placeholder", "v-allow-empty", "validator"],
data: function () {
let values = this.values;
if (values == null) {
@@ -44,6 +44,22 @@ Vue.component("values-box", {
}
}
+ // validate
+ if (typeof(this.validator) == "function") {
+ let resp = this.validator.call(this, this.value)
+ if (typeof resp == "object") {
+ if (typeof resp.isOk == "boolean" && !resp.isOk) {
+ if (typeof resp.message == "string") {
+ let that = this
+ teaweb.warn(resp.message, function () {
+ that.$refs.value.focus();
+ })
+ }
+ return
+ }
+ }
+ }
+
if (this.isUpdating) {
Vue.set(this.realValues, this.index, this.value);
} else {
diff --git a/web/public/js/components/server/http-cache-ref-box.js b/web/public/js/components/server/http-cache-ref-box.js
index cfd266a8..294cc862 100644
--- a/web/public/js/components/server/http-cache-ref-box.js
+++ b/web/public/js/components/server/http-cache-ref-box.js
@@ -190,7 +190,10 @@ Vue.component("http-cache-ref-box", {
| {{condComponent.paramsTitle}} * |
-
+
+
|
diff --git a/web/public/js/components/server/http-cond-definitions.js b/web/public/js/components/server/http-cond-definitions.js
index 072848b3..cfdba943 100644
--- a/web/public/js/components/server/http-cond-definitions.js
+++ b/web/public/js/components/server/http-cond-definitions.js
@@ -716,8 +716,7 @@ Vue.component("http-cond-params", {
this.cond.value = this.versionRangeMinValue + "," + this.versionRangeMaxValue
}
},
- template: `
-
+ template: `
| 参数值 |
@@ -835,5 +834,5 @@ Vue.component("http-cond-params", {
|
-
`
+`
})
\ No newline at end of file
diff --git a/web/public/js/utils.js b/web/public/js/utils.js
index efbef7db..d1955eec 100644
--- a/web/public/js/utils.js
+++ b/web/public/js/utils.js
@@ -991,7 +991,45 @@ window.teaweb = {
}
return color
},
- DefaultChartColor: "#9DD3E8"
+ DefaultChartColor: "#9DD3E8",
+ validateIP: function (ip) {
+ if (typeof ip != "string") {
+ return false
+ }
+
+ if (ip.length == 0) {
+ return false
+ }
+
+ // IPv6
+ if (ip.indexOf(":") >= 0) {
+ let pieces = ip.split(":")
+ if (pieces.length > 8) {
+ return false
+ }
+ let isOk = true
+ pieces.forEach(function (piece) {
+ if (!/^[\da-fA-F]{0,4}$/.test(piece)) {
+ isOk = false
+ }
+ })
+
+ return isOk
+ }
+
+ if (!ip.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/)) {
+ return false
+ }
+ let pieces = ip.split(".")
+ let isOk = true
+ pieces.forEach(function (v) {
+ let v1 = parseInt(v)
+ if (v1 > 255) {
+ isOk = false
+ }
+ })
+ return isOk
+ }
}
String.prototype.quoteIP = function () {