From 307218d001b15e78a8efcc7b136765365480bb0e Mon Sep 17 00:00:00 2001 From: Henry Dollman Date: Wed, 10 Jul 2024 14:26:35 -0400 Subject: [PATCH] fix realtime active / inactive states --- main.go | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/main.go b/main.go index c48ecd9..7c44f8a 100644 --- a/main.go +++ b/main.go @@ -167,9 +167,7 @@ func updateServer(record *models.Record) { client, err := getServerConnection(&server) if err != nil { app.Logger().Error("Failed to connect:", "err", err.Error(), "server", server.Ip, "port", server.Port) - // todo update record to not connected - record.Set("active", false) - delete(serverConnections, record.Id) + setInactive(record) return } server.Client = client @@ -179,11 +177,7 @@ func updateServer(record *models.Record) { systemData, err := requestJson(&server) if err != nil { app.Logger().Error("Failed to get server stats: ", "err", err.Error()) - record.Set("active", false) - if server.Client != nil { - server.Client.Close() - } - delete(serverConnections, record.Id) + setInactive(record) return } // update system record @@ -212,6 +206,22 @@ func updateServer(record *models.Record) { } } +// set server to inactive and close connection +func setInactive(record *models.Record) { + // if in map, close connection and remove from map + if _, ok := serverConnections[record.Id]; ok { + if serverConnections[record.Id].Client != nil { + serverConnections[record.Id].Client.Close() + } + delete(serverConnections, record.Id) + } + // set inactive + record.Set("active", false) + if err := app.Dao().SaveRecord(record); err != nil { + app.Logger().Error("Failed to update record: ", "err", err.Error()) + } +} + func getServerConnection(server *Server) (*ssh.Client, error) { // app.Logger().Debug("new ssh connection", "server", server.Ip) key, err := getSSHKey()