#!/bin/sh

prefix=/usr
exec_prefix=/usr
clientdatadir=/usr/share/jnbackup/client
clientconfdir=/etc/jnbackup/client
clientvardir=/var/lib/jnbackup/client
bindir=/usr/bin
AWK=awk
SUDO=/usr/bin/sudo
VERSION=0.5
client_user=backupc

. ${clientdatadir}/functions

umask 002

echo "Jajcus' Net Backup Client ${VERSION}"

# validate input. Just using read would be dangerous
if ! eval `${AWK} '/^[a-z]+ [0-9]+(-[0-9]+)? [-0-9a-zA-Z._]+( -?[0-9]+)?$/ { print "ACTION=" $1 "; BACKUPID=" $2 "; BACKUP=" $3 "; BACKUPLEVEL=" $4; exit 0 } { print "ERROR=1" ; exit 1}'` || [ "$ERROR" = "1" ] ; then
	echo "400 Request syntax error" 
	exit 1
fi

if ! [ -f ${clientconfdir}/backups/$BACKUP.conf ] ; then
	echo "404 Backup configuration not found."
	exit 1
fi

case $ACTION in
	backup)
		exec 2>${clientvardir}/$BACKUPID-$BACKUP.log
		touch ${clientvardir}/$BACKUPID-$BACKUP.status
		do_backup master backup
		;;
	test)
		exec 2>${clientvardir}/$BACKUPID-$BACKUP.log
		touch ${clientvardir}/$BACKUPID-$BACKUP.status
		do_backup master test
		echo "200 OK"
		exit 0
		;;
	status)
		if [ -f ${clientvardir}/$BACKUPID-$BACKUP.status ] ; then
			cat ${clientvardir}/{$BACKUPID-$BACKUP.status,$BACKUPID-$BACKUP.log}
			#rm ${clientvardir}/{$BACKUPID-$BACKUP.status,$BACKUPID-$BACKUP.log}
			exit 0
		else
			echo "500 Backup failed"
			cat ${clientvardir}/$BACKUPID-$BACKUP.log
			#rm ${clientvardir}/$BACKUPID-$BACKUP.log
			exit 1
		fi
		;;
	cleanup)
		# not done in status, as we are not sure status was retrieved by server succesfully
		rm -rf ${clientvardir}/{$BACKUPID-$BACKUP.status,$BACKUPID-$BACKUP.log}
		;;
	*)
		echo "400 Wrong command"
		exit 1
		;;
esac

exit 1;
