update: import error logs module
This commit is contained in:
parent
0a3a6ecd2f
commit
33a88a77a2
1 changed files with 46 additions and 27 deletions
|
|
@ -15,6 +15,9 @@ import qrcode
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
from typing import Union
|
from typing import Union
|
||||||
from core.Errors import UnknownConnectionTypeError, CommandNotFoundError, MissingSubscriptionError, InvalidSubscriptionError, ProfileActivationError, UnsupportedApplicationVersionError, FileIntegrityError, ProfileModificationError, ProfileStateConflictError, EndpointVerificationError, PolicyAssignmentError, PolicyInstatementError, PolicyRevocationError
|
from core.Errors import UnknownConnectionTypeError, CommandNotFoundError, MissingSubscriptionError, InvalidSubscriptionError, ProfileActivationError, UnsupportedApplicationVersionError, FileIntegrityError, ProfileModificationError, ProfileStateConflictError, EndpointVerificationError, PolicyAssignmentError, PolicyInstatementError, PolicyRevocationError
|
||||||
|
from core.errors.logger import logger as core_logger
|
||||||
|
|
||||||
|
core_logger.propagate = False
|
||||||
from core.controllers.ApplicationVersionController import ApplicationVersionController
|
from core.controllers.ApplicationVersionController import ApplicationVersionController
|
||||||
from core.controllers.ApplicationController import ApplicationController
|
from core.controllers.ApplicationController import ApplicationController
|
||||||
from core.controllers.ClientController import ClientController
|
from core.controllers.ClientController import ClientController
|
||||||
|
|
@ -615,7 +618,7 @@ class CustomWindow(QMainWindow):
|
||||||
self.is_tor_mode = current_connection == 'tor'
|
self.is_tor_mode = current_connection == 'tor'
|
||||||
self.set_toggle_state(self.is_tor_mode)
|
self.set_toggle_state(self.is_tor_mode)
|
||||||
|
|
||||||
logging.info(
|
core_logger.info(
|
||||||
f"HydraVeil application opened (client version {Constants.HV_CLIENT_VERSION_NUMBER}, "
|
f"HydraVeil application opened (client version {Constants.HV_CLIENT_VERSION_NUMBER}, "
|
||||||
f"connection={current_connection}, tor_mode={self.is_tor_mode})"
|
f"connection={current_connection}, tor_mode={self.is_tor_mode})"
|
||||||
)
|
)
|
||||||
|
|
@ -646,7 +649,7 @@ class CustomWindow(QMainWindow):
|
||||||
self.update_status('Sync failed. Please try again later.')
|
self.update_status('Sync failed. Please try again later.')
|
||||||
|
|
||||||
def sync(self):
|
def sync(self):
|
||||||
logging.info("User clicked sync button")
|
core_logger.info("User clicked sync button")
|
||||||
if ConfigurationController.get_connection() == 'tor':
|
if ConfigurationController.get_connection() == 'tor':
|
||||||
self.worker_thread = WorkerThread('SYNC_TOR')
|
self.worker_thread = WorkerThread('SYNC_TOR')
|
||||||
else:
|
else:
|
||||||
|
|
@ -732,14 +735,14 @@ class CustomWindow(QMainWindow):
|
||||||
ConfigurationController.set_connection('system')
|
ConfigurationController.set_connection('system')
|
||||||
self.is_tor_mode = False
|
self.is_tor_mode = False
|
||||||
self.set_toggle_state(False)
|
self.set_toggle_state(False)
|
||||||
logging.info("User selected 'Regular' connection type from popup")
|
core_logger.info("User selected 'Regular' connection type from popup")
|
||||||
connection_dialog.accept()
|
connection_dialog.accept()
|
||||||
|
|
||||||
def set_tor_connection():
|
def set_tor_connection():
|
||||||
ConfigurationController.set_connection('tor')
|
ConfigurationController.set_connection('tor')
|
||||||
self.is_tor_mode = True
|
self.is_tor_mode = True
|
||||||
self.set_toggle_state(True)
|
self.set_toggle_state(True)
|
||||||
logging.info("User selected 'Tor' connection type from popup")
|
core_logger.info("User selected 'Tor' connection type from popup")
|
||||||
connection_dialog.accept()
|
connection_dialog.accept()
|
||||||
|
|
||||||
regular_btn.clicked.connect(set_regular_connection)
|
regular_btn.clicked.connect(set_regular_connection)
|
||||||
|
|
@ -855,6 +858,13 @@ class CustomWindow(QMainWindow):
|
||||||
self._save_gui_config(config)
|
self._save_gui_config(config)
|
||||||
|
|
||||||
def stop_gui_logging(self):
|
def stop_gui_logging(self):
|
||||||
|
for handler in getattr(self, '_gui_log_handlers', []):
|
||||||
|
try:
|
||||||
|
core_logger.removeHandler(handler)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
self._gui_log_handlers = []
|
||||||
|
|
||||||
logger = logging.getLogger()
|
logger = logging.getLogger()
|
||||||
for handler in list(logger.handlers):
|
for handler in list(logger.handlers):
|
||||||
logger.removeHandler(handler)
|
logger.removeHandler(handler)
|
||||||
|
|
@ -893,6 +903,15 @@ class CustomWindow(QMainWindow):
|
||||||
logger.addHandler(file_handler)
|
logger.addHandler(file_handler)
|
||||||
logger.addHandler(stream_handler)
|
logger.addHandler(stream_handler)
|
||||||
|
|
||||||
|
for handler in getattr(self, '_gui_log_handlers', []):
|
||||||
|
try:
|
||||||
|
core_logger.removeHandler(handler)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
core_logger.addHandler(file_handler)
|
||||||
|
core_logger.addHandler(stream_handler)
|
||||||
|
self._gui_log_handlers = [file_handler, stream_handler]
|
||||||
|
|
||||||
if not os.path.exists(self.gui_log_file) or os.path.getsize(self.gui_log_file) == 0:
|
if not os.path.exists(self.gui_log_file) or os.path.getsize(self.gui_log_file) == 0:
|
||||||
logging.info("GUI logging system initialized")
|
logging.info("GUI logging system initialized")
|
||||||
|
|
||||||
|
|
@ -983,7 +1002,7 @@ class CustomWindow(QMainWindow):
|
||||||
self.is_tor_mode = not self.is_tor_mode
|
self.is_tor_mode = not self.is_tor_mode
|
||||||
new_connection = 'tor' if self.is_tor_mode else 'system'
|
new_connection = 'tor' if self.is_tor_mode else 'system'
|
||||||
ConfigurationController.set_connection(new_connection)
|
ConfigurationController.set_connection(new_connection)
|
||||||
logging.info(f"User toggled connection mode to '{new_connection}'")
|
core_logger.info(f"User toggled connection mode to '{new_connection}'")
|
||||||
|
|
||||||
def animate_toggle(self):
|
def animate_toggle(self):
|
||||||
TOTAL_STEPS = 5
|
TOTAL_STEPS = 5
|
||||||
|
|
@ -1071,7 +1090,7 @@ class CustomWindow(QMainWindow):
|
||||||
self.setWindowIcon(window_icon)
|
self.setWindowIcon(window_icon)
|
||||||
|
|
||||||
def closeEvent(self, event=None):
|
def closeEvent(self, event=None):
|
||||||
logging.info("HydraVeil application closing")
|
core_logger.info("HydraVeil application closing")
|
||||||
connected_profiles = self.connection_manager.get_connected_profiles()
|
connected_profiles = self.connection_manager.get_connected_profiles()
|
||||||
if connected_profiles:
|
if connected_profiles:
|
||||||
self._show_disconnect_confirmation(connected_profiles, event)
|
self._show_disconnect_confirmation(connected_profiles, event)
|
||||||
|
|
@ -7998,54 +8017,54 @@ class Settings(Page):
|
||||||
self.show_account_page()
|
self.show_account_page()
|
||||||
|
|
||||||
def show_account_page(self):
|
def show_account_page(self):
|
||||||
logging.info("User navigated to Settings -> Overview")
|
core_logger.info("User navigated to Settings -> Overview")
|
||||||
self.content_layout.setCurrentWidget(self.account_page)
|
self.content_layout.setCurrentWidget(self.account_page)
|
||||||
self._select_menu_button("Overview")
|
self._select_menu_button("Overview")
|
||||||
|
|
||||||
def show_subscription_page(self):
|
def show_subscription_page(self):
|
||||||
logging.info("User navigated to Settings -> Subscriptions")
|
core_logger.info("User navigated to Settings -> Subscriptions")
|
||||||
self.content_layout.setCurrentWidget(self.subscription_page)
|
self.content_layout.setCurrentWidget(self.subscription_page)
|
||||||
self._select_menu_button("Subscriptions")
|
self._select_menu_button("Subscriptions")
|
||||||
|
|
||||||
def show_tickets_page(self):
|
def show_tickets_page(self):
|
||||||
logging.info("User navigated to Settings -> Tickets")
|
core_logger.info("User navigated to Settings -> Tickets")
|
||||||
self.content_layout.setCurrentWidget(self.tickets_page)
|
self.content_layout.setCurrentWidget(self.tickets_page)
|
||||||
self._select_menu_button("Tickets")
|
self._select_menu_button("Tickets")
|
||||||
self._refresh_tickets_inventory()
|
self._refresh_tickets_inventory()
|
||||||
self._refresh_ticket_recovery_controls()
|
self._refresh_ticket_recovery_controls()
|
||||||
|
|
||||||
def show_registrations_page(self):
|
def show_registrations_page(self):
|
||||||
logging.info("User navigated to Settings -> Create/Edit")
|
core_logger.info("User navigated to Settings -> Create/Edit")
|
||||||
self.content_layout.setCurrentWidget(self.registrations_page)
|
self.content_layout.setCurrentWidget(self.registrations_page)
|
||||||
self._select_menu_button("Create/Edit")
|
self._select_menu_button("Create/Edit")
|
||||||
|
|
||||||
def show_verification_page(self):
|
def show_verification_page(self):
|
||||||
logging.info("User navigated to Settings -> Verification")
|
core_logger.info("User navigated to Settings -> Verification")
|
||||||
self.content_layout.setCurrentWidget(self.verification_page)
|
self.content_layout.setCurrentWidget(self.verification_page)
|
||||||
self._select_menu_button("Verification")
|
self._select_menu_button("Verification")
|
||||||
|
|
||||||
def show_systemwide_page(self):
|
def show_systemwide_page(self):
|
||||||
logging.info("User navigated to Settings -> Legacy-Version")
|
core_logger.info("User navigated to Settings -> Legacy-Version")
|
||||||
self.content_layout.setCurrentWidget(self.systemwide_page)
|
self.content_layout.setCurrentWidget(self.systemwide_page)
|
||||||
self._select_menu_button("Systemwide")
|
self._select_menu_button("Systemwide")
|
||||||
|
|
||||||
def show_bwrap_page(self):
|
def show_bwrap_page(self):
|
||||||
logging.info("User navigated to Settings -> Bwrap Permission")
|
core_logger.info("User navigated to Settings -> Bwrap Permission")
|
||||||
self.content_layout.setCurrentWidget(self.bwrap_page)
|
self.content_layout.setCurrentWidget(self.bwrap_page)
|
||||||
self._select_menu_button("Bwrap Permission")
|
self._select_menu_button("Bwrap Permission")
|
||||||
|
|
||||||
def show_logs_page(self):
|
def show_logs_page(self):
|
||||||
logging.info("User navigated to Settings -> Error Logs")
|
core_logger.info("User navigated to Settings -> Error Logs")
|
||||||
self.content_layout.setCurrentWidget(self.logs_page)
|
self.content_layout.setCurrentWidget(self.logs_page)
|
||||||
self._select_menu_button("Error Logs")
|
self._select_menu_button("Error Logs")
|
||||||
|
|
||||||
def show_delete_page(self):
|
def show_delete_page(self):
|
||||||
logging.info("User navigated to Settings -> Delete Profile")
|
core_logger.info("User navigated to Settings -> Delete Profile")
|
||||||
self.content_layout.setCurrentWidget(self.delete_page)
|
self.content_layout.setCurrentWidget(self.delete_page)
|
||||||
self._select_menu_button("Delete Profile")
|
self._select_menu_button("Delete Profile")
|
||||||
|
|
||||||
def show_debug_page(self):
|
def show_debug_page(self):
|
||||||
logging.info("User navigated to Settings -> Debug Help")
|
core_logger.info("User navigated to Settings -> Debug Help")
|
||||||
self.content_layout.setCurrentWidget(self.debug_page)
|
self.content_layout.setCurrentWidget(self.debug_page)
|
||||||
self._select_menu_button("Debug Help")
|
self._select_menu_button("Debug Help")
|
||||||
|
|
||||||
|
|
@ -8238,7 +8257,7 @@ class Settings(Page):
|
||||||
return failure
|
return failure
|
||||||
|
|
||||||
def evaluate_ticket_public_key(self):
|
def evaluate_ticket_public_key(self):
|
||||||
logging.info("User clicked 'Evaluate Public Key' button")
|
core_logger.info("User clicked 'Evaluate Public Key' button")
|
||||||
failure = self._get_ticket_failure_for_action()
|
failure = self._get_ticket_failure_for_action()
|
||||||
if failure is None:
|
if failure is None:
|
||||||
return
|
return
|
||||||
|
|
@ -8258,13 +8277,13 @@ class Settings(Page):
|
||||||
def on_failed_verification_evaluated(self, result):
|
def on_failed_verification_evaluated(self, result):
|
||||||
message = interpret_key_results(result)
|
message = interpret_key_results(result)
|
||||||
self._write_ticket_recovery_output(message)
|
self._write_ticket_recovery_output(message)
|
||||||
logging.info(f"Public key evaluation result: {message}")
|
core_logger.info(f"Public key evaluation result: {message}")
|
||||||
self.update_status.update_status("Ticket public key evaluation complete.")
|
self.update_status.update_status("Ticket public key evaluation complete.")
|
||||||
self._set_ticket_recovery_busy(False)
|
self._set_ticket_recovery_busy(False)
|
||||||
self._refresh_ticket_recovery_controls()
|
self._refresh_ticket_recovery_controls()
|
||||||
|
|
||||||
def prepare_tickets_with_saved_blind_signatures(self):
|
def prepare_tickets_with_saved_blind_signatures(self):
|
||||||
logging.info("User clicked 'Prepare Tickets even if validation of the server's signature failed' button")
|
core_logger.info("User clicked 'Prepare Tickets even if validation of the server's signature failed' button")
|
||||||
failure = self._get_ticket_failure_for_action()
|
failure = self._get_ticket_failure_for_action()
|
||||||
if failure is None:
|
if failure is None:
|
||||||
return
|
return
|
||||||
|
|
@ -8301,32 +8320,32 @@ class Settings(Page):
|
||||||
self._refresh_ticket_recovery_controls()
|
self._refresh_ticket_recovery_controls()
|
||||||
|
|
||||||
def on_ticket_recovery_error(self, msg):
|
def on_ticket_recovery_error(self, msg):
|
||||||
logging.error(f"Ticket recovery error: {msg}")
|
core_logger.error(f"Ticket recovery error: {msg}")
|
||||||
self._write_ticket_recovery_output(f"EXCEPTION: {msg}")
|
self._write_ticket_recovery_output(f"EXCEPTION: {msg}")
|
||||||
self.update_status.update_status(f"Ticket recovery error: {msg}")
|
self.update_status.update_status(f"Ticket recovery error: {msg}")
|
||||||
self._set_ticket_recovery_busy(False)
|
self._set_ticket_recovery_busy(False)
|
||||||
self._refresh_ticket_recovery_controls()
|
self._refresh_ticket_recovery_controls()
|
||||||
|
|
||||||
def _on_random_toggle(self, checked):
|
def _on_random_toggle(self, checked):
|
||||||
logging.info(f"User toggled random ticket setting to {'on' if checked else 'off'}")
|
core_logger.info(f"User toggled random ticket setting to {'on' if checked else 'off'}")
|
||||||
try:
|
try:
|
||||||
result = modify_random_tickets_setting('on' if checked else 'off', ticket_observer)
|
result = modify_random_tickets_setting('on' if checked else 'off', ticket_observer)
|
||||||
if not (isinstance(result, dict) and result.get('valid')):
|
if not (isinstance(result, dict) and result.get('valid')):
|
||||||
msg = result.get('message', 'failed') if isinstance(result, dict) else 'failed'
|
msg = result.get('message', 'failed') if isinstance(result, dict) else 'failed'
|
||||||
logging.error(f"Could not change random ticket setting: {msg}")
|
core_logger.error(f"Could not change random ticket setting: {msg}")
|
||||||
self.update_status.update_status(f'Could not change setting: {msg}')
|
self.update_status.update_status(f'Could not change setting: {msg}')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.error(f"Exception changing random ticket setting: {e}")
|
core_logger.error(f"Exception changing random ticket setting: {e}")
|
||||||
self.update_status.update_status(f'Could not change setting: {e}')
|
self.update_status.update_status(f'Could not change setting: {e}')
|
||||||
|
|
||||||
def _refresh_tickets_inventory(self):
|
def _refresh_tickets_inventory(self):
|
||||||
if not hasattr(self, 'tickets_inventory_label'):
|
if not hasattr(self, 'tickets_inventory_label'):
|
||||||
return
|
return
|
||||||
logging.info("Refreshing tickets inventory")
|
core_logger.info("Refreshing tickets inventory")
|
||||||
try:
|
try:
|
||||||
unused = get_unused_tickets(ticket_observer)
|
unused = get_unused_tickets(ticket_observer)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.error(f"Error fetching unused tickets: {e}")
|
core_logger.error(f"Error fetching unused tickets: {e}")
|
||||||
self.tickets_inventory_label.setText(f"Error: {e}")
|
self.tickets_inventory_label.setText(f"Error: {e}")
|
||||||
return
|
return
|
||||||
if isinstance(unused, dict) and unused.get('valid'):
|
if isinstance(unused, dict) and unused.get('valid'):
|
||||||
|
|
@ -8409,9 +8428,9 @@ class Settings(Page):
|
||||||
|
|
||||||
if self.enable_gui_logging.isChecked():
|
if self.enable_gui_logging.isChecked():
|
||||||
self.update_status._setup_gui_logging()
|
self.update_status._setup_gui_logging()
|
||||||
logging.info("User enabled GUI logging")
|
core_logger.info("User enabled GUI logging")
|
||||||
else:
|
else:
|
||||||
logging.info("User disabled GUI logging")
|
core_logger.info("User disabled GUI logging")
|
||||||
self.update_status.stop_gui_logging()
|
self.update_status.stop_gui_logging()
|
||||||
|
|
||||||
self.update_status.update_status(
|
self.update_status.update_status(
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue