#!/bin/sh
#--------------------
# PSMT 2.3
# 2013.03.01 update
# 2022.02.03
# 2022.10.20 G[̒ǉ
# 2023.05.22 wgetR}hpXRtBOŐݒ\
#
LOG=/var/opt/proscan/log/psmt_agent_script.log
CONFIG=/opt/proscan/agent/conf/psmt_agent.conf
if [ -f $CONFIG ]
then
    . $CONFIG
fi
if [ "$MANAGER" = "" ]
then
    MANAGER=192.168.100.155
fi
if [ "$PORT" = "" ]
then
    PORT=8505
fi
UPDATE_HOST=$MANAGER
UPDATE_PORT=$PORT
CLAMAV_DIR=/usr/lib/clamav
CLAMAV_BACKUP_DIR=$CLAMAV_DIR.backup
GZIP=`which gzip`
TAR=`which tar`
if [ "$WGET" = "" ]
then
    WGET=`which wget`
fi

date >> $LOG
echo "rollback script start" >> $LOG

if [ "$GZIP" = "" -o "$TAR" = "" -o "$WGET" = "" ]
then
    echo "support command not found" >> $LOG
    exit 9
fi

case $2 in
    0)
        URL=$UPDATE_HOST/download/backup0
        ;;
    1)
        URL=$UPDATE_HOST/download/backup1
        ;;
    2)
        URL=$UPDATE_HOST/download/backup2
        ;;
    *)
        echo "parameta error" >> $LOG
        exit 1
        ;;
esac
echo "No.$2 data rollback" >> $LOG

# old version download
DL1=0
DL2=0
DL3=0
CLAMD=0
SUCCESS=0

echo "rollback data download process ..."  >> $LOG

$WGET -q -O $CLAMAV_DIR/clamav.tar.gz http://$URL-clamav.tar.gz
if [ $? -eq 0 -a ! -z $CLAMAV_DIR/clamav.tar.gz ]
then
    DL1=1
    echo " >> ClamAV data downloading" >> $LOG
fi
$WGET -q -O $CLAMAV_DIR/vdf.tar.gz http://$URL-vdf.tar.gz
if [ $? -eq 0 -a ! -z $CLAMAV_DIR/vdf.tar.gz ]
then
    DL2=1
    echo " >> VDF data downloading" >> $LOG
fi
$WGET -q -O $PROSCAN_DIR/proscan.tar.gz http://$URL-proscan.tar.gz
if [ $? -eq 0 -a ! -z $PROSCAN_DIR/proscan.tar.gz ]
then
    DL3=1
    echo " >> ProScan program data downloading" >> $LOG
fi

# ClamAV module
if [ $DL1 -eq 1 ]
then
    echo "ClamAV rollback " >> $LOG
    # stop engine
    CHK=`ps ax|grep clamd|grep -v grep`
    if [ "$CHK" != "" ]
    then
	/opt/proscan/bin/proscan stop
	CLAMD=1
	echo "clamd stop" >> $LOG
    fi

    # backup
    rm -fr $CLAMAV_BACKUP_DIR > /dev/null 2>&1
    cp -pr $CLAMAV_DIR $CLAMAV_BACKUP_DIR
    cd $CLAMAV_DIR

    # extract
    if [ ! -z clamav.tar.gz ]
    then
	tar zxf clamav.tar.gz
	cd clamav/engine
	for zipfile in *.gz
	do
	    $GUNZIP $zipfile
	done
	cp * ../..
	cd ../..
	if [ -f post_install.sh ]
	then
	    sh post_install.sh
	    chmod a+x post_install.sh
	fi
	chmod a+x clamd sigtool freshclam
	rm -rf clamav
	rm clamav.tar.gz
    fi
    SUCCESS=1
else
    rm $CLAMAV_DIR/clamav.tar.gz
fi

# VDF
if [ $DL2 -eq 1 ]
then
    echo "VDF rollback " >> $LOG
    cd $CLAMAV_DIR
    # extract
    if [ -f vdf.tar.gz ]
    then
	rm *.cvd dns.txt *.cdiff *.cld > /dev/null 2>&1
	$GZIP -dc vdf.tar.gz|$TAR xvf - >> $LOG 2>&1
	rm vdf.tar.gz
    fi
    SUCCESS=1
else
    rm $CLAMAV_DIR/vdf.tar.gz
fi

# ProScan modules
if [ $DL3 -eq 1 ]
then
    echo "ProScan rollback " >> $LOG
    cd $PROSCAN_DIR
    rm -r bin.backup > /dev/null
    cp -pr bin bin.backup
    cd bin
    $GZIP -dc proscan.tar.gz|$TAR xf -
    PCODE=`cat /var/opt/proscan/db/keys/regist.code|awk -F- '{print $1}'`
    cp ibm/power/$PCODE/* .
    rm -fr ibm
    rm ../proscan.tar.gz
    SUCCESS=1
else
    rm $PROSCAN_DIR/proscan.tar.gz
fi

if [ $SUCCESS -eq 1 ]
then
    echo "successful" >> $LOG
    DATE=`date '+%Y/%m/%d %H:%M:%S'`

    # post function
    /opt/proscan/agent/script/postversion $1 "$DATE"

    # start engine
    if [ $CLAMD -eq 1 ]
    then
        /opt/proscan/bin/proscan
    fi
    exit 0
fi

echo "failed" >> $LOG
exit 1
