#!/bin/sh
# script to parse the output from XORP load/save
# to the format expected by busybox utils tftp, ftpget,
# ftpput, and wget

METHOD=$1
LOCALFILE=$2
REMOTEFILE=$3

PROTOCOL=`echo $REMOTEFILE | cut -d':' -f1`
SERVER=`echo $REMOTEFILE | cut -d'/' -f3`
REMOTEFILE=`echo $REMOTEFILE | cut -d'/' -f4-100`
#REMOTEFILE="/$REMOTEFILE"

if [ `echo "$SERVER" | grep '@'` ]; then
  UNAME=`echo "$SERVER" | cut -d'@' -f1`
  if [ `echo "$UNAME" | grep ':'` ]; then
    PASSWD=`echo "$UNAME" | cut -d':' -f2`
    UNAME=`echo "$UNAME" | cut -d':' -f1`
  fi
  SERVER=`echo "$SERVER" | cut -d'@' -f2`
fi
  
if [ "$METHOD" == "put" ]; then
  case "$PROTOCOL" in
    tftp) tftp -l $LOCALFILE -r $REMOTEFILE -p $SERVER
          ;;
     ftp) if [ -n "$UNAME" ]; then OPTIONS="-u $UNAME"; fi
          if [ -n "$PASSWD" ]; then OPTIONS="$OPTIONS -p $PASSWD"; fi
          ftpput $OPTIONS $SERVER $REMOTEFILE $LOCALFILE
          ;;
  esac 

  if [ "$?" != "0" ]; then
    echo "error trying to save the file"
    exit 1
  fi
elif [ "$METHOD" == "get" ]; then
  case "$PROTOCOL" in 
   tftp) tftp -l $LOCALFILE -r $REMOTEFILE -g $SERVER
         ;;
    ftp) if [ -n "$UNAME" ]; then OPTIONS="-u $UNAME"; fi
         if [ -n "$PASSWD" ]; then OPTIONS="$OPTIONS -p $PASSWD"; fi
         ftpget $OPTIONS $SERVER $LOCALFILE $REMOTEFILE
         ;;
   http) wget -O $LOCALFILE http://$SERVER$REMOTEFILE
         ;;
  esac
else 
  exit 1
fi

exit 0
