diff --git a/config/config.go b/config/config.go index dac7e186..0e42eaae 100644 --- a/config/config.go +++ b/config/config.go @@ -91,6 +91,7 @@ type ServerConfig struct { Environment string `yaml:"environment"` JwtValidityDuration time.Duration `yaml:"jwt_validity_duration" swaggertype:"primitive,integer" format:"int64"` RacAutoDisable bool `yaml:"rac_auto_disable"` + RacAllowMultipleNetworks bool `yaml:"rac_allow_multiple_networks"` CacheEnabled string `yaml:"caching_enabled"` EndpointDetection bool `yaml:"endpoint_detection"` AllowedEmailDomains string `yaml:"allowed_email_domains"` diff --git a/scripts/netmaker.default.env b/scripts/netmaker.default.env index e5de8d35..9d2f8dd9 100644 --- a/scripts/netmaker.default.env +++ b/scripts/netmaker.default.env @@ -73,6 +73,8 @@ OIDC_ISSUER= JWT_VALIDITY_DURATION=43200 # Auto disable a user's connecteds clients bassed on JWT token expiration RAC_AUTO_DISABLE=false +# Allow a user to connect to multiple networks simultaneously +RAC_ALLOW_MULTIPLE_NETWORKS=false # if turned on data will be cached on to improve performance significantly (IMPORTANT: If HA set to `false` ) CACHING_ENABLED=true # if turned on netclient checks if peers are reachable over private/LAN address, and choose that as peer endpoint diff --git a/scripts/nm-quick.sh b/scripts/nm-quick.sh index 87538771..0cc446aa 100755 --- a/scripts/nm-quick.sh +++ b/scripts/nm-quick.sh @@ -256,7 +256,7 @@ save_config() { ( "INSTALL_TYPE" "NODE_ID" "DNS_MODE" "NETCLIENT_AUTO_UPDATE" "API_PORT" "MANAGE_DNS" "DEFAULT_DOMAIN" "CORS_ALLOWED_ORIGIN" "DISPLAY_KEYS" "DATABASE" "SERVER_BROKER_ENDPOINT" "VERBOSITY" "DEBUG_MODE" "REST_BACKEND" "DISABLE_REMOTE_IP_CHECK" "TELEMETRY" "ALLOWED_EMAIL_DOMAINS" "AUTH_PROVIDER" "CLIENT_ID" "CLIENT_SECRET" - "FRONTEND_URL" "AZURE_TENANT" "OIDC_ISSUER" "EXPORTER_API_PORT" "JWT_VALIDITY_DURATION" "RAC_AUTO_DISABLE" "CACHING_ENABLED" "ENDPOINT_DETECTION" + "FRONTEND_URL" "AZURE_TENANT" "OIDC_ISSUER" "EXPORTER_API_PORT" "JWT_VALIDITY_DURATION" "RAC_AUTO_DISABLE" "RAC_ALLOW_MULTIPLE_NETWORKS" "CACHING_ENABLED" "ENDPOINT_DETECTION" "SMTP_HOST" "SMTP_PORT" "EMAIL_SENDER_ADDR" "EMAIL_SENDER_USER" "EMAIL_SENDER_PASSWORD") for name in "${toCopy[@]}"; do save_config_item $name "${!name}" diff --git a/scripts/nm-upgrade.sh b/scripts/nm-upgrade.sh index 45594c6b..b5a8dfe5 100755 --- a/scripts/nm-upgrade.sh +++ b/scripts/nm-upgrade.sh @@ -179,7 +179,7 @@ save_config() { ( "CORS_ALLOWED_ORIGIN" "DISPLAY_KEYS" "DATABASE" "SERVER_BROKER_ENDPOINT" "STUN_PORT" "VERBOSITY" "TURN_PORT" "USE_TURN" "DEBUG_MODE" "TURN_API_PORT" "REST_BACKEND" "DISABLE_REMOTE_IP_CHECK" "TELEMETRY" "AUTH_PROVIDER" "CLIENT_ID" "CLIENT_SECRET" - "FRONTEND_URL" "AZURE_TENANT" "OIDC_ISSUER" "EXPORTER_API_PORT" "JWT_VALIDITY_DURATION" "RAC_AUTO_DISABLE") + "FRONTEND_URL" "AZURE_TENANT" "OIDC_ISSUER" "EXPORTER_API_PORT" "JWT_VALIDITY_DURATION" "RAC_AUTO_DISABLE" "RAC_ALLOW_MULTIPLE_NETWORKS") for name in "${toCopy[@]}"; do save_config_item $name "${!name}" done diff --git a/servercfg/serverconf.go b/servercfg/serverconf.go index 46766543..aa30751f 100644 --- a/servercfg/serverconf.go +++ b/servercfg/serverconf.go @@ -94,6 +94,7 @@ func GetServerConfig() config.ServerConfig { } cfg.JwtValidityDuration = GetJwtValidityDuration() cfg.RacAutoDisable = GetRacAutoDisable() + cfg.RacAllowMultipleNetworks = GetRacAllowMultipleNetworks() cfg.MetricInterval = GetMetricInterval() cfg.ManageDNS = GetManageDNS() cfg.Stun = IsStunEnabled() @@ -120,6 +121,11 @@ func GetRacAutoDisable() bool { return os.Getenv("RAC_AUTO_DISABLE") == "true" } +// GetRacAllowMultipleNetworks - returns whether the feature to allow simultaneous network connections via RAC is enabled +func GetRacAllowMultipleNetworks() bool { + return os.Getenv("RAC_ALLOW_MULTIPLE_NETWORKS") == "true" +} + // GetServerInfo - gets the server config into memory from file or env func GetServerInfo() models.ServerConfig { var cfg models.ServerConfig