Skip to content

Commit d462bfc

Browse files
committed
Allow fewer qubes to use the U2F proxy
Most qubes are not intended to connect to the U2F proxy. Trim the selection down by hiding improper qubes that should never be clients, such as templates, disposable templates, netvm, AudioVM, GUIVM.
1 parent e96edda commit d462bfc

2 files changed

Lines changed: 22 additions & 7 deletions

File tree

qubes_config/global_config/usb_devices.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
from qubesadmin.device_protocol import DeviceCategory
2828

2929
from ..widgets.gtk_widgets import TokenName, TextModeler, VMListModeler
30-
from ..widgets.utils import get_feature, apply_feature_change
30+
from ..widgets.utils import get_feature, get_boolean_feature, apply_feature_change
3131
from ..widgets.gtk_utils import ask_question, show_error
3232
from .page_handler import PageHandler
3333
from .policy_rules import RuleTargetedAdminVM, Rule
@@ -465,13 +465,16 @@ def load_rules_for_usb_qube(self):
465465
self.error_handler.clear_all_errors()
466466

467467
for vm in self.qapp.domains:
468-
if vm.features.check_with_template(self.SUPPORTED_SERVICE_FEATURE):
469-
if vm == usb_qube:
470-
continue
468+
if vm.features.check_with_template(self.SUPPORTED_SERVICE_FEATURE) and not (
469+
vm == usb_qube
470+
or vm.klass == "TemplateVM"
471+
or getattr(vm, "template_for_dispvms", False)
472+
or getattr(vm, "provides_network", False)
473+
or get_boolean_feature(vm, "service.audiovm")
474+
or get_boolean_feature(vm, "service.guivm")
475+
):
471476
self.available_vms.append(vm)
472-
if get_feature(vm, self.SERVICE_FEATURE):
473-
if vm == usb_qube:
474-
continue
477+
if get_feature(vm, self.SERVICE_FEATURE) and not vm == usb_qube:
475478
self.initially_enabled_vms.append(vm)
476479

477480
if not self.available_vms:

qubes_config/tests/test_usb_devices.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -981,6 +981,12 @@ def test_devices_handler_unsaved(test_qapp, test_policy_manager, real_builder):
981981
b"_function='0' _bus='00' _libvirt_name='pci_0000_00_0d_0' "
982982
b"_device='0d'\n"
983983
)
984+
test_qapp.expected_calls[
985+
("test-vm", "admin.vm.feature.Get", "service.audiovm", None)
986+
] = b"0\x00"
987+
test_qapp.expected_calls[
988+
("test-vm", "admin.vm.feature.Get", "service.guivm", None)
989+
] = b"0\x00"
984990

985991
handler = DevicesHandler(test_qapp, test_policy_manager, real_builder)
986992

@@ -1023,6 +1029,12 @@ def test_devices_handler_detect_usbvms(test_qapp, test_policy_manager, real_buil
10231029
b"_function='0' _bus='00' _libvirt_name='pci_0000_00_0d_0' "
10241030
b"_device='0d'\n"
10251031
)
1032+
test_qapp.expected_calls[
1033+
("test-vm", "admin.vm.feature.Get", "service.audiovm", None)
1034+
] = b"0\x00"
1035+
test_qapp.expected_calls[
1036+
("test-vm", "admin.vm.feature.Get", "service.guivm", None)
1037+
] = b"0\x00"
10261038

10271039
handler = DevicesHandler(test_qapp, test_policy_manager, real_builder)
10281040

0 commit comments

Comments
 (0)