#!/bin/bash
# ipcop addon binary installer Ver 0.9a for IPCop 1.4.x
#
# created 01 January 2005 by Frank 'Darkmann' Koch <darkmann@black-empire.de>
# modified 02 January 2005 by Tom 'wintermute' Eichstaedt <wintermute@tom-e.de>
#
# extended 2006-09-08 by weizen_42 at ipcop-forum dot de
#


CMD="$1"

#clear screen if available
if [ -e /bin/clear ]; then
	/bin/clear
fi
if [ -e /usr/bin/clear ]; then
	/usr/bin/clear
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()
{
  if [ -e /usr/local/bin/digitemp.pl ]; then
    echo "Upgrading"
    au
  else
    mkdir -p /var/ipcop/digitemp

    echo -e "\033[1mWhich serial port COM1, COM2, etc. (1,2,3,...):\033[0m"
    read PORT
    if [ `expr $PORT : '[0-9]*$'` -eq 0 -o $PORT -eq "0" ] 
    then
      echo -e "\033[1m\033[31mERROR! "$PORT" is no valid COM port";
      exit 10
    fi
    echo "COMPORT=$PORT" > /var/ipcop/digitemp/settings

    echo -e "\033[1mAdapter type 1=DS9097, 2=DS9097U, 3=DS2490 If you are not sure, select 1 (1,2,3):\033[0m"
    read ADAPTER
    if [ $ADAPTER -eq "1" ]; then
      ln -s /usr/local/bin/digitemp_DS9097  /usr/local/bin/digitemp
      echo "ADAPTER=DS9097"  >> /var/ipcop/digitemp/settings
    elif [ $ADAPTER -eq "2" ]; then
      ln -s /usr/local/bin/digitemp_DS9097U /usr/local/bin/digitemp
      echo "ADAPTER=DS9097U" >> /var/ipcop/digitemp/settings
    elif [ $ADAPTER -eq "3" ]; then
      ln -s /usr/local/bin/digitemp_DS2490  /usr/local/bin/digitemp
      echo "ADAPTER=DS2490"  >> /var/ipcop/digitemp/settings
    else
      echo -e "\033[1m\033[31mERROR! "$ADAPTER" is no valid Adapter";
      exit 11
    fi

    chown nobody:nobody /var/ipcop/digitemp/settings
  fi

  chown -R nobody:nobody /var/ipcop/digitemp

  echo "Copying files"
  cp -p digitemp.cgi /home/httpd/cgi-bin/digitemp.cgi
  cp -p digitemp.pl  /usr/local/bin/digitemp.pl
  cp -p digitemp_DS* /usr/local/bin

  # run digitemp.pl every 5 minutes
  echo "Adding cron job"
  cat cron.add >> /var/spool/cron/root.orig
  fcrontab -z

  # supported languages
  # english, german
  echo "Adding language texts"
  cd langs/
  addto_lang en.digitemp,de.digitemp,cs.digitemp,ru.digitemp digitemp
  cd ..

  # try and add to menu
  echo "Adding menu entry"
  addto_header /var/ipcop/ header.pl menu.add "/\/cgi-bin\/proxygraphs.cgi/" 1.4.0

  # run digitemp.pl once
  /usr/local/bin/digitemp.pl
}


# deinstallation
au()
{
  if [ ! -e /usr/local/bin/digitemp.pl ]; then
    echo "digitemp addon is not installed !"
    exit 20
  fi

  rm /home/httpd/cgi-bin/digitemp.cgi
  rm /home/httpd/html/graphs/digitemp-*  >/dev/null 2>/dev/null
  rm /usr/local/bin/digitemp.pl
  rm /usr/local/bin/digitemp  >/dev/null 2>/dev/null
  rm /usr/local/bin/digitemp_DS*  >/dev/null 2>/dev/null

  # remove cron job
  echo "Removing cron job"
  removefrom_file /var/spool/cron/ root.orig "/digitemp - BEGIN/,/digitemp - END/"

  # remove languages
  echo "Removing language texts"
  removefrom_lang en,de,cs,ru digitemp

  # remove menu
  echo "Removing menu entry"
  removefrom_file /var/ipcop/ header.pl "/digitemp - BEGIN/,/digitemp - END/" 
}

old()
{
  if [ -e /var/ipcop/digitemp/digitemp.cron ]; then
    echo "Removing old digitemp addon"
    # remove binary from 'old' Addon 
    rm /usr/bin/digitemp >/dev/null 2>/dev/null
    rm /var/ipcop/digitemp/digitemp.cron >/dev/null 2>/dev/null
    # remove cron job from 'old' Addon	
    removefrom_file /var/spool/cron/ root.orig "/Added for Digitemp/,/End for Digitemp/"
    # remove menu from 'old' Addon	
    removefrom_file /var/ipcop/ header.pl "/Added for Digitemp/,/End Digitemp/"
  fi
}

# get usefull subroutines
# taken from:
# MOD Addons Server Ver 2.3 for IPCop 1.3.0/1.4.0
. ./library.addons

case $CMD in
    -i|i|install)
        echo " "
        echo "Installing now ..."
        old
        ai
        echo "Digitemp installed!"
        echo " ";;

    -u|u|uninstall)
        echo " "
        echo "Deinstalling addon now ..."
        au

        # remove RRD database & graphs
        rm /var/log/rrd/digitemp.rrd

        # remove settings & directory
	rm -r /var/ipcop/digitemp

        echo "Digitemp removed!"
        echo " ";;
    *)
        err "Invalid Option";;
esac
sync
#end of file
