diff --git a/internal/web/actions/default/servers/headers/options.go b/internal/web/actions/default/servers/headers/options.go new file mode 100644 index 00000000..7eae49e3 --- /dev/null +++ b/internal/web/actions/default/servers/headers/options.go @@ -0,0 +1,26 @@ +// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn . + +package headers + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" +) + +type OptionsAction struct { + actionutils.ParentAction +} + +func (this *OptionsAction) RunPost(params struct { + Type string +}) { + if params.Type == "request" { + this.Data["headers"] = serverconfigs.AllHTTPCommonRequestHeaders + } else if params.Type == "response" { + this.Data["headers"] = serverconfigs.AllHTTPCommonResponseHeaders + } else { + this.Data["headers"] = []string{} + } + + this.Success() +} diff --git a/internal/web/actions/default/servers/init.go b/internal/web/actions/default/servers/init.go index 622bd2cc..b04513fa 100644 --- a/internal/web/actions/default/servers/init.go +++ b/internal/web/actions/default/servers/init.go @@ -2,6 +2,7 @@ package servers import ( "github.com/TeaOSLab/EdgeAdmin/internal/configloaders" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/headers" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/users" "github.com/TeaOSLab/EdgeAdmin/internal/web/helpers" "github.com/iwind/TeaGo" @@ -26,10 +27,13 @@ func init() { Get("/serverNamesPopup", new(ServerNamesPopupAction)). Post("/status", new(StatusAction)). - // + // user Post("/users/options", new(users.OptionsAction)). Post("/users/plans", new(users.PlansAction)). + // header + Post("/headers/options", new(headers.OptionsAction)). + // EndAll() }) 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 fdd67dfa..c7b9f9ca 100644 --- a/internal/web/actions/default/servers/server/settings/headers/createDeletePopup.go +++ b/internal/web/actions/default/servers/server/settings/headers/createDeletePopup.go @@ -19,8 +19,10 @@ func (this *CreateDeletePopupAction) Init() { func (this *CreateDeletePopupAction) RunGet(params struct { HeaderPolicyId int64 + Type string }) { this.Data["headerPolicyId"] = params.HeaderPolicyId + this.Data["type"] = params.Type this.Show() } 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 a3301cc3..5063f6a1 100644 --- a/internal/web/actions/default/servers/server/settings/headers/delete.go +++ b/internal/web/actions/default/servers/server/settings/headers/delete.go @@ -8,7 +8,7 @@ import ( "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared" ) -// 删除Header +// DeleteAction 删除Header type DeleteAction struct { actionutils.ParentAction } diff --git a/web/public/js/components/server/http-header-assitant.js b/web/public/js/components/server/http-header-assitant.js new file mode 100644 index 00000000..2b394530 --- /dev/null +++ b/web/public/js/components/server/http-header-assitant.js @@ -0,0 +1,44 @@ +Vue.component("http-header-assistant", { + props: ["v-type", "v-value"], + mounted: function () { + let that = this + Tea.action("/servers/headers/options?type=" + this.vType) + .post() + .success(function (resp) { + that.allHeaders = resp.data.headers + }) + }, + data: function () { + return { + allHeaders: [], + matchedHeaders: [], + + selectedHeaderName: "" + } + }, + watch: { + vValue: function (v) { + if (v != this.selectedHeaderName) { + this.selectedHeaderName = "" + } + + if (v.length == 0) { + this.matchedHeaders = [] + return + } + this.matchedHeaders = this.allHeaders.filter(function (header) { + return teaweb.match(header, v) + }).slice(0, 5) + } + }, + methods: { + select: function (header) { + this.$emit("select", header) + this.selectedHeaderName = header + } + }, + template: ` + {{header}} +     +` +}) \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/headers/createDeletePopup.html b/web/views/@default/servers/server/settings/headers/createDeletePopup.html index 6a849c4a..0a8cb801 100644 --- a/web/views/@default/servers/server/settings/headers/createDeletePopup.html +++ b/web/views/@default/servers/server/settings/headers/createDeletePopup.html @@ -7,8 +7,8 @@ 名称(Name) - -

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

+ +

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

diff --git a/web/views/@default/servers/server/settings/headers/createDeletePopup.js b/web/views/@default/servers/server/settings/headers/createDeletePopup.js new file mode 100644 index 00000000..25cdde74 --- /dev/null +++ b/web/views/@default/servers/server/settings/headers/createDeletePopup.js @@ -0,0 +1,7 @@ +Tea.context(function () { + this.headerName = "" + + this.selectHeader = function (headerName) { + this.headerName = headerName + } +}) \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/headers/createSetPopup.html b/web/views/@default/servers/server/settings/headers/createSetPopup.html index de1228f7..9dae4d3e 100644 --- a/web/views/@default/servers/server/settings/headers/createSetPopup.html +++ b/web/views/@default/servers/server/settings/headers/createSetPopup.html @@ -7,8 +7,8 @@ 名称(Name) * - -

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

+ +

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

diff --git a/web/views/@default/servers/server/settings/headers/createSetPopup.js b/web/views/@default/servers/server/settings/headers/createSetPopup.js index f341c461..4da54970 100644 --- a/web/views/@default/servers/server/settings/headers/createSetPopup.js +++ b/web/views/@default/servers/server/settings/headers/createSetPopup.js @@ -1,3 +1,8 @@ Tea.context(function () { this.shouldReplace = false + this.headerName = "" + + this.selectHeader = function (headerName) { + this.headerName = headerName + } }) \ 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 90a02736..f2cc45c4 100644 --- a/web/views/@default/servers/server/settings/headers/updateSetPopup.html +++ b/web/views/@default/servers/server/settings/headers/updateSetPopup.html @@ -9,7 +9,7 @@ 名称(Name) * -

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

+

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

diff --git a/web/views/@default/servers/server/settings/headers/updateSetPopup.js b/web/views/@default/servers/server/settings/headers/updateSetPopup.js index 9df37fea..01466cf0 100644 --- a/web/views/@default/servers/server/settings/headers/updateSetPopup.js +++ b/web/views/@default/servers/server/settings/headers/updateSetPopup.js @@ -4,4 +4,8 @@ Tea.context(function () { if (this.headerConfig.status != null && this.headerConfig.status.codes != null) { this.statusList = this.headerConfig.status.codes } + + this.selectHeader = function (headerName) { + this.headerConfig.name = headerName + } }) \ No newline at end of file