mirror of
https://github.com/TeaOSLab/EdgeNode.git
synced 2025-11-03 15:00:26 +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