Timestamp formatting broke text selection, so the int64 unix timestamp is formatted to a string before being added to the console component. This solved most of the highlighting issues I encountered.
This commit is contained in:
@@ -3,6 +3,6 @@
|
|||||||
-d:release
|
-d:release
|
||||||
--opt:size
|
--opt:size
|
||||||
--passL:"-s" # Strip symbols, such as sensitive function names
|
--passL:"-s" # Strip symbols, such as sensitive function names
|
||||||
-d:CONFIGURATION="PLACEHOLDERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPLACEHOLDER"
|
-d:CONFIGURATION="PLACEHOLDERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPLACEHOLDER"
|
||||||
-d:MODULES="255"
|
-d:MODULES="255"
|
||||||
-o:"/mnt/c/Users/jakob/Documents/Projects/conquest/bin/monarch.x64.exe"
|
-o:"/mnt/c/Users/jakob/Documents/Projects/conquest/bin/monarch.x64.exe"
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import whisky
|
import whisky
|
||||||
import tables, strutils, strformat, json, parsetoml, base64, os # native_dialogs
|
import tables, times, strutils, strformat, json, parsetoml, base64, os # native_dialogs
|
||||||
import ./utils/[appImGui, globals]
|
import ./utils/[appImGui, globals]
|
||||||
import ./views/[dockspace, sessions, listeners, eventlog, console]
|
import ./views/[dockspace, sessions, listeners, eventlog, console]
|
||||||
import ./views/loot/[screenshots, downloads]
|
import ./views/loot/[screenshots, downloads]
|
||||||
@@ -133,21 +133,21 @@ proc main(ip: string = "localhost", port: int = 37573) =
|
|||||||
consoles[agentId].addItem(
|
consoles[agentId].addItem(
|
||||||
cast[LogType](event.data["logType"].getInt()),
|
cast[LogType](event.data["logType"].getInt()),
|
||||||
event.data["message"].getStr(),
|
event.data["message"].getStr(),
|
||||||
event.timestamp
|
event.timestamp.fromUnix().local().format("dd-MM-yyyy HH:mm:ss")
|
||||||
)
|
)
|
||||||
|
|
||||||
of CLIENT_EVENTLOG_ITEM:
|
of CLIENT_EVENTLOG_ITEM:
|
||||||
eventlog.addItem(
|
eventlog.addItem(
|
||||||
cast[LogType](event.data["logType"].getInt()),
|
cast[LogType](event.data["logType"].getInt()),
|
||||||
event.data["message"].getStr(),
|
event.data["message"].getStr(),
|
||||||
event.timestamp
|
event.timestamp.fromUnix().local().format("dd-MM-yyyy HH:mm:ss")
|
||||||
)
|
)
|
||||||
|
|
||||||
of CLIENT_BUILDLOG_ITEM:
|
of CLIENT_BUILDLOG_ITEM:
|
||||||
listenersTable.generatePayloadModal.addBuildlogItem(
|
listenersTable.generatePayloadModal.addBuildlogItem(
|
||||||
cast[LogType](event.data["logType"].getInt()),
|
cast[LogType](event.data["logType"].getInt()),
|
||||||
event.data["message"].getStr(),
|
event.data["message"].getStr(),
|
||||||
event.timestamp
|
event.timestamp.fromUnix().local().format("dd-MM-yyyy HH:mm:ss")
|
||||||
)
|
)
|
||||||
|
|
||||||
of CLIENT_LOOT_ADD:
|
of CLIENT_LOOT_ADD:
|
||||||
@@ -193,8 +193,7 @@ proc main(ip: string = "localhost", port: int = 37573) =
|
|||||||
# This is done to ensure that closed console windows can be opened again
|
# This is done to ensure that closed console windows can be opened again
|
||||||
consoles = newConsoleTable
|
consoles = newConsoleTable
|
||||||
|
|
||||||
|
# igShowDemoWindow(nil)
|
||||||
igShowDemoWindow(nil)
|
|
||||||
|
|
||||||
# render
|
# render
|
||||||
app.render()
|
app.render()
|
||||||
|
|||||||
@@ -23,9 +23,9 @@ type
|
|||||||
Helper functions for text selection
|
Helper functions for text selection
|
||||||
]#
|
]#
|
||||||
proc getText(item: ConsoleItem): cstring =
|
proc getText(item: ConsoleItem): cstring =
|
||||||
if item.timestamp > 0:
|
if item.itemType != LOG_OUTPUT:
|
||||||
let timestamp = "[" & item.timestamp.fromUnix().format("dd-MM-yyyy HH:mm:ss") & "]"
|
# let timestamp = item.timestamp.fromUnix().format("dd-MM-yyyy HH:mm:ss")
|
||||||
return timestamp & $item.itemType & item.text
|
return "[" & item.timestamp & "]" & $item.itemType & item.text
|
||||||
else:
|
else:
|
||||||
return $item.itemType & item.text
|
return $item.itemType & item.text
|
||||||
|
|
||||||
@@ -172,10 +172,10 @@ proc callback(data: ptr ImGuiInputTextCallbackData): cint {.cdecl.} =
|
|||||||
#[
|
#[
|
||||||
API to add new console item
|
API to add new console item
|
||||||
]#
|
]#
|
||||||
proc addItem*(component: ConsoleComponent, itemType: LogType, data: string, timestamp: int64 = now().toTime().toUnix()) =
|
proc addItem*(component: ConsoleComponent, itemType: LogType, data: string, timestamp: string = now().format("dd-MM-yyyy HH:mm:ss")) =
|
||||||
for line in data.split("\n"):
|
for line in data.split("\n"):
|
||||||
component.console.items.add(ConsoleItem(
|
component.console.items.add(ConsoleItem(
|
||||||
timestamp: if itemType == LOG_OUTPUT: 0 else: timestamp,
|
timestamp: timestamp,
|
||||||
itemType: itemType,
|
itemType: itemType,
|
||||||
text: line
|
text: line
|
||||||
))
|
))
|
||||||
@@ -195,11 +195,10 @@ proc displayCommandHelp(component: ConsoleComponent, command: Command) =
|
|||||||
).join(" ")
|
).join(" ")
|
||||||
|
|
||||||
component.addItem(LOG_OUTPUT, command.description)
|
component.addItem(LOG_OUTPUT, command.description)
|
||||||
component.addItem(LOG_OUTPUT, "Usage : " & usage)
|
component.addItem(LOG_OUTPUT, "Usage : " & usage)
|
||||||
|
component.addItem(LOG_OUTPUT, "Example : " & command.example)
|
||||||
if command.example != "":
|
component.addItem(LOG_OUTPUT, "")
|
||||||
component.addItem(LOG_OUTPUT, "Example : " & command.example)
|
|
||||||
|
|
||||||
if command.arguments.len > 0:
|
if command.arguments.len > 0:
|
||||||
component.addItem(LOG_OUTPUT, "Arguments:")
|
component.addItem(LOG_OUTPUT, "Arguments:")
|
||||||
|
|
||||||
@@ -249,9 +248,9 @@ proc handleAgentCommand*(component: ConsoleComponent, connection: WsConnection,
|
|||||||
]#
|
]#
|
||||||
proc print(item: ConsoleItem) =
|
proc print(item: ConsoleItem) =
|
||||||
|
|
||||||
if item.timestamp > 0:
|
if item.itemType != LOG_OUTPUT:
|
||||||
let timestamp = item.timestamp.fromUnix().format("dd-MM-yyyy HH:mm:ss")
|
# let timestamp = item.timestamp.fromUnix().format("dd-MM-yyyy HH:mm:ss")
|
||||||
igTextColored(vec4(0.6f, 0.6f, 0.6f, 1.0f), "[" & timestamp & "]")
|
igTextColored(GRAY, "[" & item.timestamp & "]", nil)
|
||||||
igSameLine(0.0f, 0.0f)
|
igSameLine(0.0f, 0.0f)
|
||||||
|
|
||||||
case item.itemType:
|
case item.itemType:
|
||||||
|
|||||||
@@ -11,9 +11,8 @@ type
|
|||||||
showTimestamps: bool
|
showTimestamps: bool
|
||||||
|
|
||||||
proc getText(item: ConsoleItem): cstring =
|
proc getText(item: ConsoleItem): cstring =
|
||||||
if item.timestamp > 0:
|
if item.itemType != LOG_OUTPUT:
|
||||||
let timestamp = item.timestamp.fromUnix().format("dd-MM-yyyy HH:mm:ss")
|
return fmt"[{item.timestamp}]{$item.itemType}{item.text}".string
|
||||||
return fmt"[{timestamp}]{$item.itemType}{item.text}".string
|
|
||||||
else:
|
else:
|
||||||
return fmt"{$item.itemType}{item.text}".string
|
return fmt"{$item.itemType}{item.text}".string
|
||||||
|
|
||||||
@@ -43,7 +42,7 @@ proc Eventlog*(title: string): EventlogComponent =
|
|||||||
#[
|
#[
|
||||||
API to add new log entry
|
API to add new log entry
|
||||||
]#
|
]#
|
||||||
proc addItem*(component: EventlogComponent, itemType: LogType, data: string, timestamp: int64 = now().toTime().toUnix()) =
|
proc addItem*(component: EventlogComponent, itemType: LogType, data: string, timestamp: string = now().format("dd-MM-yyyy HH:mm:ss")) =
|
||||||
|
|
||||||
for line in data.split("\n"):
|
for line in data.split("\n"):
|
||||||
component.log.items.add(ConsoleItem(
|
component.log.items.add(ConsoleItem(
|
||||||
@@ -57,8 +56,7 @@ proc addItem*(component: EventlogComponent, itemType: LogType, data: string, tim
|
|||||||
]#
|
]#
|
||||||
proc print(component: EventlogComponent, item: ConsoleItem) =
|
proc print(component: EventlogComponent, item: ConsoleItem) =
|
||||||
if (item.itemType != LOG_OUTPUT) and component.showTimestamps:
|
if (item.itemType != LOG_OUTPUT) and component.showTimestamps:
|
||||||
let timestamp = item.timestamp.fromUnix().format("dd-MM-yyyy HH:mm:ss")
|
igTextColored(vec4(0.6f, 0.6f, 0.6f, 1.0f), fmt"[{item.timestamp}]".cstring)
|
||||||
igTextColored(vec4(0.6f, 0.6f, 0.6f, 1.0f), fmt"[{timestamp}]".cstring)
|
|
||||||
igSameLine(0.0f, 0.0f)
|
igSameLine(0.0f, 0.0f)
|
||||||
|
|
||||||
case item.itemType:
|
case item.itemType:
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ proc resetModalValues*(component: AgentModalComponent) =
|
|||||||
component.moduleSelection.reset()
|
component.moduleSelection.reset()
|
||||||
component.buildLog.items = @[]
|
component.buildLog.items = @[]
|
||||||
|
|
||||||
proc addBuildlogItem*(component: AgentModalComponent, itemType: LogType, data: string, timestamp: int64 = now().toTime().toUnix()) =
|
proc addBuildlogItem*(component: AgentModalComponent, itemType: LogType, data: string, timestamp: string = now().format("dd-MM-yyyy HH:mm:ss")) =
|
||||||
for line in data.split("\n"):
|
for line in data.split("\n"):
|
||||||
component.buildLog.items.add(ConsoleItem(
|
component.buildLog.items.add(ConsoleItem(
|
||||||
timestamp: timestamp,
|
timestamp: timestamp,
|
||||||
|
|||||||
@@ -338,7 +338,7 @@ type
|
|||||||
type
|
type
|
||||||
ConsoleItem* = ref object
|
ConsoleItem* = ref object
|
||||||
itemType*: LogType
|
itemType*: LogType
|
||||||
timestamp*: int64
|
timestamp*: string
|
||||||
text*: string
|
text*: string
|
||||||
|
|
||||||
ConsoleItems* = ref object
|
ConsoleItems* = ref object
|
||||||
|
|||||||
Reference in New Issue
Block a user