mirror of
https://github.com/netbirdio/netbird.git
synced 2026-07-17 12:09:58 +00:00
60 lines
1.5 KiB
Go
60 lines
1.5 KiB
Go
package lazyconn
|
|
|
|
import (
|
|
"os"
|
|
"strconv"
|
|
"strings"
|
|
|
|
log "github.com/sirupsen/logrus"
|
|
)
|
|
|
|
const (
|
|
EnvLazyConn = "NB_LAZY_CONN"
|
|
EnvInactivityThreshold = "NB_LAZY_CONN_INACTIVITY_THRESHOLD"
|
|
)
|
|
|
|
// State is the tri-state local override for lazy connections read from the environment.
|
|
type State int
|
|
|
|
const (
|
|
// StateUnset means no local override; defer to the management feature flag.
|
|
StateUnset State = iota
|
|
// StateOn forces lazy connections on, overriding management.
|
|
StateOn
|
|
// StateOff forces lazy connections off, overriding management.
|
|
StateOff
|
|
)
|
|
|
|
// EnvState reads NB_LAZY_CONN and returns the local override state.
|
|
func EnvState() State {
|
|
return ParseState(os.Getenv(EnvLazyConn))
|
|
}
|
|
|
|
// ParseState interprets a lazy-connection override value (from the environment or an MDM
|
|
// policy). It accepts the on/off aliases plus any value strconv.ParseBool understands
|
|
// (true/false/1/0). An empty or unrecognized value returns StateUnset so that the
|
|
// management feature flag remains in control.
|
|
func ParseState(raw string) State {
|
|
if raw == "" {
|
|
return StateUnset
|
|
}
|
|
|
|
normalized := strings.ToLower(strings.TrimSpace(raw))
|
|
switch normalized {
|
|
case "on":
|
|
return StateOn
|
|
case "off":
|
|
return StateOff
|
|
}
|
|
|
|
enabled, err := strconv.ParseBool(normalized)
|
|
if err != nil {
|
|
log.Warnf("failed to parse lazy connection value %q (from %s env or MDM policy): %v", raw, EnvLazyConn, err)
|
|
return StateUnset
|
|
}
|
|
if enabled {
|
|
return StateOn
|
|
}
|
|
return StateOff
|
|
}
|