#!/bin/bash ##################### ### i3lock-sentry ### version="0.7" ####### ##################### fail="1" timestamp=$(date +%s) tmpDir="/dev/shm/lockdetect.$USER" input="$tmpDir/.spylist" image="$tmpDir/${timestamp}.jpg" output="$HOME/fails.html" configDir="$HOME/.config/i3lock" cssFile="$configDir/sentry.css" placeholder="$configDir/placeholder.png" timeFormat="%I:%M%P" DETECT_BROWSER() { xbrowser=$(which x-www-browser 2>/dev/null) [ ! -z "$xbrowser" ] && browser="x-www-browser" [ -z "$browser" ] && browser="xdg-open" } LOCK_FAIL() { [ ! -f "$input" ] && rm "$tmpDir"/* 2>/dev/null mkdir -p "$tmpDir" 2>/dev/null LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so /usr/bin/fswebcam "$image" if [ -f "$image" ]; then echo "${timestamp}:$image" >> "$input" else echo "${timestamp}:" >> "$input" fi } LOCK_PARSE() { count="0" if [ -f "$input" ]; then count=$(cat "$input" 2>/dev/null | grep -v ^$ | wc -l) fi if [ "$count" -ge "$fail" ]; then [ ! -f "$cssFile" ] && cp "/etc/xdg/i3lock/sentry.css" "$cssFile" [ ! -f "$placeholder" ] && cp "/etc/xdg/i3lock/placeholder.png" "$placeholder" echo '' > "$output" echo "i3lock ($count)" >> "$output" echo "" >> "$output" echo "" >> "$output" echo "

Failed login count: ${count}

" >> "$output" for attempt in $(cat "$input"); do timecode=$(date -d @$(echo "$attempt" | awk -F ":" '{print $1}') +${timeFormat}) capture=$(echo "$attempt" | awk -F ":" '{print $2}') if [ ! -z "$capture" ]; then echo "" >> "$output" else echo "" >> "$output" fi done echo "
" >> "$output" DETECT_BROWSER $browser "$output" else rm "$tmpDir"/* "$output" 2>/dev/null fi rm "$input" 2>/dev/null } mkdir -p "$configDir" if [ "$1" = "parse" ]; then LOCK_PARSE elif [ "$1" = "fail" ]; then LOCK_FAIL fi ### END ###