Browse Source

notify peers after settings update

abhishek9686 4 tháng trước cách đây
mục cha
commit
e8b21bcde4
3 tập tin đã thay đổi với 26 bổ sung26 xóa
  1. 23 2
      controllers/server.go
  2. 2 23
      logic/settings.go
  3. 1 1
      migrate/migrate.go

+ 23 - 2
controllers/server.go

@@ -265,11 +265,32 @@ func updateSettings(w http.ResponseWriter, r *http.Request) {
 		logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("invalid settings"), "badrequest"))
 		return
 	}
-	err := logic.UpsertServerSettings(req, force == "true")
+	err := logic.UpsertServerSettings(req)
 	if err != nil {
 		logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("failed to udpate server settings "+err.Error()), "internal"))
 		return
 	}
-	go mq.PublishPeerUpdate(false)
+	go reInit(logic.GetServerSettings(), req, force == "true")
 	logic.ReturnSuccessResponseWithJson(w, r, req, "updated server settings successfully")
 }
+
+func reInit(curr, new models.ServerSettings, force bool) {
+	logic.SettingsMutex.Lock()
+	defer logic.SettingsMutex.Unlock()
+	logic.InitializeAuthProvider()
+	logic.EmailInit()
+	logic.SetVerbosity(int(logic.GetServerSettings().Verbosity))
+	// check if auto update is changed
+	if force {
+		if curr.NetclientAutoUpdate != new.NetclientAutoUpdate {
+			// update all hosts
+			hosts, _ := logic.GetAllHosts()
+			for _, host := range hosts {
+				host.AutoUpdate = new.NetclientAutoUpdate
+				logic.UpsertHost(&host)
+			}
+		}
+	}
+	go mq.PublishPeerUpdate(false)
+
+}

+ 2 - 23
logic/settings.go

@@ -16,7 +16,7 @@ import (
 )
 
 var serverSettingsDBKey = "server_cfg"
-var settingsMutex = &sync.RWMutex{}
+var SettingsMutex = &sync.RWMutex{}
 
 func GetServerSettings() (s models.ServerSettings) {
 	data, err := database.FetchRecord(database.SERVER_SETTINGS, serverSettingsDBKey)
@@ -27,7 +27,7 @@ func GetServerSettings() (s models.ServerSettings) {
 	return
 }
 
-func UpsertServerSettings(s models.ServerSettings, force bool) error {
+func UpsertServerSettings(s models.ServerSettings) error {
 	// get curr settings
 	currSettings := GetServerSettings()
 	if s.ClientSecret == Mask() {
@@ -41,7 +41,6 @@ func UpsertServerSettings(s models.ServerSettings, force bool) error {
 	if err != nil {
 		return err
 	}
-	go reInit(currSettings, s, force)
 	return nil
 }
 
@@ -50,26 +49,6 @@ func ValidateNewSettings(req models.ServerSettings) bool {
 	return true
 }
 
-func reInit(curr, new models.ServerSettings, force bool) {
-	settingsMutex.Lock()
-	defer settingsMutex.Unlock()
-	InitializeAuthProvider()
-	EmailInit()
-	SetVerbosity(int(GetServerSettings().Verbosity))
-	// check if auto update is changed
-	if force {
-		if curr.NetclientAutoUpdate != new.NetclientAutoUpdate {
-			// update all hosts
-			hosts, _ := GetAllHosts()
-			for _, host := range hosts {
-				host.AutoUpdate = new.NetclientAutoUpdate
-				UpsertHost(&host)
-			}
-		}
-	}
-
-}
-
 func GetServerSettingsFromEnv() (s models.ServerSettings) {
 
 	s = models.ServerSettings{

+ 1 - 1
migrate/migrate.go

@@ -503,6 +503,6 @@ func migrateToGws() {
 func settings() {
 	_, err := database.FetchRecords(database.SERVER_SETTINGS)
 	if database.IsEmptyRecord(err) {
-		logic.UpsertServerSettings(logic.GetServerSettingsFromEnv(), false)
+		logic.UpsertServerSettings(logic.GetServerSettingsFromEnv())
 	}
 }