Browse Source

add setting to turn on/off STUN

Max Ma 9 months ago
parent
commit
1395351a50
5 changed files with 24 additions and 1 deletions
  1. 1 1
      compose/docker-compose.yml
  2. 2 0
      config/config.go
  3. 2 0
      models/structs.go
  4. 2 0
      scripts/netmaker.default.env
  5. 17 0
      servercfg/serverconf.go

+ 1 - 1
compose/docker-compose.yml

@@ -12,7 +12,7 @@ services:
       - sqldata:/root/data
       - sqldata:/root/data
     environment:
     environment:
       # config-dependant vars
       # config-dependant vars
-      - STUN_LIST=stun1.netmaker.io:3478,stun2.netmaker.io:3478,stun1.l.google.com:19302,stun2.l.google.com:19302
+      - STUN_SERVERS=stun1.netmaker.io:3478,stun2.netmaker.io:3478,stun1.l.google.com:19302,stun2.l.google.com:19302
       # The domain/host IP indicating the mq broker address
       # The domain/host IP indicating the mq broker address
       - BROKER_ENDPOINT=wss://broker.${NM_DOMAIN} # For EMQX broker use `BROKER_ENDPOINT=wss://broker.${NM_DOMAIN}/mqtt`
       - BROKER_ENDPOINT=wss://broker.${NM_DOMAIN} # For EMQX broker use `BROKER_ENDPOINT=wss://broker.${NM_DOMAIN}/mqtt`
       # For EMQX broker (uncomment the two lines below)
       # For EMQX broker (uncomment the two lines below)

+ 2 - 0
config/config.go

@@ -101,6 +101,8 @@ type ServerConfig struct {
 	SmtpPort                   int           `json:"smtp_port"`
 	SmtpPort                   int           `json:"smtp_port"`
 	MetricInterval             string        `yaml:"metric_interval"`
 	MetricInterval             string        `yaml:"metric_interval"`
 	ManageDNS                  bool          `yaml:"manage_dns"`
 	ManageDNS                  bool          `yaml:"manage_dns"`
+	Stun                       bool          `yaml:"stun"`
+	StunServers                string        `yaml:"stun_servers"`
 	DefaultDomain              string        `yaml:"default_domain"`
 	DefaultDomain              string        `yaml:"default_domain"`
 }
 }
 
 

+ 2 - 0
models/structs.go

@@ -267,6 +267,8 @@ type ServerConfig struct {
 	TrafficKey     []byte `yaml:"traffickey"`
 	TrafficKey     []byte `yaml:"traffickey"`
 	MetricInterval string `yaml:"metric_interval"`
 	MetricInterval string `yaml:"metric_interval"`
 	ManageDNS      bool   `yaml:"manage_dns"`
 	ManageDNS      bool   `yaml:"manage_dns"`
+	Stun           bool   `yaml:"stun"`
+	StunServers    string `yaml:"stun_servers"`
 	DefaultDomain  string `yaml:"default_domain"`
 	DefaultDomain  string `yaml:"default_domain"`
 }
 }
 
 

+ 2 - 0
scripts/netmaker.default.env

@@ -94,3 +94,5 @@ PEER_UPDATE_BATCH_SIZE=50
 DEFAULT_DOMAIN=netmaker.hosted
 DEFAULT_DOMAIN=netmaker.hosted
 # managed dns setting, set to true to resolve dns entries on netmaker network
 # managed dns setting, set to true to resolve dns entries on netmaker network
 MANAGE_DNS=false
 MANAGE_DNS=false
+# if STUN is set to true, hole punch is called
+STUN=true

+ 17 - 0
servercfg/serverconf.go

@@ -94,6 +94,8 @@ func GetServerConfig() config.ServerConfig {
 	cfg.RacAutoDisable = GetRacAutoDisable()
 	cfg.RacAutoDisable = GetRacAutoDisable()
 	cfg.MetricInterval = GetMetricInterval()
 	cfg.MetricInterval = GetMetricInterval()
 	cfg.ManageDNS = GetManageDNS()
 	cfg.ManageDNS = GetManageDNS()
+	cfg.Stun = IsStunEnabled()
+	cfg.StunServers = GetStunServers()
 	cfg.DefaultDomain = GetDefaultDomain()
 	cfg.DefaultDomain = GetDefaultDomain()
 	return cfg
 	return cfg
 }
 }
@@ -140,6 +142,8 @@ func GetServerInfo() models.ServerConfig {
 	cfg.IsPro = IsPro
 	cfg.IsPro = IsPro
 	cfg.MetricInterval = GetMetricInterval()
 	cfg.MetricInterval = GetMetricInterval()
 	cfg.ManageDNS = GetManageDNS()
 	cfg.ManageDNS = GetManageDNS()
+	cfg.Stun = IsStunEnabled()
+	cfg.StunServers = GetStunServers()
 	cfg.DefaultDomain = GetDefaultDomain()
 	cfg.DefaultDomain = GetDefaultDomain()
 	return cfg
 	return cfg
 }
 }
@@ -805,6 +809,19 @@ func IsEndpointDetectionEnabled() bool {
 	return enabled
 	return enabled
 }
 }
 
 
+// IsStunEnabled - returns true if STUN set to on
+func IsStunEnabled() bool {
+	var enabled = true
+	if os.Getenv("STUN") != "" {
+		enabled = os.Getenv("STUN") == "true"
+	}
+	return enabled
+}
+
+func GetStunServers() string {
+	return os.Getenv("STUN_SERVERS")
+}
+
 // GetEnvironment returns the environment the server is running in (e.g. dev, staging, prod...)
 // GetEnvironment returns the environment the server is running in (e.g. dev, staging, prod...)
 func GetEnvironment() string {
 func GetEnvironment() string {
 	if env := os.Getenv("ENVIRONMENT"); env != "" {
 	if env := os.Getenv("ENVIRONMENT"); env != "" {