
. ${serverconfdir}/config

usage () {

	echo "Usage:"
	echo "     backups <action> profile"
	echo 
	echo "		<action> may be 'test' or 'backup"
}

gen_backupid () {

	ID1=""; ID2=""
	if [ -f ${servervardir}/lastid ] ; then
		eval `awk 'BEGIN { FS = "-" } { print "ID1=" $1 "; ID2=" $2 }' ${servervardir}/lastid`
	fi
	NEWID=`date +"%Y%m%d"`
	if [ "$NEWID" = "$ID1" ] ; then
		if [ -z "$ID2" ] ; then
			ID2=1
		else
			ID2=`expr $ID2 + 1`
		fi
		BACKUPID="$NEWID-$ID2"
	else 
		BACKUPID="$NEWID"
	fi
	echo >&2
	echo "Backup-ID: $BACKUPID" >&2
}

do_backup () {

	if [ -z "$STORAGE" -o "$STORAGE" != "disk" ] ; then
		echo "Unknown storage: $STORAGE" >&2
		return 1
	fi

	if [ ! -d "$STORAGE_PATH" ] ; then
		echo "Storage path doesn't exits: $STORAGE_PATH" >&2
		return 1
	fi

	if [ "$ACTION" != "test" ] ; then
		if [ ! -d  $STORAGE_PATH/$BACKUPID ] ; then
			mkdir $STORAGE_PATH/$BACKUPID
		fi
		echo "$BACKUPID" > ${servervardir}/lastid
	fi

	if [ -n "$BACKUPLEVEL" -a "$BACKUPLEVEL" != "-1" ] ; then
		BACKUPFILE="$CLIENT-$BACKUPLEVEL-$BACKUP"
	else
		BACKUPFILE="$CLIENT-$BACKUP"
	fi

	echo 
	echo "Connecting to $CLIENT..." >&2
	
	echo "$ACTION $BACKUPID $BACKUP $BACKUPLEVEL" | ${SSH} ${SSHFLAGS} ${client_user}@$CLIENT | {
		echo "Connected" >&2
		
		read WELCOME
		echo "peer: $WELCOME"
		
		read STATUS INFO
		
		if [ "$STATUS" != "200" ] ; then
			echo "Backup setup failed: $STATUS $INFO" >&2
			exit 10
		fi

		read DESCR

		echo "Starting transfer: $BACKUP ($DESCR)" >&2

		if [ "$ACTION" = "backup" ] ; then
			cd $STORAGE_PATH/$BACKUPID/ || exit 10
			${TIME} -f "Backup time: %E" cat > $BACKUPFILE
			ls -l $BACKUPFILE >&2
		fi
	} 
	if [ "$?" -gt 0 -a "$?" -ne "10" ] ; then
		echo "Conection failed!" 2>&1 
		return 1 
	fi	

	echo "Backup finished." >&2
	
	echo
	echo "Checking status..." >&2
	echo "status $BACKUPID $BACKUP" | ${SSH} ${SSHFLAGS} ${client_user}@$CLIENT | {
		echo "Connected" >&2
		
		read WELCOME
		echo "peer: $WELCOME"
		
		read STATUS INFO
		
		if [ "$STATUS" != "200" ] ; then
			echo "Backup failed: $STATUS $INFO" >&2
			echo >&2
			echo "Client log:" >&2
			cat >&2
			exit 10
		fi

		echo "Backup succeed" >&2
		echo "Client log:" >&2
		cat >&2
	} 
	if [ "$?" -gt 0 -a "$?" -ne "10" ] ; then
		echo "Conection failed!" 2>&1 
		return 1 
	fi
	
	echo
	echo "Cleaning up..." >&2
	echo "cleanup $BACKUPID $BACKUP" | ${SSH} ${SSHFLAGS} ${client_user}@$CLIENT > /dev/null

	echo >&2
	echo "Thank you." >&2
}

# vi: syntax=sh
