#!/bin/bash
#
# munin for IPCop install script
#
# This code is distributed under the terms of the GPL
#
# $Id: install 497 2011-11-25 07:04:20Z weizen_42 $
#


CMD="$1"
UPGRADE=0

if [ ! -e /usr/lib/ipcop/library.sh ]; then
    echo "Upgrade your IPCop, library.sh is missing"
    exit 1
fi
. /usr/lib/ipcop/library.sh

ismachine i486
if [ ${?} -ne 0 ]; then
    # not verified, but likely to work on RaqCop as well
    ismachine cobalt
    if [ ${?} -ne 0 ]; then
        echo "This Addon is for i486 architecture only"
        exit 1
    fi
fi


#error handling
err()
{
    echo " "
    echo "Error : $1 "
    echo " "
    echo "Choose your option:"
    echo " "
    echo "./install -i   ---> to install"
    echo "./install -u   ---> to uninstall"
    echo " "
    exit
}


# installation
ai()
{
    ## verify already installed and uninstall
    if [ -e /var/ipcop/addons/munin/settings ]; then
        echo "Upgrading"
        UPGRADE=1
        au
    fi

    echo "Copying files"
    cp -p munin-node      /usr/sbin/munin-node
    chown root.root       /usr/sbin/munin-node
    chmod 750             /usr/sbin/munin-node
    cp -p muninctrl       /usr/local/bin/muninctrl
    chown root.nobody     /usr/local/bin/muninctrl
    chmod 4750            /usr/local/bin/muninctrl
    
    mkdir -p /var/run/munin
    mkdir -p /var/ipcop/addons/munin
    if [ ! -e /var/ipcop/addons/munin/settings ]; then
        touch /var/ipcop/addons/munin/settings
    fi
    if [ ! -e /var/ipcop/addons/munin/munin-node.conf ]; then
        cp munin-node.conf     /var/ipcop/addons/munin/munin-node.conf
    fi
    chown -R nobody.nobody /var/ipcop/addons/munin

    echo "Adding standard plugins"
    mkdir -p        /etc/munin/plugin-conf.d
    cp plugin-conf  /etc/munin/plugin-conf.d/munin-node
    mkdir -p        /usr/lib/munin/plugins
    cp plugins/*    /usr/lib/munin/plugins
    mkdir -p        /etc/munin/plugins
    for i in cpu df df_abs df_inode fw_conntrack fw_forwarded_local irqstats load memory openvpn uptime
    do
        ln -sf /usr/lib/munin/plugins/$i /etc/munin/plugins/$i
    done
    ln -sf /var/ipcop/addons/munin/munin-node.conf /etc/munin/munin-node.conf

    IFACES=`ls /sys/class/net`
    for i in $IFACES
    do
        if [ $i != "lo" ]; then
            ln -sf /usr/lib/munin/plugins/if_     /etc/munin/plugins/if_$i
            ln -sf /usr/lib/munin/plugins/if_err_ /etc/munin/plugins/if_err_$i
        fi
    done


    /bin/tar -xzf munin-perl-* -C /
    /bin/tar -xzf net-server-* -C /
    
    echo "Add CGI"
    addcgi muningui.cgi

    echo "Adding to status"
    addtofile MUNIN status.add /home/httpd/cgi-bin/status.cgi openvpn

    echo "Adding autostart"
    addtofiletail MUNIN local.add /etc/rc.d/rc.event.local
}


# deinstallation
au()
{
    if [ ! -e /var/ipcop/addons/munin/settings ]; then
        echo "Munin addon is not installed !"
        exit
    fi

    echo "Stopping Munin node"
    if [ -e /usr/local/bin/muninctrl ]; then
        /usr/local/bin/muninctrl --stop
    fi

    rm -f /usr/sbin/munin-node
    rm -f /usr/local/bin/muninctrl
    rm -rf /etc/munin
    rm -rf /usr/lib/munin
    rm -rf /usr/lib/perl5/site_perl/5.10.1/Munin
    rm -f /usr/lib/perl5/site_perl/5.10.1/Net/Server.pm
    rm -rf /usr/lib/perl5/site_perl/5.10.1/Net/Server
    rm -rf /var/run/munin

    echo "Remove CGI"
    removecgi muningui.cgi

    echo "Removing from status"
    removefromfile MUNIN /home/httpd/cgi-bin/status.cgi

    echo "Removing autostart"
    removefromfile MUNIN /etc/rc.d/rc.event.local

    grep "Munin Monitoring" /var/ipcop/firewall/customservices > /dev/null
    if [ $? != 0 ]; then
        echo "Adding firewall service for Munin Monitoring"
        echo "Munin Monitoring,4949,tcp,off,off,BLANK,0" >> /var/ipcop/firewall/customservices
    fi
}


case $CMD in
    -i|i|install)
        echo " "
        echo "Installing now ..."
        ai
        echo "Installation complete."
        if [ $UPGRADE -gt 0 ]; then
            echo "Starting (if enabled) ..."
            /usr/local/bin/muninctrl --start
        else
            echo -e "Configure using the GUI page\n"
        fi
        echo " ";;

    -u|u|uninstall)
        echo " "
        echo "Deinstalling addon now ..."
        au
        rm -rf /var/ipcop/addons/munin
        echo "Removing firewall service for Munin Monitoring"
        sed -i -e '/Munin Monitoring/d' /var/ipcop/firewall/customservices
        echo "Successfully done!"
        echo " ";;

    *)
        err "Invalid Option";;
esac
sync
#end of file
