44from PySide6 .QtWebEngineWidgets import QWebEngineView
55from logzero import logger
66from modules .utils import LaceworkTime
7+ from modules .mainwindow import Ui_MainWindow
78from __feature__ import true_property
89import traceback
910import 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