#!/bin/ash

# cloner imaging shell

# to be used on the server-side of imaging for key-based ssh rsyncs

# copyright 2004 vagrant@freegeek.org, distributed under the terms of the
# GNU General Public License version 2 or any later version.

logfile="/tmp/rsyncshel.logfile"

if [ -z "$SSH_ORIGINAL_COMMAND" ] || [ -z "$SSH_CLIENT" ]; then
  exit 1
fi

echo >> $logfile
date >> $logfile
echo "connected: $SSH_CLIENT" >> $logfile
echo "$SSH_ORIGINAL_COMMAND" >> $logfile

image=$(basename "$SSH_ORIGINAL_COMMAND")

if [ -z "$image" ]; then
  image=newimage
fi

clonedir="/var/lib/lessdisks/usr/local/clones"
#clonedir="/tmp/testcloner"

for item in $SSH_ORIGINAL_COMMAND; do
  test=$(echo $item | egrep $clonedir)
  if [ -n "$test" ]; then
    image_dir=$(dirname $test)
  fi
done

echo "image dir: $image_dir" >> $logfile
echo "image: $image" >> $logfile

command="rsync --server -avvWHR --delete --delete-excluded . $clonedir/$image/"

# our shoddy excuse for security... only do the command if the
# directory is the default cloner directory, prevents from
# using ../ to copy somewhere else... 

if [ "$clonedir" = "$image_dir" ]; then
  echo "$commmand" >> $logfile
  $command
fi
