diff --git a/internal/web/actions/default/servers/server/settings/origins/addPopup.go b/internal/web/actions/default/servers/server/settings/origins/addPopup.go index c06680a6..becc26ef 100644 --- a/internal/web/actions/default/servers/server/settings/origins/addPopup.go +++ b/internal/web/actions/default/servers/server/settings/origins/addPopup.go @@ -9,11 +9,12 @@ import ( "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared" "github.com/iwind/TeaGo/actions" + "net/url" "regexp" "strings" ) -// 添加源站 +// AddPopupAction 添加源站 type AddPopupAction struct { actionutils.ParentAction } @@ -64,10 +65,27 @@ func (this *AddPopupAction) RunPost(params struct { Field("addr", params.Addr). Require("请输入源站地址") - addr := regexp.MustCompile(`\s+`).ReplaceAllString(params.Addr, "") - portIndex := strings.LastIndex(params.Addr, ":") + addr := params.Addr + + // 是否是完整的地址 + if params.Protocol == "http" || params.Protocol == "https" { + u, err := url.Parse(addr) + if err == nil { + addr = u.Host + } + } + + addr = regexp.MustCompile(`\s+`).ReplaceAllString(addr, "") + portIndex := strings.LastIndex(addr, ":") if portIndex < 0 { - this.Fail("地址中需要带有端口") + if params.Protocol == "http" { + addr += ":80" + } else if params.Protocol == "https" { + addr += ":443" + } else { + this.Fail("地址中需要带有端口") + } + portIndex = strings.LastIndex(addr, ":") } host := addr[:portIndex] port := addr[portIndex+1:] diff --git a/internal/web/actions/default/servers/server/settings/origins/updatePopup.go b/internal/web/actions/default/servers/server/settings/origins/updatePopup.go index efdc7b9c..3e891391 100644 --- a/internal/web/actions/default/servers/server/settings/origins/updatePopup.go +++ b/internal/web/actions/default/servers/server/settings/origins/updatePopup.go @@ -10,11 +10,12 @@ import ( "github.com/iwind/TeaGo/actions" "github.com/iwind/TeaGo/maps" "github.com/iwind/TeaGo/types" + "net/url" "regexp" "strings" ) -// 修改源站 +// UpdatePopupAction 修改源站 type UpdatePopupAction struct { actionutils.ParentAction } @@ -118,10 +119,27 @@ func (this *UpdatePopupAction) RunPost(params struct { Field("addr", params.Addr). Require("请输入源站地址") - addr := regexp.MustCompile(`\s+`).ReplaceAllString(params.Addr, "") - portIndex := strings.LastIndex(params.Addr, ":") + addr := params.Addr + + // 是否是完整的地址 + if params.Protocol == "http" || params.Protocol == "https" { + u, err := url.Parse(addr) + if err == nil { + addr = u.Host + } + } + + addr = regexp.MustCompile(`\s+`).ReplaceAllString(addr, "") + portIndex := strings.LastIndex(addr, ":") if portIndex < 0 { - this.Fail("地址中需要带有端口") + if params.Protocol == "http" { + addr += ":80" + } else if params.Protocol == "https" { + addr += ":443" + } else { + this.Fail("地址中需要带有端口") + } + portIndex = strings.LastIndex(addr, ":") } host := addr[:portIndex] port := addr[portIndex+1:] diff --git a/web/views/@default/servers/addPortPopup.html b/web/views/@default/servers/addPortPopup.html index 8e3695da..b7e7c9c8 100644 --- a/web/views/@default/servers/addPortPopup.html +++ b/web/views/@default/servers/addPortPopup.html @@ -7,7 +7,7 @@ 网络协议 - @@ -17,8 +17,8 @@

可以是一个数字端口(通常不超过65535),也可以是"地址:端口"的方式。 - HTTP常用端口为80。 - HTTPS常用端口为443。 + HTTP常用端口为80 + HTTPS常用端口为443

