diff --git a/modules/utils/globals.go b/modules/utils/globals.go index 6893166..fa54b25 100644 --- a/modules/utils/globals.go +++ b/modules/utils/globals.go @@ -34,6 +34,8 @@ const ( SentCmdNewScanner = 11 SentCmdDeleteScanner = 12 SentCmdUpdateScannerUsedBy = 13 + SentCmdScanResult = 14 + SentCmdUpdateScannerLastUsed = 15 ) // commands received from web clients diff --git a/routers/router/api/v1/jxscanner/scanner.go b/routers/router/api/v1/jxscanner/scanner.go index 7c647d5..cec7d8b 100644 --- a/routers/router/api/v1/jxscanner/scanner.go +++ b/routers/router/api/v1/jxscanner/scanner.go @@ -1,7 +1,6 @@ package jxscanner import ( - "encoding/base64" "janex/admin-dashboard-backend/modules/database" "janex/admin-dashboard-backend/modules/structs" "janex/admin-dashboard-backend/modules/utils" @@ -68,14 +67,26 @@ func ScanResult(c *fiber.Ctx) error { return c.SendStatus(fiber.StatusBadRequest) } - decodedScanResult, err := base64.StdEncoding.DecodeString(body.ScanResult) + scannerId := c.Locals("scannerId").(string) + lastUsed := time.Now() - if err != nil { - log.Error().Msg("Failed to decode scan result, err: " + err.Error()) - return c.Status(fiber.StatusBadRequest).JSON(err.Error()) - } + database.DB.Model(&structs.Scanner{}).Where("id = ?", scannerId).Updates(&structs.Scanner{LastUsed: lastUsed}) - log.Debug().Msgf("scanning result %v", string(decodedScanResult)) + socketclients.BroadcastMessage(structs.SendSocketMessage{ + Cmd: utils.SentCmdUpdateScannerLastUsed, + Body: struct { + ScannerId string + LastUsed time.Time + }{ + ScannerId: scannerId, + LastUsed: lastUsed, + }, + }) + + socketclients.SendMessageToUser(c.Locals("usedByUserId").(string), "", structs.SendSocketMessage{ + Cmd: utils.SentCmdScanResult, + Body: body.ScanResult, + }) return c.SendStatus(fiber.StatusOK) } diff --git a/routers/router/router.go b/routers/router/router.go index 04d5568..f9699d3 100644 --- a/routers/router/router.go +++ b/routers/router/router.go @@ -63,5 +63,8 @@ func scannerSessionValidation(c *fiber.Ctx) error { return fiber.ErrUnauthorized } + c.Locals("scannerId", scanner.Id) + c.Locals("usedByUserId", scanner.UsedByUserId) + return c.Next() }