可以修改访问未绑定域名时的提示页面的状态码

This commit is contained in:
GoEdgeLab
2023-07-27 11:23:08 +08:00
parent 9a476e5de1
commit 2894e18908
2 changed files with 26 additions and 3 deletions

View File

@@ -10,6 +10,8 @@ import (
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
"github.com/iwind/TeaGo/actions" "github.com/iwind/TeaGo/actions"
"github.com/iwind/TeaGo/maps" "github.com/iwind/TeaGo/maps"
"github.com/iwind/TeaGo/types"
"regexp"
) )
type IndexAction struct { type IndexAction struct {
@@ -42,8 +44,13 @@ func (this *IndexAction) RunGet(params struct {
this.Data["config"] = config this.Data["config"] = config
var httpAllDomainMismatchActionContentHTML = "" 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") httpAllDomainMismatchActionContentHTML = config.HTTPAll.DomainMismatchAction.Options.GetString("contentHTML")
var statusCode = config.HTTPAll.DomainMismatchAction.Options.GetInt("statusCode")
if statusCode > 0 {
httpAllDomainMismatchActionStatusCode = types.String(statusCode)
}
} else { } else {
httpAllDomainMismatchActionContentHTML = `<!DOCTYPE html> httpAllDomainMismatchActionContentHTML = `<!DOCTYPE html>
<html lang="en"> <html lang="en">
@@ -67,6 +74,7 @@ p { color: grey; }
} }
this.Data["httpAllDomainMismatchActionContentHTML"] = httpAllDomainMismatchActionContentHTML this.Data["httpAllDomainMismatchActionContentHTML"] = httpAllDomainMismatchActionContentHTML
this.Data["httpAllDomainMismatchActionStatusCode"] = httpAllDomainMismatchActionStatusCode
this.Show() this.Show()
} }
@@ -76,6 +84,7 @@ func (this *IndexAction) RunPost(params struct {
HttpAllMatchDomainStrictly bool HttpAllMatchDomainStrictly bool
HttpAllDomainMismatchActionContentHTML string HttpAllDomainMismatchActionContentHTML string
HttpAllDomainMismatchActionStatusCode string
HttpAllAllowMismatchDomainsJSON []byte HttpAllAllowMismatchDomainsJSON []byte
HttpAllAllowNodeIP bool HttpAllAllowNodeIP bool
HttpAllDefaultDomain string 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.MatchDomainStrictly = params.HttpAllMatchDomainStrictly
config.HTTPAll.DomainMismatchAction = &serverconfigs.DomainMismatchAction{ config.HTTPAll.DomainMismatchAction = &serverconfigs.DomainMismatchAction{
Code: serverconfigs.DomainMismatchActionPage, Code: serverconfigs.DomainMismatchActionPage,
Options: maps.Map{ Options: maps.Map{
"statusCode": 404, "statusCode": domainMisMatchStatusCode,
"contentHTML": params.HttpAllDomainMismatchActionContentHTML, "contentHTML": params.HttpAllDomainMismatchActionContentHTML,
}, },
} }

View File

@@ -17,6 +17,13 @@
<p class="comment">选中后表示禁止未绑定的域名和IP访问。</p> <p class="comment">选中后表示禁止未绑定的域名和IP访问。</p>
</td> </td>
</tr> </tr>
<tr v-show="config.httpAll.matchDomainStrictly">
<td class="color-border">提示页面状态码</td>
<td>
<input type="text" name="httpAllDomainMismatchActionStatusCode" v-model="httpAllDomainMismatchActionStatusCode" style="width: 4em" maxlength="3"/>
<p class="comment">默认404。</p>
</td>
</tr>
<tr v-show="config.httpAll.matchDomainStrictly"> <tr v-show="config.httpAll.matchDomainStrictly">
<td class="color-border">未绑定域名页面提示</td> <td class="color-border">未绑定域名页面提示</td>
<td> <td>
@@ -35,7 +42,7 @@
<td class="color-border">默认域名</td> <td class="color-border">默认域名</td>
<td> <td>
<input type="text" name="httpAllDefaultDomain" v-model="config.httpAll.defaultDomain"/> <input type="text" name="httpAllDefaultDomain" v-model="config.httpAll.defaultDomain"/>
<p class="comment">例外域名或使用节点IP访问时使用的默认域名。</p> <p class="comment">例外域名或使用节点IP访问时使用的默认域名;如果指定的域名在集群里已经绑定到某个网站,则相当于直接访问该网站</p>
</td> </td>
</tr> </tr>