From 4a3ff90d687da3f51e3d2b9ea5d68d85920db57e Mon Sep 17 00:00:00 2001 From: Maximilian Friedersdorff Date: Mon, 22 Jul 2019 10:24:42 +0100 Subject: [PATCH] Modify the logic of lock script Do not allow locking while smartcard is still plugged in --- states/sway/files/config.jinja | 2 +- states/sway/files/lock | 29 ++++++++++++++++++++--------- states/sway/init.sls | 2 +- 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/states/sway/files/config.jinja b/states/sway/files/config.jinja index af3a8b2..e474512 100644 --- a/states/sway/files/config.jinja +++ b/states/sway/files/config.jinja @@ -106,7 +106,7 @@ mode "$ratpoison" { bindsym Shift+e exec 'swaymsg mode "default"; swaymsg exec bemenu-run' - bindsym $mod+l exec 'swaymsg mode "default"; "lock.{{ host }}"' + bindsym $mod+l exec 'swaymsg mode "default"; "lock.nosmartcard"' bindsym Escape mode "default" } diff --git a/states/sway/files/lock b/states/sway/files/lock index 7549837..050e67a 100644 --- a/states/sway/files/lock +++ b/states/sway/files/lock @@ -1,22 +1,33 @@ #!/bin/sh NAG_MSG="Smartcard is still plugged in, not locking! \ -Lock again to force locking." +Remove now to lock." +NOLOCK_MSG="Smartcard was not removed, did not lock!" LOCK_CMD="swaylock " LOCK_CMD+=" -i HDMI-A-2:~/Pictures/lockscreen_1080_1.png" LOCK_CMD+=" -i HDMI-A-3:~/Pictures/lockscreen_1080_2.png" -if [ $(pgrep -c lock.{{ grains['host'] }}) -gt 1 ]; then - pkill -f "$NAG_MSG" - $LOCK_CMD +if [ $(pgrep -c lock.magnesium) -gt 1 ]; then + exit else gpg --card-status > /dev/null if [ $? -ne 2 ]; then - gpg --card-status - echo $? - swaynag -m "$NAG_MSG" --type warning - else - $LOCK_CMD + swaynag -m "$NAG_MSG" --type warning& + + counter=0 + while [ $? -ne 2 ]; do + if [ $counter -gt 20 ]; then + pkill -f "$NAG_MSG" + swaynag -m "$NOLOCK_MSG" --type error& + exit + fi + + sleep 1 + counter=$(bc <<<"${counter}+1") + gpg --card-status > /dev/null + done + pkill -f "$NAG_MSG" fi + $LOCK_CMD fi diff --git a/states/sway/init.sls b/states/sway/init.sls index 010484d..4b04205 100644 --- a/states/sway/init.sls +++ b/states/sway/init.sls @@ -23,7 +23,7 @@ sway config: lock script: file.managed: - - name: {{ grains['homedir'] }}/.local/bin/lock.{{ grains['host'] }} + - name: {{ grains['homedir'] }}/.local/bin/lock.nosmartcard - source: {{ grains['stateroot'] }}/sway/files/lock - template: jinja - user: {{ grains['user'] }} -- 2.46.2