From 14c610d73afb61943a3d5e307622f482a2c9f2fc Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Thu, 1 Jun 2023 19:40:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/nodes/listener_manager.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/internal/nodes/listener_manager.go b/internal/nodes/listener_manager.go index aa904c2..d52d1f6 100644 --- a/internal/nodes/listener_manager.go +++ b/internal/nodes/listener_manager.go @@ -290,7 +290,9 @@ func (this *ListenerManager) addToFirewalld(groupAddrs []string) { if newPortStrings == this.lastPortStrings { return } + this.locker.Lock() this.lastPortStrings = newPortStrings + this.locker.Unlock() remotelogs.Println("FIREWALLD", "opening ports automatically ...") defer func() { @@ -302,8 +304,10 @@ func (this *ListenerManager) addToFirewalld(groupAddrs []string) { var udpPortRanges = utils.MergePorts(udpPorts) defer func() { + this.locker.Lock() this.lastTCPPortRanges = tcpPortRanges this.lastUDPPortRanges = udpPortRanges + this.locker.Unlock() }() // 删除老的不存在的端口 @@ -339,3 +343,28 @@ func (this *ListenerManager) addToFirewalld(groupAddrs []string) { _ = this.firewalld.AllowPortRangesPermanently(tcpPortRanges, "tcp") _ = this.firewalld.AllowPortRangesPermanently(udpPortRanges, "udp") } + +func (this *ListenerManager) reloadFirewalld() { + this.locker.Lock() + defer this.locker.Unlock() + + var nodeConfig = sharedNodeConfig + + // 所有的新地址 + var groupAddrs = []string{} + var availableServerGroups = nodeConfig.AvailableGroups() + if !nodeConfig.IsOn { + availableServerGroups = []*serverconfigs.ServerAddressGroup{} + } + + if len(availableServerGroups) == 0 { + remotelogs.Println("LISTENER_MANAGER", "no available servers to startup") + } + + for _, group := range availableServerGroups { + var addr = group.FullAddr() + groupAddrs = append(groupAddrs, addr) + } + + go this.addToFirewalld(groupAddrs) +}