diff --git a/internal/web/actions/default/clusters/cluster/settings/index.go b/internal/web/actions/default/clusters/cluster/settings/index.go index b6a06a7f..fa62b2b0 100644 --- a/internal/web/actions/default/clusters/cluster/settings/index.go +++ b/internal/web/actions/default/clusters/cluster/settings/index.go @@ -89,6 +89,19 @@ func (this *IndexAction) RunGet(params struct { } } + // DNS信息 + var fullDomainName = "" + if len(cluster.DnsName) > 0 && cluster.DnsDomainId > 0 { + domainResp, err := this.RPC().DNSDomainRPC().FindBasicDNSDomain(this.AdminContext(), &pb.FindBasicDNSDomainRequest{DnsDomainId: cluster.DnsDomainId}) + if err != nil { + this.ErrorPage(err) + return + } + if domainResp.DnsDomain != nil { + fullDomainName = cluster.DnsName + "." + domainResp.DnsDomain.Name + } + } + this.Data["cluster"] = maps.Map{ "id": cluster.Id, "name": cluster.Name, @@ -100,6 +113,7 @@ func (this *IndexAction) RunGet(params struct { "autoRemoteStart": cluster.AutoRemoteStart, "autoInstallNftables": cluster.AutoInstallNftables, "sshParams": sshParams, + "domainName": fullDomainName, } // 默认值 diff --git a/internal/web/actions/default/servers/groups/group/settings/headers/index.go b/internal/web/actions/default/servers/groups/group/settings/headers/index.go index 8319ea96..49e75ee4 100644 --- a/internal/web/actions/default/servers/groups/group/settings/headers/index.go +++ b/internal/web/actions/default/servers/groups/group/settings/headers/index.go @@ -43,7 +43,7 @@ func (this *IndexAction) RunGet(params struct { this.ErrorPage(err) return } - headerPolicyId := createHeaderPolicyResp.HeaderPolicyId + headerPolicyId := createHeaderPolicyResp.HttpHeaderPolicyId ref := &shared.HTTPHeaderPolicyRef{ IsPrior: false, IsOn: true, @@ -70,7 +70,7 @@ func (this *IndexAction) RunGet(params struct { this.ErrorPage(err) return } - headerPolicyId := createHeaderPolicyResp.HeaderPolicyId + headerPolicyId := createHeaderPolicyResp.HttpHeaderPolicyId ref := &shared.HTTPHeaderPolicyRef{ IsPrior: false, IsOn: true, 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 c7b9f9ca..bc029778 100644 --- a/internal/web/actions/default/servers/server/settings/headers/createDeletePopup.go +++ b/internal/web/actions/default/servers/server/settings/headers/createDeletePopup.go @@ -40,13 +40,13 @@ func (this *CreateDeletePopupAction) RunPost(params struct { Field("name", params.Name). Require("名称不能为空") - policyConfigResp, err := this.RPC().HTTPHeaderPolicyRPC().FindEnabledHTTPHeaderPolicyConfig(this.AdminContext(), &pb.FindEnabledHTTPHeaderPolicyConfigRequest{HeaderPolicyId: params.HeaderPolicyId}) + policyConfigResp, err := this.RPC().HTTPHeaderPolicyRPC().FindEnabledHTTPHeaderPolicyConfig(this.AdminContext(), &pb.FindEnabledHTTPHeaderPolicyConfigRequest{HttpHeaderPolicyId: params.HeaderPolicyId}) if err != nil { this.ErrorPage(err) return } policyConfig := &shared.HTTPHeaderPolicy{} - err = json.Unmarshal(policyConfigResp.HeaderPolicyJSON, policyConfig) + err = json.Unmarshal(policyConfigResp.HttpHeaderPolicyJSON, policyConfig) if err != nil { this.ErrorPage(err) return @@ -55,8 +55,8 @@ func (this *CreateDeletePopupAction) RunPost(params struct { deleteHeaders := policyConfig.DeleteHeaders deleteHeaders = append(deleteHeaders, params.Name) _, err = this.RPC().HTTPHeaderPolicyRPC().UpdateHTTPHeaderPolicyDeletingHeaders(this.AdminContext(), &pb.UpdateHTTPHeaderPolicyDeletingHeadersRequest{ - HeaderPolicyId: params.HeaderPolicyId, - HeaderNames: deleteHeaders, + HttpHeaderPolicyId: params.HeaderPolicyId, + HeaderNames: deleteHeaders, }) if err != nil { this.ErrorPage(err) 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 f826eae4..9934da0d 100644 --- a/internal/web/actions/default/servers/server/settings/headers/createSetPopup.go +++ b/internal/web/actions/default/servers/server/settings/headers/createSetPopup.go @@ -52,13 +52,13 @@ func (this *CreateSetPopupAction) RunPost(params struct { Field("name", params.Name). Require("请输入Header名称") - configResp, err := this.RPC().HTTPHeaderPolicyRPC().FindEnabledHTTPHeaderPolicyConfig(this.AdminContext(), &pb.FindEnabledHTTPHeaderPolicyConfigRequest{HeaderPolicyId: params.HeaderPolicyId}) + configResp, err := this.RPC().HTTPHeaderPolicyRPC().FindEnabledHTTPHeaderPolicyConfig(this.AdminContext(), &pb.FindEnabledHTTPHeaderPolicyConfigRequest{HttpHeaderPolicyId: params.HeaderPolicyId}) if err != nil { this.ErrorPage(err) return } policyConfig := &shared.HTTPHeaderPolicy{} - err = json.Unmarshal(configResp.HeaderPolicyJSON, policyConfig) + err = json.Unmarshal(configResp.HttpHeaderPolicyJSON, policyConfig) if err != nil { this.ErrorPage(err) return @@ -135,8 +135,8 @@ func (this *CreateSetPopupAction) RunPost(params struct { } _, err = this.RPC().HTTPHeaderPolicyRPC().UpdateHTTPHeaderPolicySettingHeaders(this.AdminContext(), &pb.UpdateHTTPHeaderPolicySettingHeadersRequest{ - HeaderPolicyId: params.HeaderPolicyId, - HeadersJSON: refsJSON, + HttpHeaderPolicyId: params.HeaderPolicyId, + HeadersJSON: refsJSON, }) 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 5063f6a1..9c428983 100644 --- a/internal/web/actions/default/servers/server/settings/headers/delete.go +++ b/internal/web/actions/default/servers/server/settings/headers/delete.go @@ -21,14 +21,14 @@ func (this *DeleteAction) RunPost(params struct { defer this.CreateLog(oplogs.LevelInfo, "删除请求Header,HeaderPolicyId:%d, HeaderId:%d", params.HeaderPolicyId, params.HeaderId) policyConfigResp, err := this.RPC().HTTPHeaderPolicyRPC().FindEnabledHTTPHeaderPolicyConfig(this.AdminContext(), &pb.FindEnabledHTTPHeaderPolicyConfigRequest{ - HeaderPolicyId: params.HeaderPolicyId, + HttpHeaderPolicyId: params.HeaderPolicyId, }) if err != nil { this.ErrorPage(err) return } policyConfig := &shared.HTTPHeaderPolicy{} - err = json.Unmarshal(policyConfigResp.HeaderPolicyJSON, policyConfig) + err = json.Unmarshal(policyConfigResp.HttpHeaderPolicyJSON, policyConfig) if err != nil { this.ErrorPage(err) return @@ -48,8 +48,8 @@ func (this *DeleteAction) RunPost(params struct { return } _, err = this.RPC().HTTPHeaderPolicyRPC().UpdateHTTPHeaderPolicySettingHeaders(this.AdminContext(), &pb.UpdateHTTPHeaderPolicySettingHeadersRequest{ - HeaderPolicyId: params.HeaderPolicyId, - HeadersJSON: resultJSON, + HttpHeaderPolicyId: params.HeaderPolicyId, + HeadersJSON: resultJSON, }) if err != nil { this.ErrorPage(err) 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 36558577..8ed32793 100644 --- a/internal/web/actions/default/servers/server/settings/headers/deleteDeletingHeader.go +++ b/internal/web/actions/default/servers/server/settings/headers/deleteDeletingHeader.go @@ -19,12 +19,12 @@ func (this *DeleteDeletingHeaderAction) RunPost(params struct { // 日志 defer this.CreateLog(oplogs.LevelInfo, "删除需要删除的请求Header,HeaderPolicyId:%d, HeaderName:%s", params.HeaderPolicyId, params.HeaderName) - policyConfigResp, err := this.RPC().HTTPHeaderPolicyRPC().FindEnabledHTTPHeaderPolicyConfig(this.AdminContext(), &pb.FindEnabledHTTPHeaderPolicyConfigRequest{HeaderPolicyId: params.HeaderPolicyId}) + policyConfigResp, err := this.RPC().HTTPHeaderPolicyRPC().FindEnabledHTTPHeaderPolicyConfig(this.AdminContext(), &pb.FindEnabledHTTPHeaderPolicyConfigRequest{HttpHeaderPolicyId: params.HeaderPolicyId}) if err != nil { this.ErrorPage(err) return } - policyConfigJSON := policyConfigResp.HeaderPolicyJSON + policyConfigJSON := policyConfigResp.HttpHeaderPolicyJSON policyConfig := &shared.HTTPHeaderPolicy{} err = json.Unmarshal(policyConfigJSON, policyConfig) if err != nil { @@ -40,8 +40,8 @@ func (this *DeleteDeletingHeaderAction) RunPost(params struct { headerNames = append(headerNames, h) } _, err = this.RPC().HTTPHeaderPolicyRPC().UpdateHTTPHeaderPolicyDeletingHeaders(this.AdminContext(), &pb.UpdateHTTPHeaderPolicyDeletingHeadersRequest{ - HeaderPolicyId: params.HeaderPolicyId, - HeaderNames: headerNames, + HttpHeaderPolicyId: params.HeaderPolicyId, + HeaderNames: headerNames, }) if err != nil { this.ErrorPage(err) diff --git a/internal/web/actions/default/servers/server/settings/headers/index.go b/internal/web/actions/default/servers/server/settings/headers/index.go index 9fc4f8f3..f92eb8f3 100644 --- a/internal/web/actions/default/servers/server/settings/headers/index.go +++ b/internal/web/actions/default/servers/server/settings/headers/index.go @@ -47,7 +47,7 @@ func (this *IndexAction) RunGet(params struct { this.ErrorPage(err) return } - headerPolicyId := createHeaderPolicyResp.HeaderPolicyId + var headerPolicyId = createHeaderPolicyResp.HttpHeaderPolicyId ref := &shared.HTTPHeaderPolicyRef{ IsPrior: false, IsOn: true, @@ -74,7 +74,7 @@ func (this *IndexAction) RunGet(params struct { this.ErrorPage(err) return } - headerPolicyId := createHeaderPolicyResp.HeaderPolicyId + headerPolicyId := createHeaderPolicyResp.HttpHeaderPolicyId ref := &shared.HTTPHeaderPolicyRef{ IsPrior: false, IsOn: true, 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 08153096..57adce04 100644 --- a/internal/web/actions/default/servers/server/settings/headers/init.go +++ b/internal/web/actions/default/servers/server/settings/headers/init.go @@ -19,6 +19,7 @@ func init() { GetPost("/createDeletePopup", new(CreateDeletePopupAction)). Post("/deleteDeletingHeader", new(DeleteDeletingHeaderAction)). Post("/delete", new(DeleteAction)). + GetPost("/updateCORSPopup", new(UpdateCORSPopupAction)). EndAll() }) } diff --git a/internal/web/actions/default/servers/server/settings/headers/updateCORSPopup.go b/internal/web/actions/default/servers/server/settings/headers/updateCORSPopup.go new file mode 100644 index 00000000..0ba1b6f5 --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/headers/updateCORSPopup.go @@ -0,0 +1,75 @@ +// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn . + +package headers + +import ( + "encoding/json" + "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 UpdateCORSPopupAction struct { + actionutils.ParentAction +} + +func (this *UpdateCORSPopupAction) Init() { + this.Nav("", "", "") +} + +func (this *UpdateCORSPopupAction) RunGet(params struct { + HeaderPolicyId int64 +}) { + this.Data["headerPolicyId"] = params.HeaderPolicyId + + resp, err := this.RPC().HTTPHeaderPolicyRPC().FindEnabledHTTPHeaderPolicyConfig(this.AdminContext(), &pb.FindEnabledHTTPHeaderPolicyConfigRequest{HttpHeaderPolicyId: params.HeaderPolicyId}) + if err != nil { + this.ErrorPage(err) + return + } + var headerPolicyJSON = resp.HttpHeaderPolicyJSON + var headerPolicy = &shared.HTTPHeaderPolicy{} + if len(headerPolicyJSON) > 0 { + err = json.Unmarshal(headerPolicyJSON, headerPolicy) + if err != nil { + this.ErrorPage(err) + return + } + } + this.Data["cors"] = headerPolicy.CORS + + this.Show() +} + +func (this *UpdateCORSPopupAction) RunPost(params struct { + HeaderPolicyId int64 + CorsJSON []byte + + Must *actions.Must + CSRF *actionutils.CSRF +}) { + var config = &shared.HTTPCORSHeaderConfig{} + err := json.Unmarshal(params.CorsJSON, config) + if err != nil { + this.Fail("配置校验失败:" + err.Error()) + return + } + + err = config.Init() + if err != nil { + this.Fail("配置校验失败:" + err.Error()) + return + } + + _, err = this.RPC().HTTPHeaderPolicyRPC().UpdateHTTPHeaderPolicyCORS(this.AdminContext(), &pb.UpdateHTTPHeaderPolicyCORSRequest{ + HttpHeaderPolicyId: params.HeaderPolicyId, + CorsJSON: params.CorsJSON, + }) + if err != nil { + this.ErrorPage(err) + return + } + + this.Success() +} diff --git a/internal/web/actions/default/servers/server/settings/locations/headers/index.go b/internal/web/actions/default/servers/server/settings/locations/headers/index.go index 26eeabbc..1323dff8 100644 --- a/internal/web/actions/default/servers/server/settings/locations/headers/index.go +++ b/internal/web/actions/default/servers/server/settings/locations/headers/index.go @@ -36,7 +36,7 @@ func (this *IndexAction) RunGet(params struct { this.ErrorPage(err) return } - headerPolicyId := createHeaderPolicyResp.HeaderPolicyId + headerPolicyId := createHeaderPolicyResp.HttpHeaderPolicyId ref := &shared.HTTPHeaderPolicyRef{ IsPrior: false, IsOn: true, @@ -59,7 +59,7 @@ func (this *IndexAction) RunGet(params struct { this.ErrorPage(err) return } - headerPolicyId := createHeaderPolicyResp.HeaderPolicyId + headerPolicyId := createHeaderPolicyResp.HttpHeaderPolicyId ref := &shared.HTTPHeaderPolicyRef{ IsPrior: false, IsOn: true, diff --git a/web/public/js/components/server/http-cors-header-config-box.js b/web/public/js/components/server/http-cors-header-config-box.js new file mode 100644 index 00000000..cf96f8c0 --- /dev/null +++ b/web/public/js/components/server/http-cors-header-config-box.js @@ -0,0 +1,34 @@ +Vue.component("http-cors-header-config-box", { + props: ["value"], + data: function () { + let config = this.value + if (config == null) { + config = { + isOn: false, + allowMethods: [], + allowOrigin: "", + allowCredentials: false, + exposeHeaders: [], + maxAge: 0, + requestHeaders: [], + requestMethod: "" + } + } + + return { + config: config + } + }, + template: `
+ + + + + + +
启用CORS自适应跨域 + +
+
+
` +}) \ No newline at end of file diff --git a/web/public/js/components/server/http-header-assitant.js b/web/public/js/components/server/http-header-assitant.js index 2b394530..5409e4e0 100644 --- a/web/public/js/components/server/http-header-assitant.js +++ b/web/public/js/components/server/http-header-assitant.js @@ -28,7 +28,7 @@ Vue.component("http-header-assistant", { } this.matchedHeaders = this.allHeaders.filter(function (header) { return teaweb.match(header, v) - }).slice(0, 5) + }).slice(0, 10) } }, methods: { @@ -38,7 +38,7 @@ Vue.component("http-header-assistant", { } }, template: ` - {{header}} + {{header}}     ` }) \ No newline at end of file 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 3fcc02e7..5dfc438c 100644 --- a/web/public/js/components/server/http-header-policy-box.js +++ b/web/public/js/components/server/http-header-policy-box.js @@ -54,6 +54,13 @@ Vue.component("http-header-policy-box", { } } + let responseCORS = { + isOn: false + } + if (responsePolicy.cors != null) { + responseCORS = responsePolicy.cors + } + return { type: type, typeName: (type == "request") ? "请求" : "响应", @@ -62,7 +69,8 @@ Vue.component("http-header-policy-box", { requestSettingHeaders: requestSettingHeaders, requestDeletingHeaders: requestDeletingHeaders, responseSettingHeaders: responseSettingHeaders, - responseDeletingHeaders: responseDeletingHeaders + responseDeletingHeaders: responseDeletingHeaders, + responseCORS: responseCORS } }, methods: { @@ -114,6 +122,13 @@ Vue.component("http-header-policy-box", { .refresh() } ) + }, + updateCORS: function (policyId) { + teaweb.popup("/servers/server/settings/headers/updateCORSPopup?" + this.vParams + "&headerPolicyId=" + policyId + "&type=" + this.type, { + callback: function () { + teaweb.successRefresh("保存成功") + } + }) } }, template: `
@@ -141,7 +156,7 @@ Vue.component("http-header-policy-box", { 由于已经在当前服务分组中进行了对应的配置,在这里的配置将不会生效。
-

设置请求Header [添加新Header]

+

设置请求Header [添加新Header]

暂时还没有Header。

@@ -151,35 +166,39 @@ Vue.component("http-header-policy-box", { - - - - - + + + + + + +
操作
- {{header.name}} -
- {{code}} - {{method}} - {{domain}} - 附加 - 跳转禁用 - 替换 -
-
{{header.value}}修改   删除
+ {{header.name}} +
+ {{code}} + {{method}} + {{domain}} + 附加 + 跳转禁用 + 替换 +
+
{{header.value}}修改   删除
-

删除请求Header

+

删除请求Header

这里可以设置需要从请求中删除的Header。

- - + + + +
需要删除的Header -
-
{{headerName}}
-
-
- -
需要删除的Header +
+
{{headerName}}
+
+
+ +
@@ -199,7 +218,7 @@ Vue.component("http-header-policy-box", { 由于已经在当前服务分组中进行了对应的配置,在这里的配置将不会生效。
-

设置响应Header [添加新Header]

+

设置响应Header [添加新Header]

将会覆盖已有的同名Header。

暂时还没有Header。

@@ -210,37 +229,52 @@ Vue.component("http-header-policy-box", { - - - - - + + + + + + +
操作
- {{header.name}} -
- {{code}} - {{method}} - {{domain}} - 附加 - 跳转禁用 - 替换 -
-
{{header.value}}修改   删除
+ {{header.name}} +
+ {{code}} + {{method}} + {{domain}} + 附加 + 跳转禁用 + 替换 +
+
{{header.value}}修改   删除
-

删除响应Header

+

删除响应Header

这里可以设置需要从响应中删除的Header。

- - + + + +
需要删除的Header -
-
{{headerName}}
-
-
- -
需要删除的Header +
+
{{headerName}}
+
+
+ +
-
+ +

CORS跨域设置

+ + + + + + +
CORS自适应跨域 + 已启用未启用   [修改] +
+
` diff --git a/web/views/@default/clusters/cluster/settings/index.html b/web/views/@default/clusters/cluster/settings/index.html index 6dc73963..8e35d885 100644 --- a/web/views/@default/clusters/cluster/settings/index.html +++ b/web/views/@default/clusters/cluster/settings/index.html @@ -10,6 +10,12 @@ 集群名称 * + + 域名 + + {{cluster.domainName}} + + 默认SSH认证 diff --git a/web/views/@default/servers/server/settings/headers/updateCORSPopup.html b/web/views/@default/servers/server/settings/headers/updateCORSPopup.html new file mode 100644 index 00000000..7c9f9275 --- /dev/null +++ b/web/views/@default/servers/server/settings/headers/updateCORSPopup.html @@ -0,0 +1,9 @@ +{$layout "layout_popup"} + +

CORS跨域设置

+
+ + + + +
\ No newline at end of file