#!/bin/bash
#
# (c) 2007 Instituto Superior Técnico
#
# License: GPL-2
#
#############################################
#Script para impressao num host remoto#######
#############################################

# (c) 2007 Nuno Rodrigues <nunorodrigues84@gmail.com>
# (c) 2007 Instituto Superior Técnico

function usage {
	echo "$0 [--user <remote_user>] [--host remote_print_server] [-P <printer_name>] <path to file to print>"
	echo "Default remote_user = local_user"
	echo "Default remote_print_server = \"raquel.ist.utl.pt\""
	echo "Default printer_name = \"Printer-09\""
	echo "Accepts only one file to print"
}

RUSER=${USER}
RHOST=raquel.tagus.ist.utl.pt
PRINTER=printer-09

while [ $# -ge 1 ] ; do
    case $1 in
	--user)
	    RUSER=$2
	    shift
	    shift
	    ;;
	--host)
	    RHOST=$2
	    shift
	    shift
	    ;;
	-P)
	    PRINTER=$2
	    shift
	    shift
	    ;;
	-*|--*)
	    echo "Unknown option $*"
	    usage
	    exit 1
	    ;;
	*)
	    if [ $# -eq 1 ] ; then
		FILE_PATH="$1"
		break
	    else
		echo "Too many files or unknown option $*"
		usage
		exit 1
	    fi
    esac
done

if [ ! -r "${FILE_PATH}" ]; then
    echo "ERRO! O ficheiro nao existe ou nao e legivel :$FILE_PATH"
    usage
else
    FILE_NAME=`basename "${FILE_PATH}"`
    echo "Nome do ficheiro $FILE_NAME"
fi

echo $TMP_DIR

#Primeira ligacao, para criar a directoria
TMP_DIR=`ssh $RUSER@$RHOST mktemp -d /tmp/lpremote.XXXXXXXX`

#Segunda ligacao: copiar o ficheiro para la
rsync -e "ssh" "$FILE_PATH" $RUSER@$RHOST:${TMP_DIR}/ || exit 2

#Terceira vez, mandamos imprimir e removemos a directoria e o ficheiro de impressao acabados de criar
echo A imprimir o ficheiro $FILE_NAME ;
ssh $RUSER@$RHOST "cd $TMP_DIR; \
lpr -P $PRINTER \"$FILE_NAME\" ;\
echo A remover directoria $TMP_DIR ;\
rm -r $TMP_DIR; " || exit 3

