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"`
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

View File

@ -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 (

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

View File

@ -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)