#!/bin/bash
#
# upgrade-clamav.sh
# by xeon <xeon AT sysroot DOT eu>
#
# Simple script to upgrade a Copfilter ClamAV instance.
# Put it in the same folder where you have downloaded 
# ClamAV package and run it.
#

CLAMAV_VERSION=$1
CLAMAV_PACKAGE=clamav-$CLAMAV_VERSION.tar.gz
CLAMAV_SIGNATURE=$CLAMAV_PACKAGE.sig
CLAMAV_DIRECTORY=clamav-$CLAMAV_VERSION

BASE_DIR=/var/log/copfilter/default/opt/clamav
D1=$BASE_DIR/$CLAMAV_VERSION
D2=$BASE_DIR/etc
D3=$BASE_DIR/virdb


if [ $# != 1 ]; then
	echo -e "Usage: $0 <ClamAV version>\nExample: $0 0.88.5"
	exit
fi

if [ ! -r $CLAMAV_PACKAGE ]; then
	echo "Please, put this script in the same folder where you have downloaded the ClamAV source package."
	exit
fi


if [ -r $CLAMAV_PACKAGE.sig ]; then
	echo -n "- Found package signature, importing key from keyserver..."
	gpg --recv-keys 985A444B >/dev/null 2>&1
	echo "done"
	gpg --verify $CLAMAV_SIGNATURE
else
	echo "- Package signature not found, skipping PGP checks"
fi


echo -n "- Uncompressing ClamAV source package..."
tar xfz $CLAMAV_PACKAGE > /dev/null 2>&1
if [ ! -d $CLAMAV_DIRECTORY ]; then
	echo "error"
	exit
fi
chown -R `id -u`:`id -g` $CLAMAV_DIRECTORY
cd $CLAMAV_DIRECTORY
echo "done"


echo -n "- Configuring sources..."
./configure --prefix=$D1 --exec-prefix=$D1 --sysconfdir=$D2 --with-dbdir=$D3 --with-gnu-ld --enable-bigstack --with-libcurl=no > /dev/null 2>&1
if [ ! -f config.status ]; then
	echo -e "error\nCheck that you have a "clamav" user and group.\nIf you've got them, check the configure log.\nUpgrade aborted"
	exit
fi
echo "done"


echo -n "- Compiling sources..."
make > /dev/null 2>&1 
echo "done"


echo -n "- Installing ClamAV..."
make install > /dev/null 2>&1
echo "done"


echo -n "- Postinstall configurations..."
rm -f $BASE_DIR/default
chown -R clamav:clamav $BASE_DIR/$CLAMAV_VERSION
ln -s $BASE_DIR/$CLAMAV_VERSION $BASE_DIR/default
chown clamav:clamav $BASE_DIR/default
echo "done" 
