尝试自动在firewalld中开放端口

This commit is contained in:
刘祥超
2022-01-03 16:27:34 +08:00
parent a41f834192
commit 258ffef0c2

View File

@@ -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
}
}
}
}