diff --git a/airtime_mvc/public/.htaccess b/airtime_mvc/public/.htaccess index 9c1eedc66..8a50c17ef 100644 --- a/airtime_mvc/public/.htaccess +++ b/airtime_mvc/public/.htaccess @@ -2,7 +2,6 @@ php_value post_max_size 500M php_value upload_max_filesize 500M php_value request_order "GPC" php_value session.gc_probability 0 -php_value upload_tmp_dir /tmp php_value date.timezone "America/Toronto" php_value phar.readonly Off diff --git a/install_full/apache/airtime-vhost b/install_full/apache/airtime-vhost index 4caf438db..6e160ae84 100644 --- a/install_full/apache/airtime-vhost +++ b/install_full/apache/airtime-vhost @@ -1,6 +1,7 @@ ServerAdmin foo@bar.org DocumentRoot /var/www/airtime/public + php_admin_value upload_tmp_dir /tmp DirectoryIndex index.php diff --git a/install_minimal/airtime-install b/install_minimal/airtime-install index f86f04a82..b9da652fc 100755 --- a/install_minimal/airtime-install +++ b/install_minimal/airtime-install @@ -2,6 +2,11 @@ echo -e "\n******************************** Install Begin *********************************" +# Absolute path to this script +SCRIPT=`readlink -f $0` +# Absolute directory this script is in +SCRIPTPATH=`dirname $SCRIPT` + VIRTUAL_ENV_DIR="/usr/lib/airtime/airtime_virtualenv" if [ ! -d "$VIRTUAL_ENV_DIR" ]; then echo -e "\n*** Creating Vitualenv for Airtime ***" @@ -13,6 +18,17 @@ fi echo -e "\n*** Installing Python Libraries ***" sudo /usr/lib/airtime/airtime_virtualenv/bin/pip install airtime_virtual_env.pybundle -E /usr/lib/airtime/airtime_virtualenv +echo -e "\n*** Patching Python Libraries ***" +PACHES=${SCRIPTPATH}/patches/* +for file in $(find $PACHES -print); do + if [ -d $file ]; then + DIRNAME=$(basename $file) + echo -e "\n ---Applying Patches for $DIRNAME---" + else + sudo patch -N -p0 -i $file + fi +done +cd virtualenv_bin="/usr/lib/airtime/airtime_virtualenv/bin/" . ${virtualenv_bin}activate @@ -20,11 +36,6 @@ virtualenv_bin="/usr/lib/airtime/airtime_virtualenv/bin/" #return with a non-zero return value. set -e -# Absolute path to this script -SCRIPT=`readlink -f $0` -# Absolute directory this script is in -SCRIPTPATH=`dirname $SCRIPT` - echo -e "\n*** Creating Pypo User ***" python ${SCRIPTPATH}/../python_apps/create-pypo-user.py diff --git a/install_minimal/include/airtime-upgrade.php b/install_minimal/include/airtime-upgrade.php index 822aa3a28..856a1a57f 100644 --- a/install_minimal/include/airtime-upgrade.php +++ b/install_minimal/include/airtime-upgrade.php @@ -106,8 +106,6 @@ passthru("python ".__DIR__."/../../python_apps/show-recorder/install/recorder-in echo PHP_EOL."*** Updating Media Monitor ***".PHP_EOL; passthru("python ".__DIR__."/../../python_apps/media-monitor/install/media-monitor-install.py"); -AirtimeIni::CreateMonitFile(); - sleep(4); passthru("airtime-check-system"); diff --git a/install_minimal/patches/mutagen/mutagen_patch1.patch b/install_minimal/patches/mutagen/mutagen_patch1.patch new file mode 100644 index 000000000..baf2b126a --- /dev/null +++ b/install_minimal/patches/mutagen/mutagen_patch1.patch @@ -0,0 +1,35 @@ +Index: /usr/lib/airtime/airtime_virtualenv/lib/python2.6/site-packages/mutagen/mp3.py +=================================================================== +--- /usr/lib/airtime/airtime_virtualenv/lib/python2.6/site-packages/mutagen/mp3.py (revision 108) ++++ /usr/lib/airtime/airtime_virtualenv/lib/python2.6/site-packages/mutagen/mp3.py (working copy) +@@ -151,15 +151,16 @@ + self.sample_rate = self.__RATES[self.version][sample_rate] + + if self.layer == 1: +- frame_length = (12 * self.bitrate / self.sample_rate + padding) * 4 ++ padding *= 4 + frame_size = 384 + elif self.version >= 2 and self.layer == 3: +- frame_length = 72 * self.bitrate / self.sample_rate + padding + frame_size = 576 + else: +- frame_length = 144 * self.bitrate / self.sample_rate + padding + frame_size = 1152 + ++ frame_length = frame_size / 8 * \ ++ self.bitrate / self.sample_rate + padding ++ + if check_second: + possible = frame_1 + frame_length + if possible > len(data) + 4: +@@ -172,9 +173,7 @@ + if frame_data & 0xFFE0 != 0xFFE0: + raise HeaderNotFoundError("can't sync to second MPEG frame") + +- frame_count = real_size / float(frame_length) +- samples = frame_size * frame_count +- self.length = samples / self.sample_rate ++ self.length = 8 * real_size / float(self.bitrate) + + # Try to find/parse the Xing header, which trumps the above length + # and bitrate calculation. diff --git a/install_minimal/patches/mutagen/mutagen_patch2.patch b/install_minimal/patches/mutagen/mutagen_patch2.patch new file mode 100644 index 000000000..8761f1d14 --- /dev/null +++ b/install_minimal/patches/mutagen/mutagen_patch2.patch @@ -0,0 +1,20 @@ +Index: /usr/lib/airtime/airtime_virtualenv/lib/python2.6/site-packages/mutagen/mp3.py +=================================================================== +--- /usr/lib/airtime/airtime_virtualenv/lib/python2.6/site-packages/mutagen/mp3.py (revision 108) ++++ /usr/lib/airtime/airtime_virtualenv/lib/python2.6/site-packages/mutagen/mp3.py (working copy) +@@ -209,15 +209,6 @@ + bytes = struct.unpack('>I', data[xing + 12:xing + 16])[0] + self.bitrate = int((bytes * 8) // self.length) + +- # If the bitrate * the length is nowhere near the file +- # length, recalculate using the bitrate and file length. +- # Don't do this for very small files. +- fileobj.seek(2, 0) +- size = fileobj.tell() +- expected = (self.bitrate / 8) * self.length +- if not (size / 2 < expected < size * 2) and size > 2**16: +- self.length = size / float(self.bitrate * 8) +- + def pprint(self): + s = "MPEG %s layer %d, %d bps, %s Hz, %.2f seconds" % ( + self.version, self.layer, self.bitrate, self.sample_rate, diff --git a/install_minimal/upgrades/airtime-1.9.0/airtime-upgrade.php b/install_minimal/upgrades/airtime-1.9.0/airtime-upgrade.php index 96772a24a..9de5192f3 100644 --- a/install_minimal/upgrades/airtime-1.9.0/airtime-upgrade.php +++ b/install_minimal/upgrades/airtime-1.9.0/airtime-upgrade.php @@ -34,6 +34,31 @@ class AirtimeInstall{ chgrp($file, $CC_CONFIG['webServerUser']); } + public static function CreateSymlinksToUtils() + { + echo "* Creating /usr/bin symlinks".PHP_EOL; + AirtimeInstall::RemoveSymlinks(); + + echo "* Installing airtime-import".PHP_EOL; + $dir = CONF_DIR_BINARIES."/utils/airtime-import/airtime-import"; + exec("ln -s $dir /usr/bin/airtime-import"); + + echo "* Installing airtime-update-db-settings".PHP_EOL; + $dir = CONF_DIR_BINARIES."/utils/airtime-update-db-settings"; + exec("ln -s $dir /usr/bin/airtime-update-db-settings"); + + echo "* Installing airtime-check-system".PHP_EOL; + $dir = CONF_DIR_BINARIES."/utils/airtime-check-system"; + exec("ln -s $dir /usr/bin/airtime-check-system"); + } + + public static function RemoveSymlinks() + { + exec("rm -f /usr/bin/airtime-import"); + exec("rm -f /usr/bin/airtime-update-db-settings"); + exec("rm -f /usr/bin/airtime-check-system"); + } + public static function DbTableExists($p_name) { global $CC_DBC; @@ -333,6 +358,7 @@ class AirtimeIni{ const CONF_FILE_LIQUIDSOAP = "/etc/airtime/liquidsoap.cfg"; const CONF_FILE_MEDIAMONITOR = "/etc/airtime/media-monitor.cfg"; const CONF_FILE_API_CLIENT = "/etc/airtime/api_client.cfg"; + const CONF_FILE_MONIT = "/etc/monit/conf.d/airtime-monit.cfg"; /** * This function updates an INI style config file. @@ -369,6 +395,13 @@ class AirtimeIni{ } fclose($fp); } + + public static function CreateMonitFile(){ + if (!copy(__DIR__."/../../../python_apps/monit/airtime-monit.cfg", AirtimeIni::CONF_FILE_MONIT)){ + echo "Could not copy airtime-monit.cfg to /etc/monit/conf.d/. Exiting."; + exit(1); + } + } public static function ReadPythonConfig($p_filename) { @@ -661,7 +694,9 @@ AirtimeInstall::MigrateTablesToVersion(__DIR__, '20110713161043'); AirtimeInstall::InsertCountryDataIntoDatabase(); +AirtimeIni::CreateMonitFile(); +AirtimeInstall::CreateSymlinksToUtils(); /* create cron file for phone home stat */ AirtimeInstall::CreateCronFile(); diff --git a/utils/airtime-import/airtime-import b/utils/airtime-import/airtime-import index 1b6d78372..135b19252 100755 --- a/utils/airtime-import/airtime-import +++ b/utils/airtime-import/airtime-import @@ -6,7 +6,7 @@ virtualenv_bin="/usr/lib/airtime/airtime_virtualenv/bin/" airtime_import_path="/usr/lib/airtime/utils/airtime-import/" airtime_import_script="airtime-import.py" -api_client_path="/usr/lib/airtime/pypo/" +api_client_path="/usr/lib/airtime/" cd ${airtime_import_path} exec 2>&1 diff --git a/utils/phone_home_stat b/utils/phone_home_stat index dd16961b7..ff52674b2 100755 --- a/utils/phone_home_stat +++ b/utils/phone_home_stat @@ -1,6 +1,6 @@ #!/bin/bash #------------------------------------------------------------------------------- -# Copyright (c) 2010 Sourcefabric O.P.S. +# Copyright (c) 2011 Sourcefabric O.P.S. # # This file is part of the Airtime project. # http://airtime.sourcefabric.org/ @@ -21,7 +21,7 @@ # #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- -# This script cleans audio files in Airtime. +# This script send data to data collection server # # Absolute path to this script SCRIPT=`readlink -f $0`