#!/bin/bash
#
# WLAN Accesspoint install script
#
# This code is distributed under the terms of the GPL
#
# (c) 2005-2007 by: Markus Hoffmann & Olaf Westrik
#
# $Id: install 332 2008-11-11 15:06:14Z weizen_42 $
#

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


DO_DEPMOD=1
DO_QUIET=0
UPGRADE=0
CMD="$1"

case $CMD in
  -q|-quiet)
    DO_QUIET=1
    ;;
  -nodepmod)
    DO_DEPMOD=0
    ;;
esac   


my_echo()
{
  if [ $DO_QUIET == 0 ];
  then 
    /bin/echo $1 $2 $3 $4 $5
  fi
}


my_echo -e "\nThis is \033[1;34mWLAN AccessPoint Addon for IPCop\033[0m installing.\n"
MSG_OK="\033[72G[\033[1;32mok   \033[0m]"
MSG_ERROR="\033[72G[\033[1;31merror\033[0m]"


#
# deinstall old version (v1.0.x) if found
#
if [ -x "/var/ipcop/hostapd/bin/uninstall" ]
then
	my_echo -e "uninstalling previous version (patience!)\c"
	UPGRADE=1
	/etc/rc.d/rc.hostapd stop >/dev/null 2>&1
        TEST=`/sbin/lsmod | grep ath`
	if [ "x$TEST" != "x" ]
	then
		/sbin/modprobe -r ath_pci >/dev/null 2>&1
	fi
        TEST=`/sbin/lsmod | grep wlan`
	if [ "x$TEST" != "x" ]
	then
		/sbin/modprobe -r wlan_tkip >/dev/null 2>&1
		/sbin/modprobe -r wlan_xauth >/dev/null 2>&1
		/sbin/modprobe -r wlan_wep >/dev/null 2>&1
		/sbin/modprobe -r wlan_scan_ap >/dev/null 2>&1
		/sbin/modprobe -r wlan >/dev/null 2>&1
	fi
	if [ -f /var/ipcop/hostapd/settings/settings ]
	then
		cp -p /var/ipcop/hostapd/settings/settings config/settings >/dev/null 2>&1
	fi
	if [ -f /var/ipcop/hostapd/hostapd.conf ]
	then
		cp -p /var/ipcop/hostapd/hostapd.conf config/hostapd.conf >/dev/null 2>&1
	fi
	/var/ipcop/hostapd/bin/uninstall >/dev/null 2>&1
	my_echo -e "$MSG_OK"
fi


#
# deinstall old version (v2.0.x) if found
#
if [ -x "/var/ipcop/wlanap/bin/uninstall" ]
then
    my_echo -e "uninstalling previous version\c"
    UPGRADE=2
    /etc/rc.d/rc.wlanap unload >/dev/null 2>&1

    cp -p /var/ipcop/wlanap/settings config/settings >/dev/null 2>&1
    cp -p /var/ipcop/wlanap/channels config/channels >/dev/null 2>&1
    cp -p /var/ipcop/wlanap/txpower  config/txpower  >/dev/null 2>&1
    cp -p /var/ipcop/wlanap/hostapd.conf config/hostapd.conf >/dev/null 2>&1

    /var/ipcop/wlanap/bin/uninstall >/dev/null 2>&1
    my_echo -e "$MSG_OK"
fi


