From a226eee6efb5f1d0c49f1b51fceae18c7946bd06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Tue, 14 Dec 2021 21:26:32 +0800 Subject: [PATCH] =?UTF-8?q?HTTP=20Header=EF=BC=9A=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E8=AF=B7=E6=B1=82=E6=96=B9=E6=B3=95=E3=80=81=E5=9F=9F=E5=90=8D?= =?UTF-8?q?=E3=80=81=E7=8A=B6=E6=80=81=E7=A0=81=E7=AD=89=E9=99=90=E5=88=B6?= =?UTF-8?q?=EF=BC=8C=E5=AE=9E=E7=8E=B0=E5=86=85=E5=AE=B9=E6=9B=BF=E6=8D=A2?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/actions/default/servers/create.go | 2 +- .../server/settings/headers/createSetPopup.go | 61 ++++++++++++- .../servers/server/settings/headers/delete.go | 60 ------------- .../server/settings/headers/updateSetPopup.go | 63 ++++++++++++- .../server/http-header-policy-box.js | 36 ++++++-- .../server/http-header-replace-values.js | 77 ++++++++++++++++ .../js/components/server/http-methods-box.js | 81 +++++++++++++++++ .../js/components/server/http-status-box.js | 89 +++++++++++++++++++ web/views/@default/@layout_popup.css | 2 +- web/views/@default/@layout_popup.css.map | 2 +- web/views/@default/@layout_popup.less | 2 +- .../settings/headers/createSetPopup.html | 49 +++++++++- .../server/settings/headers/createSetPopup.js | 3 + .../settings/headers/updateSetPopup.html | 48 +++++++++- .../server/settings/headers/updateSetPopup.js | 7 ++ 15 files changed, 503 insertions(+), 79 deletions(-) create mode 100644 web/public/js/components/server/http-header-replace-values.js create mode 100644 web/public/js/components/server/http-methods-box.js create mode 100644 web/public/js/components/server/http-status-box.js create mode 100644 web/views/@default/servers/server/settings/headers/createSetPopup.js create mode 100644 web/views/@default/servers/server/settings/headers/updateSetPopup.js diff --git a/internal/web/actions/default/servers/create.go b/internal/web/actions/default/servers/create.go index 26667286..e985cec8 100644 --- a/internal/web/actions/default/servers/create.go +++ b/internal/web/actions/default/servers/create.go @@ -467,7 +467,7 @@ func (this *CreateAction) RunPost(params struct { AccessLogJSON: []byte(`{ "isPrior": false, "isOn": true, - "fields": [6, 7], + "fields": [1, 2, 6, 7], "status1": true, "status2": true, "status3": true, diff --git a/internal/web/actions/default/servers/server/settings/headers/createSetPopup.go b/internal/web/actions/default/servers/server/settings/headers/createSetPopup.go index ef40837b..da36a0f3 100644 --- a/internal/web/actions/default/servers/server/settings/headers/createSetPopup.go +++ b/internal/web/actions/default/servers/server/settings/headers/createSetPopup.go @@ -19,8 +19,10 @@ func (this *CreateSetPopupAction) Init() { func (this *CreateSetPopupAction) RunGet(params struct { HeaderPolicyId int64 + Type string }) { this.Data["headerPolicyId"] = params.HeaderPolicyId + this.Data["type"] = params.Type this.Show() } @@ -30,6 +32,14 @@ func (this *CreateSetPopupAction) RunPost(params struct { Name string Value string + StatusListJSON []byte + MethodsJSON []byte + DomainsJSON []byte + ShouldAppend bool + DisableRedirect bool + ShouldReplace bool + ReplaceValuesJSON []byte + Must *actions.Must }) { // 日志 @@ -51,10 +61,57 @@ func (this *CreateSetPopupAction) RunPost(params struct { return } + // status list + var statusList = []int32{} + if len(params.StatusListJSON) > 0 { + err = json.Unmarshal(params.StatusListJSON, &statusList) + if err != nil { + this.ErrorPage(err) + return + } + } + + // methods + var methods = []string{} + if len(params.MethodsJSON) > 0 { + err = json.Unmarshal(params.MethodsJSON, &methods) + if err != nil { + this.ErrorPage(err) + return + } + } + + // domains + var domains = []string{} + if len(params.DomainsJSON) > 0 { + err = json.Unmarshal(params.DomainsJSON, &domains) + if err != nil { + this.ErrorPage(err) + return + } + } + + // replace values + var replaceValues = []*shared.HTTPHeaderReplaceValue{} + if len(params.ReplaceValuesJSON) > 0 { + err = json.Unmarshal(params.ReplaceValuesJSON, &replaceValues) + if err != nil { + this.ErrorPage(err) + return + } + } + // 创建Header createHeaderResp, err := this.RPC().HTTPHeaderRPC().CreateHTTPHeader(this.AdminContext(), &pb.CreateHTTPHeaderRequest{ - Name: params.Name, - Value: params.Value, + Name: params.Name, + Value: params.Value, + Status: statusList, + Methods: methods, + Domains: domains, + ShouldAppend: params.ShouldAppend, + DisableRedirect: params.DisableRedirect, + ShouldReplace: params.ShouldReplace, + ReplaceValuesJSON: params.ReplaceValuesJSON, }) if err != nil { this.ErrorPage(err) diff --git a/internal/web/actions/default/servers/server/settings/headers/delete.go b/internal/web/actions/default/servers/server/settings/headers/delete.go index cf530ea4..a3301cc3 100644 --- a/internal/web/actions/default/servers/server/settings/headers/delete.go +++ b/internal/web/actions/default/servers/server/settings/headers/delete.go @@ -35,26 +35,6 @@ func (this *DeleteAction) RunPost(params struct { } switch params.Type { - case "addHeader": - result := []*shared.HTTPHeaderRef{} - for _, h := range policyConfig.AddHeaderRefs { - if h.HeaderId != params.HeaderId { - result = append(result, h) - } - } - resultJSON, err := json.Marshal(result) - if err != nil { - this.ErrorPage(err) - return - } - _, err = this.RPC().HTTPHeaderPolicyRPC().UpdateHTTPHeaderPolicyAddingHeaders(this.AdminContext(), &pb.UpdateHTTPHeaderPolicyAddingHeadersRequest{ - HeaderPolicyId: params.HeaderPolicyId, - HeadersJSON: resultJSON, - }) - if err != nil { - this.ErrorPage(err) - return - } case "setHeader": result := []*shared.HTTPHeaderRef{} for _, h := range policyConfig.SetHeaderRefs { @@ -75,46 +55,6 @@ func (this *DeleteAction) RunPost(params struct { this.ErrorPage(err) return } - case "replace": - result := []*shared.HTTPHeaderRef{} - for _, h := range policyConfig.ReplaceHeaderRefs { - if h.HeaderId != params.HeaderId { - result = append(result, h) - } - } - resultJSON, err := json.Marshal(result) - if err != nil { - this.ErrorPage(err) - return - } - _, err = this.RPC().HTTPHeaderPolicyRPC().UpdateHTTPHeaderPolicyReplacingHeaders(this.AdminContext(), &pb.UpdateHTTPHeaderPolicyReplacingHeadersRequest{ - HeaderPolicyId: params.HeaderPolicyId, - HeadersJSON: resultJSON, - }) - if err != nil { - this.ErrorPage(err) - return - } - case "addTrailer": - result := []*shared.HTTPHeaderRef{} - for _, h := range policyConfig.AddTrailerRefs { - if h.HeaderId != params.HeaderId { - result = append(result, h) - } - } - resultJSON, err := json.Marshal(result) - if err != nil { - this.ErrorPage(err) - return - } - _, err = this.RPC().HTTPHeaderPolicyRPC().UpdateHTTPHeaderPolicyAddingTrailers(this.AdminContext(), &pb.UpdateHTTPHeaderPolicyAddingTrailersRequest{ - HeaderPolicyId: params.HeaderPolicyId, - HeadersJSON: resultJSON, - }) - if err != nil { - this.ErrorPage(err) - return - } } this.Success() diff --git a/internal/web/actions/default/servers/server/settings/headers/updateSetPopup.go b/internal/web/actions/default/servers/server/settings/headers/updateSetPopup.go index 4d358b13..1d65eb37 100644 --- a/internal/web/actions/default/servers/server/settings/headers/updateSetPopup.go +++ b/internal/web/actions/default/servers/server/settings/headers/updateSetPopup.go @@ -20,9 +20,11 @@ func (this *UpdateSetPopupAction) Init() { func (this *UpdateSetPopupAction) RunGet(params struct { HeaderPolicyId int64 HeaderId int64 + Type string }) { this.Data["headerPolicyId"] = params.HeaderPolicyId this.Data["headerId"] = params.HeaderId + this.Data["type"] = params.Type headerResp, err := this.RPC().HTTPHeaderRPC().FindEnabledHTTPHeaderConfig(this.AdminContext(), &pb.FindEnabledHTTPHeaderConfigRequest{HeaderId: params.HeaderId}) if err != nil { @@ -45,6 +47,14 @@ func (this *UpdateSetPopupAction) RunPost(params struct { Name string Value string + StatusListJSON []byte + MethodsJSON []byte + DomainsJSON []byte + ShouldAppend bool + DisableRedirect bool + ShouldReplace bool + ReplaceValuesJSON []byte + Must *actions.Must }) { // 日志 @@ -54,10 +64,57 @@ func (this *UpdateSetPopupAction) RunPost(params struct { Field("name", params.Name). Require("请输入Header名称") + // status list + var statusList = []int32{} + if len(params.StatusListJSON) > 0 { + err := json.Unmarshal(params.StatusListJSON, &statusList) + if err != nil { + this.ErrorPage(err) + return + } + } + + // methods + var methods = []string{} + if len(params.MethodsJSON) > 0 { + err := json.Unmarshal(params.MethodsJSON, &methods) + if err != nil { + this.ErrorPage(err) + return + } + } + + // domains + var domains = []string{} + if len(params.DomainsJSON) > 0 { + err := json.Unmarshal(params.DomainsJSON, &domains) + if err != nil { + this.ErrorPage(err) + return + } + } + + // replace values + var replaceValues = []*shared.HTTPHeaderReplaceValue{} + if len(params.ReplaceValuesJSON) > 0 { + err := json.Unmarshal(params.ReplaceValuesJSON, &replaceValues) + if err != nil { + this.ErrorPage(err) + return + } + } + _, err := this.RPC().HTTPHeaderRPC().UpdateHTTPHeader(this.AdminContext(), &pb.UpdateHTTPHeaderRequest{ - HeaderId: params.HeaderId, - Name: params.Name, - Value: params.Value, + HeaderId: params.HeaderId, + Name: params.Name, + Value: params.Value, + Status: statusList, + Methods: methods, + Domains: domains, + ShouldAppend: params.ShouldAppend, + DisableRedirect: params.DisableRedirect, + ShouldReplace: params.ShouldReplace, + ReplaceValuesJSON: params.ReplaceValuesJSON, }) if err != nil { this.ErrorPage(err) diff --git a/web/public/js/components/server/http-header-policy-box.js b/web/public/js/components/server/http-header-policy-box.js index d7fed57d..e8e0203f 100644 --- a/web/public/js/components/server/http-header-policy-box.js +++ b/web/public/js/components/server/http-header-policy-box.js @@ -1,10 +1,10 @@ Vue.component("http-header-policy-box", { props: ["v-request-header-policy", "v-request-header-ref", "v-response-header-policy", "v-response-header-ref", "v-params", "v-is-location", "v-is-group", "v-has-group-request-config", "v-has-group-response-config", "v-group-setting-url"], data: function () { - let type = "request" + let type = "response" let hash = window.location.hash - if (hash == "#response") { - type = "response" + if (hash == "#request") { + type = "request" } // ref @@ -72,7 +72,7 @@ Vue.component("http-header-policy-box", { window.location.reload() }, addSettingHeader: function (policyId) { - teaweb.popup("/servers/server/settings/headers/createSetPopup?" + this.vParams + "&headerPolicyId=" + policyId, { + teaweb.popup("/servers/server/settings/headers/createSetPopup?" + this.vParams + "&headerPolicyId=" + policyId + "&type=" + this.type, { callback: function () { teaweb.successRefresh("保存成功") } @@ -86,7 +86,7 @@ Vue.component("http-header-policy-box", { }) }, updateSettingPopup: function (policyId, headerId) { - teaweb.popup("/servers/server/settings/headers/updateSetPopup?" + this.vParams + "&headerPolicyId=" + policyId + "&headerId=" + headerId, { + teaweb.popup("/servers/server/settings/headers/updateSetPopup?" + this.vParams + "&headerPolicyId=" + policyId + "&headerId=" + headerId+ "&type=" + this.type, { callback: function () { teaweb.successRefresh("保存成功") } @@ -118,8 +118,8 @@ Vue.component("http-header-policy-box", { }, template: `
@@ -152,7 +152,17 @@ Vue.component("http-header-policy-box", { - {{header.name}} + + {{header.name}} +
+ {{code}} + {{method}} + {{domain}} + 附加 + 跳转禁用 + 替换 +
+ {{header.value}} 修改   删除 @@ -201,7 +211,17 @@ Vue.component("http-header-policy-box", { - {{header.name}} + + {{header.name}} +
+ {{code}} + {{method}} + {{domain}} + 附加 + 跳转禁用 + 替换 +
+ {{header.value}} 修改   删除 diff --git a/web/public/js/components/server/http-header-replace-values.js b/web/public/js/components/server/http-header-replace-values.js new file mode 100644 index 00000000..67b908f5 --- /dev/null +++ b/web/public/js/components/server/http-header-replace-values.js @@ -0,0 +1,77 @@ +Vue.component("http-header-replace-values", { + props: ["v-replace-values"], + data: function () { + let values = this.vReplaceValues + if (values == null) { + values = [] + } + return { + values: values, + isAdding: false, + addingValue: {"pattern": "", "replacement": "", "isCaseInsensitive": false, "isRegexp": false} + } + }, + methods: { + add: function () { + this.isAdding = true + let that = this + setTimeout(function () { + that.$refs.pattern.focus() + }) + }, + remove: function (index) { + this.values.$remove(index) + }, + confirm: function () { + let that = this + if (this.addingValue.pattern.length == 0) { + teaweb.warn("替换前内容不能为空", function () { + that.$refs.pattern.focus() + }) + return + } + + this.values.push(this.addingValue) + this.cancel() + }, + cancel: function () { + this.isAdding = false + this.addingValue = {"pattern": "", "replacement": "", "isCaseInsensitive": false, "isRegexp": false} + } + }, + template: `
+ +
+
+ {{value.pattern}} => {{value.replacement}}[空] + +
+
+
+ + + + + + + + + + + + + +
替换前内容 *
替换后内容
是否忽略大小写 + +
+ +
+   + +
+
+
+ +
+
` +}) \ No newline at end of file diff --git a/web/public/js/components/server/http-methods-box.js b/web/public/js/components/server/http-methods-box.js new file mode 100644 index 00000000..de9b43b0 --- /dev/null +++ b/web/public/js/components/server/http-methods-box.js @@ -0,0 +1,81 @@ +// 请求方法列表 +Vue.component("http-methods-box", { + props: ["v-methods"], + data: function () { + let methods = this.vMethods + if (methods == null) { + methods = [] + } + return { + methods: methods, + isAdding: false, + addingMethod: "" + } + }, + methods: { + add: function () { + this.isAdding = true + let that = this + setTimeout(function () { + that.$refs.addingMethod.focus() + }, 100) + }, + confirm: function () { + let that = this + + // 删除其中的空格 + this.addingMethod = this.addingMethod.replace(/\s/g, "").toUpperCase() + + if (this.addingMethod.length == 0) { + teaweb.warn("请输入要添加的请求方法", function () { + that.$refs.addingMethod.focus() + }) + return + } + + // 是否已经存在 + if (this.methods.$contains(this.addingMethod)) { + teaweb.warn("此请求方法已经存在,无需重复添加", function () { + that.$refs.addingMethod.focus() + }) + return + } + + this.methods.push(this.addingMethod) + this.cancel() + }, + remove: function (index) { + this.methods.$remove(index) + }, + cancel: function () { + this.isAdding = false + this.addingMethod = "" + } + }, + template: `
+ +
+ + {{method}} +   + +
+
+
+
+
+ +
+
+ +   +
+
+

格式为大写,比如GETPOST等。

+
+
+
+ +
+
` +}) \ No newline at end of file diff --git a/web/public/js/components/server/http-status-box.js b/web/public/js/components/server/http-status-box.js new file mode 100644 index 00000000..cab927df --- /dev/null +++ b/web/public/js/components/server/http-status-box.js @@ -0,0 +1,89 @@ +// 请求方法列表 +Vue.component("http-status-box", { + props: ["v-status-list"], + data: function () { + let statusList = this.vStatusList + if (statusList == null) { + statusList = [] + } + return { + statusList: statusList, + isAdding: false, + addingStatus: "" + } + }, + methods: { + add: function () { + this.isAdding = true + let that = this + setTimeout(function () { + that.$refs.addingStatus.focus() + }, 100) + }, + confirm: function () { + let that = this + + // 删除其中的空格 + this.addingStatus = this.addingStatus.replace(/\s/g, "").toUpperCase() + + if (this.addingStatus.length == 0) { + teaweb.warn("请输入要添加的状态码", function () { + that.$refs.addingStatus.focus() + }) + return + } + + // 是否已经存在 + if (this.statusList.$contains(this.addingStatus)) { + teaweb.warn("此状态码已经存在,无需重复添加", function () { + that.$refs.addingStatus.focus() + }) + return + } + + // 格式 + if (!this.addingStatus.match(/^\d{3}$/)) { + teaweb.warn("请输入正确的状态码", function () { + that.$refs.addingStatus.focus() + }) + return + } + + this.statusList.push(parseInt(this.addingStatus, 10)) + this.cancel() + }, + remove: function (index) { + this.statusList.$remove(index) + }, + cancel: function () { + this.isAdding = false + this.addingStatus = "" + } + }, + template: `
+ +
+ + {{status}} +   + +
+
+
+
+
+ +
+
+ +   +
+
+

格式为三位数字,比如200404等。

+
+
+
+ +
+
` +}) \ No newline at end of file diff --git a/web/views/@default/@layout_popup.css b/web/views/@default/@layout_popup.css index 1d451efe..1580d8cf 100644 --- a/web/views/@default/@layout_popup.css +++ b/web/views/@default/@layout_popup.css @@ -121,7 +121,7 @@ p.margin { .main table td { vertical-align: top; } -.main table td.color-border { +table td.color-border { border-left: 1px #276ac6 solid !important; } .main table td.vertical-top { diff --git a/web/views/@default/@layout_popup.css.map b/web/views/@default/@layout_popup.css.map index 9944d099..f44d1b9d 100644 --- a/web/views/@default/@layout_popup.css.map +++ b/web/views/@default/@layout_popup.css.map @@ -1 +1 @@ -{"version":3,"sources":["@layout_popup.less"],"names":[],"mappings":"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","file":"@layout_popup.css"} \ No newline at end of file +{"version":3,"sources":["@layout_popup.less"],"names":[],"mappings":"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","file":"@layout_popup.css"} \ No newline at end of file diff --git a/web/views/@default/@layout_popup.less b/web/views/@default/@layout_popup.less index d9e1a96f..39e23fb5 100644 --- a/web/views/@default/@layout_popup.less +++ b/web/views/@default/@layout_popup.less @@ -140,7 +140,7 @@ div.margin, p.margin { vertical-align: top; } -.main table td.color-border { +table td.color-border { border-left: 1px #276ac6 solid !important; } diff --git a/web/views/@default/servers/server/settings/headers/createSetPopup.html b/web/views/@default/servers/server/settings/headers/createSetPopup.html index 29acebbe..126dd001 100644 --- a/web/views/@default/servers/server/settings/headers/createSetPopup.html +++ b/web/views/@default/servers/server/settings/headers/createSetPopup.html @@ -5,7 +5,7 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称(Name)名称(Name) *

请注意名称的大小写,如无特殊需求,Header名称的格式通常为Xxx或者Xxx-Yyy

@@ -18,6 +18,53 @@

可以包含请求变量。

更多选项
支持的状态码 + +

只有在设置响应Header时才会起作用。

+
支持的请求方法
支持的域名
只附加不替换 + +

选中后表示如果已经存在同名的Header,则只会附加在原有的Header之后,不会覆盖。

+
不在跳转时启用 + +

选中后表示在30X跳转时不启用当前Header。

+
启用内容替换 + +

可以替换原有Header中的内容。

+
替换内容 + +
diff --git a/web/views/@default/servers/server/settings/headers/createSetPopup.js b/web/views/@default/servers/server/settings/headers/createSetPopup.js new file mode 100644 index 00000000..f341c461 --- /dev/null +++ b/web/views/@default/servers/server/settings/headers/createSetPopup.js @@ -0,0 +1,3 @@ +Tea.context(function () { + this.shouldReplace = false +}) \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/headers/updateSetPopup.html b/web/views/@default/servers/server/settings/headers/updateSetPopup.html index dd16d4c7..2b9b5350 100644 --- a/web/views/@default/servers/server/settings/headers/updateSetPopup.html +++ b/web/views/@default/servers/server/settings/headers/updateSetPopup.html @@ -6,7 +6,7 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称(Name)名称(Name) *

请注意名称的大小写,如无特殊需求,Header名称的格式通常为Xxx或者Xxx-Yyy

@@ -19,6 +19,52 @@

可以包含请求变量。

更多选项
支持的状态码 + +
支持的请求方法
支持的域名
只附加不替换 + +

选中后表示如果已经存在同名的Header,则只会附加在原有的Header之后,不会覆盖。

+
不在跳转时启用 + +

选中后表示在30X跳转时不启用当前Header。

+
启用内容替换 + +

可以替换原有Header中的内容。

+
替换内容 + +
diff --git a/web/views/@default/servers/server/settings/headers/updateSetPopup.js b/web/views/@default/servers/server/settings/headers/updateSetPopup.js new file mode 100644 index 00000000..9df37fea --- /dev/null +++ b/web/views/@default/servers/server/settings/headers/updateSetPopup.js @@ -0,0 +1,7 @@ +Tea.context(function () { + this.shouldReplace = this.headerConfig.shouldReplace + this.statusList = [] + if (this.headerConfig.status != null && this.headerConfig.status.codes != null) { + this.statusList = this.headerConfig.status.codes + } +}) \ No newline at end of file