From df2f0bc02771d05022820de112fdc5c04956a2a5 Mon Sep 17 00:00:00 2001 From: John Hensley Date: Mon, 9 Dec 2019 16:39:02 -0500 Subject: [PATCH] Simplify sys-usb udev rules/actions By using a single matching strategy in the udev rules, we can simplify this down to one rule and one script for attaching export devices, as the device paths passed to the script for either storage or printer devices will be at equivalent depths. --- dom0/sys-usb.sls | 14 +++----------- sys-usb/99-sd-export-usb.rules | 8 ++++++-- sys-usb/sd-attach-export-device | 6 ++++++ sys-usb/sd-attach-export-disk | 5 ----- sys-usb/sd-attach-export-printer | 5 ----- tests/test_sys_usb.py | 3 +-- 6 files changed, 16 insertions(+), 25 deletions(-) create mode 100755 sys-usb/sd-attach-export-device delete mode 100755 sys-usb/sd-attach-export-disk delete mode 100755 sys-usb/sd-attach-export-printer diff --git a/dom0/sys-usb.sls b/dom0/sys-usb.sls index c33997422..3de5b7b61 100644 --- a/dom0/sys-usb.sls +++ b/dom0/sys-usb.sls @@ -32,18 +32,10 @@ sd-rc-local-udev-rules: - require: - file: sd-rc-local-udev-rules -sd-attach-export-disk: +sd-attach-export-device: file.managed: - - name: /usr/local/bin/sd-attach-export-disk - - source: salt://sd/sys-usb/sd-attach-export-disk - - user: root - - group: root - - mode: 0555 - -sd-attach-export-printer: - file.managed: - - name: /usr/local/bin/sd-attach-export-printer - - source: salt://sd/sys-usb/sd-attach-export-printer + - name: /usr/local/bin/sd-attach-export-device + - source: salt://sd/sys-usb/sd-attach-export-device - user: root - group: root - mode: 0555 diff --git a/sys-usb/99-sd-export-usb.rules b/sys-usb/99-sd-export-usb.rules index e121fc8ed..72f6c8b93 100644 --- a/sys-usb/99-sd-export-usb.rules +++ b/sys-usb/99-sd-export-usb.rules @@ -1,2 +1,6 @@ -ACTION=="add", SUBSYSTEM=="usb", DRIVER=="usb-storage", RUN+="/usr/local/bin/sd-attach-export-disk" -ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:0701??:*", RUN+="/usr/local/bin/sd-attach-export-printer" +# Class 08 == storage, subclass 06 == SCSI +# Class 07 == printer, subclass 01 == printer +# https://www.usb.org/defined-class-codes +# https://www.usb.org/document-library/mass-storage-class-specification-overview-14 +# https://www.usb.org/document-library/printer-device-class-document-11 +ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:0806??:*|*:0701??:*", RUN+="/usr/local/bin/sd-attach-export-device" diff --git a/sys-usb/sd-attach-export-device b/sys-usb/sd-attach-export-device new file mode 100755 index 000000000..1140bdd54 --- /dev/null +++ b/sys-usb/sd-attach-export-device @@ -0,0 +1,6 @@ +#!/bin/bash + +# udev action for attaching USB export devices to sd-export-usb + +QDEVNAME="$(basename $DEVPATH)" +echo sys-usb "$QDEVNAME" | qrexec-client-vm sd-export-usb qubes.USBAttach diff --git a/sys-usb/sd-attach-export-disk b/sys-usb/sd-attach-export-disk deleted file mode 100755 index 170ad9596..000000000 --- a/sys-usb/sd-attach-export-disk +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -# udev action for attaching USB storage devices to sd-export-usb - -echo sys-usb $(basename $(dirname $DEVPATH)) | qrexec-client-vm sd-export-usb qubes.USBAttach diff --git a/sys-usb/sd-attach-export-printer b/sys-usb/sd-attach-export-printer deleted file mode 100755 index 993e221a0..000000000 --- a/sys-usb/sd-attach-export-printer +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -# udev action for attaching USB printers to sd-export-usb - -echo sys-usb $(basename $DEVPATH) | qrexec-client-vm sd-export-usb qubes.USBAttach diff --git a/tests/test_sys_usb.py b/tests/test_sys_usb.py index 3be3c0070..b57946385 100644 --- a/tests/test_sys_usb.py +++ b/tests/test_sys_usb.py @@ -11,8 +11,7 @@ def setUp(self): def test_files_are_properly_copied(self): self.assertTrue(self._fileExists("/etc/udev/rules.d/99-sd-export-usb.rules")) - self.assertTrue(self._fileExists("/usr/local/bin/sd-attach-export-disk")) - self.assertTrue(self._fileExists("/usr/local/bin/sd-attach-export-printer")) + self.assertTrue(self._fileExists("/usr/local/bin/sd-attach-export-device")) def load_tests(loader, tests, pattern):