Skip to content

Commit 6f598d7

Browse files
author
Timothy MacDonald
committed
chore: added some addition logging messages and converted gui to load from .py instead of .uic
Signed-off-by: Timothy MacDonald <[email protected]>
1 parent caeed0b commit 6f598d7

File tree

4 files changed

+388
-46
lines changed

4 files changed

+388
-46
lines changed

assets/mainwindow.ui

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
<item>
4747
<widget class="QLabel" name="labelSelectReport">
4848
<property name="enabled">
49-
<bool>false</bool>
49+
<bool>true</bool>
5050
</property>
5151
<property name="text">
5252
<string>Select Report:</string>

modules/gui_main.py

Lines changed: 50 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from PySide6.QtWebEngineWidgets import QWebEngineView
55
from logzero import logger
66
from modules.utils import LaceworkTime
7+
from modules.mainwindow import Ui_MainWindow
78
from __feature__ import true_property
89
import traceback
910
import datetime
@@ -72,12 +73,16 @@ def __init__(self, args, pre_processed_args, available_reports, basedir):
7273
self.report_file_name = None
7374
self.report = None
7475
self.report_saved = True
75-
loader = QUiLoader()
76-
self.window = loader.load(f"{basedir}/assets/mainwindow.ui", None)
76+
self.window = QMainWindow()
77+
self.window.ui = Ui_MainWindow()
78+
self.window.ui.setupUi(self.window)
79+
80+
# loader = QUiLoader()
81+
# self.window = loader.load(f"{basedir}/assets/mainwindow.ui", None)
7782
if args.logo:
78-
self.window.lineEditCustomLogo.text = args.logo
83+
self.window.ui.lineEditCustomLogo.text = args.logo
7984
else:
80-
self.window.lineEditCustomLogo.text = "None"
85+
self.window.ui.lineEditCustomLogo.text = "None"
8186
self.report_preview = ReportPreview()
8287

8388
self.populate_fields_from_args()
@@ -87,40 +92,40 @@ def __init__(self, args, pre_processed_args, available_reports, basedir):
8792
# Hide report selector widget for now due to bug in setting combobox index, set report based on command line argument instead
8893
selected_report_name = [report['report_name'] for report in self.available_reports if report['report_short_name'] == self.args.report][0]
8994
self.report_changed(selected_report_name)
90-
self.window.labelSelectReport.hide()
91-
self.window.comboBoxReportSelector.hide()
95+
self.window.ui.labelSelectReport.hide()
96+
self.window.ui.comboBoxReportSelector.hide()
9297

9398
self.window.show()
9499

95100

96101
def connect_ui_elements(self):
97102
# Combobox disabled due to bug in setting current index
98-
# self.window.comboBoxReportSelector.currentTextChanged.connect(self.report_changed)
99-
self.window.pushButtonRunReport.clicked.connect(self.run_report)
100-
self.window.pushButtonTogglePreview.clicked.connect( self.toggle_preview)
101-
self.window.plainTextEditRecommendations.textChanged.connect(self.lineedits_changed)
102-
self.window.pushButtonWriteHTML.clicked.connect(self.write_html)
103-
self.window.pushButtonWritePDF.clicked.connect(self.write_pdf)
104-
self.window.checkBoxUseCache.stateChanged.connect(self.use_cache)
105-
self.window.lineEditCustomer.textChanged.connect(self.lineedits_changed)
106-
self.window.lineEditAuthor.textChanged.connect(self.lineedits_changed)
107-
self.window.pushButtonSelectCustomLogo.clicked.connect(self.set_custom_logo)
103+
# self.window.ui.comboBoxReportSelector.currentTextChanged.connect(self.report_changed)
104+
self.window.ui.pushButtonRunReport.clicked.connect(self.run_report)
105+
self.window.ui.pushButtonTogglePreview.clicked.connect( self.toggle_preview)
106+
self.window.ui.plainTextEditRecommendations.textChanged.connect(self.lineedits_changed)
107+
self.window.ui.pushButtonWriteHTML.clicked.connect(self.write_html)
108+
self.window.ui.pushButtonWritePDF.clicked.connect(self.write_pdf)
109+
self.window.ui.checkBoxUseCache.stateChanged.connect(self.use_cache)
110+
self.window.ui.lineEditCustomer.textChanged.connect(self.lineedits_changed)
111+
self.window.ui.lineEditAuthor.textChanged.connect(self.lineedits_changed)
112+
self.window.ui.pushButtonSelectCustomLogo.clicked.connect(self.set_custom_logo)
108113

109114

