#!/bin/sh
#
# Note that any setup should come before the sessreg command as
# that must be 'exec'ed for the pid to be correct (sessreg uses the parent
# pid)
#
# Note that output goes into the .xsession-errors file for easy debugging
#
PATH="/usr/bin:$PATH"
HOME="/tmp"
export LANG=ru_RU.UTF-8

USERNAME=$USER

trim() {
    local var="$*"
    # remove leading whitespace characters
    var="${var#"${var%%[![:space:]]*}"}"
    # remove trailing whitespace characters
    var="${var%"${var##*[![:space:]]}"}"
    echo -n "$var"
}

LASTSUC=$(last -wFR $USERNAME | grep -v "still logged in" | head -n1 | awk '{print ($3,$4,$5,$6)}')
LASTSUC=$(trim $LASTSUC)

LASTSUC_RU=$(date -d "$LASTSUC")
LASTSUCSEC=$(date -d "$LASTSUC" "+%s")
lastb -wFR $USERNAME > /tmp/badlogins
unset -v FAILSCOUNT

FAILSCOUNT=$(
        grep $USERNAME /tmp/badlogins | {
                 while read line ; do
                        FAILTIME=$(echo $line | awk '{print ($3,$4,$5,$6)}')
                        FAILTIMESEC=$(date -d "$FAILTIME" "+%s")
                        if [[ $LASTSUCSEC < $FAILTIMESEC ]] ; then
                            ((FAILSCOUNT++))
                        else
                                break;
                        fi
                done
                echo $FAILSCOUNT
        }
)
FAILSCOUNT=${FAILSCOUNT:-0}

unset -v FAILSLASTDATE_RU
FAILSLASTDATE_RU=$(
        grep $USERNAME /tmp/badlogins | {
                 while read line ; do
                        FAILTIME=$(echo $line | awk '{print ($3,$4,$5,$6)}')
                        FAILTIMESEC=$(date -d "$FAILTIME" "+%s")
                        if [[ $LASTSUCSEC < $FAILTIMESEC ]] ; then
                             FAILSLASTDATE_RU=$(date -d "$FAILTIME" )
                            break;
                        fi
                done
                echo $FAILSLASTDATE_RU
        }
)
FAILSLASTDATE_RU=${FAILSLASTDATE_RU:-""}


if [[ "$LASTSUC" == "" ]] ; then
        TEXTMSG="Вход под учетной записью $USER еще не выполнялся"
else
        TEXTMSG="Последний успешный вход под учетной записью $USERNAME состоялся: $LASTSUC_RU";
        if [[ $FAILSCOUNT > 0 ]]; then
        TEXTMSG="$TEXTMSG
Последний неудачный вход: $FAILSLASTDATE_RU"
        fi
        TEXTMSG="$TEXTMSG
Количество неудачных попыток входа: $FAILSCOUNT"
fi

/usr/bin/zenity --warning --text "$TEXTMSG" --no-wrap
