aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Reiner <nathan@nathanreiner.xyz>2023-03-27 21:28:17 +0200
committerNathan Reiner <nathan@nathanreiner.xyz>2023-03-27 21:28:17 +0200
commitac015d36e4ec4dafe9a0f481ed0fb8c6d6ee3f84 (patch)
tree9ec04ab7e32975fbd9812c08ec505af890133a2b
create keyusb
-rw-r--r--Makefile7
-rw-r--r--config.mk1
-rw-r--r--keyusbctl20
-rw-r--r--usb-unplug.rules1
4 files changed, 29 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..e701613
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,7 @@
+include config.mk
+
+install:
+ sed ./keyusbctl -e "s/\[USB_UUID\]/${USB_UUID}/g" > /usr/local/sbin/keyusbctl
+ cp ./usb-unplug.rules /etc/udev/rules.d/
+ chmod +x /usr/local/sbin/keyusbctl
+ @echo type 'udevadm control --reload' to reload the udev rules
diff --git a/config.mk b/config.mk
new file mode 100644
index 0000000..8387d6d
--- /dev/null
+++ b/config.mk
@@ -0,0 +1 @@
+USB_UUID=YOUR_UUID_HERE
diff --git a/keyusbctl b/keyusbctl
new file mode 100644
index 0000000..1798000
--- /dev/null
+++ b/keyusbctl
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+is_key_plugged_in() {
+ lsblk --raw -o UUID | grep [USB_UUID]
+}
+
+toggle_lock() {
+ if [ -e "/tmp/.keyusb_lock" ]; then
+ rm /tmp/.keyusb_lock
+ else
+ touch /tmp/.keyusb_lock
+ fi
+}
+
+case "$1" in
+ -e)
+ [ -e "/tmp/.keyusb_lock" ] && exit
+ is_key_plugged_in || poweroff;;
+ -t) toggle_lock;;
+esac
diff --git a/usb-unplug.rules b/usb-unplug.rules
new file mode 100644
index 0000000..ab4759f
--- /dev/null
+++ b/usb-unplug.rules
@@ -0,0 +1 @@
+ACTION=="remove", SUBSYSTEM=="usb", RUN+="/usr/local/sbin/keyusbctl -e"