# our directory with config & stuff
#
my_echo -e "Creating directories and copying config\c"
mkdir -p /var/ipcop/wlanap/bin
# defaults or saved from previous installation
cp config/*                   /var/ipcop/wlanap
chown -R nobody.nobody        /var/ipcop/wlanap

cp -p library.addons          /var/ipcop/wlanap/bin/
cp -p files/uninstall         /var/ipcop/wlanap/bin/
cp -p files/wlan-detect.pl    /var/ipcop/wlanap/bin/
cp -p files/rc.wlanap         /var/ipcop/wlanap/bin/
ln -sf /var/ipcop/wlanap/bin/rc.wlanap  /etc/rc.d/rc.wlanap

cp -p files/wlanap.cgi        /home/httpd/cgi-bin
cp -p files/wlanapgraphs.cgi  /home/httpd/cgi-bin
cp -p files/wlanap.png        /home/httpd/html/images
cp -p files/wlanrrd.pl        /usr/local/bin
cp -p files/wlanapctrl        /usr/local/bin
chown root.nobody             /usr/local/bin/wlanapctrl
chmod 4750                    /usr/local/bin/wlanapctrl

my_echo -e "$MSG_OK"


# MadWifi kernelmodules & wlanconfig
#
my_echo -e "Copy MadWifi kernel modules (this may take a few seconds)\c"
/bin/tar xfz packages/madwifi-*.tar.gz -C /
if [ "$DO_DEPMOD" == "1" ]; then
  depmod -ae  >/dev/null 2>&1
  touch /var/run/need-depmod-`uname -r`
fi
my_echo -e "$MSG_OK"

# hostapd
#
my_echo -e "Copy hostapd\c"
mkdir hostapd
/bin/tar xfz packages/hostapd-*.tar.gz -C hostapd
cp -p hostapd/hostapd         /usr/local/bin/
cp -p hostapd/hostapd_cli     /usr/local/bin/
cp hostapd/logwatch/hostapd.conf     /etc/log.d/conf/services/
cp hostapd/logwatch/hostapd          /etc/log.d/scripts/services/
chown root.root /etc/log.d/conf/services/hostapd.conf
chmod 755       /etc/log.d/conf/services/hostapd.conf
chown root.root /etc/log.d/scripts/services/hostapd
chmod 755       /etc/log.d/scripts/services/hostapd
rm -rf hostapd
my_echo -e "$MSG_OK"

# wpa_supplicant
#
my_echo -e "Copy wpa_supplicant\c"
mkdir wpa_supplicant
/bin/tar xfz packages/wpa_supplicant-*.tar.gz -C wpa_supplicant
cp -p wpa_supplicant/wpa_supplicant     /usr/local/sbin/
cp -p wpa_supplicant/wpa_cli            /usr/local/sbin/
cp -p wpa_supplicant/wpa_passphrase     /usr/local/sbin/
rm -rf wpa_supplicant
my_echo -e "$MSG_OK"

# Modify stuff
#
my_echo -e "Creating startup entry\c"
cat local.add >> /etc/rc.d/rc.local
my_echo -e "$MSG_OK"

my_echo -e "Adding driver loading to rc.network\c"
LINE=$(( $( /bin/grep -n -m1 "/proc/bus/pccard" /etc/rc.d/rc.network | cut -d: -f1 ) -1))
if [ $LINE == -1 ]; then
    my_echo -e "$MSG_ERROR"
else
    /bin/sed -i "$LINE a\#Added for WLAN AP - BEGIN" /etc/rc.d/rc.network 
    addto_file /etc/rc.d rc.network network.add "/WLAN.*AP.*BEGIN/"
    my_echo -e "$MSG_OK"
fi

my_echo -e "Creating webinterface entries\c"
addto_header /var/ipcop/ header.pl menu.add "/7.mainlogs.*subMenu.*2.*1/" 1.4.0
my_echo -e "$MSG_OK"

my_echo -e "Creating log entry\c"
addto_file /home/httpd/cgi-bin/logs.cgi log.dat log-1.add "/'(kernel)',/"
addto_file /home/httpd/cgi-bin/logs.cgi log.dat log-2.add "/Lang::tr{'kernel'}/"
my_echo -e "$MSG_OK"

my_echo -e "Adding interface status to netstatus.cgi\c"
LINE=$(( $( /bin/grep -n -m1 closebox /home/httpd/cgi-bin/netstatus.cgi | cut -d: -f1 ) +1))
if [ $LINE == 1 ]; then
    my_echo -e "$MSG_ERROR"
else
    /bin/sed -i "$LINE a\#Added for WLAN AP - BEGIN" /home/httpd/cgi-bin/netstatus.cgi
    addto_file /home/httpd/cgi-bin netstatus.cgi netstatus.add "/WLAN.*AP.*BEGIN/"
    my_echo -e "$MSG_OK"
fi

my_echo -e "Adding cronjob\c"
cat cron.add >> /var/spool/cron/root.orig
fcrontab -z >/dev/null 2>&1
my_echo -e "$MSG_OK"

if [ $UPGRADE == 2 ]; then
#  /etc/rc.d/rc.wlanap start
  REPLY='n'
elif [ $UPGRADE == 1 ]; then
  REPLY='n'
else
  REPLY='z'
fi

if [ $DO_QUIET == 1 ]; then
  REPLY='n'
fi

while [ "$REPLY" != "y" -a "$REPLY" != "n" ]
do
  my_echo -e "\nInstall WLAN card now ? [y/n] \c"
  read -n 1 REPLY
done

my_echo " "

if [ "$REPLY" == "y" ]; then
/var/ipcop/wlanap/bin/wlan-detect.pl
fi


WEP=`grep -w WEPKEY1 /var/ipcop/wlanap/settings|cut -d= -f2`
WPA=`grep -w PWD /var/ipcop/wlanap/settings|cut -d= -f2`

my_echo -e "\n\nInstallation finished."
my_echo -e "\nTo uninstall \033[1;34mWLAN AccessPoint for IPCop\033[0m"
my_echo -e "run \033[0;32m/var/ipcop/wlanap/bin/uninstall\033[0m."
my_echo -e "\nDefault Key for WEP:\t\t\033[1;31m$WEP\033[0m"
my_echo -e "Default password for WPA:\t\033[1;31m$WPA\033[0m"

exit 0
