mirror of
https://github.com/fosrl/newt.git
synced 2026-03-26 12:36:45 +00:00
Temp lets ignore the sync messages
This commit is contained in:
214
main.go
214
main.go
@@ -565,7 +565,7 @@ func runNewtMain(ctx context.Context) {
|
|||||||
id, // CLI arg takes precedence
|
id, // CLI arg takes precedence
|
||||||
secret, // CLI arg takes precedence
|
secret, // CLI arg takes precedence
|
||||||
endpoint,
|
endpoint,
|
||||||
pingInterval,
|
30*time.Second,
|
||||||
pingTimeout,
|
pingTimeout,
|
||||||
opt,
|
opt,
|
||||||
)
|
)
|
||||||
@@ -959,7 +959,7 @@ persistent_keepalive_interval=5`, util.FixKey(privateKey.String()), util.FixKey(
|
|||||||
"publicKey": publicKey.String(),
|
"publicKey": publicKey.String(),
|
||||||
"pingResults": pingResults,
|
"pingResults": pingResults,
|
||||||
"newtVersion": newtVersion,
|
"newtVersion": newtVersion,
|
||||||
}, 1*time.Second)
|
}, 2*time.Second)
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -1062,7 +1062,7 @@ persistent_keepalive_interval=5`, util.FixKey(privateKey.String()), util.FixKey(
|
|||||||
"publicKey": publicKey.String(),
|
"publicKey": publicKey.String(),
|
||||||
"pingResults": pingResults,
|
"pingResults": pingResults,
|
||||||
"newtVersion": newtVersion,
|
"newtVersion": newtVersion,
|
||||||
}, 1*time.Second)
|
}, 2*time.Second)
|
||||||
|
|
||||||
logger.Debug("Sent exit node ping results to cloud for selection: pingResults=%+v", pingResults)
|
logger.Debug("Sent exit node ping results to cloud for selection: pingResults=%+v", pingResults)
|
||||||
})
|
})
|
||||||
@@ -1198,116 +1198,118 @@ persistent_keepalive_interval=5`, util.FixKey(privateKey.String()), util.FixKey(
|
|||||||
logger.Debug("Sync data received: TCP targets=%d, UDP targets=%d, health check targets=%d",
|
logger.Debug("Sync data received: TCP targets=%d, UDP targets=%d, health check targets=%d",
|
||||||
len(syncData.Targets.TCP), len(syncData.Targets.UDP), len(syncData.HealthCheckTargets))
|
len(syncData.Targets.TCP), len(syncData.Targets.UDP), len(syncData.HealthCheckTargets))
|
||||||
|
|
||||||
// Build sets of desired targets (port -> target string)
|
//TODO: TEST AND IMPLEMENT THIS
|
||||||
desiredTCP := make(map[int]string)
|
|
||||||
for _, t := range syncData.Targets.TCP {
|
// // Build sets of desired targets (port -> target string)
|
||||||
parts := strings.Split(t, ":")
|
// desiredTCP := make(map[int]string)
|
||||||
if len(parts) != 3 {
|
// for _, t := range syncData.Targets.TCP {
|
||||||
logger.Warn("Invalid TCP target format: %s", t)
|
// parts := strings.Split(t, ":")
|
||||||
continue
|
// if len(parts) != 3 {
|
||||||
}
|
// logger.Warn("Invalid TCP target format: %s", t)
|
||||||
port := 0
|
// continue
|
||||||
if _, err := fmt.Sscanf(parts[0], "%d", &port); err != nil {
|
// }
|
||||||
logger.Warn("Invalid port in TCP target: %s", parts[0])
|
// port := 0
|
||||||
continue
|
// if _, err := fmt.Sscanf(parts[0], "%d", &port); err != nil {
|
||||||
}
|
// logger.Warn("Invalid port in TCP target: %s", parts[0])
|
||||||
desiredTCP[port] = parts[1] + ":" + parts[2]
|
// continue
|
||||||
}
|
// }
|
||||||
|
// desiredTCP[port] = parts[1] + ":" + parts[2]
|
||||||
|
// }
|
||||||
|
|
||||||
desiredUDP := make(map[int]string)
|
// desiredUDP := make(map[int]string)
|
||||||
for _, t := range syncData.Targets.UDP {
|
// for _, t := range syncData.Targets.UDP {
|
||||||
parts := strings.Split(t, ":")
|
// parts := strings.Split(t, ":")
|
||||||
if len(parts) != 3 {
|
// if len(parts) != 3 {
|
||||||
logger.Warn("Invalid UDP target format: %s", t)
|
// logger.Warn("Invalid UDP target format: %s", t)
|
||||||
continue
|
// continue
|
||||||
}
|
// }
|
||||||
port := 0
|
// port := 0
|
||||||
if _, err := fmt.Sscanf(parts[0], "%d", &port); err != nil {
|
// if _, err := fmt.Sscanf(parts[0], "%d", &port); err != nil {
|
||||||
logger.Warn("Invalid port in UDP target: %s", parts[0])
|
// logger.Warn("Invalid port in UDP target: %s", parts[0])
|
||||||
continue
|
// continue
|
||||||
}
|
// }
|
||||||
desiredUDP[port] = parts[1] + ":" + parts[2]
|
// desiredUDP[port] = parts[1] + ":" + parts[2]
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Get current targets from proxy manager
|
// // Get current targets from proxy manager
|
||||||
currentTCP, currentUDP := pm.GetTargets()
|
// currentTCP, currentUDP := pm.GetTargets()
|
||||||
|
|
||||||
// Sync TCP targets
|
// // Sync TCP targets
|
||||||
// Remove TCP targets not in desired set
|
// // Remove TCP targets not in desired set
|
||||||
if tcpForIP, ok := currentTCP[wgData.TunnelIP]; ok {
|
// if tcpForIP, ok := currentTCP[wgData.TunnelIP]; ok {
|
||||||
for port := range tcpForIP {
|
// for port := range tcpForIP {
|
||||||
if _, exists := desiredTCP[port]; !exists {
|
// if _, exists := desiredTCP[port]; !exists {
|
||||||
logger.Info("Sync: removing TCP target on port %d", port)
|
// logger.Info("Sync: removing TCP target on port %d", port)
|
||||||
targetStr := fmt.Sprintf("%d:%s", port, tcpForIP[port])
|
// targetStr := fmt.Sprintf("%d:%s", port, tcpForIP[port])
|
||||||
updateTargets(pm, "remove", wgData.TunnelIP, "tcp", TargetData{Targets: []string{targetStr}})
|
// updateTargets(pm, "remove", wgData.TunnelIP, "tcp", TargetData{Targets: []string{targetStr}})
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Add TCP targets that are missing
|
// // Add TCP targets that are missing
|
||||||
for port, target := range desiredTCP {
|
// for port, target := range desiredTCP {
|
||||||
needsAdd := true
|
// needsAdd := true
|
||||||
if tcpForIP, ok := currentTCP[wgData.TunnelIP]; ok {
|
// if tcpForIP, ok := currentTCP[wgData.TunnelIP]; ok {
|
||||||
if currentTarget, exists := tcpForIP[port]; exists {
|
// if currentTarget, exists := tcpForIP[port]; exists {
|
||||||
// Check if target address changed
|
// // Check if target address changed
|
||||||
if currentTarget == target {
|
// if currentTarget == target {
|
||||||
needsAdd = false
|
// needsAdd = false
|
||||||
} else {
|
// } else {
|
||||||
// Target changed, remove old one first
|
// // Target changed, remove old one first
|
||||||
logger.Info("Sync: updating TCP target on port %d", port)
|
// logger.Info("Sync: updating TCP target on port %d", port)
|
||||||
targetStr := fmt.Sprintf("%d:%s", port, currentTarget)
|
// targetStr := fmt.Sprintf("%d:%s", port, currentTarget)
|
||||||
updateTargets(pm, "remove", wgData.TunnelIP, "tcp", TargetData{Targets: []string{targetStr}})
|
// updateTargets(pm, "remove", wgData.TunnelIP, "tcp", TargetData{Targets: []string{targetStr}})
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
if needsAdd {
|
// if needsAdd {
|
||||||
logger.Info("Sync: adding TCP target on port %d -> %s", port, target)
|
// logger.Info("Sync: adding TCP target on port %d -> %s", port, target)
|
||||||
targetStr := fmt.Sprintf("%d:%s", port, target)
|
// targetStr := fmt.Sprintf("%d:%s", port, target)
|
||||||
updateTargets(pm, "add", wgData.TunnelIP, "tcp", TargetData{Targets: []string{targetStr}})
|
// updateTargets(pm, "add", wgData.TunnelIP, "tcp", TargetData{Targets: []string{targetStr}})
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Sync UDP targets
|
// // Sync UDP targets
|
||||||
// Remove UDP targets not in desired set
|
// // Remove UDP targets not in desired set
|
||||||
if udpForIP, ok := currentUDP[wgData.TunnelIP]; ok {
|
// if udpForIP, ok := currentUDP[wgData.TunnelIP]; ok {
|
||||||
for port := range udpForIP {
|
// for port := range udpForIP {
|
||||||
if _, exists := desiredUDP[port]; !exists {
|
// if _, exists := desiredUDP[port]; !exists {
|
||||||
logger.Info("Sync: removing UDP target on port %d", port)
|
// logger.Info("Sync: removing UDP target on port %d", port)
|
||||||
targetStr := fmt.Sprintf("%d:%s", port, udpForIP[port])
|
// targetStr := fmt.Sprintf("%d:%s", port, udpForIP[port])
|
||||||
updateTargets(pm, "remove", wgData.TunnelIP, "udp", TargetData{Targets: []string{targetStr}})
|
// updateTargets(pm, "remove", wgData.TunnelIP, "udp", TargetData{Targets: []string{targetStr}})
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Add UDP targets that are missing
|
// // Add UDP targets that are missing
|
||||||
for port, target := range desiredUDP {
|
// for port, target := range desiredUDP {
|
||||||
needsAdd := true
|
// needsAdd := true
|
||||||
if udpForIP, ok := currentUDP[wgData.TunnelIP]; ok {
|
// if udpForIP, ok := currentUDP[wgData.TunnelIP]; ok {
|
||||||
if currentTarget, exists := udpForIP[port]; exists {
|
// if currentTarget, exists := udpForIP[port]; exists {
|
||||||
// Check if target address changed
|
// // Check if target address changed
|
||||||
if currentTarget == target {
|
// if currentTarget == target {
|
||||||
needsAdd = false
|
// needsAdd = false
|
||||||
} else {
|
// } else {
|
||||||
// Target changed, remove old one first
|
// // Target changed, remove old one first
|
||||||
logger.Info("Sync: updating UDP target on port %d", port)
|
// logger.Info("Sync: updating UDP target on port %d", port)
|
||||||
targetStr := fmt.Sprintf("%d:%s", port, currentTarget)
|
// targetStr := fmt.Sprintf("%d:%s", port, currentTarget)
|
||||||
updateTargets(pm, "remove", wgData.TunnelIP, "udp", TargetData{Targets: []string{targetStr}})
|
// updateTargets(pm, "remove", wgData.TunnelIP, "udp", TargetData{Targets: []string{targetStr}})
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
if needsAdd {
|
// if needsAdd {
|
||||||
logger.Info("Sync: adding UDP target on port %d -> %s", port, target)
|
// logger.Info("Sync: adding UDP target on port %d -> %s", port, target)
|
||||||
targetStr := fmt.Sprintf("%d:%s", port, target)
|
// targetStr := fmt.Sprintf("%d:%s", port, target)
|
||||||
updateTargets(pm, "add", wgData.TunnelIP, "udp", TargetData{Targets: []string{targetStr}})
|
// updateTargets(pm, "add", wgData.TunnelIP, "udp", TargetData{Targets: []string{targetStr}})
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Sync health check targets
|
// // Sync health check targets
|
||||||
if err := healthMonitor.SyncTargets(syncData.HealthCheckTargets); err != nil {
|
// if err := healthMonitor.SyncTargets(syncData.HealthCheckTargets); err != nil {
|
||||||
logger.Error("Failed to sync health check targets: %v", err)
|
// logger.Error("Failed to sync health check targets: %v", err)
|
||||||
} else {
|
// } else {
|
||||||
logger.Info("Successfully synced health check targets")
|
// logger.Info("Successfully synced health check targets")
|
||||||
}
|
// }
|
||||||
|
|
||||||
logger.Info("Sync complete")
|
logger.Info("Sync complete")
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user