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: `
默认不需要填写,表示支持所有域名。如果填写了专属域名,表示当前路由规则只会在这些域名被访问时才生效。
+默认不需要填写,表示支持所有域名。如果填写了专属域名,表示当前路由规则只会在这些域名被访问时才生效。
+