From 6b684d95a426ab7302c0612bb8af8153589780cd Mon Sep 17 00:00:00 2001 From: Anish Mukherjee Date: Mon, 20 Mar 2023 17:47:41 +0530 Subject: [PATCH 1/4] add host auto updated setting with default true --- logic/hosts.go | 1 + models/host.go | 1 + 2 files changed, 2 insertions(+) diff --git a/logic/hosts.go b/logic/hosts.go index 19feda1a..79e32d60 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 = true // 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 4b2231b6..5689b9cb 100644 --- a/models/host.go +++ b/models/host.go @@ -33,6 +33,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"` From 4405038d67c46915bf108d196ceb5d68e8dffad9 Mon Sep 17 00:00:00 2001 From: Anish Mukherjee Date: Mon, 20 Mar 2023 18:10:52 +0530 Subject: [PATCH 2/4] add server setting for auto update --- compose/docker-compose-emqx.yml | 1 + compose/docker-compose.ee.yml | 1 + compose/docker-compose.reference.yml | 1 + compose/docker-compose.yml | 1 + logic/hosts.go | 2 +- servercfg/serverconf.go | 6 ++++++ 6 files changed, 11 insertions(+), 1 deletion(-) diff --git a/compose/docker-compose-emqx.yml b/compose/docker-compose-emqx.yml index d661f5eb..fb70c61a 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" + 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 9c5cc3fb..9a33241a 100644 --- a/compose/docker-compose.ee.yml +++ b/compose/docker-compose.ee.yml @@ -19,6 +19,7 @@ services: COREDNS_ADDR: "SERVER_PUBLIC_IP" DNS_MODE: "on" SERVER_HTTP_HOST: "api.NETMAKER_BASE_DOMAIN" + 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 77cab1ce..c0b4e31c 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. + 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 9b1d7b49..37313c23 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" + AUTO_UPDATE: "enabled" API_PORT: "8081" MASTER_KEY: "REPLACE_MASTER_KEY" CORS_ALLOWED_ORIGIN: "*" diff --git a/logic/hosts.go b/logic/hosts.go index 79e32d60..dc031af5 100644 --- a/logic/hosts.go +++ b/logic/hosts.go @@ -97,7 +97,7 @@ func CreateHost(h *models.Host) error { return err } h.HostPass = string(hash) - h.AutoUpdate = true + 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/servercfg/serverconf.go b/servercfg/serverconf.go index c59253d9..6473a480 100644 --- a/servercfg/serverconf.go +++ b/servercfg/serverconf.go @@ -382,6 +382,12 @@ 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 { + return os.Getenv("AUTO_UPDATE") != "disabled" +} + // IsDNSMode - should it run with DNS func IsDNSMode() bool { isdns := true From 1032eb86c572c9c0fa0042e1df000c1c13e9c09c Mon Sep 17 00:00:00 2001 From: Anish Mukherjee Date: Tue, 21 Mar 2023 17:38:59 +0530 Subject: [PATCH 3/4] rename to NETCLIENT_AUTO_UPDATE --- compose/docker-compose-emqx.yml | 2 +- compose/docker-compose.ee.yml | 2 +- compose/docker-compose.reference.yml | 2 +- compose/docker-compose.yml | 2 +- servercfg/serverconf.go | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/compose/docker-compose-emqx.yml b/compose/docker-compose-emqx.yml index fb70c61a..8d0e1165 100644 --- a/compose/docker-compose-emqx.yml +++ b/compose/docker-compose-emqx.yml @@ -19,7 +19,7 @@ services: COREDNS_ADDR: "SERVER_PUBLIC_IP" DNS_MODE: "on" SERVER_HTTP_HOST: "api.NETMAKER_BASE_DOMAIN" - AUTO_UPDATE: "enabled" + 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 9a33241a..fcf21813 100644 --- a/compose/docker-compose.ee.yml +++ b/compose/docker-compose.ee.yml @@ -19,7 +19,7 @@ services: COREDNS_ADDR: "SERVER_PUBLIC_IP" DNS_MODE: "on" SERVER_HTTP_HOST: "api.NETMAKER_BASE_DOMAIN" - AUTO_UPDATE: "enabled" + 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 c0b4e31c..b1f59a89 100644 --- a/compose/docker-compose.reference.yml +++ b/compose/docker-compose.reference.yml @@ -14,7 +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. - AUTO_UPDATE: "enabled" # Enable auto update of netclient ? ENUM:- enabled,disabled | default: enabled + 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 37313c23..738b11f4 100644 --- a/compose/docker-compose.yml +++ b/compose/docker-compose.yml @@ -17,7 +17,7 @@ services: COREDNS_ADDR: "SERVER_PUBLIC_IP" DNS_MODE: "on" SERVER_HTTP_HOST: "api.NETMAKER_BASE_DOMAIN" - AUTO_UPDATE: "enabled" + NETCLIENT_AUTO_UPDATE: "enabled" API_PORT: "8081" MASTER_KEY: "REPLACE_MASTER_KEY" CORS_ALLOWED_ORIGIN: "*" diff --git a/servercfg/serverconf.go b/servercfg/serverconf.go index 6473a480..ea68ca88 100644 --- a/servercfg/serverconf.go +++ b/servercfg/serverconf.go @@ -385,7 +385,7 @@ func GetVerbosity() int32 { // AutoUpdateEnabled returns a boolean indicating whether netclient auto update is enabled or disabled // default is enabled func AutoUpdateEnabled() bool { - return os.Getenv("AUTO_UPDATE") != "disabled" + return os.Getenv("NETCLIENT_AUTO_UPDATE") != "disabled" } // IsDNSMode - should it run with DNS From 96d7b67822174be24598c2f39a09b3cad264202c Mon Sep 17 00:00:00 2001 From: Anish Mukherjee Date: Tue, 21 Mar 2023 18:05:04 +0530 Subject: [PATCH 4/4] add auto update config to server yaml --- config/config.go | 1 + servercfg/serverconf.go | 12 +++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) 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/servercfg/serverconf.go b/servercfg/serverconf.go index ea68ca88..bd2d093c 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" } @@ -385,7 +390,12 @@ func GetVerbosity() int32 { // AutoUpdateEnabled returns a boolean indicating whether netclient auto update is enabled or disabled // default is enabled func AutoUpdateEnabled() bool { - return os.Getenv("NETCLIENT_AUTO_UPDATE") != "disabled" + 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