mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-12 12:11:50 +08:00
delete postup/down from wg.conf file when gateway is removed
This commit is contained in:
@@ -109,44 +109,45 @@ func NodeUpdate(client mqtt.Client, msg mqtt.Message) {
|
|||||||
}
|
}
|
||||||
file := ncutils.GetNetclientPathSpecific() + nodeCfg.Node.Interface + ".conf"
|
file := ncutils.GetNetclientPathSpecific() + nodeCfg.Node.Interface + ".conf"
|
||||||
|
|
||||||
if ifaceDelta { // if a change caused an ifacedelta we need to notify the server to update the peers
|
if newNode.ListenPort != nodeCfg.Node.LocalListenPort {
|
||||||
if newNode.ListenPort != nodeCfg.Node.LocalListenPort {
|
if err := wireguard.RemoveConf(newNode.Interface, false); err != nil {
|
||||||
if err := wireguard.RemoveConf(newNode.Interface, false); err != nil {
|
logger.Log(0, "error remove interface", newNode.Interface, err.Error())
|
||||||
logger.Log(0, "error remove interface", newNode.Interface, err.Error())
|
|
||||||
}
|
|
||||||
err = ncutils.ModPort(&newNode)
|
|
||||||
if err != nil {
|
|
||||||
logger.Log(0, "network:", nodeCfg.Node.Network, "error modifying node port on", newNode.Name, "-", err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
informPortChange(&newNode)
|
|
||||||
}
|
}
|
||||||
if err := wireguard.UpdateWgInterface(file, privateKey, nameserver, newNode); err != nil {
|
err = ncutils.ModPort(&newNode)
|
||||||
logger.Log(0, "error updating wireguard config "+err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if keepaliveChange {
|
|
||||||
wireguard.UpdateKeepAlive(file, newNode.PersistentKeepalive)
|
|
||||||
}
|
|
||||||
logger.Log(0, "applying WG conf to "+file)
|
|
||||||
if ncutils.IsWindows() {
|
|
||||||
wireguard.RemoveConfGraceful(nodeCfg.Node.Interface)
|
|
||||||
}
|
|
||||||
err = wireguard.ApplyConf(&nodeCfg.Node, nodeCfg.Node.Interface, file)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Log(0, "error restarting wg after node update -", err.Error())
|
logger.Log(0, "network:", nodeCfg.Node.Network, "error modifying node port on", newNode.Name, "-", err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
ifaceDelta = true
|
||||||
|
informPortChange(&newNode)
|
||||||
|
}
|
||||||
|
if err := wireguard.UpdateWgInterface(file, privateKey, nameserver, newNode); err != nil {
|
||||||
|
logger.Log(0, "error updating wireguard config "+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if keepaliveChange {
|
||||||
|
wireguard.UpdateKeepAlive(file, newNode.PersistentKeepalive)
|
||||||
|
}
|
||||||
|
logger.Log(0, "applying WG conf to "+file)
|
||||||
|
if ncutils.IsWindows() {
|
||||||
|
wireguard.RemoveConfGraceful(nodeCfg.Node.Interface)
|
||||||
|
}
|
||||||
|
err = wireguard.ApplyConf(&nodeCfg.Node, nodeCfg.Node.Interface, file)
|
||||||
|
if err != nil {
|
||||||
|
logger.Log(0, "error restarting wg after node update -", err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
time.Sleep(time.Second)
|
time.Sleep(time.Second)
|
||||||
// if newNode.DNSOn == "yes" {
|
// if newNode.DNSOn == "yes" {
|
||||||
// for _, server := range newNode.NetworkSettings.DefaultServerAddrs {
|
// for _, server := range newNode.NetworkSettings.DefaultServerAddrs {
|
||||||
// if server.IsLeader {
|
// if server.IsLeader {
|
||||||
// go local.SetDNSWithRetry(newNode, server.Address)
|
// go local.SetDNSWithRetry(newNode, server.Address)
|
||||||
// break
|
// break
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
if ifaceDelta { // if a change caused an ifacedelta we need to notify the server to update the peers
|
||||||
doneErr := publishSignal(&nodeCfg, ncutils.DONE)
|
doneErr := publishSignal(&nodeCfg, ncutils.DONE)
|
||||||
if doneErr != nil {
|
if doneErr != nil {
|
||||||
logger.Log(0, "network:", nodeCfg.Node.Network, "could not notify server to update peers after interface change")
|
logger.Log(0, "network:", nodeCfg.Node.Network, "could not notify server to update peers after interface change")
|
||||||
|
@@ -23,6 +23,8 @@ func IfaceDelta(currentNode *models.Node, newNode *models.Node) bool {
|
|||||||
newNode.PersistentKeepalive != currentNode.PersistentKeepalive ||
|
newNode.PersistentKeepalive != currentNode.PersistentKeepalive ||
|
||||||
newNode.DNSOn != currentNode.DNSOn ||
|
newNode.DNSOn != currentNode.DNSOn ||
|
||||||
newNode.Connected != currentNode.Connected ||
|
newNode.Connected != currentNode.Connected ||
|
||||||
|
newNode.PostUp != currentNode.PostUp ||
|
||||||
|
newNode.PostDown != currentNode.PostDown ||
|
||||||
len(newNode.AllowedIPs) != len(currentNode.AllowedIPs) {
|
len(newNode.AllowedIPs) != len(currentNode.AllowedIPs) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
@@ -443,6 +443,7 @@ func UpdateWgInterface(file, privateKey, nameserver string, node models.Node) er
|
|||||||
if node.UDPHolePunch == "yes" {
|
if node.UDPHolePunch == "yes" {
|
||||||
node.ListenPort = 0
|
node.ListenPort = 0
|
||||||
}
|
}
|
||||||
|
wireguard.DeleteSection(section_interface)
|
||||||
wireguard.Section(section_interface).Key("PrivateKey").SetValue(privateKey)
|
wireguard.Section(section_interface).Key("PrivateKey").SetValue(privateKey)
|
||||||
wireguard.Section(section_interface).Key("ListenPort").SetValue(strconv.Itoa(int(node.ListenPort)))
|
wireguard.Section(section_interface).Key("ListenPort").SetValue(strconv.Itoa(int(node.ListenPort)))
|
||||||
addrString := node.Address
|
addrString := node.Address
|
||||||
|
Reference in New Issue
Block a user