48 lines
1.3 KiB
Nim
48 lines
1.3 KiB
Nim
import tables, strformat
|
|
import ../common/types
|
|
|
|
# Import modules
|
|
import
|
|
shell,
|
|
sleep,
|
|
filesystem,
|
|
filetransfer,
|
|
environment,
|
|
bof,
|
|
dotnet,
|
|
screenshot
|
|
|
|
type
|
|
ModuleManager* = object
|
|
commandsByType*: Table[CommandType, Command]
|
|
commandsByName*: Table[string, Command]
|
|
|
|
var manager: ModuleManager
|
|
|
|
proc registerCommands(commands: seq[Command]) {.discardable.} =
|
|
for cmd in commands:
|
|
manager.commandsByType[cmd.commandType] = cmd
|
|
manager.commandsByName[cmd.name] = cmd
|
|
|
|
proc loadModules*() =
|
|
# Register all imported commands
|
|
registerCommands(shell.commands)
|
|
registerCommands(sleep.commands)
|
|
registerCommands(filesystem.commands)
|
|
registerCommands(filetransfer.commands)
|
|
registerCommands(environment.commands)
|
|
registerCommands(bof.commands)
|
|
registerCommands(dotnet.commands)
|
|
registerCommands(screenshot.commands)
|
|
|
|
proc getCommandByType*(cmdType: CommandType): Command =
|
|
return manager.commandsByType[cmdType]
|
|
|
|
proc getCommandByName*(cmdName: string): Command =
|
|
try:
|
|
return manager.commandsByName[cmdName]
|
|
except ValueError:
|
|
raise newException(ValueError, fmt"The command '{cmdName}' does not exist.")
|
|
|
|
proc getAvailableCommands*(): Table[string, Command] =
|
|
return manager.commandsByName |