#!/bin/bash

echo
echo Voicetronix VTLogger Installer 2007
echo
LOGGERV=1.3.17
DRIVERV=4.2.18
VTWEB=http://www.voicetronix.com
PORT_TYPE=E1
# Ian Roberts
# 1 May 2007   Modify e1 wanpipe and vpb conf files for single span
# 	       Web interface : Hit <ip-address>/calls/ to see call records
# 10 May 2007  Modify to install on feisty build...requires custom 3.1 series
#                wanpipe
# 30 Aug 2007  Modify for latest releases of logger/vpb-driver, and a 3.1
#                series wanpipe that is still available

echo vtlogger   v $LOGGERV
echo vpb-driver v $DRIVERV
echo openpri  firmware 25
echo signalling d-channel
echo type E1 or T1
echo ubuntu-server 6.06 LTS or 7.04
echo
echo run as root
echo you must have ubuntu-server minimal install -- do not use a LAMP install
echo you must have the ubuntu-server cd in the cd drive
echo you must have a network connection
echo you must have the voicetronix card installed in a spare pci slot

function install_packages(){
	echo
	echo install packages
	#backup sources.list
	cp /etc/apt/sources.list /etc/apt/sources.list.orig
	#turn on universe and multiverse for sqlite3
	sed -i -e "s/# deb/deb/g" /etc/apt/sources.list
	apt-get update
	apt-get -y remove dash
	apt-get -y install make patch g++ perl ssh
	apt-get -y install pciutils-dev libz-dev
	apt-get -y install byacc flex libncurses5-dev
	apt-get -y install sqlite3 libsqlite3-dev
	apt-get -y install apache2
	apache2 -k start

	echo
	echo install kernel headers
	apt-get -y install linux-headers-$(uname -r)
}

function install_wanpipe_31(){
echo
echo install wanpipe
cd /root
if [ -d wanpipe-3.1.3 ];then
	echo
	echo wanpipe installed
	wanrouter status
	echo
else
	if [ -f wanpipe-3.1.3.tgz ];then
		echo
	else
		wget ${VTWEB}/Downloads/wanpipe/wanpipe-3.1.3.tgz
	fi
	tar zxvf wanpipe-3.1.3.tgz
	cd wanpipe-3.1.3
	echo -e "y\n\ny\n\n\ny\n7\nAFT_TE1\nq\n\n\n\ny\ny\n\n\n\n\n\n\n\n\n" | ./Setup install
fi
}

function install_wanpipe(){
echo
echo install wanpipe
cd /root
if [ -d wanpipe ];then
	echo
	echo wanpipe installed
	wanrouter status
	echo
else
	if [ -f wanpipe-2.3.4-7.tgz ];then
		echo
	else
		wget ${VTWEB}/Downloads/wanpipe/wanpipe-2.3.4-7.tgz
	fi
	tar zxvf wanpipe-2.3.4-7.tgz
	cd wanpipe
	BUILD=`uname -r`
	./Setup install --silent
fi
}

function install_vpb_driver(){
echo
echo install vpb-driver
cd /root
if [ -d vpb-driver-${DRIVERV} ];then
	echo 
	echo vpb-driver installed
	echo
	vpbscan
else
	if [ -f vpb-driver-${DRIVERV}.tar.gz ];then
		echo
	else
		wget ${VTWEB}/Downloads/vpb-driver-4.x/vpb-driver-${DRIVERV}.tar.gz
	fi
	tar zxvf vpb-driver-${DRIVERV}.tar.gz
	cd vpb-driver-${DRIVERV}
	if [ $PORT_TYPE = t1 ]; then
		# patch for T1 mulaw init in openpri.cpp
		#wget ${VTWEB}.au/Downloads/logger/vpb_driver_ulaw_patch
		#patch src/libvpb/openpri.cpp < vpb_driver_ulaw_patch
		sed -i -e "s/PRI_LAYER_1_ALAW/PRI_LAYER_1_ULAW/" src/libvpb/openpri.cpp
	fi
	./configure --with-pri
	make install
fi
}

