From 3eb4a02ed3c6768f31b55a0d6eee22f46d8f77a5 Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Sun, 23 May 2021 20:03:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=AB=AF=E5=8F=A3=E6=97=B6?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E7=AB=AF=E5=8F=A3=E8=8C=83=E5=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../servers/server/settings/http/index.go | 20 +++++++++++++++++++ .../servers/server/settings/https/index.go | 19 +++++++++++++++++- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/internal/web/actions/default/servers/server/settings/http/index.go b/internal/web/actions/default/servers/server/settings/http/index.go index 21dbecc8..af9e6f4a 100644 --- a/internal/web/actions/default/servers/server/settings/http/index.go +++ b/internal/web/actions/default/servers/server/settings/http/index.go @@ -10,6 +10,8 @@ import ( "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" "github.com/iwind/TeaGo/actions" "github.com/iwind/TeaGo/maps" + "github.com/iwind/TeaGo/types" + "regexp" ) type IndexAction struct { @@ -76,6 +78,24 @@ func (this *IndexAction) RunPost(params struct { this.Fail("端口地址解析失败:" + err.Error()) } + // 检查端口地址是否正确 + for _, addr := range addresses { + err = addr.Init() + if err != nil { + this.Fail("绑定端口校验失败:" + err.Error()) + } + + if regexp.MustCompile(`^\d+$`).MatchString(addr.PortRange) { + port := types.Int(addr.PortRange) + if port > 65535 { + this.Fail("绑定的端口地址不能大于65535") + } + if port == 443 { + this.Fail("端口443通常是HTTPS的端口,不能用在HTTP上") + } + } + } + server, _, isOk := serverutils.FindServer(this.Parent(), params.ServerId) if !isOk { return diff --git a/internal/web/actions/default/servers/server/settings/https/index.go b/internal/web/actions/default/servers/server/settings/https/index.go index 57ddd766..4349b781 100644 --- a/internal/web/actions/default/servers/server/settings/https/index.go +++ b/internal/web/actions/default/servers/server/settings/https/index.go @@ -12,6 +12,7 @@ import ( "github.com/iwind/TeaGo/actions" "github.com/iwind/TeaGo/maps" "github.com/iwind/TeaGo/types" + "regexp" ) type IndexAction struct { @@ -87,7 +88,23 @@ func (this *IndexAction) RunPost(params struct { this.Fail("端口地址解析失败:" + err.Error()) } - // TODO 校验addresses + // 检查端口地址是否正确 + for _, addr := range addresses { + err = addr.Init() + if err != nil { + this.Fail("绑定端口校验失败:" + err.Error()) + } + + if regexp.MustCompile(`^\d+$`).MatchString(addr.PortRange) { + port := types.Int(addr.PortRange) + if port > 65535 { + this.Fail("绑定的端口地址不能大于65535") + } + if port == 80 { + this.Fail("端口80通常是HTTP的端口,不能用在HTTPS上") + } + } + } // 校验SSL var sslPolicyId = int64(0)