#!/bin/sh
#
#  SNMP download assistance script
#
#  $1 is a command, e.g., ald.<number> or atc200
#  $2 is the URL of the indicated resource
#  $3 is the username
#  $4 is the password
#  Make legible
#
#  COMMAND
#  FILE     is the basename of the URL
#  ULTYPE   is the upload type
#  VENDOR   is the vendor field
#
#
#/tmp/fmwupg will exist if this script is active, shouldn't exist otherwise
FLAGFILE=/tmp/fmwupg
if [ -e "$FLAGFILE" ]; then
   exit
fi
trap 'rm $FLAGFILE' EXIT
#touch $FLAGFILE
export URL=`echo $2 | sed "s^ftp://^^"`
export COMMAND="$1"
export USERNAME="$3"
export PASSWORD="$4"

export FILE=`basename $URL`
export ULTYPE=`echo $FILE | sed "s/.......//;s/_.*//;s/^.*\(..\)$/\1/"`
export VENDOR=`echo $FILE | sed "s/....//;s/-.*//"`
export FILETYPE=`echo $FILE | sed "s/.*\.//"`

if [ "$COMMAND" = "ATC300" ] ; then
        echo "0" > "$FLAGFILE"
        echo '#####STARTING'
    
        if [ "$ULTYPE" = "AT" ]; then
            if [ "$VENDOR" = "AN" ]; then
		DEST="/tmp/Antenna.db"
		export FINALDEST="Antenna.db"
		export LOGGER="Antenna.tag"
            else
                DEST="/tmp/Antenna$VENDOR.db"
                export FINALDEST="Antenna$VENDOR.db"
       	        export LOGGER="Antenna$VENDOR.tag"
                echo '#####CHECKING'
                if [ -z `echo $FILE | sed -n "/.*.ascu\$/p"` ]; then
                    URL=""
                else
                    if [ -n "$USERNAME" ]; then
                        USER="$USERNAME:$PASSWORD@"
                    else
                        USER=""
	            fi
                fi      
            fi
	elif [ "$FILETYPE" = "ar1t" ]; then
		DEST="/tmp/ACRET1-TABLE.ar1t"
		export FINALDEST="ACRET1-TABLE.ar1t"
		export LOGGER="ACRET1.tag"
                if [ -z `echo $FILE | sed -n "/.*.ar1t\$/p"` ]; then
                    URL=""
                else
                    if [ -n "$USERNAME" ]; then
                        USER="$USERNAME:$PASSWORD@"
                    else
                        USER=""
	            fi
                fi      
        else
	    DEST="+"
            export LOGGER="Firmware.tag"
            export FINALDEST="swupdate.tar"
            echo '#####CHECKING'
            if [ -z `echo $FILE | sed -n "/.*.tar\$/p"` ]; then
		URL=""
            else
	        if [ -n "$USERNAME" ]; then
		    USER="$USERNAME:$PASSWORD@"
	        else
		    USER=""
	        fi
            fi
        fi
    
        if [ -z "$URL" ]; then
            if [ -z "$RESULT" ]; then
                RESULT="A valid URL for the firmware file must be provided"
            fi
            if [ -z "$BUSY" ]; then
                unlock boot
            fi
        else
            echo '#####MARKING'
	    START=`date +%s`
	    STATUS=`ascu_db_trans -db Error.db -f "	DOWNLOAD_STATUS" | cut -f 1`
    
	    setstat -d 0 -s $STATUS
            echo '#####FETCHING'
            echo "Transferring firmware from ftp://$URL"
            RESULT=`wget -O $DEST ftp://$USER$URL 2>&1`
            echo "Got $? for an answer"
            if [ $? = 0 ]; then
                echo '#####INSTALLING'
                let DELTA=`date +%s`-$START
                if [ "$ULTYPE" = "AT" ]; then	#this is an antenna table download
			if [ -f "$DEST" ]; then
				echo "<tr><td align=center>$FINALDEST</td><td align=center>$URL</td><td align=center>`date`</td></tr>" >/var/ascu/$LOGGER
				BYTES=`ls -l $DEST | sed "s/  */	/g" | cut -f 5`
				echo "Transferred $BYTES bytes in $DELTA seconds"
				mv $DEST /var/ascu
				echo -n > /var/run/Dirty.db
				echo "Antenna table installed successfully"
				FAIL=""
				kill `cat /var/run/snmpd.pid`
                        else
                                FAIL="Antenna table installation was unsuccessful"
                        fi
		elif [ "$FILETYPE" = "ar1t" ]; then    #this is an Accuret table
			if [ -f "$DEST" ]; then
                		echo "<tr><td align=center>$FINALDEST</td><td align=center>$URL</td><td align=center>`date`</td></tr>" >/var/ascu/$LOGGER
				BYTES=`ls -l $DEST | sed "s/  */	/g" | cut -f 5`
				echo "Transferred $BYTES bytes in $DELTA seconds"
				mv $DEST /var/ascu
				echo -n > /var/run/Dirty.db
				RESULT="<b>AccuRET antenna table installed successfully</b>"
				FAIL=""
				kill `cat /var/run/snmpd.pid`
			else
				FAIL="AccuRET antenna table installation was unsuccessful"
			fi
		elif [ "$FILETYPE" = "tar" ]; then	#this is a firmware download
                        if [ -f "$DEST" ]; then
                                echo "<tr><td align=center>$FILE</td><td align=center>$URL</td><td align=center>`date`</td></tr>" >/var/ascu/$LOGGER
                                BYTES=`ls -l $DEST | sed "s/  */	/g" | cut -f 5`
                                echo "Transferred $BYTES bytes in $DELTA seconds"
                                mv $DEST /var/ascu/uploads/uploads/$FINALDEST
                                RESULT="Firmware downloaded successfully"
                                FAIL="Downloaded firmware will be installed at the next reboot"
                        else
                                FAIL="Firmware download was unsuccessful"
                        fi
		fi
	    fi

            setstat -d 0 -c $STATUS
            sleep 2
        fi
fi
