#!/bin/sh
ssh_from=`echo $SSH_CLIENT | awk '{print$1}'`
ssh_to=`echo $SSH_CONNECTION | awk '{print$4}'`
log_file=/data/irsync/.sshval_log

if [ ! -e "$log_file" ]; then
        touch $log_file
        chmod 644 $log_file
fi

if [ "$(wc -l $log_file | awk '{print$1}')" -gt "50000" ]; then
        rm -f $log_file.1
        tail -n 25000 $log_file > $log_file.1
        mv $log_file.1 $log_file
        touch $log_file
        chmod 644 $log_file
fi

eout() {
APPN="sshval"
arg=$1
        if [ ! "$arg" == "" ]; then
                echo "$(date +"%b %d %H:%M:%S") $(hostname -s) $APPN($$): $arg"                                                                                                  >> $log_file
                if [ "$2" == "1" ]; then
                        echo "$APPN($$): $arg"
                fi
        fi
}

case "$SSH_ORIGINAL_COMMAND" in
*\&*)
        eout "ssh command rejected from $ssh_from: $SSH_ORIGINAL_COMMAND" 1
        ;;
*\;*)
        eout "ssh command rejected from $ssh_from: $SSH_ORIGINAL_COMMAND" 1
        ;;
rsync\ --server*)
        eout "ssh command accepted from $ssh_from: $SSH_ORIGINAL_COMMAND"
        $SSH_ORIGINAL_COMMAND
        ;;
cp*)
        eout "ssh command accepted from $ssh_from: $SSH_ORIGINAL_COMMAND"
        $SSH_ORIGINAL_COMMAND
        ;;
cd*)
        eout "ssh command accepted from $ssh_from: $SSH_ORIGINAL_COMMAND"
        $SSH_ORIGINAL_COMMAND
        ;;
mkdir*)
        eout "ssh command accepted from $ssh_from: $SSH_ORIGINAL_COMMAND"
        $SSH_ORIGINAL_COMMAND
        ;;
touch*)
        eout "ssh command accepted from $ssh_from: $SSH_ORIGINAL_COMMAND"
        $SSH_ORIGINAL_COMMAND
        ;;
*)
        if [ -z "$SSH_ORIGINAL_COMMAND" ]; then
                eout "interactive shell rejected from $ssh_from" 1
        else
                eout "ssh command rejected from $ssh_from: $SSH_ORIGINAL_COMMAND                                                                                                 " 1
        fi
        ;;
esac
