Selaa lähdekoodia

add clean up for static nodes

abhishek9686 4 viikkoa sitten
vanhempi
commit
9c6c06ae21
2 muutettua tiedostoa jossa 49 lisäystä ja 45 poistoa
  1. 1 45
      controllers/ext_client.go
  2. 48 0
      pro/controllers/users.go

+ 1 - 45
controllers/ext_client.go

@@ -47,8 +47,7 @@ func extClientHandlers(r *mux.Router) {
 	r.HandleFunc("/api/extclients/{network}/{nodeid}", logic.SecurityCheck(false, checkFreeTierLimits(limitChoiceMachines, http.HandlerFunc(createExtClient)))).
 		Methods(http.MethodPost)
 	r.HandleFunc("/api/v1/client_conf/{network}", logic.SecurityCheck(false, http.HandlerFunc(getExtClientHAConf))).Methods(http.MethodGet)
-	r.HandleFunc("/api/v1/extclients", logic.SecurityCheck(true, http.HandlerFunc(deleteOfflineExtClients))).
-		Methods(http.MethodDelete)
+
 }
 
 func checkIngressExists(nodeID string) bool {
@@ -1079,49 +1078,6 @@ func deleteExtClient(w http.ResponseWriter, r *http.Request) {
 	logic.ReturnSuccessResponse(w, r, params["clientid"]+" deleted.")
 }
 
-// @Summary     Delete an individual remote access client
-// @Router      /api/extclients/{network}/{clientid} [delete]
-// @Tags        Remote Access Client
-// @Security    oauth2
-// @Success     200
-// @Failure     500 {object} models.ErrorResponse
-// @Failure     403 {object} models.ErrorResponse
-func deleteOfflineExtClients(w http.ResponseWriter, r *http.Request) {
-	// Set header
-	network := r.URL.Query().Get("network")
-	if network == "" {
-		logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("network param is missing"), "badrequest"))
-		return
-	}
-	go func() {
-		defaultPolicy, _ := logic.GetDefaultPolicy(models.NetworkID(network), models.DevicePolicy)
-		extclients, _ := logic.GetNetworkExtClients(network)
-		sendPeerUpdate := false
-		for _, extclient := range extclients {
-			staticNode := extclient.ConvertToStaticNode()
-			logic.GetNodeStatus(&staticNode, defaultPolicy.Enabled)
-			if staticNode.Status == models.OfflineSt {
-				err := logic.DeleteExtClientAndCleanup(extclient)
-				if err != nil {
-					continue
-				}
-				sendPeerUpdate = true
-			}
-
-		}
-
-		if sendPeerUpdate {
-			mq.PublishPeerUpdate(true)
-			if servercfg.IsDNSMode() {
-				logic.SetDNS()
-			}
-		}
-
-	}()
-
-	logic.ReturnSuccessResponse(w, r, "intiated cleanup")
-}
-
 // validateCustomExtClient	Validates the extclient object
 func validateCustomExtClient(customExtClient *models.CustomExtClient, checkID bool) error {
 	v := validator.New()

+ 48 - 0
pro/controllers/users.go

@@ -65,6 +65,8 @@ func UserHandlers(r *mux.Router) {
 
 	r.HandleFunc("/api/idp/sync", logic.SecurityCheck(true, http.HandlerFunc(syncIDP))).Methods(http.MethodPost)
 	r.HandleFunc("/api/idp", logic.SecurityCheck(true, http.HandlerFunc(removeIDPIntegration))).Methods(http.MethodDelete)
+	r.HandleFunc("/api/v1/user/connections", logic.SecurityCheck(true, http.HandlerFunc(deleteOfflineUserConnections))).
+		Methods(http.MethodDelete)
 }
 
 // swagger:route POST /api/v1/users/invite-signup user userInviteSignUp
@@ -1679,3 +1681,49 @@ func removeIDPIntegration(w http.ResponseWriter, r *http.Request) {
 
 	logic.ReturnSuccessResponse(w, r, "removed idp integration successfully")
 }
+
+// @Summary     Delete offline user connections
+// @Router      /api/v1/user/connections [delete]
+// @Tags        Remote Access Client
+// @Security    oauth2
+// @Success     200
+// @Failure     500 {object} models.ErrorResponse
+// @Failure     403 {object} models.ErrorResponse
+func deleteOfflineUserConnections(w http.ResponseWriter, r *http.Request) {
+	// Set header
+	network := r.URL.Query().Get("network")
+	if network == "" {
+		logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("network param is missing"), "badrequest"))
+		return
+	}
+	go func() {
+		defaultPolicy, _ := logic.GetDefaultPolicy(models.NetworkID(network), models.DevicePolicy)
+		extclients, _ := logic.GetNetworkExtClients(network)
+		sendPeerUpdate := false
+		for _, extclient := range extclients {
+			staticNode := extclient.ConvertToStaticNode()
+			if !staticNode.IsUserNode {
+				continue
+			}
+			proLogic.GetNodeStatus(&staticNode, defaultPolicy.Enabled)
+			if staticNode.Status == models.OfflineSt {
+				err := logic.DeleteExtClientAndCleanup(extclient)
+				if err != nil {
+					continue
+				}
+				sendPeerUpdate = true
+			}
+
+		}
+
+		if sendPeerUpdate {
+			mq.PublishPeerUpdate(true)
+			if servercfg.IsDNSMode() {
+				logic.SetDNS()
+			}
+		}
+
+	}()
+
+	logic.ReturnSuccessResponse(w, r, "intiated cleanup")
+}