task locking

main
alex 2023-05-26 09:00:05 +02:00
parent 0118a0cbca
commit 003c9d3eb3
4 changed files with 19 additions and 0 deletions

View File

@ -40,6 +40,7 @@ type GroupTaskSteps struct {
Inputs string `gorm:"type:json"` Inputs string `gorm:"type:json"`
StartedAt time.Time StartedAt time.Time
EndedAt 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 // read from file structure

View File

@ -36,6 +36,7 @@ const (
SentCmdUpdateScannerUsedBy = 13 SentCmdUpdateScannerUsedBy = 13
SentCmdScanResult = 14 SentCmdScanResult = 14
SentCmdUpdateScannerLastUsed = 15 SentCmdUpdateScannerLastUsed = 15
SentCmdTaskLocked = 16
) )
// commands received from web clients // commands received from web clients
@ -44,6 +45,7 @@ const (
ReceivedCmdTaskFailedTryAgainRunTaskStep = 2 ReceivedCmdTaskFailedTryAgainRunTaskStep = 2
ReceivedCmdTaskContinueTaskStep = 3 ReceivedCmdTaskContinueTaskStep = 3
ReceivedCmdReloadGroupTasks = 4 ReceivedCmdReloadGroupTasks = 4
ReceivedCmdTaskLocking = 5
) )
var ( var (

View File

@ -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) { func UpdateConnectedUsers(userId string) {
BroadcastMessage(structs.SendSocketMessage{ BroadcastMessage(structs.SendSocketMessage{
Cmd: utils.SentCmdUpdateConnectedUsers, Cmd: utils.SentCmdUpdateConnectedUsers,

View File

@ -154,6 +154,14 @@ func RunHub() {
grouptasks.LoadGroups(category) grouptasks.LoadGroups(category)
break 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: default:
log.Error().Msgf("Received unknown message: %s", receivedMessage) log.Error().Msgf("Received unknown message: %s", receivedMessage)