From 003c9d3eb3aecd97c6f7060eb179dd5f3d7c59cc Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 26 May 2023 09:00:05 +0200 Subject: [PATCH] task locking --- modules/structs/grouptasks.go | 1 + modules/utils/globals.go | 2 ++ socketclients/socketclients.go | 8 ++++++++ socketserver/hub.go | 8 ++++++++ 4 files changed, 19 insertions(+) diff --git a/modules/structs/grouptasks.go b/modules/structs/grouptasks.go index c798337..d765ced 100644 --- a/modules/structs/grouptasks.go +++ b/modules/structs/grouptasks.go @@ -40,6 +40,7 @@ type GroupTaskSteps struct { Inputs string `gorm:"type:json"` StartedAt time.Time EndedAt time.Time + Locked bool `gorm:"-"` // used by the web client to ensure that only one user can edit the input value } // read from file structure diff --git a/modules/utils/globals.go b/modules/utils/globals.go index fa54b25..11d2ab0 100644 --- a/modules/utils/globals.go +++ b/modules/utils/globals.go @@ -36,6 +36,7 @@ const ( SentCmdUpdateScannerUsedBy = 13 SentCmdScanResult = 14 SentCmdUpdateScannerLastUsed = 15 + SentCmdTaskLocked = 16 ) // commands received from web clients @@ -44,6 +45,7 @@ const ( ReceivedCmdTaskFailedTryAgainRunTaskStep = 2 ReceivedCmdTaskContinueTaskStep = 3 ReceivedCmdReloadGroupTasks = 4 + ReceivedCmdTaskLocking = 5 ) var ( diff --git a/socketclients/socketclients.go b/socketclients/socketclients.go index e76a4db..b7458a9 100644 --- a/socketclients/socketclients.go +++ b/socketclients/socketclients.go @@ -13,6 +13,14 @@ func BroadcastMessage(sendSocketMessage structs.SendSocketMessage) { } } +func BroadcastMessageExceptUserSessionId(ignoreUserSessionId string, sendSocketMessage structs.SendSocketMessage) { + for _, client := range cache.GetSocketClients() { + if client.SessionId != ignoreUserSessionId { + client.SendMessage(sendSocketMessage) + } + } +} + func UpdateConnectedUsers(userId string) { BroadcastMessage(structs.SendSocketMessage{ Cmd: utils.SentCmdUpdateConnectedUsers, diff --git a/socketserver/hub.go b/socketserver/hub.go index e19afc7..8f0b1cc 100644 --- a/socketserver/hub.go +++ b/socketserver/hub.go @@ -154,6 +154,14 @@ func RunHub() { grouptasks.LoadGroups(category) break + case utils.ReceivedCmdTaskLocking: + log.Info().Msgf("task locking %s", receivedMessage.Body) + + socketclients.BroadcastMessageExceptUserSessionId(data.Conn.Locals("sessionId").(string), structs.SendSocketMessage{ + Cmd: utils.SentCmdTaskLocked, + Body: receivedMessage.Body, + }) + break default: log.Error().Msgf("Received unknown message: %s", receivedMessage)