mirror of
				https://github.com/TeaOSLab/EdgeNode.git
				synced 2025-11-04 07:40:56 +08:00 
			
		
		
		
	尝试自动在firewalld中开放端口
This commit is contained in:
		@@ -143,6 +143,9 @@ func (this *ListenerManager) Start(node *nodeconfigs.NodeConfig) error {
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 加入到firewalld
 | 
			
		||||
	this.addToFirewalld(groupAddrs)
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -214,3 +217,55 @@ func (this *ListenerManager) findProcessNameWithPort(isUdp bool, port string) st
 | 
			
		||||
	}
 | 
			
		||||
	return ""
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this *ListenerManager) addToFirewalld(groupAddrs []string) {
 | 
			
		||||
	if !sharedNodeConfig.AutoOpenPorts {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	remotelogs.Println("FIREWALLD", "open ports automatically")
 | 
			
		||||
 | 
			
		||||
	var ports = []string{}
 | 
			
		||||
	for _, addr := range groupAddrs {
 | 
			
		||||
		var protocol = "tcp"
 | 
			
		||||
		if strings.HasPrefix(addr, "udp") {
 | 
			
		||||
			protocol = "udp"
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		var lastIndex = strings.LastIndex(addr, ":")
 | 
			
		||||
		if lastIndex > 0 {
 | 
			
		||||
			var portString = addr[lastIndex+1:]
 | 
			
		||||
			ports = append(ports, portString+"/"+protocol)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	if len(ports) == 0 {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	firewallCmd, err := exec.LookPath("firewall-cmd")
 | 
			
		||||
	if err != nil || len(firewallCmd) == 0 {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, port := range ports {
 | 
			
		||||
		{
 | 
			
		||||
			// TODO 需要支持sudo
 | 
			
		||||
			var cmd = exec.Command(firewallCmd, "--add-port="+port, "--permanent")
 | 
			
		||||
			err = cmd.Run()
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				remotelogs.Warn("FIREWALLD", "'"+cmd.String()+"': "+err.Error())
 | 
			
		||||
				return
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		{
 | 
			
		||||
			// TODO 需要支持sudo
 | 
			
		||||
			var cmd = exec.Command(firewallCmd, "--add-port="+port)
 | 
			
		||||
			err = cmd.Run()
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				remotelogs.Warn("FIREWALLD", "'"+cmd.String()+"': "+err.Error())
 | 
			
		||||
				return
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user