Temp lets ignore the sync messages

This commit is contained in:
Owen
2026-03-06 15:14:48 -08:00
parent 7d6825132b
commit e68b65683f

214
main.go
View File

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