#!/bin/bash 

DIR=/home/smartix/secure
AUTH_FLAG=$DIR/auth.flag
LOG=$DIR/main.log
CONN=/home/smartix/machine/conf/connector.properties

function log {
    /usr/bin/echo "$(/usr/bin/date) pid=$$ | $1" >> $LOG
    /usr/bin/chown smartix.smartix $LOG
}

function checkdirectory {
    if [ ! -d "$1" ]; then
        /usr/bin/mkdir $1
        if [ $? -ne 0 ]; then
            log "Can't create directory $1"
            exit 1
        fi
        /usr/bin/chown smartix.smartix $1
    fi
}

function touchex {
    log "Create file: $1"
    /usr/bin/touch $1
    /usr/bin/chown smartix.smartix $1
}

function rmex {
    log "Delete file: $1"
    rm -f $1
}


function logout1 {
    log "Processes: $(/usr/bin/who -uH)"
    touchex $AUTH_FLAG
    pid="$(/usr/bin/who -uH | /usr/bin/grep smartix | /usr/bin/grep tty | /usr/bin/awk '{print $(NF-1)}')"
    if [ -n "$pid" ] ; then
        log "Kill process $pid"
        /usr/bin/kill $pid
    fi
}

function isNotConfigured {
    log "Check configured"
    if [ -n "$(cat $CONN | grep -E 'apiKey=.{3,}')" ]; then
        log "Api key is exist"
        return 1
    fi
    log "Api key is not set, nothing to do"
    return 0
}


# Вызывается при подключении клавиатуры
function onKeyboard {
    log "Process add keyboard event"
    if isNotConfigured ; then
        return 0;
    fi

    usr="$(/usr/bin/w | /usr/bin/grep smartix | /usr/bin/grep xfce)"
    if [ -n "$usr" ] ; then
        log "User desktop active, logout user"
        logout1
        log "Logout success!"
    else
        log "User desktop is not active, nothing to do"
    fi
}

# Вызывается при логине
function onLogin {
    log "Process login, check api-key"
    if isNotConfigured ; then
        return 0;
    fi

    keybs="$(/usr/bin/ls /dev/input/by-path/*usb*-kbd  2> /dev/null)"
    if [ -n "$keybs" ]; then
        log "Keyboard connected"
        # если флаг авторизации есть - значит нас уже выкинули и мы могли попасть сюда только авторизовавшись
	    # если есть флаг true в json тогда проверяй флаг авторизации
       key=$(cat /home/smartix/machine/data/refs/point.json | awk '/lockDesktopOnKeyboard/{print $2}' | cut -d "," -f1)   	 
       if [[ ${key} == "true" ]]; then
 		if [ ! -f "$AUTH_FLAG" ]; then
            	logout1
        	fi
       fi
       else
                log "Keyboard not connected"
       fi
}


# Вызывается при старте системе. Задача - очистка от всех флагов
function clean {
    log "Clean files"
    rmex $AUTH_FLAG
}


log "Run script 1 $0"
checkdirectory $DIR

case $1 in
    clean)
        clean
    ;;
    on-keyboard)
        onKeyboard
    ;;
    on-login)
        onLogin
    ;;
    *)
        log "Wrong function"
        exit 1
esac

log "Finished"
log ""
