From f67454d51cb2053001899ad9d61247490c98145c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Sun, 12 Dec 2021 16:38:52 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B7=AF=E7=94=B1=E8=A7=84=E5=88=99=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E4=B8=93=E5=B1=9E=E5=9F=9F=E5=90=8D=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/settings/locations/create.go | 20 +++++++++++++++++++ .../settings/locations/location/index.go | 19 ++++++++++++++++++ .../components/server/http-location-labels.js | 7 +++++++ .../server/settings/locations/create.html | 7 +++++++ .../settings/locations/location/index.html | 8 ++++++++ 5 files changed, 61 insertions(+) diff --git a/internal/web/actions/default/servers/server/settings/locations/create.go b/internal/web/actions/default/servers/server/settings/locations/create.go index 2a5d944e..39adb890 100644 --- a/internal/web/actions/default/servers/server/settings/locations/create.go +++ b/internal/web/actions/default/servers/server/settings/locations/create.go @@ -51,8 +51,12 @@ func (this *CreateAction) RunPost(params struct { IsReverse bool CondsJSON []byte + DomainsJSON []byte + Must *actions.Must }) { + defer this.CreateLogInfo("创建路由规则:%s", params.Pattern) + params.Must. Field("pattern", params.Pattern). Require("请输入路径匹配规则") @@ -85,6 +89,21 @@ func (this *CreateAction) RunPost(params struct { params.Pattern = "/" + strings.TrimLeft(params.Pattern, "/") } + // 域名 + var domains = []string{} + if len(params.DomainsJSON) > 0 { + err := json.Unmarshal(params.DomainsJSON, &domains) + if err != nil { + this.ErrorPage(err) + return + } + + // 去除可能误加的斜杠 + for index, domain := range domains { + domains[index] = strings.TrimSuffix(domain, "/") + } + } + location := &serverconfigs.HTTPLocationConfig{} location.SetPattern(params.Pattern, params.PatternType, params.IsCaseInsensitive, params.IsReverse) resultPattern := location.Pattern @@ -96,6 +115,7 @@ func (this *CreateAction) RunPost(params struct { Pattern: resultPattern, IsBreak: params.IsBreak, CondsJSON: params.CondsJSON, + Domains: domains, }) if err != nil { this.ErrorPage(err) diff --git a/internal/web/actions/default/servers/server/settings/locations/location/index.go b/internal/web/actions/default/servers/server/settings/locations/location/index.go index f322073c..7da35d40 100644 --- a/internal/web/actions/default/servers/server/settings/locations/location/index.go +++ b/internal/web/actions/default/servers/server/settings/locations/location/index.go @@ -31,6 +31,7 @@ func (this *IndexAction) RunGet(params struct { this.Data["isReverse"] = locationConfig.IsReverse() this.Data["isCaseInsensitive"] = locationConfig.IsCaseInsensitive() this.Data["conds"] = locationConfig.Conds + this.Data["domains"] = locationConfig.Domains this.Show() } @@ -50,6 +51,8 @@ func (this *IndexAction) RunPost(params struct { CondsJSON []byte + DomainsJSON []byte + Must *actions.Must }) { defer this.CreateLogInfo("修改路由规则 %d 设置", params.LocationId) @@ -86,6 +89,21 @@ func (this *IndexAction) RunPost(params struct { } } + // 域名 + var domains = []string{} + if len(params.DomainsJSON) > 0 { + err := json.Unmarshal(params.DomainsJSON, &domains) + if err != nil { + this.ErrorPage(err) + return + } + + // 去除可能误加的斜杠 + for index, domain := range domains { + domains[index] = strings.TrimSuffix(domain, "/") + } + } + location := &serverconfigs.HTTPLocationConfig{} location.SetPattern(params.Pattern, params.PatternType, params.IsCaseInsensitive, params.IsReverse) resultPattern := location.Pattern @@ -98,6 +116,7 @@ func (this *IndexAction) RunPost(params struct { IsBreak: params.IsBreak, IsOn: params.IsOn, CondsJSON: params.CondsJSON, + Domains: domains, }) if err != nil { this.ErrorPage(err) diff --git a/web/public/js/components/server/http-location-labels.js b/web/public/js/components/server/http-location-labels.js index d010a0ff..df5be011 100644 --- a/web/public/js/components/server/http-location-labels.js +++ b/web/public/js/components/server/http-location-labels.js @@ -25,6 +25,13 @@ Vue.component("http-location-labels", { template: `
{{location.name}} + + +
+ {{domain}} +
+ + BREAK diff --git a/web/views/@default/servers/server/settings/locations/create.html b/web/views/@default/servers/server/settings/locations/create.html index 229e9484..86b18e37 100644 --- a/web/views/@default/servers/server/settings/locations/create.html +++ b/web/views/@default/servers/server/settings/locations/create.html @@ -51,6 +51,13 @@ + + 专属域名 + + +

默认不需要填写,表示支持所有域名。如果填写了专属域名,表示当前路由规则只会在这些域名被访问时才生效。

+ + 不区分大小写 diff --git a/web/views/@default/servers/server/settings/locations/location/index.html b/web/views/@default/servers/server/settings/locations/location/index.html index 4e25b5d5..a94a7f67 100644 --- a/web/views/@default/servers/server/settings/locations/location/index.html +++ b/web/views/@default/servers/server/settings/locations/location/index.html @@ -52,6 +52,14 @@ + + 专属域名 + + +

默认不需要填写,表示支持所有域名。如果填写了专属域名,表示当前路由规则只会在这些域名被访问时才生效。

+ + + 不区分大小写