diff --git a/internal/web/actions/default/clusters/cluster/settings/global-server-config/index.go b/internal/web/actions/default/clusters/cluster/settings/global-server-config/index.go index 4b70695f..4a154f9e 100644 --- a/internal/web/actions/default/clusters/cluster/settings/global-server-config/index.go +++ b/internal/web/actions/default/clusters/cluster/settings/global-server-config/index.go @@ -10,6 +10,8 @@ import ( "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" "github.com/iwind/TeaGo/actions" "github.com/iwind/TeaGo/maps" + "github.com/iwind/TeaGo/types" + "regexp" ) type IndexAction struct { @@ -42,8 +44,13 @@ func (this *IndexAction) RunGet(params struct { this.Data["config"] = config var httpAllDomainMismatchActionContentHTML = "" - if config.HTTPAll.DomainMismatchAction != nil { + var httpAllDomainMismatchActionStatusCode = "404" + if config.HTTPAll.DomainMismatchAction != nil && config.HTTPAll.DomainMismatchAction.Options != nil { httpAllDomainMismatchActionContentHTML = config.HTTPAll.DomainMismatchAction.Options.GetString("contentHTML") + var statusCode = config.HTTPAll.DomainMismatchAction.Options.GetInt("statusCode") + if statusCode > 0 { + httpAllDomainMismatchActionStatusCode = types.String(statusCode) + } } else { httpAllDomainMismatchActionContentHTML = ` @@ -67,6 +74,7 @@ p { color: grey; } } this.Data["httpAllDomainMismatchActionContentHTML"] = httpAllDomainMismatchActionContentHTML + this.Data["httpAllDomainMismatchActionStatusCode"] = httpAllDomainMismatchActionStatusCode this.Show() } @@ -76,6 +84,7 @@ func (this *IndexAction) RunPost(params struct { HttpAllMatchDomainStrictly bool HttpAllDomainMismatchActionContentHTML string + HttpAllDomainMismatchActionStatusCode string HttpAllAllowMismatchDomainsJSON []byte HttpAllAllowNodeIP bool HttpAllDefaultDomain string @@ -121,11 +130,18 @@ func (this *IndexAction) RunPost(params struct { } } + var domainMisMatchStatusCodeString = params.HttpAllDomainMismatchActionStatusCode + if !regexp.MustCompile(`^\d{3}$`).MatchString(domainMisMatchStatusCodeString) { + this.FailField("httpAllDomainMismatchActionContentStatusCode", "请输入正确的状态码") + return + } + var domainMisMatchStatusCode = types.Int(domainMisMatchStatusCodeString) + config.HTTPAll.MatchDomainStrictly = params.HttpAllMatchDomainStrictly config.HTTPAll.DomainMismatchAction = &serverconfigs.DomainMismatchAction{ Code: serverconfigs.DomainMismatchActionPage, Options: maps.Map{ - "statusCode": 404, + "statusCode": domainMisMatchStatusCode, "contentHTML": params.HttpAllDomainMismatchActionContentHTML, }, } diff --git a/web/views/@default/clusters/cluster/settings/global-server-config/index.html b/web/views/@default/clusters/cluster/settings/global-server-config/index.html index eadb5d64..fa0b7b47 100644 --- a/web/views/@default/clusters/cluster/settings/global-server-config/index.html +++ b/web/views/@default/clusters/cluster/settings/global-server-config/index.html @@ -17,6 +17,13 @@
选中后,表示禁止未绑定的域名和IP访问。
+默认404。
+例外域名或使用节点IP访问时使用的默认域名。
+例外域名或使用节点IP访问时使用的默认域名;如果指定的域名在集群里已经绑定到某个网站,则相当于直接访问该网站。