diff --git a/internal/web/actions/default/servers/components/index.go b/internal/web/actions/default/servers/components/index.go
index 416d6264..95978a0d 100644
--- a/internal/web/actions/default/servers/components/index.go
+++ b/internal/web/actions/default/servers/components/index.go
@@ -7,6 +7,7 @@ import (
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
"github.com/iwind/TeaGo/actions"
+ "github.com/iwind/TeaGo/maps"
)
const (
@@ -45,6 +46,14 @@ func (this *IndexAction) RunGet(params struct{}) {
func (this *IndexAction) RunPost(params struct {
GlobalConfigJSON []byte
Must *actions.Must
+
+ // 不匹配域名相关
+ AllowMismatchDomains []string
+ DomainMismatchAction string
+ DomainMismatchActionPageStatusCode int
+ DomainMismatchActionPageContentHTML string
+
+ DefaultDomain string
}) {
// 创建日志
this.CreateLog(oplogs.LevelInfo, "保存代理服务全局配置")
@@ -59,10 +68,44 @@ func (this *IndexAction) RunPost(params struct {
this.Fail("配置校验失败:" + err.Error())
}
+ // 允许不匹配的域名
+ allowMismatchDomains := []string{}
+ for _, domain := range params.AllowMismatchDomains {
+ if len(domain) > 0 {
+ allowMismatchDomains = append(allowMismatchDomains, domain)
+ }
+ }
+ globalConfig.HTTPAll.AllowMismatchDomains = allowMismatchDomains
+
+ // 不匹配域名的动作
+ switch params.DomainMismatchAction {
+ case "close":
+ globalConfig.HTTPAll.DomainMismatchAction = &serverconfigs.DomainMismatchAction{
+ Code: "close",
+ Options: nil,
+ }
+ case "page":
+ if params.DomainMismatchActionPageStatusCode <= 0 {
+ params.DomainMismatchActionPageStatusCode = 404
+ }
+ globalConfig.HTTPAll.DomainMismatchAction = &serverconfigs.DomainMismatchAction{
+ Code: "page",
+ Options: maps.Map{
+ "statusCode": params.DomainMismatchActionPageStatusCode,
+ "contentHTML": params.DomainMismatchActionPageContentHTML,
+ },
+ }
+ }
+
// 修改配置
+ globalConfigJSON, err := json.Marshal(globalConfig)
+ if err != nil {
+ this.ErrorPage(err)
+ return
+ }
_, err = this.RPC().SysSettingRPC().UpdateSysSetting(this.AdminContext(), &pb.UpdateSysSettingRequest{
Code: SettingCodeServerGlobalConfig,
- ValueJSON: params.GlobalConfigJSON,
+ ValueJSON: globalConfigJSON,
})
if err != nil {
this.ErrorPage(err)
diff --git a/web/public/js/components/common/values-box.js b/web/public/js/components/common/values-box.js
index d48d9541..408ddf4e 100644
--- a/web/public/js/components/common/values-box.js
+++ b/web/public/js/components/common/values-box.js
@@ -1,5 +1,5 @@
Vue.component("values-box", {
- props: ["values", "size", "maxlength", "name"],
+ props: ["values", "size", "maxlength", "name", "placeholder"],
data: function () {
let values = this.values;
if (values == null) {
@@ -32,6 +32,10 @@ Vue.component("values-box", {
}, 200);
},
confirm: function () {
+ if (this.value.length == 0) {
+ return
+ }
+
if (this.isUpdating) {
Vue.set(this.vValues, this.index, this.value);
} else {
@@ -50,30 +54,31 @@ Vue.component("values-box", {
this.value = "";
}
},
- template: '
\
-
\
+ template: `
+
\
-
\
-
\
-
\
- \
-
\
-
\
- \
-
\
-
\
-
\
-
\
-
\
- \
-
\
-
'
+
+
+
+
+
`
});
\ No newline at end of file
diff --git a/web/views/@default/@layout_override.css b/web/views/@default/@layout_override.css
index 219d5e06..777bdbb6 100644
--- a/web/views/@default/@layout_override.css
+++ b/web/views/@default/@layout_override.css
@@ -28,4 +28,7 @@ table th.width10 {
table th.width5 {
width: 5em;
}
+textarea::-webkit-scrollbar {
+ width: 6px !important;
+}
/*# sourceMappingURL=@layout_override.css.map */
\ No newline at end of file
diff --git a/web/views/@default/@layout_override.css.map b/web/views/@default/@layout_override.css.map
index 9e71f438..d42b9fcc 100644
--- a/web/views/@default/@layout_override.css.map
+++ b/web/views/@default/@layout_override.css.map
@@ -1 +1 @@
-{"version":3,"sources":["@layout_override.less"],"names":[],"mappings":"AACA,GAAG,OAAO,SAAU,MAAK,MAAM,QAAS,OAAM;AAAS,GAAG,OAAO,SAAU,MAAK,MAAM,QAAS,QAAO;EACrG,oCAAA;;AAGD,GAAG,OAAO,SAAU,MAAK,QAAS,OAAM;AAAS,GAAG,OAAO,SAAU,MAAK,QAAS,QAAO;EACzF,oCAAA;;AAGD,GAAG,MAAM;EACR,kCAAA;;AAID,IACC;EACC,2BAAA;;AAKF,KAAK;EACJ,sBAAA;;AAGD,KAAK,KAAK;EACT,yBAAA;;AAID,KACC,GAAE;AADH,KACY,GAAE;EACZ,6BAAA;;AAFF,KAKC,GAAE;EACD,WAAA;;AANF,KASC,GAAE;EACD,UAAA","file":"@layout_override.css"}
\ No newline at end of file
+{"version":3,"sources":["@layout_override.less"],"names":[],"mappings":"AACA,GAAG,OAAO,SAAU,MAAK,MAAM,QAAS,OAAM;AAAS,GAAG,OAAO,SAAU,MAAK,MAAM,QAAS,QAAO;EACrG,oCAAA;;AAGD,GAAG,OAAO,SAAU,MAAK,QAAS,OAAM;AAAS,GAAG,OAAO,SAAU,MAAK,QAAS,QAAO;EACzF,oCAAA;;AAGD,GAAG,MAAM;EACR,kCAAA;;AAID,IACC;EACC,2BAAA;;AAKF,KAAK;EACJ,sBAAA;;AAGD,KAAK,KAAK;EACT,yBAAA;;AAID,KACC,GAAE;AADH,KACY,GAAE;EACZ,6BAAA;;AAFF,KAKC,GAAE;EACD,WAAA;;AANF,KASC,GAAE;EACD,UAAA;;AAKF,QAAQ;EACP,qBAAA","file":"@layout_override.css"}
\ No newline at end of file
diff --git a/web/views/@default/@layout_override.less b/web/views/@default/@layout_override.less
index 168506ac..5c23fc63 100644
--- a/web/views/@default/@layout_override.less
+++ b/web/views/@default/@layout_override.less
@@ -41,3 +41,8 @@ table {
width: 5em;
}
}
+
+// textarea
+textarea::-webkit-scrollbar {
+ width: 6px !important;
+}
diff --git a/web/views/@default/servers/components/index.html b/web/views/@default/servers/components/index.html
index 0b0d73e4..9ceda5a7 100644
--- a/web/views/@default/servers/components/index.html
+++ b/web/views/@default/servers/components/index.html
@@ -9,13 +9,55 @@
HTTP/HTTPS通用设置 |
- | 是否严格匹配域名 |
+ 是否严格匹配域名 |
-
+
+ |
+
+
+ | 默认域名 |
+
+
+
+ |
+
+
+ | 允许不匹配的域名 |
+
+
+
+ |
+
+
+ | 域名不匹配时的动作 |
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+ | 响应代码 |
+
+
+ |
+
+
+ | 域名不匹配时的动作页面 |
+
+
|
diff --git a/web/views/@default/servers/components/index.js b/web/views/@default/servers/components/index.js
index 295a9aaf..cb2d233d 100644
--- a/web/views/@default/servers/components/index.js
+++ b/web/views/@default/servers/components/index.js
@@ -1,3 +1,32 @@
Tea.context(function () {
this.success = NotifyReloadSuccess("保存成功")
+
+ /**
+ * 域名不匹配动作
+ */
+ this.domainMismatchAction = "page"
+
+ this.domainMismatchActionPageOptions = {
+ statusCode: 404,
+ contentHTML: `
+
+
+
+404 not found
+
+
+找不到您要访问的页面.
+Sorry, page not found.
+
+
+`
+ }
+ if (this.globalConfig.httpAll.domainMismatchAction != null) {
+ this.domainMismatchAction = this.globalConfig.httpAll.domainMismatchAction.code
+
+ if (this.domainMismatchAction == "page") {
+ this.domainMismatchActionPageOptions = this.globalConfig.httpAll.domainMismatchAction.options;
+ }
+ }
+
})
\ No newline at end of file