Skip to content

Commit a57dd4c

Browse files
committed
Add device policy changed events handling to System Tray App
1 parent e117759 commit a57dd4c

File tree

1 file changed

+34
-2
lines changed

1 file changed

+34
-2
lines changed

usbguard_simple_gui_py_qt/system_tray_app.py

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,10 +117,18 @@ def _register_dbus_callbacks(self) -> None:
117117
CallbackEventType.DEVICE_PRESENCE_CHANGED,
118118
self._on_device_presence_changed)
119119

120+
self._usbguard_dbus.register_callback(
121+
CallbackEventType.DEVICE_POLICY_CHANGED,
122+
self._on_device_policy_changed)
123+
120124
self._usbguard_dbus.register_callback(
121125
CallbackEventType.DEVICE_PRESENCE_CHANGED_ERROR,
122126
self._on_device_presence_changed_error)
123127

128+
self._usbguard_dbus.register_callback(
129+
CallbackEventType.DEVICE_POLICY_CHANGED_ERROR,
130+
self._on_device_policy_changed_error)
131+
124132
def _on_device_presence_changed(
125133
self,
126134
device: Device,
@@ -134,6 +142,19 @@ def _on_device_presence_changed(
134142
else:
135143
self._show_device_to_be_managed_message(device)
136144

145+
def _on_device_policy_changed(
146+
self,
147+
device: Device,
148+
target_old: RuleTarget,
149+
target_new: RuleTarget,
150+
rule_id: int,
151+
) -> None:
152+
self._tray_icon.showMessage(
153+
f'USB device policy changed for "{device.human_readable_name}"',
154+
f'Rule #{rule_id}: {target_old.value}{target_new.value}\n\n'
155+
f'{device.rule.human_repr}',
156+
QSystemTrayIcon.Information)
157+
137158
def _show_removed_device_message(self, device: Device):
138159
self._tray_icon.showMessage(
139160
f'USB device "{device.human_readable_name}" was removed',
@@ -155,10 +176,21 @@ def _show_device_to_be_managed_message(self, device: Device):
155176
100_000_000)
156177

157178
def _on_device_presence_changed_error(self, error: Exception) -> None:
179+
self._show_error_message(
180+
'Error while processing a '
181+
'device presence change event.',
182+
error)
183+
184+
def _on_device_policy_changed_error(self, error: Exception) -> None:
185+
self._show_error_message(
186+
'An error occurred while processing a '
187+
'device policy change event.',
188+
error)
189+
190+
def _show_error_message(self, description: str, error: Exception) -> None:
158191
self._tray_icon.showMessage(
159192
f'{APP_NAME} - Application Error',
160-
f'An error occurred while processing a device presence change '
161-
f'event.\n\nDetails:\n{error.__class__.__name__} - {str(error)}',
193+
f'{description}\n\nDetails:\n{type(error).__name__} - {error}',
162194
QSystemTrayIcon.Critical,
163195
100_000_000)
164196

0 commit comments

Comments
 (0)