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: '
\ -
\ -
{{value}}\ - \ -   \ - \ -
\ -
\ + template: `
+
+
{{value}} + +   + +
+
+
\ -
\ -
\ -
\ - \ -
\ -
\ - \ -
\ -
\ - 取消 \ -
\ -
\ -
\ -
\ - \ -
\ -
' +
+
+
+ +
+
+ +
+
+ 取消 +
+
+
+
+ +
+
` }); \ 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通用设置 - 是否严格匹配域名 + 是否严格匹配域名
-

如果选择了严格匹配域名,则没有在Edge里绑定过的域名访问时都会返回404。

+

如果选择了严格匹配域名,找不到匹配的域名时会采取对应的动作。

+ + + + 默认域名 + + +

当找不到匹配的域名时,自动使用此域名。

+ + + + 允许不匹配的域名 + + +

允许这些域名即时不匹配也可以访问。

+ + + + 域名不匹配时的动作 + +
+ + +
+   +
+ + +
+

当找不到要访问的域名时关闭客户端连接。

+

当找不到访问的域名时显示一个提示页面。

+ + + + 响应代码 + + + + + + 域名不匹配时的动作页面 + + 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