diff --git a/internal/web/actions/default/servers/server/settings/redirects/createPopup.go b/internal/web/actions/default/servers/server/settings/redirects/createPopup.go index 278c3dd7..e1d61c98 100644 --- a/internal/web/actions/default/servers/server/settings/redirects/createPopup.go +++ b/internal/web/actions/default/servers/server/settings/redirects/createPopup.go @@ -6,6 +6,7 @@ import ( "github.com/iwind/TeaGo/actions" "github.com/iwind/TeaGo/maps" "net/url" + "regexp" ) type CreatePopupAction struct { @@ -27,6 +28,7 @@ func (this *CreatePopupAction) RunPost(params struct { BeforeURL string AfterURL string MatchPrefix bool + MatchRegexp bool KeepRequestURI bool Status int @@ -39,7 +41,12 @@ func (this *CreatePopupAction) RunPost(params struct { Require("请填写跳转前的URL") // 校验格式 - { + if params.MatchRegexp { + _, err := regexp.Compile(params.BeforeURL) + if err != nil { + this.Fail("跳转前URL正则表达式错误:" + err.Error()) + } + } else { u, err := url.Parse(params.BeforeURL) if err != nil { this.FailField("beforeURL", "请输入正确的跳转前URL") @@ -56,7 +63,9 @@ func (this *CreatePopupAction) RunPost(params struct { Require("请填写跳转后URL") // 校验格式 - { + if params.MatchRegexp { + // 正则表达式情况下不做校验 + } else { u, err := url.Parse(params.AfterURL) if err != nil { this.FailField("afterURL", "请输入正确的跳转后URL") @@ -76,6 +85,7 @@ func (this *CreatePopupAction) RunPost(params struct { "beforeURL": params.BeforeURL, "afterURL": params.AfterURL, "matchPrefix": params.MatchPrefix, + "matchRegexp": params.MatchRegexp, "keepRequestURI": params.KeepRequestURI, "isOn": true, } diff --git a/web/public/js/components/server/http-host-redirect-box.js b/web/public/js/components/server/http-host-redirect-box.js index cea2f7aa..fa87b195 100644 --- a/web/public/js/components/server/http-host-redirect-box.js +++ b/web/public/js/components/server/http-host-redirect-box.js @@ -50,7 +50,10 @@ Vue.component("http-host-redirect-box", {
diff --git a/web/views/@default/servers/server/settings/redirects/createPopup.html b/web/views/@default/servers/server/settings/redirects/createPopup.html index ccfddc06..ca1c3572 100644 --- a/web/views/@default/servers/server/settings/redirects/createPopup.html +++ b/web/views/@default/servers/server/settings/redirects/createPopup.html @@ -5,6 +5,8 @@