110115
def use_cache(self, state):
111116
self.report_generator.use_cache = bool(state)
112117

113118
def lineedits_changed(self):
114-
self.report_generator.recommendations = self.window.plainTextEditRecommendations.plainText
119+
self.report_generator.recommendations = self.window.ui.plainTextEditRecommendations.plainText
115120

116121
if self.report:
117-
self.report = self.report_generator.render(self.window.lineEditCustomer.text, self.window.lineEditAuthor.text, custom_logo=self.window.lineEditCustomLogo.text)
122+
self.report = self.report_generator.render(self.window.ui.lineEditCustomer.text, self.window.ui.lineEditAuthor.text, custom_logo=self.window.ui.lineEditCustomLogo.text)
118123
self.report_preview.reload_report(self.report)
119124

120125
def write_html(self):
121126
if self.report:
122127
if not self.report_file_name:
123-
self.report_file_name = f'{self.window.lineEditCustomer.text}_{self.window.lineEditAuthor.text}_{datetime.datetime.now().strftime("%Y%m%d")}.html'
128+
self.report_file_name = f'{self.window.ui.lineEditCustomer.text}_{self.window.ui.lineEditAuthor.text}_{datetime.datetime.now().strftime("%Y%m%d")}.html'
124129
else:
125130
self.report_file_name = str(self.report_file_name).replace(".pdf", ".html")
126131
filename, _ = QFileDialog.getSaveFileName(self.window, "Save HTML Location", self.report_file_name)
@@ -139,7 +144,7 @@ def write_html(self):
139144
def write_pdf(self):
140145
if self.report:
141146
if not self.report_file_name:
142-
self.report_file_name = f'{self.window.lineEditCustomer.text}_{self.window.lineEditAuthor.text}_{datetime.datetime.now().strftime("%Y%m%d")}.pdf'
147+
self.report_file_name = f'{self.window.ui.lineEditCustomer.text}_{self.window.ui.lineEditAuthor.text}_{datetime.datetime.now().strftime("%Y%m%d")}.pdf'
143148
else:
144149
self.report_file_name = str(self.report_file_name).replace(".html", ".pdf")
145150
filename, _ = QFileDialog.getSaveFileName(self.window, "Save PDF Location", self.report_file_name)
@@ -156,7 +161,7 @@ def set_custom_logo(self):
156161
filename, _ = QFileDialog.getOpenFileName(self.window, "Open Custom Logo", filter="PNG File (*.png)")
157162
if filename:
158163
if os.access(filename, os.R_OK):
159-
self.window.lineEditCustomLogo.text = filename
164+
self.window.ui.lineEditCustomLogo.text = filename
160165
else:
161166
dialog = ErrorDialog("Can't read that file. Check permissions?")
162167

@@ -170,47 +175,47 @@ def toggle_preview(self):
170175
def populate_fields_from_args(self):
171176
# Combobox disabled due to bug in setting current index
172177
# for available_report in self.available_reports:
173-
# self.window.comboBoxReportSelector.addItem(available_report['report_name'])
178+
# self.window.ui.comboBoxReportSelector.addItem(available_report['report_name'])
174179
# selected_report_name = [report['report_name'] for report in self.available_reports if report['report_short_name'] == self.args.report][0]
175-
# report_index = self.window.comboBoxReportSelector.findText(str(selected_report_name))
176-
# self.window.comboBoxReportSelector.setCurrentIndex(report_index)
180+
# report_index = self.window.ui.comboBoxReportSelector.findText(str(selected_report_name))
181+
# self.window.ui.comboBoxReportSelector.setCurrentIndex(report_index)
177182

178183

