Implemented listener management (start, stop, list) and database integration.
This commit is contained in:
88
server/types.nim
Normal file
88
server/types.nim
Normal file
@@ -0,0 +1,88 @@
|
||||
import prompt
|
||||
import prologue
|
||||
|
||||
#[
|
||||
Console
|
||||
]#
|
||||
type
|
||||
Console* = ref object
|
||||
prompt*: Prompt
|
||||
listeners*: int
|
||||
agents*: int
|
||||
dbPath*: string
|
||||
activeListeners*: seq[Prologue]
|
||||
|
||||
Command* = object
|
||||
cmd*: string
|
||||
execute*: proc(console: Console, args: varargs[string])
|
||||
|
||||
proc newConsole*(): Console =
|
||||
var console = new Console
|
||||
var prompt = Prompt.init()
|
||||
console.prompt = prompt
|
||||
console.dbPath = "db/conquest.db"
|
||||
console.listeners = 0
|
||||
console.agents = 0
|
||||
console.activeListeners = @[]
|
||||
|
||||
return console
|
||||
|
||||
template writeLine*(console: Console, args: varargs[untyped]) =
|
||||
console.prompt.writeLine(args)
|
||||
proc readLine*(console: Console): string =
|
||||
return console.prompt.readLine()
|
||||
template setIndicator*(console: Console, indicator: string) =
|
||||
console.prompt.setIndicator(indicator)
|
||||
template showPrompt*(console: Console) =
|
||||
console.prompt.showPrompt()
|
||||
template hidePrompt*(console: Console) =
|
||||
console.prompt.hidePrompt()
|
||||
template setStatusBar*(console: Console, statusBar: seq[StatusBarItem]) =
|
||||
console.prompt.setStatusBar(statusBar)
|
||||
template clear*(console: Console) =
|
||||
console.prompt.clear()
|
||||
|
||||
# Overwrite withOutput function to handle function arguments
|
||||
proc withOutput*(console: Console, outputFunction: proc(console: Console, args: varargs[string]), args: varargs[string]) =
|
||||
console.hidePrompt()
|
||||
outputFunction(console, args)
|
||||
console.showPrompt()
|
||||
|
||||
#[
|
||||
Agent
|
||||
]#
|
||||
type
|
||||
Agent* = ref object
|
||||
name*: string
|
||||
|
||||
#[
|
||||
Listener
|
||||
]#
|
||||
type
|
||||
Protocol* = enum
|
||||
HTTP = "http"
|
||||
|
||||
Listener* = ref object
|
||||
name*: string
|
||||
address*: string
|
||||
port*: int
|
||||
protocol*: Protocol
|
||||
sleep*: int
|
||||
jitter*: float
|
||||
|
||||
proc newListener*(name: string, address: string, port: int): Listener =
|
||||
var listener = new Listener
|
||||
listener.name = name
|
||||
listener.address = address
|
||||
listener.port = port
|
||||
listener.protocol = HTTP
|
||||
listener.sleep = 5 # 5 seconds beaconing
|
||||
listener.jitter = 0.2 # 20% Jitter
|
||||
|
||||
return listener
|
||||
|
||||
proc stringToProtocol*(protocol: string): Protocol =
|
||||
case protocol
|
||||
of "http":
|
||||
return HTTP
|
||||
else: discard
|
||||
Reference in New Issue
Block a user