#!/bin/sh
##############################################################################
#
# You may edit anything below this point at your own risk, do not request
# support for modified versions of this software. This is free software
# and free for redistribution in accordance with the GNU GPL.
#
##############################################################################
#
# Created by: Ryan M. <ryan@r-fx.net>
# R-fx Networks (c) 1999-2003
# SIM 2.5-3 <sim@r-fx.org>
#
##############################################################################
#
V="2.5-3"
SETUPFILES="install"
INSPATH="/usr/local/sim"
CHK="chk"
SERV="serv"
SYS="sys"
CNF="conf.sim"
DAT="dat"
CRON="/etc/crontab"
TMPS="/tmp/sim_cj"
SIMCJ=`cat $CRON | grep -w sim`
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
###
###

header() {
echo "SIM $V <sim@r-fx.org>"
}

chk() {
if [ ! -d $SETUPFILES/ ]; then
        echo "Could not locate setup files, aborting."
        exit 1
fi
}

intro_install() {
echo "Press return, to view the GPL lisencing for SIM $V."
read Y
cat GPL | more
echo "If you do not agree with the implied and expressed agreements"
echo "in the GNU GPL, please terminate your use of this software."
echo ""
echo "Press return, to view the SIM $V README."
read X
cat README | more
echo ""
clear
}

install() {
header
if [ -d $INSPATH ]; then
        echo "Past installation of SIM detected in $INSPATH"
        echo "press return to remove the previouse install or CTRL+C to abort."
        read Z
	echo -n "Removing previouse install: "
        echo -n "		[#####"
	if [ -f $INSPATH/$CNF ]; then
	cp $INSPATH/$CNF /tmp
	fi
	rm -rf $INSPATH/internals
	rm -f $INSPATH/sim
	rm -f $INSPATH/autoconf
	rm -f /usr/local/sbin/sim
	rm -f /usr/local/sbin/sim-autoconf
        echo "#####]"
fi

if [ ! -d $INSPATH ]; then
        echo -n "Creating installation paths: "
        mkdir $INSPATH
        echo -n "		[##"
	mkdir $INSPATH/internals
        mkdir $INSPATH/internals/$CHK
        echo -n "##"
        mkdir $INSPATH/internals/$CHK/$SERV
        echo -n "##"
        mkdir $INSPATH/internals/$CHK/$SYS
        echo -n "##"
	mkdir $INSPATH/internals/$DAT
	mkdir $INSPATH/doc
        chmod -R 740 $INSPATH
        chown -R root $INSPATH
        echo "##]"
fi

echo -n "Installing SIM $V to $INSPATH: "
cp -R $SETUPFILES/* $INSPATH/
echo -n "	[###"
chown -R root $INSPATH
chmod 750 $INSPATH/sim
chmod 750 $INSPATH/autoconf
echo -n "###"
ln -fs $INSPATH/sim /usr/local/sbin/sim
ln -fs $INSPATH/autoconf /usr/local/sbin/sim-autoconf
cp README GPL CHANGELOG CREDITS $INSPATH/doc
cp /tmp/$CNF $INSPATH/$CNF.old >> /dev/null 2>&1
rm -f /tmp/$CNF
SIMCJ=`cat $CRON | grep -w sim`
if [ "$SIMCJ" = "" ]; then
## Install SIM cronjob
   cp -f $CRON $CRON.bk.$$
   cat > $TMPS <<EOF

*/5 * * * * root $INSPATH/sim -q >> /dev/null 2>&1
EOF
   cat $TMPS >> /etc/crontab
   rm -f $TMPS
else
## Remove SIM cronjob
    cp -f $CRON $CRON.bk.$$
    SIMCJ=`cat $CRON | grep -vw sim >> $TMPS`
    rm -f $CRON
    touch $CRON
    chmod 644 $CRON
    cat $TMPS >> $CRON
## Install SIM cronjob
   cp -f $CRON $CRON.bk.$$
   cat > $TMPS <<EOF
*/5 * * * * root $INSPATH/sim -q >> /dev/null 2>&1
EOF
   cat $TMPS >> /etc/crontab
   rm -f $TMPS
fi
echo "####]"
echo
echo "SIM $V installation completed, related notes:"
cat <<EOF
Executable:             $INSPATH/sim
Executable symlink:     /usr/local/sbin/sim
Config file:            $INSPATH/conf.sim
Autoconf script:        $INSPATH/autoconf
Autoconf symlink:       /usr/local/sbin/sim-autoconf
Cronjob setup:		/usr/local/sim/sim -j
EOF
echo
echo "SIM $V must now be configured for use on this system, Press"
echo "return to run the autoconf script ($INSPATH/autoconf)."
read H
clear
$INSPATH/autoconf
}

