diff --git a/modules/database/database.go b/modules/database/database.go index 750ab7a..a79e6d4 100644 --- a/modules/database/database.go +++ b/modules/database/database.go @@ -39,7 +39,6 @@ func InitDatabase() { db.AutoMigrate(&structs.UserSession{}) db.AutoMigrate(&structs.GroupTasks{}) db.AutoMigrate(&structs.GroupTaskSteps{}) - db.AutoMigrate(&structs.Scanner{}) db.AutoMigrate(&structs.Role{}) db.AutoMigrate(&structs.RolePermission{}) db.AutoMigrate(&structs.UserApiKey{}) diff --git a/modules/structs/scanner.go b/modules/structs/scanner.go deleted file mode 100644 index c56db19..0000000 --- a/modules/structs/scanner.go +++ /dev/null @@ -1,26 +0,0 @@ -package structs - -import "time" - -type Scanner struct { - Id string // this id is used for ui - Session string // this session is used for api calls - Name string - UsedByUserId string - UserAgent string - LastUsed time.Time - RegisteredAt time.Time -} - -type ScannerRequest struct { - ScannerName string -} - -type ScannerResponse struct { - Id string - Session string -} - -type ScanResultRequest struct { - ScanResult string -} diff --git a/modules/utils/globals.go b/modules/utils/globals.go index 867cded..9f5d54c 100644 --- a/modules/utils/globals.go +++ b/modules/utils/globals.go @@ -33,9 +33,6 @@ const ( GroupTaskLockedTime = 3 SessionExpiresAtTime = 7 * 24 * 60 * 60 // 1 week - LogTypeInfo = 0 - LogTypeError = 1 - ConnectionStateOffline = 0 ConnectionStateOnline = 1 @@ -54,21 +51,17 @@ var ( // commands sent to web clients const ( - SentCmdInitUserSocketConnection = 1 - SentCmdUpdateConnectedUsers = 2 - SentCmdNewGroupTaskStarted = 3 - SentCmdNewGroupTaskStep = 4 - SentCmdUpdateGroupTaskStep = 5 - SentCmdUpdateGroupTask = 6 - SentCmdReloadingGroupTasks = 7 - SentCmdGroupTasksReloaded = 8 - SentCmdUpdateUserSessions = 9 - SentCmdUpdateAllUsersUserAvatar = 10 - SentCmdNewScanner = 11 - SentCmdDeleteScanner = 12 - SentCmdUpdateScannerUsedBy = 13 - SentCmdScanResult = 14 - SentCmdUpdateScannerLastUsed = 15 + SentCmdInitUserSocketConnection = 1 + SentCmdUpdateConnectedUsers = 2 + SentCmdNewGroupTaskStarted = 3 + SentCmdNewGroupTaskStep = 4 + SentCmdUpdateGroupTaskStep = 5 + SentCmdUpdateGroupTask = 6 + SentCmdReloadingGroupTasks = 7 + SentCmdGroupTasksReloaded = 8 + SentCmdUpdateUserSessions = 9 + SentCmdUpdateAllUsersUserAvatar = 10 + SentCmdTaskLocked = 16 SentCmdTaskUnlocked = 17 SentCmdUserProfileUpdated = 18 @@ -117,8 +110,7 @@ const ( ReceivedCmdAllUsersCreateNewUser = 12 ReceivedCmdAllUsersDeleteUser = 13 ReceivedCmdAllUsersUserDeactivation = 14 - ReceivedCmdScannersUseScanners = 15 - ReceivedCmdScannersDisconnectScanner = 16 + ReceivedCmdScannerNewScan = 15 ReceivedCmdHandleUserActionTaskStep = 18 ReceivedCmdCreateNewUserApiKey = 19 ReceivedCmdDeleteUserApiKey = 20 @@ -187,7 +179,6 @@ const ( PermissionAllUsersActionChangeRole = "all_users.action.change_role" PermissionAllUsersActionDeleteUser = "all_users.action.delete_user" PermissionAllUsersActionUserDeactivation = "all_users.action.user_deactivation" - PermissionScannerUseScanners = "scanner.use_scanners" _adminArea = "admin_area." _adminAreaRoles = _adminArea + "roles." @@ -226,7 +217,6 @@ var SystemPermissions = []string{ PermissionAllUsersActionDeleteUser, PermissionAllUsersActionUserDeactivation, PermissionAllUsersCreateNewUser, - PermissionScannerUseScanners, PermissionAdminAreaCreateNewRole, PermissionAdminAreaUpdateRole, PermissionAdminAreaDeleteRole, diff --git a/modules/utils/validator.go b/modules/utils/validator.go index 2c2926f..dcc584b 100644 --- a/modules/utils/validator.go +++ b/modules/utils/validator.go @@ -11,8 +11,7 @@ func ValidatorInit() { rsvalidator.Validate.RegisterStructValidationMapRules(generalRules, structs.UserLoginRequest{}, - structs.UserSignOutSessionRequest{}, - structs.ScannerRequest{}) + structs.UserSignOutSessionRequest{}) rsvalidator.Validate.RegisterStructValidationMapRules(groupTaskRules, structs.ApiGroupTaskRequest{}) diff --git a/routers/router/api/v1/jnxscanner/scanner.go b/routers/router/api/v1/jnxscanner/scanner.go deleted file mode 100644 index 19c4983..0000000 --- a/routers/router/api/v1/jnxscanner/scanner.go +++ /dev/null @@ -1,121 +0,0 @@ -package jxscanner - -import ( - "jannex/admin-dashboard-backend/modules/database" - "jannex/admin-dashboard-backend/modules/logger" - "jannex/admin-dashboard-backend/modules/structs" - "jannex/admin-dashboard-backend/modules/utils" - "jannex/admin-dashboard-backend/socketclients" - "time" - - "git.ex.umbach.dev/Alex/roese-utils/rslogger" - "git.ex.umbach.dev/Alex/roese-utils/rsutils" - "git.ex.umbach.dev/Alex/roese-utils/rsvalidator" - "github.com/gofiber/fiber/v2" - "github.com/rs/zerolog/log" - "github.com/savsgio/gotils/uuid" -) - -func AddScanner(c *fiber.Ctx) error { - var body structs.ScannerRequest - - if err := c.BodyParser(&body); err != nil { - log.Error().Msg("Failed to parse body, err: " + err.Error()) - return c.Status(fiber.StatusBadRequest).JSON(err) - } - - if err := rsvalidator.ValidateStruct(body); err != nil { - log.Error().Msgf("Failed to validate body, err: %v", err) - return c.SendStatus(fiber.StatusBadRequest) - } - - id := uuid.V4() - session, err := rsutils.GenerateSession() - - if err != nil { - return c.SendStatus(fiber.StatusInternalServerError) - } - - scanner := &structs.Scanner{ - Id: id, - Session: session, - Name: body.ScannerName, - UserAgent: string(c.Context().UserAgent()), - RegisteredAt: time.Now(), - } - - database.DB.Create(scanner) - - // clear session to prevent leaking and sending to ui - scanner.Session = "" - - socketclients.BroadcastMessage(structs.SendSocketMessage{ - Cmd: utils.SentCmdNewScanner, - Body: scanner, - }) - - logger.AddSystemLog(rslogger.LogTypeInfo, "Scanner %s %s was registered", scanner.Id, scanner.Name) - - return c.JSON(structs.ScannerResponse{Id: id, Session: session}) -} - -func ScanResult(c *fiber.Ctx) error { - var body structs.ScanResultRequest - - if err := c.BodyParser(&body); err != nil { - log.Error().Msg("Failed to parse body, err: " + err.Error()) - return c.Status(fiber.StatusBadRequest).JSON(err) - } - - if body.ScanResult == "" { - return c.SendStatus(fiber.StatusBadRequest) - } - - scannerId := c.Locals("scannerId").(string) - lastUsed := time.Now() - - database.DB.Model(&structs.Scanner{}).Where("id = ?", scannerId).Updates(&structs.Scanner{LastUsed: lastUsed}) - - 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, - }) - - logger.AddSystemLog(rslogger.LogTypeInfo, "Scanner %s has scanned %s", scannerId, body.ScanResult) - - return c.SendStatus(fiber.StatusOK) -} - -func DeleteScanner(c *fiber.Ctx) error { - session := utils.GetXAuhorizationHeader(c) - - var scanner structs.Scanner - - database.DB.First(&scanner, "session = ?", session) - - database.DB.Delete(&structs.Scanner{}, "session = ?", session) - - socketclients.BroadcastMessage(structs.SendSocketMessage{ - Cmd: utils.SentCmdDeleteScanner, - Body: struct { - Id string - }{ - Id: scanner.Id, - }, - }) - - logger.AddSystemLog(rslogger.LogTypeInfo, "Scanner %s was deleted", scanner.Id) - - return c.SendStatus(fiber.StatusOK) -} diff --git a/socketclients/socketclients.go b/socketclients/socketclients.go index de74ae4..d331d1a 100644 --- a/socketclients/socketclients.go +++ b/socketclients/socketclients.go @@ -286,22 +286,6 @@ func GetAllUsers() []structs.AllUsers { return allUsers } -func GetAllScanners() []structs.Scanner { - var scanners []structs.Scanner - var allScanners []structs.Scanner - - database.DB.Find(&scanners) - - for _, scanner := range scanners { - // clear session to prevent leaking and sending to ui - scanner.Session = "" - - allScanners = append(allScanners, scanner) - } - - return allScanners -} - func isUsernameAvailable(username string) bool { var user structs.User database.DB.Select("username").Where("username = ?", username).Find(&user) @@ -911,16 +895,6 @@ func AllUsersDeleteUser(conn *websocket.Conn, userId string) { database.DB.Where("id = ?", userId).Delete(&structs.User{}) database.DB.Where("user_id = ?", userId).Delete(&structs.UserSession{}) - var scannerInUsage structs.Scanner - - database.DB.Select("id").Where("used_by_user_id = ?", userId).Find(&scannerInUsage) - - if scannerInUsage.Id != "" { - database.DB.Model(&structs.Scanner{}).Where("id = ?", scannerInUsage.Id).Updates(structs.Scanner{ - UsedByUserId: "", - }) - } - CloseAndDeleteAllUserConnections(userId) BroadcastMessageToTopics( @@ -928,11 +902,9 @@ func AllUsersDeleteUser(conn *websocket.Conn, userId string) { structs.SendSocketMessage{ Cmd: utils.SentCmdAllUsersUserDeleted, Body: struct { - UserId string - ScannerId string + UserId string }{ - UserId: userId, - ScannerId: scannerInUsage.Id, + UserId: userId, }, }) @@ -964,6 +936,7 @@ func AllUsersUserDeactivation(conn *websocket.Conn, userId string, deactivate bo conn.Locals("userId").(string), userId, strconv.FormatBool(deactivate)) } +/* func ScannersUpdateScannerUsedByUserId(userId string, scannerId string) { database.DB.Model(&structs.Scanner{}).Where("id = ?", scannerId).Updates(structs.Scanner{UsedByUserId: userId}) @@ -983,7 +956,7 @@ func ScannersUpdateScannerUsedByUserId(userId string, scannerId string) { } else { logger.AddSystemLog(rslogger.LogTypeInfo, "Scanner %s is not longer used", scannerId) } -} +}*/ func GetUserApiKeys(userId string) []structs.UserApiKey { var apiKeys []structs.UserApiKey diff --git a/socketserver/hub.go b/socketserver/hub.go index d19e3c9..aa3dc96 100644 --- a/socketserver/hub.go +++ b/socketserver/hub.go @@ -269,21 +269,8 @@ func RunHub() { socketclients.AllUsersUserDeactivation(data.Conn, receivedMessage.Body["UserId"].(string), receivedMessage.Body["Deactivation"].(bool)) break - case utils.ReceivedCmdScannersUseScanners: - if !socketclients.HasPermission(data.Conn.Locals("userId").(string), utils.PermissionScannerUseScanners) { - socketclients.SendErrorMessageNoPermissions(data.Conn.Locals("sessionId").(string)) - break - } - - socketclients.ScannersUpdateScannerUsedByUserId(data.Conn.Locals("userId").(string), receivedMessage.Body["ScannerId"].(string)) - break - case utils.ReceivedCmdScannersDisconnectScanner: - if !socketclients.HasPermission(data.Conn.Locals("userId").(string), utils.PermissionScannerUseScanners) { - socketclients.SendErrorMessageNoPermissions(data.Conn.Locals("sessionId").(string)) - break - } - - socketclients.ScannersUpdateScannerUsedByUserId("", receivedMessage.Body["ScannerId"].(string)) + case utils.ReceivedCmdScannerNewScan: + log.Info().Msgf("Received new scan: %v", receivedMessage.Body) break case utils.ReceivedCmdHandleUserActionTaskStep: if !socketclients.HasXYPermission(data.Conn.Locals("userId").(string), utils.PermissionGroupTasksOverviewXYReloadGroupConfig, receivedMessage.Body["category"].(string)) {