commit 6f0a03b88dab13c5b9dbb264ad6087abda50c90a from: Benjamin Stürz date: Fri Jul 19 13:14:12 2024 UTC add pinentry-dmenu2 as a replacement for pinentry-dmenu commit - bf04304b7d9c83a06eb91300bb5e6293c46e66cd commit + 6f0a03b88dab13c5b9dbb264ad6087abda50c90a blob - 46d97573ed2e8331f836b354ea3e2a1fe6950016 blob + 186e69be0ae503732e3a9db3d3456a3041bd5276 --- Makefile +++ Makefile @@ -41,10 +41,11 @@ HDR_PD = master.h \ pinentry-dmenu/pinentry/secmem-util.h \ pinentry-dmenu/pinentry/pinentry.h +SRC_PD2 = pinentry-dmenu2.sh MAN = dwm/dwm.1 st/st.1 dmenu/dmenu.1 dmenu/stest.1 slock/slock.1 pinentry-dmenu/pinentry-dmenu.1 -all: bin/dwm bin/st bin/bedstatus bin/dmenu bin/stest bin/xbgcd bin/slock bin/pinentry-dmenu +all: bin/dwm bin/st bin/bedstatus bin/dmenu bin/stest bin/xbgcd bin/slock bin/pinentry-dmenu bin/pinentry-dmenu2 check: find etc/common etc/$$(uname) -not -type d | awk '{a=$$0; sub(/etc\/[^\/]+/, "/etc", a); system("diff -u " $$0 " " a)}' @@ -110,4 +111,9 @@ bin/pinentry-dmenu: ${SRC_PD} ${HDR_PD} @mkdir -p bin ${CC} -o $@ ${SRC_PD} ${CFLAGS} `pkg-config --cflags --libs libassuan gpg-error fontconfig freetype2 x11 xft xinerama` +bin/pinentry-dmenu2: ${SRC_PD2} + @mkdir -p bin + cp -f ${SRC_PD2} $@ + chmod +x $@ + .PHONY: all clean install blob - /dev/null blob + 427c988e0c24ae43fd79d1a359083d8dd58d4256 (mode 644) --- /dev/null +++ pinentry-dmenu2.sh @@ -0,0 +1,228 @@ +#!/bin/sh +# Author: Benjamin Stürz +# License: ISC + +#logfile="$HOME/pinentry.log" +logfile="/dev/null" + +log() { + echo "$*" >> "$logfile" +} + +send() { + log "P: $*" + echo "$*" +} + +ok() { + send 'OK' +} + +unimp() { + send 'ERR 536870981 Not implemented ' +} + +reset_vars() { + title= + prompt= + desc= +} + +reset_vars + +log "A: $*" +send 'OK Pleased to meet you' + +while read -r line; do + log "C: $line" + cmd=$(echo "$line" | awk '{print $1}' | tr '[[:lower:]]' '[[:upper:]]') + args=$(echo "$line" | awk '{for (i=2; i' + fi + ;; + CONFIRM) + resp=$(printf 'No\nYes\n' | dmenu -p "$prompt") + + if [ $? -eq 0 ]; then + case "$resp" in + Yes) + ok + ;; + No) + send 'ERR 114 Not confirmed ' + ;; + *) + send 'ERR 99 Operation cancelled ' + ;; + esac + else + send 'ERR 99 Operation cancelled ' + fi + ;; + MESSAGE) + # TODO + unimp + ;; + SETQUALITYBAR) + # TODO + ok + ;; + SETQUALITYBAR_TT) + # TODO + ok + ;; + SETGENPIN) + # TODO + ok + ;; + SETGENPIN_TT) + # TODO + ok + ;; + GETINFO) + arg0=$(echo "$args" | awk '{print $1}') + case "${arg0}" in + flavor) + send 'D dmenu2' + ok + ;; + pid) + send "D $$" + ok + ;; + version) + send 'D 0.0.0' + ok + ;; + ttyinfo) + send "D - - - - $(id -u)/$(id -g) 0" + ok + ;; + *) + send 'ERR 83886360 IPC parameter error ' + ;; + esac + ;; + SETTITLE) + title=$args + ok + ;; + SETTIMEOUT) + # TODO + ok + ;; + CLEARPASSPHRASE) + # TODO + send 'ERR 83886337 General IPC error ' + ;; + esac +done