function install_conf_files(){
echo
echo install conf files
if [ -d /etc/vpb ];then
	echo
	echo config files exist
	echo
	echo vpb.conf
	cat /etc/vpb/vpb.conf
	echo openpri.conf
	cat /etc/vpb/openpri.conf
else
        cp -f /root/vpb-driver-${DRIVERV}/src/utils/VpbConfigurator /usr/local/bin
	wanrouter stop

        if [ $PORT_TYPE = t1 ]; then
                #country setting 61 - Australia is not used by pri
                # Setup single card t1 logging system
                echo -e "61\n l\n t\n" | VpbConfigurator
        else
                # Setup single card e1 logging system
                echo -e "61\n l\n e\n" | VpbConfigurator
		# Mods for single span wanpipe conf files
		sed -i -e "s/wp1aft3 = wanpipe1, auto, API, Comment//g" /etc/wanpipe/wanpipe1.conf
		sed -i -e "s/wp2aft3 = wanpipe2, auto, API, Comment//g" /etc/wanpipe/wanpipe2.conf
		sed -i -e "s/1-15/1-15.17-31/g" /etc/wanpipe/wanpipe1.conf
		sed -i -e "s/1-15/1-15.17-31/g" /etc/wanpipe/wanpipe2.conf
		sed -i -e "41,/46/d" /etc/wanpipe/wanpipe1.conf
		sed -i -e "41,/46/d" /etc/wanpipe/wanpipe2.conf
		sed -i -e "s/120/240/g" /etc/wanpipe/wanpipe1.conf
		sed -i -e "s/120/240/g" /etc/wanpipe/wanpipe2.conf
		# Mods for single span openpri.conf
		sed -i -e "s/wp1aft3,wp2aft3/wp1aft1,wp2aft1/g" /etc/vpb/openpri.conf
		
        fi
fi
}

function start_wanrouter(){
echo
echo start wanrouter
	wanrouter stop
	wanrouter start
	tail /var/log/messages
	wanrouter status
	cat /proc/interrupts | grep wan
}


function install_logger(){
echo
echo install logger
	cd /root
	if [ -f logger-${LOGGERV}.tar.gz ];then
		echo
	else
		wget ${VTWEB}/Downloads/logger-1.x/logger-${LOGGERV}.tar.gz
	fi
	tar zxvf logger-${LOGGERV}.tar.gz
	cd logger-${LOGGERV}
	if [ $PORT_TYPE = t1 ]; then
		sed -i -e "s/#CXXFLAGS += -DPRI_USE_CHANNEL_DIRS/CXXFLAGS += -DPRI_USE_CHANNEL_DIRS/g" src/Makefile
		sed -i -e "s/#CXXFLAGS += -DPRI_FIXED_CHANNELS/CXXFLAGS += -DPRI_FIXED_CHANNELS/g" src/Makefile
		sed -i -e "s/#CXXFLAGS += -DPRI_USE_T1/CXXFLAGS += -DPRI_USE_T1/g" src/Makefile
	else
		sed -i -e "s/#CXXFLAGS += -DPRI_USE_CHANNEL_DIRS/CXXFLAGS += -DPRI_USE_CHANNEL_DIRS/g" src/Makefile
		sed -i -e "s/#CXXFLAGS += -DPRI_FIXED_CHANNELS/CXXFLAGS += -DPRI_FIXED_CHANNELS/g" src/Makefile
	fi
	make
	make install


echo make database
	make sdb

echo set up /etc/vtloggerchannel.conf
	if [ $PORT_TYPE = e1 ]; then
		#Modify /etc/vtlogger/channels.conf to 30 ports for E1
		cp -f conf/channel.conf.30_linear_for_E1 /etc/vtlogger/channel.conf
	else
		#Modify /etc/vtlogger/channels.conf to 23 ports for T1
		cp -f conf/channel.conf.23_linear_for_T1 /etc/vtlogger/channel.conf
	fi
}

function install_web_interface(){
echo
echo Install web interface
	make install-web2
        # set up chanmap.txt

        # set default web page to /var/www/html/logger2
        sed -i -e "s/#RedirectMatch ^\/$ \/apache2-default/RedirectMatch ^\/$ \/logger2/" /etc/apache2/sites-available/default

	apache2 -k restart
}

function start_logger(){
echo
echo Start vtlogger
	vtlogger

echo install startup scripts to rc local
        rm -f /etc/rc.local
        echo -e "sleep 5\n/usr/local/bin/vtlogger\nexit 0" >> /etc/rc.local

#Check logger operation
	#vtstatus.sh
}

if [ `id -u` != "0" ]; then
	echo "Sorry, you are not root."
	exit 1
fi

echo $"parm: $0   $1"
case "$1" in
    e1)
	PORT_TYPE=e1
	;;
    E1)
	PORT_TYPE=e1
	;;
    t1)
	PORT_TYPE=t1
	;;
    T1)
	PORT_TYPE=t1
	;;
    *)
	echo $"Usage : $0 {e1|t1}"
	exit 1
esac

install_packages
BUILD=`uname -r`
if [ $BUILD = 2.6.20-15-server ];then
   install_wanpipe_31
else
   install_wanpipe
fi
install_vpb_driver
install_conf_files
start_wanrouter
install_logger
install_web_interface
start_logger