179184
if self.args.cache_data:
180-
self.window.checkBoxUseCache.setCheckState(Qt.Checked)
181-
self.window.lineEditCustomer.text = self.args.customer
182-
self.window.lineEditAuthor.text = self.args.author
183-
self.window.spinBoxVulnStartTimeDays.value = int(self.args.vulns_start_time.split(":")[0])
184-
self.window.spinBoxVulnStartTimeHours.value = int(self.args.vulns_start_time.split(":")[1])
185-
self.window.spinBoxVulnEndTimeDays.value = int(self.args.vulns_end_time.split(":")[0])
186-
self.window.spinBoxVulnEndTimeHours.value = int(self.args.vulns_end_time.split(":")[1])
187-
self.window.spinBoxAlertStartTimeDays.value = int(self.args.alerts_start_time.split(":")[0])
188-
self.window.spinBoxAlertStartTimeHours.value = int(self.args.alerts_start_time.split(":")[1])
189-
self.window.spinBoxAlertEndTimeDays.value = int(self.args.alerts_end_time.split(":")[0])
190-
self.window.spinBoxAlertEndTimeHours.value = int(self.args.alerts_end_time.split(":")[1])
185+
self.window.ui.checkBoxUseCache.setCheckState(Qt.Checked)
186+
self.window.ui.lineEditCustomer.text = self.args.customer
187+
self.window.ui.lineEditAuthor.text = self.args.author
188+
self.window.ui.spinBoxVulnStartTimeDays.value = int(self.args.vulns_start_time.split(":")[0])
189+
self.window.ui.spinBoxVulnStartTimeHours.value = int(self.args.vulns_start_time.split(":")[1])
190+
self.window.ui.spinBoxVulnEndTimeDays.value = int(self.args.vulns_end_time.split(":")[0])
191+
self.window.ui.spinBoxVulnEndTimeHours.value = int(self.args.vulns_end_time.split(":")[1])
192+
self.window.ui.spinBoxAlertStartTimeDays.value = int(self.args.alerts_start_time.split(":")[0])
193+
self.window.ui.spinBoxAlertStartTimeHours.value = int(self.args.alerts_start_time.split(":")[1])
194+
self.window.ui.spinBoxAlertEndTimeDays.value = int(self.args.alerts_end_time.split(":")[0])
195+
self.window.ui.spinBoxAlertEndTimeHours.value = int(self.args.alerts_end_time.split(":")[1])
191196

192197
def report_changed(self, report_name):
193198
self.report_to_run = [report['report_class'] for report in self.available_reports if report['report_name'] == report_name][0]
194-
self.report_generator = self.report_to_run(self.basedir, use_cache=self.window.checkBoxUseCache.checked, api_key_file=self.pre_processed_args['api_key_file'])
199+
self.report_generator = self.report_to_run(self.basedir, use_cache=self.window.ui.checkBoxUseCache.checked, api_key_file=self.pre_processed_args['api_key_file'])
195200
logger.debug(f"Currently Selected Report: {report_name}")
196201
self.report = None
197202
self.report_preview.hide()
198203
self.report_preview.clear_report()
199-
self.window.plainTextEditRecommendations.plainText = self.report_to_run.default_recommendations
204+
self.window.ui.plainTextEditRecommendations.plainText = self.report_to_run.default_recommendations
200205

201206

202207
def run_report(self):
203208
try:
204-
vuln_start_time = LaceworkTime(f"{self.window.spinBoxVulnStartTimeDays.value}:{self.window.spinBoxVulnStartTimeHours.value}")
205-
vuln_end_time = LaceworkTime(f"{self.window.spinBoxVulnEndTimeDays.value}:{self.window.spinBoxVulnEndTimeHours.value}")
206-
alert_start_time = LaceworkTime(f"{self.window.spinBoxAlertStartTimeDays.value}:{self.window.spinBoxAlertStartTimeHours.value}")
207-
alert_end_time = LaceworkTime(f"{self.window.spinBoxAlertEndTimeDays.value}:{self.window.spinBoxAlertEndTimeHours.value}")
208-
if self.window.lineEditCustomLogo.text == "None":
209+
vuln_start_time = LaceworkTime(f"{self.window.ui.spinBoxVulnStartTimeDays.value}:{self.window.ui.spinBoxVulnStartTimeHours.value}")
210+
vuln_end_time = LaceworkTime(f"{self.window.ui.spinBoxVulnEndTimeDays.value}:{self.window.ui.spinBoxVulnEndTimeHours.value}")
211+
alert_start_time = LaceworkTime(f"{self.window.ui.spinBoxAlertStartTimeDays.value}:{self.window.ui.spinBoxAlertStartTimeHours.value}")
212+
alert_end_time = LaceworkTime(f"{self.window.ui.spinBoxAlertEndTimeDays.value}:{self.window.ui.spinBoxAlertEndTimeHours.value}")
213+
if self.window.ui.lineEditCustomLogo.text == "None":
209214
custom_logo = None
210215
else:
211-
custom_logo = self.window.lineEditCustomLogo.text
212-
self.report = self.report_generator.generate(self.window.lineEditCustomer.text,
213-
self.window.lineEditAuthor.text,
216+
custom_logo = self.window.ui.lineEditCustomLogo.text
217+
self.report = self.report_generator.generate(self.window.ui.lineEditCustomer.text,
218+
self.window.ui.lineEditAuthor.text,
214219
vulns_start_time=vuln_start_time,
215220
vulns_end_time=vuln_end_time,
216221
alerts_start_time=alert_start_time,

0 commit comments

Comments
 (0)