fix realtime active / inactive states

This commit is contained in:
Henry Dollman
2024-07-10 14:26:35 -04:00
parent 476835b934
commit 307218d001

26
main.go
View File

@@ -167,9 +167,7 @@ func updateServer(record *models.Record) {
client, err := getServerConnection(&server) client, err := getServerConnection(&server)
if err != nil { if err != nil {
app.Logger().Error("Failed to connect:", "err", err.Error(), "server", server.Ip, "port", server.Port) app.Logger().Error("Failed to connect:", "err", err.Error(), "server", server.Ip, "port", server.Port)
// todo update record to not connected setInactive(record)
record.Set("active", false)
delete(serverConnections, record.Id)
return return
} }
server.Client = client server.Client = client
@@ -179,11 +177,7 @@ func updateServer(record *models.Record) {
systemData, err := requestJson(&server) systemData, err := requestJson(&server)
if err != nil { if err != nil {
app.Logger().Error("Failed to get server stats: ", "err", err.Error()) app.Logger().Error("Failed to get server stats: ", "err", err.Error())
record.Set("active", false) setInactive(record)
if server.Client != nil {
server.Client.Close()
}
delete(serverConnections, record.Id)
return return
} }
// update system record // 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) { func getServerConnection(server *Server) (*ssh.Client, error) {
// app.Logger().Debug("new ssh connection", "server", server.Ip) // app.Logger().Debug("new ssh connection", "server", server.Ip)
key, err := getSSHKey() key, err := getSSHKey()