#!/bin/bash -e
#
# Auto install script for airtime on Ubuntu
#
# NGINX changes are contributed by Eugene MechanisM
# Link to the post:
# http://forum.sourcefabric.org/discussion/13563/first-step-to-run-airtime-via-nginx-based-on-airtime-2.0-beta-files

exec > >(tee install_log.txt)
exec 2>&1

if [ "$(id -u)" != "0" ]; then
    echo "Please run as root user."
    exit 1
fi

server="$1"

#Current dir
# Absolute path to this script, e.g. /home/user/bin/foo.sh
SCRIPT=`readlink -f $0`
# Absolute path this script is in, thus /home/user/bin
SCRIPTPATH=`dirname $SCRIPT`

#Prerequisite
echo "----------------------------------------------------"
echo " 1. Install Packages"
echo "----------------------------------------------------"

dist=`lsb_release -is`
code=`lsb_release -cs`

#enable squeeze backports to get lame packages
if [ "$dist" = "Debian" -a "$code" = "squeeze" ]; then
    set +e
    grep -E "deb http://backports.debian.org/debian-backports squeeze-backports main" /etc/apt/sources.list
    returncode=$?
    set -e
    if [ "$returncode" -ne "0" ]; then
        echo "deb http://backports.debian.org/debian-backports squeeze-backports main" >> /etc/apt/sources.list
    fi
fi

codename=`lsb_release -sc`
set +e
grep -E "deb +http://apt.sourcefabric.org/? +$codename +main" /etc/apt/sources.list
returncode=$?
set -e
if [ "$returncode" != "0" ]; then
    echo "deb http://apt.sourcefabric.org/ $codename main" >> /etc/apt/sources.list
fi

apt-get update

# Updated package list
apt-get -y --force-yes install tar gzip curl php5-pgsql  \
php-pear php5-gd postgresql odbc-postgresql python libsoundtouch-ocaml \
libtaglib-ocaml libao-ocaml libmad-ocaml ecasound \
libesd0 libportaudio2 libsamplerate0 rabbitmq-server patch \
php5-curl mpg123 monit python-virtualenv multitail libcamomile-ocaml-data \
libpulse0 vorbis-tools lsb-release lsof sudo mp3gain vorbisgain flac vorbis-tools \
pwgen libfaad2


#install packages with --force-yes option (this is useful in the case
#of Debian, where these packages are unauthorized)
apt-get -y --force-yes install libmp3lame-dev lame icecast2

#Debian Squeeze only has zendframework package. Newer versions of Ubuntu have zend-framework package.
#Ubuntu Lucid has both zendframework and zend-framework. Difference appears to be that zendframework is for
#1.10 and zend-framework is 1.11 
if [ "$dist" = "Debian" ]; then
    apt-get -y --force-yes install zendframework
else
    apt-get -y --force-yes install libzend-framework-php
fi

#get the "timeout" unix command
if [ "$code" = "lucid" ]; then
    apt-get -y --force-yes install timeout 
else
    apt-get -y --force-yes install coreutils
fi

#Install Sourcefabric's custom Liquidsoap debian package
apt-get -y --force-yes install sourcefabric-keyring
apt-get -y --force-yes install liquidsoap
apt-get -y --force-yes install silan

if [ "$server" = "nginx" ]; then
    apt-get -y --force-yes install nginx php5-fpm
    # NGINX Config File
    echo "----------------------------------------------------"
    echo "2.1 NGINX Config File"
    echo "----------------------------------------------------"
    if [ ! -f /etc/nginx/sites-available/airtime ]; then
        cp $SCRIPTPATH/../nginx/airtime-vhost /etc/nginx/sites-available/airtime 
        ln -s /etc/nginx/sites-available/airtime /etc/nginx/sites-enabled/airtime
        service nginx reload
    else
        echo "NGINX config for Airtime already exists..."
    fi

    # php-fpm Airtime pool file
    echo "----------------------------------------------------"
    echo "2.2 Airtime php pool file"
    echo "----------------------------------------------------"
    if [ ! -f /etc/php5/fpm/pool.d/airtime.conf ]; then
        cp $SCRIPTPATH/../php5-fpm/airtime.conf /etc/php5/fpm/pool.d/airtime.conf 
        service php5-fpm reload
    else
        echo "Airtime php pool file already exists..."
    fi
else
    apt-get -y --force-yes install apache2 libapache2-mod-php5
    # Apache Config File
    echo "----------------------------------------------------"
    echo "2. Apache Config File"
    echo "----------------------------------------------------"
    if [ ! -f /etc/apache2/sites-available/airtime ]; then
        cp $SCRIPTPATH/../apache/airtime-vhost /etc/apache2/sites-available/airtime
        a2dissite default
        a2ensite airtime
        a2enmod rewrite php5
        service apache2 restart
    else
        echo "Apache config for Airtime already exists..."
    fi
fi



# Enable Icecast
echo "----------------------------------------------------"
echo "3. Enable Icecast"
echo "----------------------------------------------------"
cd /etc/default/
sed -i 's/ENABLE=false/ENABLE=true/g' icecast2
set +e
service icecast2 start
set -e
echo ""

# Enable Monit
echo "----------------------------------------------------"
echo "4. Enable Monit"
echo "----------------------------------------------------"
cd /etc/default/
sed -i 's/startup=0/startup=1/g' monit

set +e
grep -q "include /etc/monit/conf.d" /etc/monit/monitrc
RETVAL=$?
set -e
if [ $RETVAL -ne 0 ] ; then
    mkdir -p /etc/monit/conf.d
    echo "include /etc/monit/conf.d/*" >> /etc/monit/monitrc
fi

# Run Airtime Install
echo "----------------------------------------------------"
echo "5. Run Airtime Install"
echo "----------------------------------------------------"
cd $SCRIPTPATH/../../install_minimal
./airtime-install
