diff --git a/src/server/core/agentApi.nim b/src/server/api/handlers.nim similarity index 100% rename from src/server/core/agentApi.nim rename to src/server/api/handlers.nim diff --git a/src/server/core/endpoints.nim b/src/server/api/routes.nim similarity index 99% rename from src/server/core/endpoints.nim rename to src/server/api/routes.nim index 6091449..c266293 100644 --- a/src/server/core/endpoints.nim +++ b/src/server/api/routes.nim @@ -1,7 +1,7 @@ import prologue, nanoid, json import sequtils, strutils, times -import ./agentApi +import ./handlers import ../../types proc error404*(ctx: Context) {.async.} = diff --git a/src/server/core/agent.nim b/src/server/core/agent.nim index 91d6056..e294367 100644 --- a/src/server/core/agent.nim +++ b/src/server/core/agent.nim @@ -1,7 +1,7 @@ import terminal, strformat, strutils, sequtils, tables, json, times, base64, system, osproc, streams -import ./taskDispatcher import ../utils +import ../task/dispatcher import ../db/database import ../../types diff --git a/src/server/core/listener.nim b/src/server/core/listener.nim index 551d070..566a5ce 100644 --- a/src/server/core/listener.nim +++ b/src/server/core/listener.nim @@ -1,8 +1,8 @@ import strformat, strutils, sequtils, nanoid, terminal import prologue -import ./endpoints import ../utils +import ../api/routes import ../db/database import ../../types @@ -47,10 +47,10 @@ proc listenerStart*(cq: Conquest, host: string, portStr: string) = var listener = newApp(settings = listenerSettings) # Define API endpoints - listener.post("{listener}/register", endpoints.register) - listener.get("{listener}/{agent}/tasks", endpoints.getTasks) - listener.post("{listener}/{agent}/{task}/results", endpoints.postResults) - listener.registerErrorHandler(Http404, endpoints.error404) + listener.post("{listener}/register", routes.register) + listener.get("{listener}/{agent}/tasks", routes.getTasks) + listener.post("{listener}/{agent}/{task}/results", routes.postResults) + listener.registerErrorHandler(Http404, routes.error404) # Store listener in database var listenerInstance = newListener(name, host, port) @@ -80,10 +80,10 @@ proc restartListeners*(cq: Conquest) = listener = newApp(settings = settings) # Define API endpoints - listener.post("{listener}/register", endpoints.register) - listener.get("{listener}/{agent}/tasks", endpoints.getTasks) - listener.post("{listener}/{agent}/{task}/results", endpoints.postResults) - listener.registerErrorHandler(Http404, endpoints.error404) + listener.post("{listener}/register", routes.register) + listener.get("{listener}/{agent}/tasks", routes.getTasks) + listener.post("{listener}/{agent}/{task}/results", routes.postResults) + listener.registerErrorHandler(Http404, routes.error404) try: discard listener.runAsync() diff --git a/src/server/server.nim b/src/server/core/server.nim similarity index 94% rename from src/server/server.nim rename to src/server/core/server.nim index 31571b0..eae6586 100644 --- a/src/server/server.nim +++ b/src/server/core/server.nim @@ -1,9 +1,10 @@ import prompt, terminal, argparse import strutils, strformat, times, system, tables -import ./globals -import core/agent, core/listener, db/database -import ../types +import ./[agent, listener] +import ../db/database +import ../globals +import ../../types #[ Argument parsing @@ -61,7 +62,7 @@ var parser = newParser: command("exit"): nohelpflag() -proc handleConsoleCommand*(cq: Conquest, args: string) = +proc handleConsoleCommand(cq: Conquest, args: string) = # Return if no command (or just whitespace) is entered if args.replace(" ", "").len == 0: return @@ -125,11 +126,8 @@ proc header(cq: Conquest) = cq.writeLine(" ┗ @jakobfriedl") cq.writeLine("─".repeat(21)) cq.writeLine("") - -#[ - Conquest framework entry point -]# -proc main() = + +proc startServer*() = # Handle CTRL+C, proc exit() {.noconv.} = echo "Received CTRL+C. Type \"exit\" to close the application.\n" @@ -137,7 +135,7 @@ proc main() = setControlCHook(exit) # Initialize framework - let dbPath: string = "../src/server/db/conquest.db" + let dbPath: string = "../data/conquest.db" cq = initConquest(dbPath) # Print header @@ -156,6 +154,3 @@ proc main() = var command: string = cq.readLine() cq.withOutput(handleConsoleCommand, command) - -when isMainModule: - main() diff --git a/src/server/globals.nim b/src/server/globals.nim index d5a6b7a..a00cb57 100644 --- a/src/server/globals.nim +++ b/src/server/globals.nim @@ -1,9 +1,4 @@ import ../types # Global variable for handling listeners, agents and console output -var cq*: Conquest - -# Colors -# https://colors.sh/ -const red* = "\e[210;66;79m" -const resetColor* = "\e[0m" +var cq*: Conquest \ No newline at end of file diff --git a/src/server/main.nim b/src/server/main.nim new file mode 100644 index 0000000..ab4627e --- /dev/null +++ b/src/server/main.nim @@ -0,0 +1,8 @@ +import prompt, terminal, argparse +import strutils, strformat, times, system, tables + +import core/server + +# Conquest framework entry point +when isMainModule: + startServer() \ No newline at end of file diff --git a/src/server/nim.cfg b/src/server/nim.cfg index 958605c..35db171 100644 --- a/src/server/nim.cfg +++ b/src/server/nim.cfg @@ -1,4 +1,5 @@ # Compiler flags --threads:on -d:httpxServerName="nginx" ---outdir:"../bin" \ No newline at end of file +--outdir:"../bin" +--out:"server" \ No newline at end of file diff --git a/src/server/core/taskDispatcher.nim b/src/server/task/dispatcher.nim similarity index 100% rename from src/server/core/taskDispatcher.nim rename to src/server/task/dispatcher.nim diff --git a/src/server/task/packer.nim b/src/server/task/packer.nim new file mode 100644 index 0000000..e69de29 diff --git a/src/server/task/parser.nim b/src/server/task/parser.nim new file mode 100644 index 0000000..e69de29