#!/bin/bash
#
# Upgrade IPCop
#

UPGRADEVERSION=2.1.1
PREVIOUSVERSION=2.1.0


msg() {
    /usr/bin/logger -t installpackage "$*"
    /bin/echo "$*"
}


# Verify architecture
MACHINE=`/usr/bin/perl -e "require '/usr/lib/ipcop/general-functions.pl';print \\$General::machine;"`
if [ "$MACHINE" != `/bin/cat ./ARCH` ]; then
    msg "Update for wrong architecture: `/bin/cat ./ARCH`! We are: $MACHINE. Aborting installation."
    exit 1
fi

# Verify version, note we also accept replaying an upgrade
CURRENTVERSION=`/usr/bin/perl -e "require '/usr/lib/ipcop/general-functions.pl';print \\$General::version;"`
if [ "$CURRENTVERSION" != "$PREVIOUSVERSION" -a "$CURRENTVERSION" != "$UPGRADEVERSION" ]; then
    msg "IPCop v$PREVIOUSVERSION or v$UPGRADEVERSION not running. Aborting installation."
    exit 1
fi

#####
#
# Add version specific handling *before* unpacking the patch here.
# For example stopping dnsmasq(required before update), squid, etc...
#
#####



#####
#
# End of version specific handling. Continue with universal stuff.
#
#####

FAILURE=0
/bin/tar -zxpf patch.tar.gz -C /
FAILURE=$?
if [ $FAILURE -ne 0 ]; then
    msg "Error extracting patch.tar.gz $1, need more free space on disk. Aborting."
    exit 4 # ERRORTAR
fi

# Modify or remove line below, depending on update
# Update bootloader config
/usr/local/sbin/updatekernel.pl --add 3.4-1 --keep 2.6.32-6 --remove 2.6.32-5

# Modify or remove line below, depending on update
# Create the new initramfs
/sbin/mkinitramfs --with-kernel=3.4-1 --with-firmware --many-modules --with-list=/etc/modules.initramfs

# Adjust the changed config files
/usr/local/bin/upgrade.sh

# Remove old libraries (version specific)
# /bin/rm -f .....

# Remove old squid files
/bin/rm -f /usr/lib/squid/icons/anthony-binhex.gif
/bin/rm -f /usr/lib/squid/icons/anthony-bomb.gif
/bin/rm -f /usr/lib/squid/icons/anthony-box.gif
/bin/rm -f /usr/lib/squid/icons/anthony-box2.gif
/bin/rm -f /usr/lib/squid/icons/anthony-c.gif
/bin/rm -f /usr/lib/squid/icons/anthony-compressed.gif
/bin/rm -f /usr/lib/squid/icons/anthony-dir.gif
/bin/rm -f /usr/lib/squid/icons/anthony-dirup.gif
/bin/rm -f /usr/lib/squid/icons/anthony-dvi.gif
/bin/rm -f /usr/lib/squid/icons/anthony-f.gif
/bin/rm -f /usr/lib/squid/icons/anthony-image.gif
/bin/rm -f /usr/lib/squid/icons/anthony-image2.gif
/bin/rm -f /usr/lib/squid/icons/anthony-layout.gif
/bin/rm -f /usr/lib/squid/icons/anthony-link.gif
/bin/rm -f /usr/lib/squid/icons/anthony-movie.gif
/bin/rm -f /usr/lib/squid/icons/anthony-pdf.gif
/bin/rm -f /usr/lib/squid/icons/anthony-portal.gif
/bin/rm -f /usr/lib/squid/icons/anthony-ps.gif
/bin/rm -f /usr/lib/squid/icons/anthony-quill.gif
/bin/rm -f /usr/lib/squid/icons/anthony-script.gif
/bin/rm -f /usr/lib/squid/icons/anthony-sound.gif
/bin/rm -f /usr/lib/squid/icons/anthony-tar.gif
/bin/rm -f /usr/lib/squid/icons/anthony-tex.gif
/bin/rm -f /usr/lib/squid/icons/anthony-text.gif
/bin/rm -f /usr/lib/squid/icons/anthony-unknown.gif
/bin/rm -f /usr/lib/squid/icons/anthony-xbm.gif
/bin/rm -f /usr/lib/squid/icons/anthony-xpm.gif
/bin/rm -f /usr/lib/squid/msnt_auth
/bin/rm -f /usr/lib/squid/ncsa_auth
/bin/rm -f /usr/lib/squid/negotiate_kerb_auth
/bin/rm -f /usr/lib/squid/negotiate_kerb_auth_test
/bin/rm -f /usr/lib/squid/squid_kerb_auth
/bin/rm -f /usr/lib/squid/squid_kerb_auth_test
/bin/rm -f /usr/lib/squid/squid_ldap_auth
/bin/rm -f /usr/lib/squid/squid_ldap_group
/bin/rm -f /usr/lib/squid/squid_radius_auth

# Remove old Perl 5.10.1
/bin/rm -f /usr/bin/perl5.10.1
/bin/rm -rf /usr/lib/perl5/5.10.1
/bin/rm -rf /usr/lib/perl5/site_perl/5.10.1

# For new shared libs. May not always be required, but makes sure we do not forget
/sbin/ldconfig

#####
#
# Add version specific handling *after* unpacking the patch here.
# For example restarting apache, squid, etc...
#
#####

# restart squid (helper checks whether squid is enabled)
/usr/local/bin/restartsquid

#####
#
# End of version specific handling. Continue with universal stuff.
#
#####

# Patch general-functions.pl
/bin/sed -i -e "s+^\(\$General::version\s*=\s*\).*+\1'$UPGRADEVERSION';+" /usr/lib/ipcop/general-functions.pl
# Patch /etc/issue
/bin/sed -i -e "s+$PREVIOUSVERSION+$UPGRADEVERSION+" /etc/issue

# Update menu
/usr/local/bin/updatemenu.pl

msg "$UPGRADEVERSION update installed."