diff --git a/web/views/@default/servers/addPortPopup.js b/web/views/@default/servers/addPortPopup.js index d01a6736..5935326a 100644 --- a/web/views/@default/servers/addPortPopup.js +++ b/web/views/@default/servers/addPortPopup.js @@ -6,6 +6,11 @@ Tea.context(function () { this.address = "" this.protocol = this.protocols[0].code + // 初始化 + if (this.protocol == "http") { + this.address = "80" + } + if (window.parent.UPDATING_ADDR != null) { this.isUpdating = true let addr = window.parent.UPDATING_ADDR @@ -16,4 +21,18 @@ Tea.context(function () { this.address = addr.host + ":" + addr.portRange } } + + this.changeProtocol = function () { + switch (this.protocol) { + case "http": + this.address = "80" + break + case "https": + this.address = "443" + } + } + + this.addPort = function (port) { + this.address = port + } }); \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/http/index.html b/web/views/@default/servers/server/settings/http/index.html index 70d4ff7c..728f330f 100644 --- a/web/views/@default/servers/server/settings/http/index.html +++ b/web/views/@default/servers/server/settings/http/index.html @@ -21,6 +21,7 @@ 绑定端口 * + 还没有添加端口绑定,会导致HTTP服务无法访问。 diff --git a/web/views/@default/servers/server/settings/https/index.html b/web/views/@default/servers/server/settings/https/index.html index 1cf3fd11..9c4d79c0 100644 --- a/web/views/@default/servers/server/settings/https/index.html +++ b/web/views/@default/servers/server/settings/https/index.html @@ -25,6 +25,7 @@ 绑定端口 * + 还没有添加端口绑定,会导致HTTPS服务无法访问。 diff --git a/web/views/@default/servers/server/settings/origins/addPopup.html b/web/views/@default/servers/server/settings/origins/addPopup.html index ca6172d5..cb496847 100644 --- a/web/views/@default/servers/server/settings/origins/addPopup.html +++ b/web/views/@default/servers/server/settings/origins/addPopup.html @@ -10,7 +10,7 @@ 源站协议 - @@ -25,7 +25,7 @@ 源站地址 * - +

源站服务器地址,通常是一个IP(或域名)加端口,不需要加 http:// 或 https://

diff --git a/web/views/@default/servers/server/settings/origins/addPopup.js b/web/views/@default/servers/server/settings/origins/addPopup.js new file mode 100644 index 00000000..af257dc8 --- /dev/null +++ b/web/views/@default/servers/server/settings/origins/addPopup.js @@ -0,0 +1,18 @@ +Tea.context(function () { + this.addr = "" + this.protocol = "" + + if (this.isHTTP) { + this.protocol = "http" + } + + this.changeAddr = function () { + if (this.serverType == "httpProxy") { + if (this.addr.startsWith("http://")) { + this.protocol = "http" + } else if (this.addr.startsWith("https://")) { + this.protocol = "https" + } + } + } +}) \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/origins/updatePopup.html b/web/views/@default/servers/server/settings/origins/updatePopup.html index a71ab66d..ce19173f 100644 --- a/web/views/@default/servers/server/settings/origins/updatePopup.html +++ b/web/views/@default/servers/server/settings/origins/updatePopup.html @@ -27,7 +27,7 @@ 源站地址 - +

源站服务器地址,通常是一个IP(或域名)加端口,不需要加 http:// 或 https://

diff --git a/web/views/@default/servers/server/settings/origins/updatePopup.js b/web/views/@default/servers/server/settings/origins/updatePopup.js new file mode 100644 index 00000000..5502d366 --- /dev/null +++ b/web/views/@default/servers/server/settings/origins/updatePopup.js @@ -0,0 +1,11 @@ +Tea.context(function () { + this.changeAddr = function () { + if (this.serverType == "httpProxy") { + if (this.origin.addr.startsWith("http://")) { + this.origin.protocol = "http" + } else if (this.origin.addr.startsWith("https://")) { + this.origin.protocol = "https" + } + } + } +}) \ No newline at end of file