removed scanner

main
alex 2023-10-21 21:12:07 +02:00
parent b92b030dbc
commit e81bdc2ba9
7 changed files with 19 additions and 218 deletions

View File

@ -39,7 +39,6 @@ func InitDatabase() {
db.AutoMigrate(&structs.UserSession{}) db.AutoMigrate(&structs.UserSession{})
db.AutoMigrate(&structs.GroupTasks{}) db.AutoMigrate(&structs.GroupTasks{})
db.AutoMigrate(&structs.GroupTaskSteps{}) db.AutoMigrate(&structs.GroupTaskSteps{})
db.AutoMigrate(&structs.Scanner{})
db.AutoMigrate(&structs.Role{}) db.AutoMigrate(&structs.Role{})
db.AutoMigrate(&structs.RolePermission{}) db.AutoMigrate(&structs.RolePermission{})
db.AutoMigrate(&structs.UserApiKey{}) db.AutoMigrate(&structs.UserApiKey{})

View File

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

View File

@ -33,9 +33,6 @@ const (
GroupTaskLockedTime = 3 GroupTaskLockedTime = 3
SessionExpiresAtTime = 7 * 24 * 60 * 60 // 1 week SessionExpiresAtTime = 7 * 24 * 60 * 60 // 1 week
LogTypeInfo = 0
LogTypeError = 1
ConnectionStateOffline = 0 ConnectionStateOffline = 0
ConnectionStateOnline = 1 ConnectionStateOnline = 1
@ -54,21 +51,17 @@ var (
// commands sent to web clients // commands sent to web clients
const ( const (
SentCmdInitUserSocketConnection = 1 SentCmdInitUserSocketConnection = 1
SentCmdUpdateConnectedUsers = 2 SentCmdUpdateConnectedUsers = 2
SentCmdNewGroupTaskStarted = 3 SentCmdNewGroupTaskStarted = 3
SentCmdNewGroupTaskStep = 4 SentCmdNewGroupTaskStep = 4
SentCmdUpdateGroupTaskStep = 5 SentCmdUpdateGroupTaskStep = 5
SentCmdUpdateGroupTask = 6 SentCmdUpdateGroupTask = 6
SentCmdReloadingGroupTasks = 7 SentCmdReloadingGroupTasks = 7
SentCmdGroupTasksReloaded = 8 SentCmdGroupTasksReloaded = 8
SentCmdUpdateUserSessions = 9 SentCmdUpdateUserSessions = 9
SentCmdUpdateAllUsersUserAvatar = 10 SentCmdUpdateAllUsersUserAvatar = 10
SentCmdNewScanner = 11
SentCmdDeleteScanner = 12
SentCmdUpdateScannerUsedBy = 13
SentCmdScanResult = 14
SentCmdUpdateScannerLastUsed = 15
SentCmdTaskLocked = 16 SentCmdTaskLocked = 16
SentCmdTaskUnlocked = 17 SentCmdTaskUnlocked = 17
SentCmdUserProfileUpdated = 18 SentCmdUserProfileUpdated = 18
@ -117,8 +110,7 @@ const (
ReceivedCmdAllUsersCreateNewUser = 12 ReceivedCmdAllUsersCreateNewUser = 12
ReceivedCmdAllUsersDeleteUser = 13 ReceivedCmdAllUsersDeleteUser = 13
ReceivedCmdAllUsersUserDeactivation = 14 ReceivedCmdAllUsersUserDeactivation = 14
ReceivedCmdScannersUseScanners = 15 ReceivedCmdScannerNewScan = 15
ReceivedCmdScannersDisconnectScanner = 16
ReceivedCmdHandleUserActionTaskStep = 18 ReceivedCmdHandleUserActionTaskStep = 18
ReceivedCmdCreateNewUserApiKey = 19 ReceivedCmdCreateNewUserApiKey = 19
ReceivedCmdDeleteUserApiKey = 20 ReceivedCmdDeleteUserApiKey = 20
@ -187,7 +179,6 @@ const (
PermissionAllUsersActionChangeRole = "all_users.action.change_role" PermissionAllUsersActionChangeRole = "all_users.action.change_role"
PermissionAllUsersActionDeleteUser = "all_users.action.delete_user" PermissionAllUsersActionDeleteUser = "all_users.action.delete_user"
PermissionAllUsersActionUserDeactivation = "all_users.action.user_deactivation" PermissionAllUsersActionUserDeactivation = "all_users.action.user_deactivation"
PermissionScannerUseScanners = "scanner.use_scanners"
_adminArea = "admin_area." _adminArea = "admin_area."
_adminAreaRoles = _adminArea + "roles." _adminAreaRoles = _adminArea + "roles."
@ -226,7 +217,6 @@ var SystemPermissions = []string{
PermissionAllUsersActionDeleteUser, PermissionAllUsersActionDeleteUser,
PermissionAllUsersActionUserDeactivation, PermissionAllUsersActionUserDeactivation,
PermissionAllUsersCreateNewUser, PermissionAllUsersCreateNewUser,
PermissionScannerUseScanners,
PermissionAdminAreaCreateNewRole, PermissionAdminAreaCreateNewRole,
PermissionAdminAreaUpdateRole, PermissionAdminAreaUpdateRole,
PermissionAdminAreaDeleteRole, PermissionAdminAreaDeleteRole,

View File

@ -11,8 +11,7 @@ func ValidatorInit() {
rsvalidator.Validate.RegisterStructValidationMapRules(generalRules, rsvalidator.Validate.RegisterStructValidationMapRules(generalRules,
structs.UserLoginRequest{}, structs.UserLoginRequest{},
structs.UserSignOutSessionRequest{}, structs.UserSignOutSessionRequest{})
structs.ScannerRequest{})
rsvalidator.Validate.RegisterStructValidationMapRules(groupTaskRules, rsvalidator.Validate.RegisterStructValidationMapRules(groupTaskRules,
structs.ApiGroupTaskRequest{}) structs.ApiGroupTaskRequest{})

View File

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

View File

@ -286,22 +286,6 @@ func GetAllUsers() []structs.AllUsers {
return 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 { func isUsernameAvailable(username string) bool {
var user structs.User var user structs.User
database.DB.Select("username").Where("username = ?", username).Find(&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("id = ?", userId).Delete(&structs.User{})
database.DB.Where("user_id = ?", userId).Delete(&structs.UserSession{}) 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) CloseAndDeleteAllUserConnections(userId)
BroadcastMessageToTopics( BroadcastMessageToTopics(
@ -928,11 +902,9 @@ func AllUsersDeleteUser(conn *websocket.Conn, userId string) {
structs.SendSocketMessage{ structs.SendSocketMessage{
Cmd: utils.SentCmdAllUsersUserDeleted, Cmd: utils.SentCmdAllUsersUserDeleted,
Body: struct { Body: struct {
UserId string UserId string
ScannerId string
}{ }{
UserId: userId, UserId: userId,
ScannerId: scannerInUsage.Id,
}, },
}) })
@ -964,6 +936,7 @@ func AllUsersUserDeactivation(conn *websocket.Conn, userId string, deactivate bo
conn.Locals("userId").(string), userId, strconv.FormatBool(deactivate)) conn.Locals("userId").(string), userId, strconv.FormatBool(deactivate))
} }
/*
func ScannersUpdateScannerUsedByUserId(userId string, scannerId string) { func ScannersUpdateScannerUsedByUserId(userId string, scannerId string) {
database.DB.Model(&structs.Scanner{}).Where("id = ?", scannerId).Updates(structs.Scanner{UsedByUserId: userId}) database.DB.Model(&structs.Scanner{}).Where("id = ?", scannerId).Updates(structs.Scanner{UsedByUserId: userId})
@ -983,7 +956,7 @@ func ScannersUpdateScannerUsedByUserId(userId string, scannerId string) {
} else { } else {
logger.AddSystemLog(rslogger.LogTypeInfo, "Scanner %s is not longer used", scannerId) logger.AddSystemLog(rslogger.LogTypeInfo, "Scanner %s is not longer used", scannerId)
} }
} }*/
func GetUserApiKeys(userId string) []structs.UserApiKey { func GetUserApiKeys(userId string) []structs.UserApiKey {
var apiKeys []structs.UserApiKey var apiKeys []structs.UserApiKey

View File

@ -269,21 +269,8 @@ func RunHub() {
socketclients.AllUsersUserDeactivation(data.Conn, receivedMessage.Body["UserId"].(string), receivedMessage.Body["Deactivation"].(bool)) socketclients.AllUsersUserDeactivation(data.Conn, receivedMessage.Body["UserId"].(string), receivedMessage.Body["Deactivation"].(bool))
break break
case utils.ReceivedCmdScannersUseScanners: case utils.ReceivedCmdScannerNewScan:
if !socketclients.HasPermission(data.Conn.Locals("userId").(string), utils.PermissionScannerUseScanners) { log.Info().Msgf("Received new scan: %v", receivedMessage.Body)
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))
break break
case utils.ReceivedCmdHandleUserActionTaskStep: case utils.ReceivedCmdHandleUserActionTaskStep:
if !socketclients.HasXYPermission(data.Conn.Locals("userId").(string), utils.PermissionGroupTasksOverviewXYReloadGroupConfig, receivedMessage.Body["category"].(string)) { if !socketclients.HasXYPermission(data.Conn.Locals("userId").(string), utils.PermissionGroupTasksOverviewXYReloadGroupConfig, receivedMessage.Body["category"].(string)) {