diff --git a/compose/docker-compose-emqx.yml b/compose/docker-compose-emqx.yml index 26de6ffb..5fd767c8 100644 --- a/compose/docker-compose-emqx.yml +++ b/compose/docker-compose-emqx.yml @@ -19,6 +19,7 @@ services: COREDNS_ADDR: "SERVER_PUBLIC_IP" DNS_MODE: "on" SERVER_HTTP_HOST: "api.NETMAKER_BASE_DOMAIN" + NETCLIENT_AUTO_UPDATE: "enabled" API_PORT: "8081" MASTER_KEY: "REPLACE_MASTER_KEY" CORS_ALLOWED_ORIGIN: "*" diff --git a/compose/docker-compose.ee.yml b/compose/docker-compose.ee.yml index dc9ef492..80139f8d 100644 --- a/compose/docker-compose.ee.yml +++ b/compose/docker-compose.ee.yml @@ -17,6 +17,7 @@ services: COREDNS_ADDR: "SERVER_PUBLIC_IP" DNS_MODE: "on" SERVER_HTTP_HOST: "api.NETMAKER_BASE_DOMAIN" + NETCLIENT_AUTO_UPDATE: "enabled" API_PORT: "8081" MASTER_KEY: "REPLACE_MASTER_KEY" CORS_ALLOWED_ORIGIN: "*" diff --git a/compose/docker-compose.reference.yml b/compose/docker-compose.reference.yml index a9672b05..b34d3cc3 100644 --- a/compose/docker-compose.reference.yml +++ b/compose/docker-compose.reference.yml @@ -14,6 +14,7 @@ services: SERVER_NAME: "NETMAKER_BASE_DOMAIN" # The base domain of netmaker SERVER_HOST: "SERVER_PUBLIC_IP" # Set to public IP of machine. SERVER_HTTP_HOST: "api.NETMAKER_BASE_DOMAIN" # Overrides SERVER_HOST if set. Useful for making HTTP available via different interfaces/networks. + NETCLIENT_AUTO_UPDATE: "enabled" # Enable auto update of netclient ? ENUM:- enabled,disabled | default: enabled SERVER_API_CONN_STRING: "api.NETMAKER_BASE_DOMAIN:443" COREDNS_ADDR: "SERVER_PUBLIC_IP" # Address of the CoreDNS server. Defaults to SERVER_HOST DNS_MODE: "on" # Enables DNS Mode, meaning all nodes will set hosts file for private dns settings. diff --git a/compose/docker-compose.yml b/compose/docker-compose.yml index 8466ebb0..6f02cdce 100644 --- a/compose/docker-compose.yml +++ b/compose/docker-compose.yml @@ -17,6 +17,7 @@ services: COREDNS_ADDR: "SERVER_PUBLIC_IP" DNS_MODE: "on" SERVER_HTTP_HOST: "api.NETMAKER_BASE_DOMAIN" + NETCLIENT_AUTO_UPDATE: "enabled" API_PORT: "8081" MASTER_KEY: "REPLACE_MASTER_KEY" CORS_ALLOWED_ORIGIN: "*" diff --git a/config/config.go b/config/config.go index 89979410..9c3e45fa 100644 --- a/config/config.go +++ b/config/config.go @@ -40,6 +40,7 @@ type ServerConfig struct { ServerBrokerEndpoint string `yaml:"serverbrokerendpoint"` BrokerType string `yaml:"brokertype"` EmqxRestEndpoint string `yaml:"emqxrestendpoint"` + NetclientAutoUpdate string `yaml:"netclientautoupdate"` MasterKey string `yaml:"masterkey"` DNSKey string `yaml:"dnskey"` AllowedOrigin string `yaml:"allowedorigin"` diff --git a/logic/hosts.go b/logic/hosts.go index 2ea04349..f3b0bc26 100644 --- a/logic/hosts.go +++ b/logic/hosts.go @@ -97,6 +97,7 @@ func CreateHost(h *models.Host) error { return err } h.HostPass = string(hash) + h.AutoUpdate = servercfg.AutoUpdateEnabled() // if another server has already updated proxyenabled, leave it alone if !h.ProxyEnabledSet { log.Println("checking default proxy", servercfg.GetServerConfig().DefaultProxyMode) diff --git a/models/host.go b/models/host.go index 0272b6ee..14654843 100644 --- a/models/host.go +++ b/models/host.go @@ -47,6 +47,7 @@ type Host struct { Version string `json:"version" yaml:"version"` IPForwarding bool `json:"ipforwarding" yaml:"ipforwarding"` DaemonInstalled bool `json:"daemoninstalled" yaml:"daemoninstalled"` + AutoUpdate bool `json:"autoupdate" yaml:"autoupdate"` HostPass string `json:"hostpass" yaml:"hostpass"` Name string `json:"name" yaml:"name"` OS string `json:"os" yaml:"os"` diff --git a/servercfg/serverconf.go b/servercfg/serverconf.go index 1830cb66..41f31ee0 100644 --- a/servercfg/serverconf.go +++ b/servercfg/serverconf.go @@ -46,6 +46,11 @@ func GetServerConfig() config.ServerConfig { cfg.StunPort = GetStunPort() cfg.BrokerType = GetBrokerType() cfg.EmqxRestEndpoint = GetEmqxRestEndpoint() + if AutoUpdateEnabled() { + cfg.NetclientAutoUpdate = "enabled" + } else { + cfg.NetclientAutoUpdate = "disabled" + } if IsRestBackend() { cfg.RestBackend = "on" } @@ -382,6 +387,17 @@ func GetVerbosity() int32 { return int32(verbosity) } +// AutoUpdateEnabled returns a boolean indicating whether netclient auto update is enabled or disabled +// default is enabled +func AutoUpdateEnabled() bool { + if os.Getenv("NETCLIENT_AUTO_UPDATE") == "disabled" { + return false + } else if config.Config.Server.NetclientAutoUpdate == "disabled" { + return false + } + return true +} + // IsDNSMode - should it run with DNS func IsDNSMode() bool { isdns := true