#!/bin/bash
#
# 07-20-2008 | nj6n | Initial release of update 2.0 - Installs ICOM patch
# 12-23-2008 | nj6n | Added postgresql library path to ld.so.conf
#
CURL="/usr/bin/curl --connect-timeout 90 --max-time 120"
KERNEL=`/bin/uname -r`;
UPDATE_URL="http://dsyncg2.dstarusers.org/index.php"
LIB="/opt/products/dstar/pgsql/lib"
DSTAR_LD_CONF="/etc/ld.so.conf.d/dstar.conf"
#
DSTARGW=/opt/products/dstar/dstar_gw
DSIPSVD=$DSTARGW/dsipsvd/dsipsvd
DSGWD=$DSTARGW/dsgwd/dsgwd
DBDELREC=$DSTARGW/dsipsvd/dbdelrec
DSICONF=$DSTARGW/dsipsvd/dsipsvd.conf
#
GW_CALL=`egrep -e '^ZR_CALLSIGN' $DSICONF | sed -e 's/ //g' | awk -F"=" '{print $2}' |sed -e 's/\r//'`
#
PATCH_LOC=dsyncg2.dstarusers.org
PNAME=update2.tar.gz
#
# MD5 sums of installed files
#
SUM1=b24a24c8f151ff2b55dd8195176ae98a
#
# Command locations
#
SERVICE=/sbin/service
MD5SUM=/usr/bin/md5sum
#
# functions
#
#
# Make sure the dstar gateway applications exist
#
/bin/echo -n "Checking for: $DSIPSVD ... "
if [ ! -x $DSIPSVD ]; then
echo "$DSIPSVD doesn't exist!"
DATE=`date -u "+%F %T"`
$CURL $UPDATE_URL \
-d gateway_call="$GW_CALL" \
-d datetime="$DATE" \
-d status="Update #2: $DSIPSVD not found!" \
-d trust="$TRUST_SERVER" \
-d notify_em="" \
-d version="$0 $VERSION
$KERNEL" > /dev/null 2>&1
exit
else
echo "[OK]"
fi
/bin/echo -n "Checking for: $DSGWD ... "
if [ ! -x $DSGWD ]; then
echo "$DSGWD doesn't exist!"
DATE=`date -u "+%F %T"`
$CURL $UPDATE_URL \
-d gateway_call="$GW_CALL" \
-d datetime="$DATE" \
-d status="Update #2: $DSGWD not found!" \
-d trust="$TRUST_SERVER" \
-d notify_em="" \
-d version="$0 $VERSION
$KERNEL" > /dev/null 2>&1
exit
else
echo "[OK]"
fi
#
# Stop the gateway...
#
$SERVICE dstar_gw stop
/bin/sleep 2
$SERVICE dstar_gw status
#
# Back up the old files
#
DATE=`date -u "+%y%m%d-%H%M%S"`
cp $DSIPSVD $DSIPSVD.backup.$DATE
cp $DSGWD $DSGWD.backup.$DATE
cp $DBDELREC $DBDELREC.backup.$DATE
#
# Download and install the patch
#
echo "Downloading patch file..."
cd /tmp
$CURL -O $PATCH_LOC/$PNAME > /dev/null 2>&1
echo -n "Verifying patch file ... "
VERIFY_SUM=`$MD5SUM ./$PNAME | awk '{print $1}'`
if [ $VERIFY_SUM != $SUM1 ]; then
echo
echo "## Invalid MD5 checksum for patch file, Aborting. ($VERIFY_SUM != $SUM1)"
DATE=`date -u "+%F %T"`
$CURL $UPDATE_URL \
-d gateway_call="$GW_CALL" \
-d datetime="$DATE" \
-d status="Update #2: Invalid Checksum." \
-d trust="$TRUST_SERVER" \
-d notify_em="" \
-d version="$0 $VERSION
$KERNEL" > /dev/null 2>&1
exit;
else
echo "[OK]"
fi
cd $DSTARGW
if [ $? != 0 ]; then
echo
echo "Unable to chdir to $DSTARGW, Aborting!!"
DATE=`date -u "+%F %T"`
$CURL $UPDATE_URL \
-d gateway_call="$GW_CALL" \
-d datetime="$DATE" \
-d status="Update #2: $DSTARGW not found!" \
-d trust="$TRUST_SERVER" \
-d notify_em="" \
-d version="$0 $VERSION
$KERNEL" > /dev/null 2>&1
exit
fi
echo "Unpacking patch file ... "
tar -xvf /tmp/$PNAME
echo "[done]"
#
# Set permissions
#
chmod 755 $DSIPSVD
chmod 755 $DSGWD
chmod 755 $DBDELREC
#
# Update LD Library Path
#
/bin/echo -n "Adding $LIB to LD_LIBRARY_PATH configuration directory..."
echo $LIB > $DSTAR_LD_CONF
/sbin/ldconfig
/bin/echo "[OK]"
#
# Restart everything
#
echo "Restarting Gateway Applications... "
$SERVICE dstar_gw start
/bin/sleep 2
$SERVICE dstar_gw status
#
# report to dsync site...
#
DATE=`date -u "+%F %T"`
$CURL $UPDATE_URL \
-d gateway_call="$GW_CALL" \
-d datetime="$DATE" \
-d status="Update #2 Installed." \
-d trust="$TRUST_SERVER" \
-d notify_em="" \
-d version="$0 $VERSION
$KERNEL" > /dev/null 2>&1
echo
echo "All done."