diff --git a/internal/web/actions/default/servers/server/settings/headers/createDeletePopup.go b/internal/web/actions/default/servers/server/settings/headers/createDeletePopup.go index bc029778..60fb17a7 100644 --- a/internal/web/actions/default/servers/server/settings/headers/createDeletePopup.go +++ b/internal/web/actions/default/servers/server/settings/headers/createDeletePopup.go @@ -45,14 +45,14 @@ func (this *CreateDeletePopupAction) RunPost(params struct { this.ErrorPage(err) return } - policyConfig := &shared.HTTPHeaderPolicy{} + var policyConfig = &shared.HTTPHeaderPolicy{} err = json.Unmarshal(policyConfigResp.HttpHeaderPolicyJSON, policyConfig) if err != nil { this.ErrorPage(err) return } - deleteHeaders := policyConfig.DeleteHeaders + var deleteHeaders = policyConfig.DeleteHeaders deleteHeaders = append(deleteHeaders, params.Name) _, err = this.RPC().HTTPHeaderPolicyRPC().UpdateHTTPHeaderPolicyDeletingHeaders(this.AdminContext(), &pb.UpdateHTTPHeaderPolicyDeletingHeadersRequest{ HttpHeaderPolicyId: params.HeaderPolicyId, diff --git a/internal/web/actions/default/servers/server/settings/headers/createNonStandardHeaderPopup.go b/internal/web/actions/default/servers/server/settings/headers/createNonStandardHeaderPopup.go new file mode 100644 index 00000000..6bfbeb62 --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/headers/createNonStandardHeaderPopup.go @@ -0,0 +1,67 @@ +package headers + +import ( + "encoding/json" + "github.com/TeaOSLab/EdgeAdmin/internal/oplogs" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" + "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared" + "github.com/iwind/TeaGo/actions" +) + +type CreateNonStandardPopupAction struct { + actionutils.ParentAction +} + +func (this *CreateNonStandardPopupAction) Init() { + this.Nav("", "", "") +} + +func (this *CreateNonStandardPopupAction) RunGet(params struct { + HeaderPolicyId int64 + Type string +}) { + this.Data["headerPolicyId"] = params.HeaderPolicyId + this.Data["type"] = params.Type + + this.Show() +} + +func (this *CreateNonStandardPopupAction) RunPost(params struct { + HeaderPolicyId int64 + Name string + + Must *actions.Must +}) { + // 日志 + defer this.CreateLog(oplogs.LevelInfo, "添加非标的Header HeaderPolicyId: %d, Name: %s", params.HeaderPolicyId, params.Name) + + params.Must. + Field("name", params.Name). + Require("名称不能为空") + + policyConfigResp, err := this.RPC().HTTPHeaderPolicyRPC().FindEnabledHTTPHeaderPolicyConfig(this.AdminContext(), &pb.FindEnabledHTTPHeaderPolicyConfigRequest{HttpHeaderPolicyId: params.HeaderPolicyId}) + if err != nil { + this.ErrorPage(err) + return + } + var policyConfig = &shared.HTTPHeaderPolicy{} + err = json.Unmarshal(policyConfigResp.HttpHeaderPolicyJSON, policyConfig) + if err != nil { + this.ErrorPage(err) + return + } + + var nonStandardHeaders = policyConfig.NonStandardHeaders + nonStandardHeaders = append(nonStandardHeaders, params.Name) + _, err = this.RPC().HTTPHeaderPolicyRPC().UpdateHTTPHeaderPolicyNonStandardHeaders(this.AdminContext(), &pb.UpdateHTTPHeaderPolicyNonStandardHeadersRequest{ + HttpHeaderPolicyId: params.HeaderPolicyId, + HeaderNames: nonStandardHeaders, + }) + if err != nil { + this.ErrorPage(err) + return + } + + this.Success() +} diff --git a/internal/web/actions/default/servers/server/settings/headers/deleteDeletingHeader.go b/internal/web/actions/default/servers/server/settings/headers/deleteDeletingHeader.go index 8ed32793..36a71936 100644 --- a/internal/web/actions/default/servers/server/settings/headers/deleteDeletingHeader.go +++ b/internal/web/actions/default/servers/server/settings/headers/deleteDeletingHeader.go @@ -17,22 +17,22 @@ func (this *DeleteDeletingHeaderAction) RunPost(params struct { HeaderName string }) { // 日志 - defer this.CreateLog(oplogs.LevelInfo, "删除需要删除的请求Header,HeaderPolicyId:%d, HeaderName:%s", params.HeaderPolicyId, params.HeaderName) + defer this.CreateLog(oplogs.LevelInfo, "删除需要删除的Header,HeaderPolicyId:%d, HeaderName:%s", params.HeaderPolicyId, params.HeaderName) policyConfigResp, err := this.RPC().HTTPHeaderPolicyRPC().FindEnabledHTTPHeaderPolicyConfig(this.AdminContext(), &pb.FindEnabledHTTPHeaderPolicyConfigRequest{HttpHeaderPolicyId: params.HeaderPolicyId}) if err != nil { this.ErrorPage(err) return } - policyConfigJSON := policyConfigResp.HttpHeaderPolicyJSON - policyConfig := &shared.HTTPHeaderPolicy{} + var policyConfigJSON = policyConfigResp.HttpHeaderPolicyJSON + var policyConfig = &shared.HTTPHeaderPolicy{} err = json.Unmarshal(policyConfigJSON, policyConfig) if err != nil { this.ErrorPage(err) return } - headerNames := []string{} + var headerNames = []string{} for _, h := range policyConfig.DeleteHeaders { if h == params.HeaderName { continue diff --git a/internal/web/actions/default/servers/server/settings/headers/deleteNonStandardHeader.go b/internal/web/actions/default/servers/server/settings/headers/deleteNonStandardHeader.go new file mode 100644 index 00000000..3cc596e9 --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/headers/deleteNonStandardHeader.go @@ -0,0 +1,52 @@ +package headers + +import ( + "encoding/json" + "github.com/TeaOSLab/EdgeAdmin/internal/oplogs" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" + "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared" +) + +type DeleteNonStandardHeaderAction struct { + actionutils.ParentAction +} + +func (this *DeleteNonStandardHeaderAction) RunPost(params struct { + HeaderPolicyId int64 + HeaderName string +}) { + // 日志 + defer this.CreateLog(oplogs.LevelInfo, "删除需要非标的Header,HeaderPolicyId:%d, HeaderName:%s", params.HeaderPolicyId, params.HeaderName) + + policyConfigResp, err := this.RPC().HTTPHeaderPolicyRPC().FindEnabledHTTPHeaderPolicyConfig(this.AdminContext(), &pb.FindEnabledHTTPHeaderPolicyConfigRequest{HttpHeaderPolicyId: params.HeaderPolicyId}) + if err != nil { + this.ErrorPage(err) + return + } + var policyConfigJSON = policyConfigResp.HttpHeaderPolicyJSON + var policyConfig = &shared.HTTPHeaderPolicy{} + err = json.Unmarshal(policyConfigJSON, policyConfig) + if err != nil { + this.ErrorPage(err) + return + } + + var headerNames = []string{} + for _, h := range policyConfig.NonStandardHeaders { + if h == params.HeaderName { + continue + } + headerNames = append(headerNames, h) + } + _, err = this.RPC().HTTPHeaderPolicyRPC().UpdateHTTPHeaderPolicyNonStandardHeaders(this.AdminContext(), &pb.UpdateHTTPHeaderPolicyNonStandardHeadersRequest{ + HttpHeaderPolicyId: params.HeaderPolicyId, + HeaderNames: headerNames, + }) + if err != nil { + this.ErrorPage(err) + return + } + + this.Success() +} diff --git a/internal/web/actions/default/servers/server/settings/headers/init.go b/internal/web/actions/default/servers/server/settings/headers/init.go index 57adce04..dea05d57 100644 --- a/internal/web/actions/default/servers/server/settings/headers/init.go +++ b/internal/web/actions/default/servers/server/settings/headers/init.go @@ -18,6 +18,8 @@ func init() { GetPost("/updateSetPopup", new(UpdateSetPopupAction)). GetPost("/createDeletePopup", new(CreateDeletePopupAction)). Post("/deleteDeletingHeader", new(DeleteDeletingHeaderAction)). + GetPost("/createNonStandardPopup", new(CreateNonStandardPopupAction)). + Post("/deleteNonStandardHeader", new(DeleteNonStandardHeaderAction)). Post("/delete", new(DeleteAction)). GetPost("/updateCORSPopup", new(UpdateCORSPopupAction)). EndAll() 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 eecf16c7..b0461367 100644 --- a/web/public/js/components/server/http-header-policy-box.js +++ b/web/public/js/components/server/http-header-policy-box.js @@ -29,6 +29,7 @@ Vue.component("http-header-policy-box", { // 请求相关 let requestSettingHeaders = [] let requestDeletingHeaders = [] + let requestNonStandardHeaders = [] let requestPolicy = this.vRequestHeaderPolicy if (requestPolicy != null) { @@ -38,11 +39,15 @@ Vue.component("http-header-policy-box", { if (requestPolicy.deleteHeaders != null) { requestDeletingHeaders = requestPolicy.deleteHeaders } + if (requestPolicy.nonStandardHeaders != null) { + requestNonStandardHeaders = requestPolicy.nonStandardHeaders + } } // 响应相关 let responseSettingHeaders = [] let responseDeletingHeaders = [] + let responseNonStandardHeaders = [] let responsePolicy = this.vResponseHeaderPolicy if (responsePolicy != null) { @@ -52,6 +57,9 @@ Vue.component("http-header-policy-box", { if (responsePolicy.deleteHeaders != null) { responseDeletingHeaders = responsePolicy.deleteHeaders } + if (responsePolicy.nonStandardHeaders != null) { + responseNonStandardHeaders = responsePolicy.nonStandardHeaders + } } let responseCORS = { @@ -64,12 +72,16 @@ Vue.component("http-header-policy-box", { return { type: type, typeName: (type == "request") ? "请求" : "响应", + requestHeaderRef: requestHeaderRef, responseHeaderRef: responseHeaderRef, requestSettingHeaders: requestSettingHeaders, requestDeletingHeaders: requestDeletingHeaders, + requestNonStandardHeaders: requestNonStandardHeaders, + responseSettingHeaders: responseSettingHeaders, responseDeletingHeaders: responseDeletingHeaders, + responseNonStandardHeaders: responseNonStandardHeaders, responseCORS: responseCORS } }, @@ -93,8 +105,15 @@ Vue.component("http-header-policy-box", { } }) }, + addNonStandardHeader: function (policyId, type) { + teaweb.popup("/servers/server/settings/headers/createNonStandardPopup?" + this.vParams + "&headerPolicyId=" + policyId + "&type=" + type, { + callback: function () { + teaweb.successRefresh("保存成功") + } + }) + }, updateSettingPopup: function (policyId, headerId) { - teaweb.popup("/servers/server/settings/headers/updateSetPopup?" + this.vParams + "&headerPolicyId=" + policyId + "&headerId=" + headerId+ "&type=" + this.type, { + teaweb.popup("/servers/server/settings/headers/updateSetPopup?" + this.vParams + "&headerPolicyId=" + policyId + "&headerId=" + headerId + "&type=" + this.type, { callback: function () { teaweb.successRefresh("保存成功") } @@ -111,6 +130,17 @@ Vue.component("http-header-policy-box", { .refresh() }) }, + deleteNonStandardHeader: function (policyId, headerName) { + teaweb.confirm("确定要删除'" + headerName + "'吗?", function () { + Tea.action("/servers/server/settings/headers/deleteNonStandardHeader") + .params({ + headerPolicyId: policyId, + headerName: headerName + }) + .post() + .refresh() + }) + }, deleteHeader: function (policyId, type, headerId) { teaweb.confirm("确定要删除此Header吗?", function () { this.$post("/servers/server/settings/headers/delete") @@ -186,20 +216,31 @@ Vue.component("http-header-policy-box", { -
这里可以设置需要从请求中删除的Header。
+| 需要删除的Header | -- - - | -
| 删除Header  | 
+						+ + + | +
| 非标Header  | 
+						+ + + | +
这里可以设置需要从响应中删除的Header。
- -| 需要删除的Header | -- - - | -
| CORS自适应跨域 | -
-						已启用未启用   [修改]
-						 启用后,服务器可以服务器会自动生成  | 
-				
| 删除Header  | 
+						+ + + | +
| 非标Header  | 
+						+ + + | +
| CORS自适应跨域 | +
+							已启用未启用   [修改]
+							 启用后,服务器可以服务器会自动生成  | 
+