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 () {