From b5faaa8c8f151c9b53af11affc3efd8969f6c71e Mon Sep 17 00:00:00 2001 From: Tim David Saxen Date: Thu, 29 Nov 2018 09:57:42 +0100 Subject: [PATCH] Allow multiple sub sections for tcp/udp server (Random Port) --- server/control.go | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/server/control.go b/server/control.go index 1f2ebc24..143429ae 100644 --- a/server/control.go +++ b/server/control.go @@ -371,9 +371,11 @@ func (ctl *Control) RegisterProxy(pxyMsg *msg.NewProxy, token string) (remoteAdd if ctl.section != "common" { // Sub sections only allow tcp/udp if pxyMsg.ProxyType == consts.TcpProxy || pxyMsg.ProxyType == consts.UdpProxy { - if _, ok := g.GlbServerSubSectionMap[ctl.section].AllowPorts[pxyMsg.RemotePort]; !ok { - err = fmt.Errorf("port %d number does not belong to section/token", pxyMsg.RemotePort) - return + if pxyMsg.RemotePort != 0 { // Random port + if _, ok := g.GlbServerSubSectionMap[ctl.section].AllowPorts[pxyMsg.RemotePort]; !ok { + err = fmt.Errorf("port %d number does not belong to section/token", pxyMsg.RemotePort) + return + } } } else { err = fmt.Errorf("proxy type '%s' only allowed with common token", pxyMsg.ProxyType) @@ -382,9 +384,11 @@ func (ctl *Control) RegisterProxy(pxyMsg *msg.NewProxy, token string) (remoteAdd } else { // Only TCP and UDP have RemotePort parameter if pxyMsg.ProxyType == consts.TcpProxy || pxyMsg.ProxyType == consts.UdpProxy { - if _, ok := g.GlbServerSubSectionMap[ctl.section].AllowPorts[pxyMsg.RemotePort]; !ok { - err = fmt.Errorf("port %d number does not belong to section/token", pxyMsg.RemotePort) - return + if pxyMsg.RemotePort != 0 { // Random port + if _, ok := g.GlbServerSubSectionMap[ctl.section].AllowPorts[pxyMsg.RemotePort]; !ok { + err = fmt.Errorf("port %d number does not belong to section/token", pxyMsg.RemotePort) + return + } } } }