uninstall() {
if [ -d $INSPATH ]; then
     echo -n "Press return to remove SIM or CTRL+C to abort"
     read P
     echo -n "Removing SIM $V from $INSPATH: "
     echo -n "[#####"
     rm -rf $INSPATH/internals
     rm -f $INSPATH/sim
     rm -f $INSPATH/autoconf
     rm -f /usr/local/sbin/sim
     rm -f /usr/local/sbin/sim-autoconf
     cp -f $CRON $CRON.bk.$$
     SIMCJ=`cat $CRON | grep -vw sim >> $TMPS`
     rm -f $CRON
     touch $CRON
     chmod 644 $CRON
     cat $TMPS >> $CRON
     echo "#####]"

else
     echo "$INSPATH not found, nothing to uninstall."
fi
}

qinstall() {
header
echo -n "Installing SIM $V: "
if [ -d $INSPATH ]; then
	cp $INSPATH/$CNF /tmp
        rm -rf $INSPATH/internals
        rm -f $INSPATH/sim
        rm -f $INSPATH/autoconf
	rm -f /usr/local/sbin/sim
	rm -f /usr/local/sbin/sim-autoconf
fi
echo -n "[#####"
if [ ! -d $INSPATH ]; then
        mkdir $INSPATH
	mkdir $INSPATH/internals
        mkdir $INSPATH/internals/$CHK
        mkdir $INSPATH/internals/$CHK/$SERV
        mkdir $INSPATH/internals/$CHK/$SYS
	mkdir $INSPATH/internals/$DAT
        mkdir $INSPATH/doc
	chmod -R 740 $INSPATH
        chown -R root $INSPATH
fi
cp -R $SETUPFILES/* $INSPATH/
chown -R root $INSPATH
chmod 750 $INSPATH/sim
chmod 750 $INSPATH/autoconf
ln -fs $INSPATH/sim /usr/local/sbin/sim
ln -fs $INSPATH/autoconf /usr/local/sbin/sim-autoconf
cp README GPL CHANGELOG CREDITS $INSPATH/doc
cp /tmp/$CNF $INSPATH/$CNF.old >> /dev/null 2>&1
rm -f /tmp/$CNF
SIMCJ=`cat $CRON | grep -w sim`
if [ "$SIMCJ" = "" ]; then
## Install SIM cronjob
   cp -f $CRON $CRON.bk.$$
   cat > $TMPS <<EOF
*/5 * * * * root $INSPATH/sim -q >> /dev/null 2>&1
EOF
   cat $TMPS >> /etc/crontab
   rm -f $TMPS
else
## Remove SIM cronjob
    cp -f $CRON $CRON.bk.$$
    SIMCJ=`cat $CRON | grep -vw sim >> $TMPS`
    rm -f $CRON
    touch $CRON
    chmod 644 $CRON
    cat $TMPS >> $CRON
## Install SIM cronjob
   cp -f $CRON $CRON.bk.$$
   cat > $TMPS <<EOF
*/5 * * * * root $INSPATH/sim -q >> /dev/null 2>&1
EOF
   cat $TMPS >> /etc/crontab
   rm -f $TMPS
fi
echo "#####]"
echo
echo "Installation completed, related notes:"
cat <<EOF
Executable:     	$INSPATH/sim
Executable symlink: 	/usr/local/sbin/sim
Config file:      	$INSPATH/conf.sim
Autoconf script:	$INSPATH/autoconf
Autoconf symlink:	/usr/local/sbin/sim-autoconf
Cronjob setup:		$INSPATH/sim -j
EOF
}

cj() {
SIMCJ=`cat $CRON | grep -w sim`
if [ ! -f $CRON ]; then
   echo "$CRON does not exist, aborting."
   exit 1
fi

if [ "$SIMCJ" = "" ]; then
## Install SIM cronjob
   header
   cp -f $CRON $CRON.bk.$$
   cat > $TMPS <<EOF
*/5 * * * * root $INSPATH/sim -q >> /dev/null 2>&1
EOF
   cat $TMPS >> /etc/crontab
   rm -f $TMPS
   echo "Installed SIM cronjob."
else
## Remove SIM cronjob
    header
    cp -f $CRON $CRON.bk.$$
    SIMCJ=`cat $CRON | grep -vw sim >> $TMPS`
    rm -f $CRON
    touch $CRON
    chmod 644 $CRON
    cat $TMPS >> $CRON
    echo "Removed SIM cronjob."
fi
}

case "$1" in
 install)
        header
        intro_install
        chk
        install
        ;;
 uninstall)
        header
        uninstall
        ;;
 quick_install)
        qinstall
        ;;
 cron)
        cj
        ;;
 help)
        header
        echo "usage $0"
        echo "-i     Install"
        echo "-q     Quick install"
        echo "-u     Uninstall"
        echo "-c     Install/Uninstall cronjob"
        ;;
 -i)
        $0 install
        ;;
 -u)
        $0 uninstall
        ;;
 -q)
        $0 quick_install
        ;;
 -c)
        $0 cron
        ;;
 *)
        $0 help
esac

exit 0
