removed scanner
parent
b92b030dbc
commit
e81bdc2ba9
|
@ -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{})
|
||||||
|
|
|
@ -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
|
|
||||||
}
|
|
|
@ -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
|
||||||
|
|
||||||
|
@ -64,11 +61,7 @@ const (
|
||||||
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,
|
||||||
|
|
|
@ -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{})
|
||||||
|
|
|
@ -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)
|
|
||||||
}
|
|
|
@ -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(
|
||||||
|
@ -929,10 +903,8 @@ func AllUsersDeleteUser(conn *websocket.Conn, userId string) {
|
||||||
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
|
||||||
|
|
|
@ -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)) {
|
||||||
|
|
Loading…
Reference in New Issue