Skip to content

Commit 6c966e4

Browse files
author
kali
committed
Minor
1 parent 69f6c28 commit 6c966e4

File tree

5 files changed

+34
-21
lines changed

5 files changed

+34
-21
lines changed

C2Client/C2Client/GUI.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,6 @@ def __init__(self, ip: str, port: int, devMode: bool) -> None:
7373
self.sessionsWidget.interactWithSession.connect(self.consoleWidget.addConsole)
7474

7575
self.consoleWidget.script.mainScriptMethod("start", "", "", "")
76-
77-
self.show()
78-
7976

8077
def topLayout(self) -> None:
8178
"""Initialise the upper part of the main window."""
@@ -140,7 +137,9 @@ def main() -> None:
140137
app.setStyleSheet(qdarktheme.load_stylesheet())
141138

142139
try:
143-
App(args.ip, args.port, args.dev)
140+
window = App(args.ip, args.port, args.dev)
141+
window.show()
142+
sys.exit(app.exec_())
144143
except ValueError:
145144
sys.exit(1)
146145
sys.exit(app.exec_())

C2Client/C2Client/GraphPanel.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
QGraphicsView,
1313
QVBoxLayout,
1414
QWidget,
15+
QGraphicsItem,
1516
)
1617

1718

C2Client/C2Client/ListenerPanel.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
QTableWidget,
1515
QTableWidgetItem,
1616
QWidget,
17+
QHeaderView,
1718
)
1819

1920
from .grpcClient import TeamServerApi_pb2

C2Client/C2Client/ScriptPanel.py

Lines changed: 28 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import os
33
import logging
44
import importlib
5+
from pathlib import Path
56
from datetime import datetime
67

78
from threading import Thread, Lock, Semaphore
@@ -23,30 +24,40 @@
2324
#
2425
try:
2526
import pkg_resources
26-
scriptsDir = pkg_resources.resource_filename(
27-
'C2Client',
28-
'Scripts'
29-
)
30-
27+
scriptsDir = pkg_resources.resource_filename('C2Client', 'Scripts')
3128
except ImportError:
29+
# Fallback: relative to this file (…/C2Client/Scripts)
3230
scriptsDir = os.path.join(os.path.dirname(__file__), 'Scripts')
3331

34-
if not os.path.exists(scriptsDir):
35-
os.makedirs(scriptsDir)
32+
scripts_path = Path(scriptsDir).resolve()
33+
scripts_path.mkdir(parents=True, exist_ok=True)
34+
35+
# Ensure it's a real package
36+
(scripts_path / "__init__.py").touch(exist_ok=True)
37+
38+
# Ensure the project root (parent of C2Client) is on sys.path so
39+
# `C2Client.Scripts` is importable as a package
40+
# e.g. /path/to/project_root/C2Client/Scripts
41+
project_root = scripts_path.parent.parent # .../project_root
42+
if str(project_root) not in sys.path:
43+
sys.path.insert(0, str(project_root))
3644

45+
package_name = "C2Client.Scripts"
3746

47+
# ----------------------------
48+
# Load all scripts as modules
49+
# ----------------------------
3850
LoadedScripts = []
39-
sys.path.insert(1, scriptsDir)
40-
for scriptName in os.listdir(scriptsDir):
41-
if scriptName.endswith(".py") and scriptName != "__init__.py":
42-
module_name = scriptName[:-3]
51+
for entry in scripts_path.iterdir():
52+
if entry.suffix == ".py" and entry.name != "__init__.py":
53+
modname = f"{package_name}.{entry.stem}"
4354
try:
44-
# Dynamically import the script
45-
importedScript = importlib.import_module(module_name)
46-
LoadedScripts.append(importedScript)
47-
print(f"Successfully imported {scriptName}")
48-
except ImportError as e:
49-
print(f"Failed to import {scriptName}: {e}")
55+
m = importlib.import_module(modname)
56+
LoadedScripts.append(m)
57+
print(f"Successfully imported {modname}")
58+
except Exception as e:
59+
print(f"Failed to import {modname}: {e}")
60+
traceback.print_exc()
5061

5162

5263
#

C2Client/C2Client/SessionPanel.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
QTableWidget,
1111
QTableWidgetItem,
1212
QWidget,
13+
QHeaderView,
1314
)
1415

1516
from .grpcClient import TeamServerApi_pb2

0 commit comments

Comments
 (0)