#! /bin/sh

### BEGIN INIT INFO
# Provides: ip-client
# Required-Start: $local_fs $remote_fs $syslog $network pcscd
# Required-Stop:  $local_fs $remote_fs $syslog $network pcscd
# Default-Start:  2 3 4 5
# Default-Stop:   0 1 6
# Short-Description: Ip-client kernel module and daemon startup
### END INIT INFO

CurDir=`pwd`
# Main ip-client directory
mainpath="/usr/lib/Amicon_ip-client"

# Check hashes
wronghash="Program integrity checking failed! Reinstall program!"
cd $mainpath/Hash

if ! ../linfpsuhash ./linfpsuhash.hsh -s > /dev/null ; then
  echo $wronghash
  exit 0
fi
if ! ../linfpsuhash ./ip-client.hsh -s > /dev/null ; then
  echo $wronghash
  exit 0
fi
if ! ../linfpsuhash ./AmiNFFltLib.hsh -s > /dev/null ; then
  echo $wronghash
  exit 0
fi

case "$1" in
  start)
    # Compiling ip-client filter driver and installing it
    cd $mainpath
    #./ip-client killallbrothers
    cd $mainpath/Drivers
    make #> /dev/null
    make clean > /dev/null
    if [ `lsmod | grep -o ^AmiNFFilter` ]; then
      rmmod AmiNFFilter > /dev/null
    fi
    insmod ./AmiNFFilter.ko #> /dev/null
    cd $mainpath/Hash
    ../linfpsuhash -H "$mainpath/Drivers/AmiNFFilter.ko" "./AmiNFFilter.hsh" "Ip-client filter driver" -s > /dev/null
    cd $mainpath
    ./ip-client RunAsService &
    cd $CurDir
  ;;
  restart)
    cd $mainpath
    ./ip-client killallbrothers
    ./ip-client RunAsService &
    cd $CurDir
  ;;
  force-reload)
    cd $mainpath
    ./ip-client killallbrothers
    if [ `lsmod | grep -o ^AmiNFFilter` ]; then
      rmmod AmiNFFilter > /dev/null
    fi
    insmod ./Drivers/AmiNFFilter.ko > /dev/null
    ./ip-client RunAsService &
    cd $CurDir
  ;;
  stop)
    cd $mainpath
    ./ip-client killallbrothers
    cd $mainpath/Drivers
    if [ `lsmod | grep -o ^AmiNFFilter` ]; then
      rmmod AmiNFFilter > /dev/null
    fi
    cd $CurDir
  ;;
esac

exit 0
