2012-08-02 12:41:53 +02:00
|
|
|
#!/bin/bash
|
|
|
|
#postinst script for airtime
|
|
|
|
|
2013-03-19 18:40:42 +01:00
|
|
|
set -e
|
2012-08-02 12:41:53 +02:00
|
|
|
|
|
|
|
. /usr/share/debconf/confmodule
|
|
|
|
|
2013-03-19 18:40:42 +01:00
|
|
|
if [ "$DPKG_DEBUG" = "developer" ]; then
|
|
|
|
set -x
|
|
|
|
fi
|
|
|
|
|
2012-08-02 12:41:53 +02:00
|
|
|
wwwdir="/usr/share/airtime"
|
|
|
|
tmpdir="/var/lib/airtime/tmp"
|
|
|
|
configdir="/etc/airtime"
|
|
|
|
includefile="${configdir}/apache.conf"
|
|
|
|
a2tplfile="${configdir}/apache.vhost.tpl"
|
|
|
|
phpinifile="${configdir}/airtime.ini"
|
|
|
|
OLDVERSION="$2"
|
2013-12-04 14:50:31 +01:00
|
|
|
NEWVERSION="2.5.1"
|
2012-08-02 12:41:53 +02:00
|
|
|
|
|
|
|
case "$1" in
|
|
|
|
configure|reconfigure)
|
|
|
|
|
|
|
|
webserver="apache2"
|
|
|
|
php="php5"
|
|
|
|
|
|
|
|
# this file in 1.8.2 is a directory path in 1.9.3
|
|
|
|
if [ -f /var/www/airtime/utils/airtime-import ]; then
|
|
|
|
rm -f /var/www/airtime/utils/airtime-import
|
|
|
|
fi
|
|
|
|
|
2013-03-19 18:40:42 +01:00
|
|
|
# do we set up a virtual host?
|
|
|
|
db_get airtime/apache-setup
|
|
|
|
APACHESETUP=$RET
|
|
|
|
if [ "${APACHESETUP}" == "no thanks" ]; then
|
|
|
|
echo "Not setting up ${webserver} and ${php}..."
|
2012-08-02 12:41:53 +02:00
|
|
|
|
2013-03-19 18:40:42 +01:00
|
|
|
elif [ "${APACHESETUP}" == "dedicated v-host" ]; then
|
|
|
|
echo "Setting up ${webserver}..."
|
2012-08-02 12:41:53 +02:00
|
|
|
|
2013-03-19 18:40:42 +01:00
|
|
|
# create the document root if it doesn't exist
|
|
|
|
if [ ! -d $wwwdir/public/ ]; then
|
|
|
|
install -d -m755 $wwwdir/public/
|
2012-08-02 12:41:53 +02:00
|
|
|
fi
|
2013-03-19 18:40:42 +01:00
|
|
|
|
|
|
|
# temporarily disable an existing virtual host
|
|
|
|
if [ -f /etc/$webserver/sites-available/airtime-vhost ]; then
|
|
|
|
a2dissite airtime-vhost
|
2013-10-24 12:16:03 +02:00
|
|
|
elif [ -f /etc/$webserver/sites-available/airtime-vhost.conf ]; then
|
|
|
|
a2dissite airtime-vhost.conf
|
2012-08-02 12:41:53 +02:00
|
|
|
fi
|
|
|
|
|
|
|
|
db_get airtime/apache-servername
|
|
|
|
SN=$RET
|
|
|
|
db_get airtime/apache-serveradmin
|
|
|
|
SA=$RET
|
|
|
|
|
|
|
|
if [ ! -d /etc/$webserver/sites-available/ ]; then
|
|
|
|
install -d -m755 /etc/$webserver/sites-available/
|
|
|
|
fi
|
|
|
|
sed -e "s/__SERVER_ADMIN__/${SA}/;s/__SERVER_NAME__/${SN}/" \
|
2013-10-24 12:16:03 +02:00
|
|
|
${a2tplfile} > /etc/$webserver/sites-available/airtime-vhost.conf
|
2012-08-02 12:41:53 +02:00
|
|
|
|
|
|
|
command -v a2ensite > /dev/null
|
|
|
|
RETVAL=$?
|
|
|
|
if [ $RETVAL -eq 0 ]; then
|
2013-10-24 12:16:03 +02:00
|
|
|
a2ensite airtime-vhost.conf
|
2012-08-02 12:41:53 +02:00
|
|
|
fi
|
|
|
|
|
2013-03-19 18:40:42 +01:00
|
|
|
# insert a specific hostname, if provided, into API configuration
|
|
|
|
if [ "${SN}" != "localhost" ]; then
|
2012-08-02 12:41:53 +02:00
|
|
|
|
2013-03-19 18:40:42 +01:00
|
|
|
# new installs
|
|
|
|
if [ -f /var/lib/airtime/tmp/airtime_mvc/build/airtime.conf -a -f /var/lib/airtime/tmp/python_apps/api_clients/api_client.cfg ]; then
|
|
|
|
sed -i "s/base_url = localhost/base_url = ${SN}/" /var/lib/airtime/tmp/airtime_mvc/build/airtime.conf
|
|
|
|
sed -i "s/host = 'localhost'/host = '${SN}'/" /var/lib/airtime/tmp/python_apps/api_clients/api_client.cfg
|
|
|
|
fi
|
|
|
|
|
|
|
|
# upgrades
|
|
|
|
if [ -f /etc/airtime/airtime.conf -a -f /etc/airtime/api_client.cfg ]; then
|
|
|
|
sed -i "s/base_url = localhost/base_url = ${SN}/" /etc/airtime/airtime.conf
|
|
|
|
sed -i "s/host = 'localhost'/host = '${SN}'/" /etc/airtime/api_client.cfg
|
|
|
|
fi
|
2012-08-02 12:41:53 +02:00
|
|
|
fi
|
|
|
|
|
2013-03-19 18:40:42 +01:00
|
|
|
# enable the rewrite module
|
|
|
|
command -v a2enmod > /dev/null
|
|
|
|
RETVAL=$?
|
|
|
|
if [ $RETVAL -eq 0 ]; then
|
|
|
|
a2enmod rewrite
|
|
|
|
fi
|
|
|
|
|
|
|
|
# remove the default site, if requested to
|
|
|
|
db_get airtime/apache-deldefault
|
|
|
|
if [ "$RET" == "remove default" ]; then
|
|
|
|
if [ -f /etc/apache2/sites-available/default ]; then
|
2013-10-24 12:16:03 +02:00
|
|
|
a2dissite default
|
|
|
|
elif [ -f /etc/apache2/sites-available/000-default.conf ]; then
|
|
|
|
a2dissite 000-default.conf
|
2013-03-19 18:40:42 +01:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
# PHP config
|
|
|
|
echo "Configuring php5..."
|
|
|
|
if [ ! -d /etc/$php/conf.d/ ]; then
|
|
|
|
install -d -m755 /etc/$php/conf.d/
|
|
|
|
fi
|
|
|
|
if [ ! -e /etc/$php/conf.d/airtime.ini ]; then
|
|
|
|
ln -s ${phpinifile} /etc/$php/conf.d/airtime.ini
|
|
|
|
fi
|
|
|
|
|
|
|
|
# restart apache
|
|
|
|
invoke-rc.d apache2 restart
|
2012-08-02 12:41:53 +02:00
|
|
|
fi
|
|
|
|
|
|
|
|
# XXX ICECAST XXX
|
|
|
|
db_get airtime/icecast-setup
|
|
|
|
if [ "$RET" == "true" ]; then
|
|
|
|
if [ -f /etc/default/icecast2 -a -f /etc/icecast2/icecast.xml ]; then
|
|
|
|
echo "Setting up icecast2..."
|
|
|
|
sed -i "s:ENABLE=.*:ENABLE=true:g" /etc/default/icecast2
|
|
|
|
db_get airtime/icecast-sourcepw
|
|
|
|
ICESOURCE=$RET
|
|
|
|
sed -i "s:<source-password>.*<\/source-password>:<source-password>$ICESOURCE<\/source-password>:g" /etc/icecast2/icecast.xml
|
|
|
|
db_get airtime/icecast-relaypw
|
|
|
|
ICERELAY=$RET
|
|
|
|
sed -i "s:<relay-password>.*<\/relay-password>:<relay-password>$ICERELAY<\/relay-password>:g" /etc/icecast2/icecast.xml
|
|
|
|
db_get airtime/icecast-adminpw
|
|
|
|
ICEADMIN=$RET
|
|
|
|
sed -i "s:<admin-password>.*<\/admin-password>:<admin-password>$ICEADMIN<\/admin-password>:g" /etc/icecast2/icecast.xml
|
|
|
|
db_get airtime/icecast-hostname
|
|
|
|
ICEHOST=$RET
|
|
|
|
sed -i "s:<hostname>.*<\/hostname>:<hostname>$ICEHOST<\/hostname>:g" /etc/icecast2/icecast.xml
|
|
|
|
|
|
|
|
# restart icecast server
|
|
|
|
invoke-rc.d icecast2 restart || true
|
|
|
|
|
|
|
|
# save icecast hostname and source-password in airtime
|
|
|
|
db_get airtime/icecast-hostname
|
|
|
|
ICEHOST=$RET
|
|
|
|
sed -i "s:'s1_host', '127.0.0.1', 'string':'s1_host', '$ICEHOST', 'string':g" ${tmpdir}/airtime_mvc/build/sql/defaultdata.sql
|
|
|
|
|
|
|
|
db_get airtime/icecast-sourcepw
|
|
|
|
ICESOURCE=$RET
|
|
|
|
sed -i "s:'s1_pass', 'hackme', 'string':'s1_pass', '$ICESOURCE', 'string':g" ${tmpdir}/airtime_mvc/build/sql/defaultdata.sql
|
|
|
|
|
2013-01-22 18:19:56 +01:00
|
|
|
db_get airtime/icecast-adminpw
|
|
|
|
ICEADMIN=$RET
|
|
|
|
sed -i "s:'s1_admin_user', '', 'string':'s1_admin_user', 'admin', 'string':g" ${tmpdir}/airtime_mvc/build/sql/defaultdata.sql
|
|
|
|
sed -i "s:'s1_admin_pass', '', 'string':'s1_admin_pass', '$ICEADMIN', 'string':g" ${tmpdir}/airtime_mvc/build/sql/defaultdata.sql
|
|
|
|
|
2012-08-02 12:41:53 +02:00
|
|
|
else
|
|
|
|
echo "The icecast2 package does not appear to be installed on this server."
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Monit setup
|
|
|
|
if [ -f /etc/default/monit ]; then
|
|
|
|
echo "Setting up monit configuration..."
|
|
|
|
sed -i 's:startup=.*:startup=1:g' /etc/default/monit
|
2013-10-24 12:16:03 +02:00
|
|
|
sed -i 's:START=.*:START=yes:g' /etc/default/monit
|
2012-08-02 12:41:53 +02:00
|
|
|
|
|
|
|
MONITCONFIGURED=$(grep "include /etc/monit/conf.d" /etc/monit/monitrc || true)
|
|
|
|
if [ -z "$MONITCONFIGURED" ]; then
|
|
|
|
echo "include /etc/monit/conf.d/*" >> /etc/monit/monitrc
|
|
|
|
fi
|
|
|
|
|
|
|
|
invoke-rc.d monit restart
|
|
|
|
else
|
|
|
|
echo "The monit package does not appear to be installed on this server."
|
|
|
|
fi
|
|
|
|
|
|
|
|
# get airtime admin password on new installs
|
|
|
|
if [ ! -e /var/log/airtime/pypo/pypo.log ]; then
|
|
|
|
db_get airtime/admin-password
|
|
|
|
AIRTIMEADMIN=$RET
|
|
|
|
sed -i "1s:md5('admin'):md5('$AIRTIMEADMIN'):g" ${tmpdir}/airtime_mvc/build/sql/defaultdata.sql
|
|
|
|
fi
|
|
|
|
|
|
|
|
# get the main storage directory specified by the user
|
|
|
|
db_get airtime/storage-directory
|
|
|
|
AIRTIMESTORAGE=$RET
|
|
|
|
if [ "$AIRTIMESTORAGE" != "/srv/airtime/stor/" ]; then
|
|
|
|
sed -i "1s:/srv/airtime/stor/:$AIRTIMESTORAGE:g" ${tmpdir}/install_minimal/include/airtime-install.ini
|
|
|
|
fi
|
|
|
|
|
|
|
|
# stop debconf so daemons started by the install script cannot hold open the pipe
|
|
|
|
db_stop
|
|
|
|
|
|
|
|
# start rabbitmq if it isn't running
|
|
|
|
if [ -f /etc/init.d/rabbitmq-server ]; then
|
|
|
|
RABBITMQSTOPPED=$(invoke-rc.d rabbitmq-server status | grep no_nodes_running || true)
|
|
|
|
if [ -n "$RABBITMQSTOPPED" ]; then
|
|
|
|
invoke-rc.d rabbitmq-server start
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Warn if rabbitmq is installed but not set to start on boot
|
|
|
|
RABBITMQSTARTONBOOT=$(ls /etc/rc2.d/ | grep rabbitmq || true)
|
|
|
|
if [ -z "$RABBITMQSTARTONBOOT" ]; then
|
|
|
|
echo "Warning: rabbitmq-server is not configured to start after a reboot!"
|
|
|
|
echo "Fix Default-Start and Default-Stop lines in /etc/init.d/rabbitmq-server"
|
|
|
|
echo "then run this command as root: update-rc.d rabbitmq-server defaults"
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
echo "The rabbitmq-server package does not appear to be installed on this server."
|
|
|
|
fi
|
|
|
|
|
|
|
|
# fix the Liquidsoap symlink if it doesn't point to standard location
|
|
|
|
if [ -h /usr/bin/airtime-liquidsoap ]; then
|
|
|
|
SYMLINK_TARGET=`readlink /usr/bin/airtime-liquidsoap`
|
|
|
|
if [ "$SYMLINK_TARGET" != "/usr/bin/liquidsoap" ]; then
|
|
|
|
echo "Liquidsoap symlink points to the wrong place, fixing it!"
|
|
|
|
rm /usr/bin/airtime-liquidsoap
|
|
|
|
ln -s /usr/bin/liquidsoap /usr/bin/airtime-liquidsoap
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "$SYMLINK_TARGET" == "/usr/bin/liquidsoap" ]; then
|
|
|
|
echo "Liquidsoap symlink points to the right place!"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
# symlink the Liquidsoap path to standard location, if symlink doesn't exist
|
|
|
|
if [ ! -h /usr/bin/airtime-liquidsoap ]; then
|
|
|
|
echo "Creating symlink for Liquidsoap..."
|
|
|
|
ln -s /usr/bin/liquidsoap /usr/bin/airtime-liquidsoap
|
|
|
|
fi
|
|
|
|
|
|
|
|
# don't run airtime-install if the user is doing a dpkg-reconfigure
|
|
|
|
if [ "$1" = "reconfigure" ] || [ -n "$DEBCONF_RECONFIGURE" ] ; then
|
|
|
|
echo "Reconfiguration complete."
|
|
|
|
else
|
|
|
|
|
2013-03-19 18:40:42 +01:00
|
|
|
if [ -n "$OLDVERSION" ] && [[ "${OLDVERSION:0:3}" < "2.1" ]]; then
|
|
|
|
echo "Upgrades from Airtime versions before 2.1.0 are not supported. Please back up your files and perform a clean install."
|
|
|
|
|
|
|
|
elif [ "${APACHESETUP}" == "no thanks" ]; then
|
2013-03-27 13:33:47 +01:00
|
|
|
echo "Please run the ${tmpdir}/install_minimal/airtime-install script with the -d option after you have set up the web server."
|
2013-03-19 18:40:42 +01:00
|
|
|
|
2012-08-02 12:41:53 +02:00
|
|
|
else
|
|
|
|
|
|
|
|
mkdir -p /var/log/airtime
|
|
|
|
cd $tmpdir/install_minimal/
|
|
|
|
|
|
|
|
if [ "${OLDVERSION:0:5}" == "${NEWVERSION}" ] ; then
|
|
|
|
echo "Reinstallation detected..."
|
2012-08-06 12:34:17 +02:00
|
|
|
echo | ./airtime-install --disable-deb-check -rp 2> /var/log/airtime/reinstallation-errors.log
|
2012-08-02 12:41:53 +02:00
|
|
|
else
|
|
|
|
|
2012-08-06 12:34:17 +02:00
|
|
|
./airtime-install --disable-deb-check 2> /var/log/airtime/installation-errors.log
|
2012-08-02 12:41:53 +02:00
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Update the desktop menu to show Airtime
|
|
|
|
if test -x /usr/bin/update-menus; then
|
|
|
|
update-menus;
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
|
|
|
|
abort-upgrade|abort-remove|abort-deconfigure)
|
|
|
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
*)
|
|
|
|
echo "postinst called with unknown argument \`$1'" >&2
|
|
|
|
exit 1
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
#DEBHELPER#
|
|
|
|
|
|
|
|
exit 0
|