#!/bin/bash

echo Voicetronix J1 to Analogue Asterisk Installer V1.0
echo
echo Ubuntu Server v7.04
echo Asterisk      v1.4.4
echo Zaptel        v1.4.2.1vt1
echo Wanpipe       v3.1.0
echo 1 x OpenPRI card
echo 3 x OpenPCI 8S cards with firmware v10
echo
echo This installer script should be run under sudo or as root
echo You must have the Ubuntu CD in the CD drive
echo You must have a network connection
echo You must have the 4 Voicetronix cards in the machine
echo You should have a fresh install of Ubuntu Server
echo

######################################################################
# Functions
######################################################################

function install_packages() {
    echo
    echo '*** Installing extra Ubuntu packages ***'
    echo

    apt-get update
    apt-get install -y build-essential \
            linux-headers-$(uname -r) \
            libgsm1-dev libvorbis-dev libspeex-dev \
            libssl-dev libncurses-dev flex bison

    echo
    echo '*** Finished installing extra Ubuntu packages ***'
    echo
}

function install_zaptel() {
    echo
    echo '*** Installing zaptel ***'
    echo

    cd /tmp
    wget http://www.voicetronix.com/Downloads/asterisk/zaptel-1.4.2.1vt1.tar.gz
    tar zxf zaptel-1.4.2.1vt1.tar.gz
    cd zaptel-1.4.2.1vt1
    ./configure
    make
    make install
    ln -s `pwd` /usr/src/zaptel

    echo
    echo '*** Finished installing zaptel ***'
    echo
}

function install_wanpipe() {
    echo
    echo '*** Installing wanpipe ***'
    echo

    cd /tmp
    wget ftp://ftp.sangoma.com/linux/current_wanpipe/wanpipe-3.1.0.tgz
    tar zxf wanpipe-3.1.0.tgz
    cd wanpipe-3.1.0
    sed -i -e 's/^#\!\/bin\/sh$/#!\/bin\/bash/' Setup
    echo -e "y\n\ny\n\n\ny\n2\n\ny\nn\n\n\n\n\ny\ny\n\nn\n\n\n\n\n\n\n\nn\n" | ./Setup install
    
    echo
    echo '*** Finished installing wanpipe ***'
    echo
}

function install_libpri() {
    echo
    echo '*** Installing libpri ***'
    echo

    cd /tmp
    wget http://ftp.digium.com/pub/libpri/releases/libpri-1.4.0.tar.gz
    tar zxvf libpri-1.4.0.tar.gz
    cd libpri-1.4.0
    make
    make install

    echo
    echo '*** Finished installing libpri ***'
    echo
}

function install_asterisk() {
    echo
    echo '*** Installing asterisk ***'
    echo

    cd /tmp
    wget http://ftp.digium.com/pub/asterisk/releases/asterisk-1.4.4.tar.gz
    tar zxf asterisk-1.4.4.tar.gz
    cd asterisk-1.4.4
    ./configure
    make
    make install
    make samples
    sed -i -e 's/^#\!\/bin\/sh$/#!\/bin\/bash/' /usr/sbin/safe_asterisk

    echo
    echo '*** Finished installing asterisk ***'
    echo
}

function configure_wanpipe() {
    echo
    echo '*** Configuring wanpipe ***'
    echo

    echo -e "1\n1\n1\n1\n1\n3\nfrom-isdn\n1\n\n\n\n2\n2\n" | wancfg_zaptel
    asterisk -rx "stop now"

    echo
    echo '*** Finished configuring wanpipe ***'
    echo
}

function configure_zaptel() {
    echo
    echo '*** Configuring zaptel ***'
    echo

    modprobe wcopenpci
    cat <<EOF >/etc/default/zaptel
lc_country=jp
fxs_default_start=ks
base_exten=76
context_lines=from-isdn
context_phones=from-handset
group_lines=1
group_phones=2
EOF
    cd /usr/src/zaptel/xpp/utils
    ./genzaptelconf
    echo '#include /etc/asterisk/zapata-channels.conf' >>/etc/asterisk/zapata.conf

    echo
    echo '*** Finished configuring zaptel ***'
    echo
}

function configure_asterisk() {
    echo
    echo '*** Configuring asterisk ***'
    echo

    cd /tmp
    wget http://www.voicetronix.com/Downloads/asterisk/j1-to-analogue-extensions.conf
    mv j1-to-analogue-extensions.conf /etc/asterisk/extensions.conf

    echo
    echo '*** Finished configuring asterisk ***'
    echo
}

function install_initd_scripts() {
    echo
    echo '*** Installing startup scripts ***'
    echo

    cat <<EOF >/etc/modprobe.d/blacklist-zaptel
blacklist wcopenpci
EOF
    cd /tmp
    wget http://www.voicetronix.com/Downloads/asterisk/rc.openpri+openpci.asterisk
    install -o root -g root -m 0755 rc.openpri+openpci.asterisk /etc/init.d/asterisk
    update-rc.d asterisk start 20 2 3 4 5 . stop 03 0 1 6 .

    echo
    echo '*** Finished installing startup scripts ***'
    echo
}

######################################################################
# Code start
######################################################################

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

install_packages
install_zaptel
install_wanpipe
install_libpri
install_asterisk
configure_wanpipe
configure_zaptel
configure_asterisk
install_initd_scripts

/etc/init.d/asterisk start
