mirror of
https://github.com/netbirdio/netbird.git
synced 2026-09-13 10:19:07 +02:00
Gated behind NB_DISABLE_WG_KEEP_ALIVE for battery measurements; unset the variable and the behaviour is unchanged. Peers start with the 25s persistent keepalive so an idle responder still emits traffic and triggers the handshake initiation, then the interval drops to zero once the watcher observes a fresh handshake. The keepalive is re-armed whenever a connection attempt restarts, so every new handshake gets initiated the same way. The watcher also stops its periodic handshake check after that first observation: with keepalive disabled an idle peer never rotates its handshake, so the periodic check would report a false disconnect every checkPeriod and trigger a full reconnect.
50 lines
1.2 KiB
Go
50 lines
1.2 KiB
Go
package peer
|
|
|
|
import (
|
|
"os"
|
|
"runtime"
|
|
"strings"
|
|
)
|
|
|
|
const (
|
|
EnvKeyNBForceRelay = "NB_FORCE_RELAY"
|
|
EnvKeyNBHomeRelayServers = "NB_HOME_RELAY_SERVERS"
|
|
EnvKeyNBDisableWgKeepAlive = "NB_DISABLE_WG_KEEP_ALIVE"
|
|
)
|
|
|
|
func IsForceRelayed() bool {
|
|
if runtime.GOOS == "js" {
|
|
return true
|
|
}
|
|
return strings.EqualFold(os.Getenv(EnvKeyNBForceRelay), "true")
|
|
}
|
|
|
|
func isWgKeepAliveDisabled() bool {
|
|
return strings.EqualFold(os.Getenv(EnvKeyNBDisableWgKeepAlive), "true")
|
|
}
|
|
|
|
// OverrideRelayURLs returns the relay server URL list set in
|
|
// NB_HOME_RELAY_SERVERS (comma-separated) and a boolean indicating whether
|
|
// the override is active. When the env var is unset, the boolean is false
|
|
// and the caller should keep the list received from the management server.
|
|
// Intended for lab/debug scenarios where a peer must pin to a specific home
|
|
// relay regardless of what management offers.
|
|
func OverrideRelayURLs() ([]string, bool) {
|
|
raw := os.Getenv(EnvKeyNBHomeRelayServers)
|
|
if raw == "" {
|
|
return nil, false
|
|
}
|
|
parts := strings.Split(raw, ",")
|
|
urls := make([]string, 0, len(parts))
|
|
for _, p := range parts {
|
|
p = strings.TrimSpace(p)
|
|
if p != "" {
|
|
urls = append(urls, p)
|
|
}
|
|
}
|
|
if len(urls) == 0 {
|
|
return nil, false
|
|
}
|
|
return urls, true
|
|
}
|