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):