diff --git a/airtime_mvc/application/models/Preference.php b/airtime_mvc/application/models/Preference.php
index 337ba052b..f7fca885e 100644
--- a/airtime_mvc/application/models/Preference.php
+++ b/airtime_mvc/application/models/Preference.php
@@ -329,7 +329,7 @@ class Application_Model_Preference
}
public static function GetSystemInfo($returnArray=false){
- exec('/usr/bin/airtime-check-system', $output);
+ exec('/usr/bin/airtime-check-system --no-color', $output);
$output = preg_replace('/\s+/', ' ', $output);
diff --git a/airtime_mvc/application/models/airtime/map/CcFilesTableMap.php b/airtime_mvc/application/models/airtime/map/CcFilesTableMap.php
index f27605754..38d2e3955 100644
--- a/airtime_mvc/application/models/airtime/map/CcFilesTableMap.php
+++ b/airtime_mvc/application/models/airtime/map/CcFilesTableMap.php
@@ -96,7 +96,7 @@ class CcFilesTableMap extends TableMap {
$this->addColumn('SOUNDCLOUD_ID', 'DbSoundcloudId', 'INTEGER', false, null, null);
$this->addColumn('SOUNDCLOUD_ERROR_CODE', 'DbSoundcloudErrorCode', 'INTEGER', false, null, null);
$this->addColumn('SOUNDCLOUD_ERROR_MSG', 'DbSoundcloudErrorMsg', 'VARCHAR', false, 512, null);
- $this->addColumn('SOUNDCLOUD_LINK_TO_FILE', 'DbSoundcloudLinkToFile', 'VARCHAR', false, 512, null);
+ $this->addColumn('SOUNDCLOUD_LINK_TO_FILE', 'DbSoundcloudLinkToFile', 'VARCHAR', false, 4096, null);
// validators
} // initialize()
diff --git a/airtime_mvc/build/schema.xml b/airtime_mvc/build/schema.xml
index 2cc0666bb..7259ccaae 100644
--- a/airtime_mvc/build/schema.xml
+++ b/airtime_mvc/build/schema.xml
@@ -91,7 +91,7 @@
-
+
diff --git a/airtime_mvc/build/sql/schema.sql b/airtime_mvc/build/sql/schema.sql
index ae1770f48..3f4392bd3 100644
--- a/airtime_mvc/build/sql/schema.sql
+++ b/airtime_mvc/build/sql/schema.sql
@@ -117,7 +117,7 @@ CREATE TABLE "cc_files"
"soundcloud_id" INTEGER,
"soundcloud_error_code" INTEGER,
"soundcloud_error_msg" VARCHAR(512),
- "soundcloud_link_to_file" VARCHAR(512),
+ "soundcloud_link_to_file" VARCHAR(4096),
PRIMARY KEY ("id"),
CONSTRAINT "cc_files_gunid_idx" UNIQUE ("gunid")
);
diff --git a/dev_tools/gen_doctrine_migration.php b/dev_tools/gen_doctrine_migration.php
index e54c6ad53..b2e8f2156 100644
--- a/dev_tools/gen_doctrine_migration.php
+++ b/dev_tools/gen_doctrine_migration.php
@@ -5,5 +5,5 @@
*/
$dir = __DIR__;
- $command = "php $dir/../airtime_mvc/library/doctrine/migrations/doctrine-migrations.phar --configuration=$dir/../install_minimal/DoctrineMigrations/migrations.xml --db-configuration=$dir/../airtime_mvc/library/doctrine/migrations/migrations-db.php --no-interaction migrations:generate";
+ $command = "php --php-ini $dir/../install_minimal/airtime-php.ini $dir/../airtime_mvc/library/doctrine/migrations/doctrine-migrations.phar --configuration=$dir/../install_minimal/DoctrineMigrations/migrations.xml --db-configuration=$dir/../airtime_mvc/library/doctrine/migrations/migrations-db.php --no-interaction migrations:generate";
system($command);
diff --git a/install_minimal/DoctrineMigrations/Version20111102142811.php b/install_minimal/DoctrineMigrations/Version20111102142811.php
new file mode 100644
index 000000000..d0a80da84
--- /dev/null
+++ b/install_minimal/DoctrineMigrations/Version20111102142811.php
@@ -0,0 +1,25 @@
+ 'soundcloud_auto_upload_recorded_show' CC-2928
+ $this->_addSql("UPDATE cc_pref SET keystr = 'soundcloud_auto_upload_recorded_show'
+ WHERE keystr = 'soundcloud_upload'");
+
+ // add soundcloud_link_to_file
+ $cc_files = $schema->getTable('cc_files');
+ $cc_files->addColumn('soundcloud_link_to_file', 'string', array('length' => 4096, 'notnull' => 0, 'default'=> NULL));
+ }
+
+ public function down(Schema $schema)
+ {
+
+ }
+}
\ No newline at end of file
diff --git a/install_minimal/DoctrineMigrations/Version20111103141311.php b/install_minimal/DoctrineMigrations/Version20111103141311.php
new file mode 100644
index 000000000..970880e57
--- /dev/null
+++ b/install_minimal/DoctrineMigrations/Version20111103141311.php
@@ -0,0 +1,21 @@
+getTable('cc_show_days');
+ $cc_subjs->addColumn('timezone', 'string', array('required' => true));
+ }
+
+ public function down(Schema $schema)
+ {
+
+ }
+}
diff --git a/install_minimal/airtime-install b/install_minimal/airtime-install
index 1fc2bff04..7aa9c963e 100755
--- a/install_minimal/airtime-install
+++ b/install_minimal/airtime-install
@@ -36,12 +36,19 @@ echo -e "\n******************************** Install Begin **********************
SCRIPT=`readlink -f $0`
# Absolute path this script is in, thus /home/user/bin
SCRIPTPATH=`dirname $SCRIPT`
+AIRTIMEROOT=$SCRIPTPATH/../
-python $SCRIPTPATH/../python_apps/create-pypo-user.py
+rm -rf "/usr/lib/airtime"
+$AIRTIMEROOT/python_apps/python-virtualenv/virtualenv-install.sh
+python $AIRTIMEROOT/python_apps/create-pypo-user.py
$SCRIPTPATH/include/airtime-copy-files.sh
$SCRIPTPATH/include/airtime-initialize.sh $@
+#Hack to parse rabbitmq pid and place it into the correct directory. This is also
+#done in our rabbitmq init.d script, but placing it here so that monit recognizes
+# it faster (in time for the airtime-check-system)
+sed "s/.*,\(.*\)\}.*/\1/" /var/lib/rabbitmq/pids > /var/run/rabbitmq.pid
echo -e "\n*** Verifying your system environment, running airtime-check-system ***"
sleep 10
diff --git a/install_minimal/airtime-install.old b/install_minimal/airtime-install.old
deleted file mode 100755
index 203f61dbf..000000000
--- a/install_minimal/airtime-install.old
+++ /dev/null
@@ -1,96 +0,0 @@
-#!/bin/bash -e
-#-e Causes bash script to exit if any of the installers
-#return with a non-zero return value.
-
-if [ `whoami` != 'root' ]; then
- echo "Please run as root user."
- exit 1
-fi
-
-set +e
-DEB=$(dpkg -s airtime 2> /dev/null | grep Status)
-set -e
-if [[ "$DEB" = "Status: install ok installed" ]]; then
- echo -e "\nDebian package of Airtime detected. Please use the debian package to upgrade.\n"
- exit 1
-fi
-
-
-#Check whether version of virtualenv is <= 1.4.8. If so exit install.
-BAD_VERSION="1.4.8"
-VERSION=$(virtualenv --version)
-NEWEST_VERSION=$(echo -e "$BAD_VERSION\n$VERSION\n'" | sort -t '.' -g | tail -n 1)
-echo -n "Ensuring python-virtualenv version > $BAD_VERSION..."
-if [[ "$NEWEST_VERSION" = "$BAD_VERSION" ]]; then
- URL="http://apt.sourcefabric.org/pool/main/p/python-virtualenv/python-virtualenv_1.4.9-3_all.deb"
- echo "Failed!"
- echo "You have version $BAD_VERSION or older installed. Please install package at $URL first and then try installing Airtime again."
- exit 1
-else
- echo "Success!"
-fi
-
-
-echo -e "\n******************************** Install Begin *********************************"
-
-# Absolute path to this script
-SCRIPT=`readlink -f $0`
-# Absolute directory this script is in
-SCRIPTPATH=`dirname $SCRIPT`
-
-${SCRIPTPATH}/../python_apps/python-virtualenv/virtualenv-install.sh
-
-virtualenv_bin="/usr/lib/airtime/airtime_virtualenv/bin/"
-. ${virtualenv_bin}activate
-
-echo -e "\n*** Creating Pypo User ***"
-python ${SCRIPTPATH}/../python_apps/create-pypo-user.py
-
-set +e
-php --php-ini ${SCRIPTPATH}/airtime-php.ini ${SCRIPTPATH}/include/airtime-install.php $@
-result=$?
-
-if [ "$result" -ne "0" ]; then
- #There was an error, exit with error code.
- echo "There was an error during upgrade. Exit code $result"
- exit 1
-fi
-set -e
-
-echo -e "\n*** API Client Installation ***"
-python ${SCRIPTPATH}/../python_apps/api_clients/install/api_client_install.py
-
-echo -e "\n*** Pypo Installation ***"
-python ${SCRIPTPATH}/../python_apps/pypo/install/pypo-install.py
-
-echo -e "\n*** Recorder Installation ***"
-python ${SCRIPTPATH}/../python_apps/show-recorder/install/recorder-install.py
-
-echo -e "\n*** Media Monitor Installation ***"
-python ${SCRIPTPATH}/../python_apps/media-monitor/install/media-monitor-install.py
-
-python ${SCRIPTPATH}/../python_apps/icecast2/install/icecast2-install.py
-
-# Start monit if it is not running, or restart if it is.
-# Need to ensure monit is running before Airtime daemons are run. This is
-# so we can ensure they can register with monit to monitor them when they start.
-# If monit is already running, this step is still useful as we need monit to
-# reload its config files.
-/etc/init.d/monit restart
-
-#give monit some time to boot-up before issuing commands
-sleep 1
-
-set +e
-monit monitor airtime-media-monitor
-monit monitor airtime-liquidsoap
-monit monitor airtime-playout
-monit monitor airtime-show-recorder
-monit monitor rabbitmq-server
-set -e
-
-echo -e "\n*** Verifying your system environment ***"
-sleep 10
-airtime-check-system
-
-echo -e "\n******************************* Install Complete *******************************"
diff --git a/install_minimal/airtime-uninstall b/install_minimal/airtime-uninstall
index 5a7c1ada2..a33c7bde2 100755
--- a/install_minimal/airtime-uninstall
+++ b/install_minimal/airtime-uninstall
@@ -6,6 +6,8 @@ if [ `whoami` != 'root' ]; then
exit 1
fi
+echo -e "\n******************************* Uninstall Begin ********************************"
+
# 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
@@ -19,3 +21,5 @@ $SCRIPTPATH/include/airtime-remove-files.sh
#Remove pypo user
python $SCRIPTPATH/../python_apps/remove-pypo-user.py
+
+echo -e "\n****************************** Uninstall Complete *******************************"
diff --git a/install_minimal/airtime-uninstall.old b/install_minimal/airtime-uninstall.old
deleted file mode 100755
index 8bfbc4309..000000000
--- a/install_minimal/airtime-uninstall.old
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/bin/bash
-
-if [ `whoami` != 'root' ]; then
- echo "Please run as root user."
- exit 1
-fi
-
-VIRTUAL_ENV_DIR="/usr/lib/airtime/airtime_virtualenv"
-if [ ! -d "$VIRTUAL_ENV_DIR" ]; then
- echo -e "\nAirtime is not installed, cannot uninstall.\n"
- exit 1
-fi
-
-virtualenv_bin="/usr/lib/airtime/airtime_virtualenv/bin/"
-. ${virtualenv_bin}activate
-
-#Cause bash script to exit if any of the installers
-#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******************************* Uninstall Begin ********************************"
-
-set +e
-monit unmonitor rabbitmq-server >/dev/null 2>&1
-set -e
-
-$SCRIPTPATH/include/airtime-uninitialize.sh
-$SCRIPTPATH/include/airtime-remove-files.sh
-
-#echo -e "\n*** Uninstalling Pypo ***"
-#python ${SCRIPTPATH}/../python_apps/pypo/install/pypo-uninstall.py
-
-#echo -e "\n*** Uninstalling Show Recorder ***"
-#python ${SCRIPTPATH}/../python_apps/show-recorder/install/recorder-uninstall.py
-
-#echo -e "\n*** Uninstalling Media Monitor ***"
-#python ${SCRIPTPATH}/../python_apps/media-monitor/install/media-monitor-uninstall.py
-
-#echo -e "\n*** Uninstalling API Client ***"
-#python ${SCRIPTPATH}/../python_apps/api_clients/install/api_client_uninstall.py
-
-
-echo -e "\n*** Removing Pypo User ***"
-python ${SCRIPTPATH}/../python_apps/remove-pypo-user.py
-
-#php ${SCRIPTPATH}/include/airtime-uninstall.php
-
-echo -e "\n****************************** Uninstall Complete ******************************\n"
-echo "NOTE: To fully remove all Airtime files, you will also have to manually delete"
-echo " the directories '/srv/airtime'(default storage location of media files)"
-echo -e " and '/etc/airtime'(where the config files are stored).\n"
diff --git a/install_minimal/include/AirtimeInstall.php b/install_minimal/include/AirtimeInstall.php
index 24189f057..e30daa569 100644
--- a/install_minimal/include/AirtimeInstall.php
+++ b/install_minimal/include/AirtimeInstall.php
@@ -43,7 +43,7 @@ class AirtimeInstall
$values = parse_ini_file('/etc/airtime/airtime.conf', true);
}
else {
- echo "New Airtime Install.".PHP_EOL;
+ //echo "New Airtime Install.".PHP_EOL;
return null;
}
@@ -56,7 +56,7 @@ class AirtimeInstall
$CC_DBC = DB::connect($CC_CONFIG['dsn'], FALSE);
if (PEAR::isError($CC_DBC)) {
- echo "New Airtime Install.".PHP_EOL;
+ //echo "New Airtime Install.".PHP_EOL;
return null;
}
else {
@@ -170,7 +170,7 @@ class AirtimeInstall
{
global $CC_CONFIG;
- echo "* Creating Airtime database user".PHP_EOL;
+ echo " * Creating Airtime database user".PHP_EOL;
$username = $CC_CONFIG['dsn']['username'];
$password = $CC_CONFIG['dsn']['password'];
@@ -178,14 +178,14 @@ class AirtimeInstall
@exec($command, $output, $results);
if ($results == 0) {
- echo "* Database user '{$CC_CONFIG['dsn']['username']}' created.".PHP_EOL;
+ echo " * Database user '{$CC_CONFIG['dsn']['username']}' created.".PHP_EOL;
} else {
if (count($output) > 0) {
- echo "* Could not create user '{$CC_CONFIG['dsn']['username']}': ".PHP_EOL;
+ echo " * Could not create user '{$CC_CONFIG['dsn']['username']}': ".PHP_EOL;
echo implode(PHP_EOL, $output);
}
else {
- echo "* Database user '{$CC_CONFIG['dsn']['username']}' already exists.".PHP_EOL;
+ echo " * Database user '{$CC_CONFIG['dsn']['username']}' already exists.".PHP_EOL;
}
}
}
@@ -195,7 +195,7 @@ class AirtimeInstall
{
global $CC_CONFIG;
- echo "* Creating Airtime database".PHP_EOL;
+ echo " * Creating Airtime database".PHP_EOL;
$database = $CC_CONFIG['dsn']['database'];
$username = $CC_CONFIG['dsn']['username'];
@@ -204,14 +204,14 @@ class AirtimeInstall
@exec($command, $output, $results);
if ($results == 0) {
- echo "* Database '{$CC_CONFIG['dsn']['database']}' created.".PHP_EOL;
+ echo " * Database '{$CC_CONFIG['dsn']['database']}' created.".PHP_EOL;
} else {
if (count($output) > 0) {
- echo "* Could not create database '{$CC_CONFIG['dsn']['database']}': ".PHP_EOL;
+ echo " * Could not create database '{$CC_CONFIG['dsn']['database']}': ".PHP_EOL;
echo implode(PHP_EOL, $output);
}
else {
- echo "* Database '{$CC_CONFIG['dsn']['database']}' already exists.".PHP_EOL;
+ echo " * Database '{$CC_CONFIG['dsn']['database']}' already exists.".PHP_EOL;
}
}
@@ -227,17 +227,17 @@ class AirtimeInstall
// Install postgres scripting language
$langIsInstalled = $CC_DBC->GetOne('SELECT COUNT(*) FROM pg_language WHERE lanname = \'plpgsql\'');
if ($langIsInstalled == '0') {
- echo "* Installing Postgres scripting language".PHP_EOL;
+ echo " * Installing Postgres scripting language".PHP_EOL;
$sql = "CREATE LANGUAGE 'plpgsql'";
AirtimeInstall::InstallQuery($sql, false);
} else {
- echo "* Postgres scripting language already installed".PHP_EOL;
+ echo " * Postgres scripting language already installed".PHP_EOL;
}
}
public static function CreateDatabaseTables()
{
- echo "* Creating database tables".PHP_EOL;
+ echo " * Creating database tables".PHP_EOL;
// Put Propel sql files in Database
//$command = AirtimeInstall::CONF_DIR_WWW."/library/propel/generator/bin/propel-gen ".AirtimeInstall::CONF_DIR_WWW."/build/ insert-sql";
@@ -431,8 +431,6 @@ class AirtimeInstall
public static function CreateZendPhpLogFile(){
global $CC_CONFIG;
- echo "* Creating logs directory ".AirtimeInstall::CONF_DIR_LOG.PHP_EOL;
-
$path = AirtimeInstall::CONF_DIR_LOG;
$file = $path.'/zendphp.log';
if (!file_exists($path)){
diff --git a/install_minimal/include/airtime-copy-files.sh b/install_minimal/include/airtime-copy-files.sh
index 964c11a9b..64d7a8fac 100755
--- a/install_minimal/include/airtime-copy-files.sh
+++ b/install_minimal/include/airtime-copy-files.sh
@@ -33,39 +33,64 @@ SCRIPTPATH=`dirname $SCRIPT`
AIRTIMEROOT=$SCRIPTPATH/../../
+echo "* Creating /etc/airtime"
mkdir -p /etc/airtime
-cp $AIRTIMEROOT/airtime_mvc/build/airtime.conf /etc/airtime
-cp $AIRTIMEROOT/python_apps/api_clients/api_client.cfg /etc/airtime
-cp $AIRTIMEROOT/python_apps/show-recorder/recorder.cfg /etc/airtime
-cp $AIRTIMEROOT/python_apps/media-monitor/media-monitor.cfg /etc/airtime
-cp $AIRTIMEROOT/python_apps/pypo/pypo.cfg /etc/airtime
-cp $AIRTIMEROOT/python_apps/pypo/liquidsoap_scripts/liquidsoap.cfg /etc/airtime
+if [ ! -e /etc/airtime/airtime.conf ]; then
+ cp $AIRTIMEROOT/airtime_mvc/build/airtime.conf /etc/airtime
+fi
+if [ ! -e /etc/airtime/api_client.cfg ]; then
+cp $AIRTIMEROOT/python_apps/api_clients/api_client.cfg /etc/airtime
+fi
+
+if [ ! -e /etc/airtime/recorder.cfg ]; then
+cp $AIRTIMEROOT/python_apps/show-recorder/recorder.cfg /etc/airtime
+fi
+
+if [ ! -e /etc/airtime/media-monitor.cfg ]; then
+cp $AIRTIMEROOT/python_apps/media-monitor/media-monitor.cfg /etc/airtime
+fi
+
+if [ ! -e /etc/airtime/pypo.cfg ]; then
+cp $AIRTIMEROOT/python_apps/pypo/pypo.cfg /etc/airtime
+fi
+
+if [ ! -e /etc/airtime/liquidsoap.cfg ]; then
+cp $AIRTIMEROOT/python_apps/pypo/liquidsoap_scripts/liquidsoap.cfg /etc/airtime
+fi
+
+echo "* Creating /etc/cron.d/airtime-crons"
HOUR=$(($RANDOM%24))
MIN=$(($RANDOM%60))
echo "$MIN $HOUR * * * root /usr/lib/airtime/utils/phone_home_stat" > /etc/cron.d/airtime-crons
-$AIRTIMEROOT/python_apps/python-virtualenv/virtualenv-install.sh
virtualenv_bin="/usr/lib/airtime/airtime_virtualenv/bin/"
. ${virtualenv_bin}activate
+echo "* Creating /usr/lib/airtime"
python $AIRTIMEROOT/python_apps/api_clients/install/api_client_install.py
-python $AIRTIMEROOT/python_apps/pypo/install/pypo-install-files.py
-python $AIRTIMEROOT/python_apps/media-monitor/install/media-monitor-install-files.py
-python $AIRTIMEROOT/python_apps/show-recorder/install/recorder-install-files.py
+python $AIRTIMEROOT/python_apps/pypo/install/pypo-copy-files.py
+python $AIRTIMEROOT/python_apps/media-monitor/install/media-monitor-copy-files.py
+python $AIRTIMEROOT/python_apps/show-recorder/install/recorder-copy-files.py
cp -R $AIRTIMEROOT/utils /usr/lib/airtime
+echo "* Creating symbolic links in /usr/bin"
#create symbolic links
ln -sf /usr/lib/airtime/utils/airtime-import/airtime-import /usr/bin/airtime-import
ln -sf /usr/lib/airtime/utils/airtime-update-db-settings /usr/bin/airtime-update-db-settings
ln -sf /usr/lib/airtime/utils/airtime-check-system /usr/bin/airtime-check-system
ln -sf /usr/lib/airtime/utils/airtime-log /usr/bin/airtime-log
+echo "* Creating /usr/share/airtime"
+rm -rf "/usr/share/airtime"
mkdir -p /usr/share/airtime
cp -R $AIRTIMEROOT/airtime_mvc/* /usr/share/airtime/
+echo "* Creating /var/log/airtime"
mkdir -p /var/log/airtime
+
+echo "* Creating /var/tmp/airtime"
mkdir -p /var/tmp/airtime
#Finished copying files
diff --git a/install_minimal/include/airtime-db-install.php b/install_minimal/include/airtime-db-install.php
index 70261d796..47162aa47 100644
--- a/install_minimal/include/airtime-db-install.php
+++ b/install_minimal/include/airtime-db-install.php
@@ -13,7 +13,7 @@ require_once(__DIR__.'/airtime-constants.php');
require_once(AirtimeInstall::GetAirtimeSrcDir().'/application/configs/conf.php');
-echo PHP_EOL."*** Database Installation ***".PHP_EOL;
+echo PHP_EOL."* Database Installation".PHP_EOL;
AirtimeInstall::CreateDatabaseUser();
@@ -44,7 +44,7 @@ if (isset($argv[1]) && $argv[1] == 'y') {
AirtimeInstall::CreateDatabaseTables();
}
-echo "* Setting Airtime version".PHP_EOL;
+echo " * Setting Airtime version".PHP_EOL;
AirtimeInstall::SetAirtimeVersion(AIRTIME_VERSION);
@@ -57,13 +57,13 @@ if (AirtimeInstall::$databaseTablesCreated) {
$ini = parse_ini_file(__DIR__."/airtime-install.ini");
$stor_dir = realpath($ini["storage_dir"])."/";
- echo "* Inserting stor directory location $stor_dir into music_dirs table".PHP_EOL;
+ echo " * Inserting stor directory location $stor_dir into music_dirs table".PHP_EOL;
$sql = "INSERT INTO cc_music_dirs (directory, type) VALUES ('$stor_dir', 'stor')";
$result = $CC_DBC->query($sql);
if (PEAR::isError($result)) {
- echo "* Failed inserting {$stor_dir} in cc_music_dirs".PHP_EOL;
- echo "* Message {$result->getMessage()}".PHP_EOL;
+ echo " * Failed inserting {$stor_dir} in cc_music_dirs".PHP_EOL;
+ echo " * Message {$result->getMessage()}".PHP_EOL;
exit(1);
}
}
diff --git a/install_minimal/include/airtime-initialize.sh b/install_minimal/include/airtime-initialize.sh
index 91fb92f75..e03b92448 100755
--- a/install_minimal/include/airtime-initialize.sh
+++ b/install_minimal/include/airtime-initialize.sh
@@ -14,7 +14,6 @@ SCRIPTPATH=`dirname $SCRIPT`
AIRTIMEROOT=$SCRIPTPATH/../../
-$AIRTIMEROOT/python_apps/python-virtualenv/virtualenv-install.sh
virtualenv_bin="/usr/lib/airtime/airtime_virtualenv/bin/"
. ${virtualenv_bin}activate
@@ -48,5 +47,5 @@ monit monitor airtime-media-monitor
monit monitor airtime-liquidsoap
monit monitor airtime-playout
monit monitor airtime-show-recorder
-#monit monitor rabbitmq-server
+monit monitor rabbitmq-server
set -e
diff --git a/install_minimal/include/airtime-remove-files.sh b/install_minimal/include/airtime-remove-files.sh
index a0e773611..47c021d28 100755
--- a/install_minimal/include/airtime-remove-files.sh
+++ b/install_minimal/include/airtime-remove-files.sh
@@ -29,7 +29,6 @@ AIRTIMEROOT=$SCRIPTPATH/../../
rm -f /etc/cron.d/airtime-crons
-$AIRTIMEROOT/python_apps/python-virtualenv/virtualenv-install.sh
virtualenv_bin="/usr/lib/airtime/airtime_virtualenv/bin/"
. ${virtualenv_bin}activate
diff --git a/install_minimal/include/airtime-uninitialize.sh b/install_minimal/include/airtime-uninitialize.sh
index a912b00ae..f79a9c90a 100755
--- a/install_minimal/include/airtime-uninitialize.sh
+++ b/install_minimal/include/airtime-uninitialize.sh
@@ -23,6 +23,9 @@ monit unmonitor airtime-show-recorder >/dev/null 2>&1
#monit unmonitor rabbitmq-server
set -e
+virtualenv_bin="/usr/lib/airtime/airtime_virtualenv/bin/"
+. ${virtualenv_bin}activate
+
#uninitialize Airtime services
python $AIRTIMEROOT/python_apps/pypo/install/pypo-uninitialize.py
python $AIRTIMEROOT/python_apps/media-monitor/install/media-monitor-uninitialize.py
diff --git a/install_minimal/upgrades/airtime-2.0.0/UpgradeCommon.php b/install_minimal/upgrades/airtime-2.0.0/UpgradeCommon.php
index 57ee794cd..0fed1e104 100644
--- a/install_minimal/upgrades/airtime-2.0.0/UpgradeCommon.php
+++ b/install_minimal/upgrades/airtime-2.0.0/UpgradeCommon.php
@@ -1,5 +1,8 @@
getMessage().PHP_EOL;
+ echo $CC_DBC->getUserInfo().PHP_EOL;
+ echo "Database connection problem.".PHP_EOL;
+ echo "Check if database '{$CC_CONFIG['dsn']['database']}' exists".
+ " with corresponding permissions.".PHP_EOL;
+ if ($p_exitOnError) {
+ exit(1);
+ }
+ } else {
+ $CC_DBC->setFetchMode(DB_FETCHMODE_ASSOC);
+ }
+ }
+
public static function DbTableExists($p_name)
{
@@ -33,7 +57,8 @@ class UpgradeCommon{
public static function MigrateTablesToVersion($dir, $version)
{
$appDir = self::GetAirtimeSrcDir();
- $command = "php $appDir/library/doctrine/migrations/doctrine-migrations.phar ".
+ $command = "php --php-ini $dir/../../airtime-php.ini ".
+ "$appDir/library/doctrine/migrations/doctrine-migrations.phar ".
"--configuration=$dir/../../DoctrineMigrations/migrations.xml ".
"--db-configuration=$appDir/library/doctrine/migrations/migrations-db.php ".
"--no-interaction migrations:migrate $version";
@@ -43,7 +68,8 @@ class UpgradeCommon{
public static function BypassMigrations($dir, $version)
{
$appDir = self::GetAirtimeSrcDir();
- $command = "php $appDir/library/doctrine/migrations/doctrine-migrations.phar ".
+ $command = "php --php-ini $dir/../../airtime-php.ini ".
+ "$appDir/library/doctrine/migrations/doctrine-migrations.phar ".
"--configuration=$dir/../../DoctrineMigrations/migrations.xml ".
"--db-configuration=$appDir/library/doctrine/migrations/migrations-db.php ".
"--no-interaction --add migrations:version $version";
@@ -60,7 +86,7 @@ class UpgradeCommon{
UpgradeCommon::CONF_FILE_API_CLIENT);
// Backup the config files
- $suffix = date("Ymdhis")."-".VERSION_NUMBER;
+ $suffix = date("Ymdhis")."-".UpgradeCommon::VERSION_NUMBER;
foreach ($configFiles as $conf) {
// do not back up monit cfg
if (file_exists($conf)) {
@@ -70,8 +96,7 @@ class UpgradeCommon{
}
}
- $default_suffix = "200";
- self::CreateIniFiles($default_suffix);
+ self::CreateIniFiles(UpgradeCommon::CONF_BACKUP_SUFFIX);
self::MergeConfigFiles($configFiles, $suffix);
}
diff --git a/install_minimal/upgrades/airtime-2.0.0/airtime-upgrade.php b/install_minimal/upgrades/airtime-2.0.0/airtime-upgrade.php
index 35a342bc0..fd815d745 100644
--- a/install_minimal/upgrades/airtime-2.0.0/airtime-upgrade.php
+++ b/install_minimal/upgrades/airtime-2.0.0/airtime-upgrade.php
@@ -15,14 +15,10 @@
* format, and that's what this upgrade script will be for.
*/
-const VERSION_NUMBER = "2.0";
-
set_include_path(__DIR__.'/../../../airtime_mvc/library' . PATH_SEPARATOR . get_include_path());
-set_include_path(__DIR__.'/../../../airtime_mvc/library/pear' . PATH_SEPARATOR . get_include_path());
set_include_path(__DIR__.'/../../../airtime_mvc/application/models' . PATH_SEPARATOR . get_include_path());
set_include_path(__DIR__.'/../../../airtime_mvc/application/configs' . PATH_SEPARATOR . get_include_path());
require_once 'conf.php';
-require_once 'DB.php';
require_once 'propel/runtime/lib/Propel.php';
Propel::init(__DIR__."/../../../airtime_mvc/application/configs/airtime-conf.php");
@@ -34,6 +30,8 @@ require_once 'UpgradeCommon.php';
class AirtimeDatabaseUpgrade{
public static function start(){
+ self::doDbMigration();
+
self::SetDefaultTimezone();
self::setPhpDefaultTimeZoneToSystemTimezone();
self::convert_cc_playlist();
@@ -41,7 +39,6 @@ class AirtimeDatabaseUpgrade{
self::convert_cc_show_days();
self::convert_cc_show_instances();
- self::doDbMigration();
self::SetDefaultStreamSetting();
self::GetOldLiquidsoapCfgAndUpdate();
}
@@ -144,7 +141,7 @@ class AirtimeDatabaseUpgrade{
}
}
- UpgradeCommon::MigrateTablesToVersion(__DIR__, '20110929184401');
+ UpgradeCommon::MigrateTablesToVersion(__DIR__, '20111103141311');
}
private static function SetDefaultStreamSetting()
diff --git a/install_minimal/upgrades/upgrade-template/UpgradeCommon.php b/install_minimal/upgrades/upgrade-template/UpgradeCommon.php
index c106ee4b0..8c55de9fa 100644
--- a/install_minimal/upgrades/upgrade-template/UpgradeCommon.php
+++ b/install_minimal/upgrades/upgrade-template/UpgradeCommon.php
@@ -1,5 +1,8 @@
getMessage().PHP_EOL;
+ echo $CC_DBC->getUserInfo().PHP_EOL;
+ echo "Database connection problem.".PHP_EOL;
+ echo "Check if database '{$CC_CONFIG['dsn']['database']}' exists".
+ " with corresponding permissions.".PHP_EOL;
+ if ($p_exitOnError) {
+ exit(1);
+ }
+ } else {
+ $CC_DBC->setFetchMode(DB_FETCHMODE_ASSOC);
+ }
+ }
+
public static function DbTableExists($p_name)
{
@@ -33,7 +57,8 @@ class UpgradeCommon{
public static function MigrateTablesToVersion($dir, $version)
{
$appDir = self::GetAirtimeSrcDir();
- $command = "php $appDir/library/doctrine/migrations/doctrine-migrations.phar ".
+ $command = "php --php-ini $dir/../../airtime-php.ini ".
+ "$appDir/library/doctrine/migrations/doctrine-migrations.phar ".
"--configuration=$dir/../../DoctrineMigrations/migrations.xml ".
"--db-configuration=$appDir/library/doctrine/migrations/migrations-db.php ".
"--no-interaction migrations:migrate $version";
@@ -43,7 +68,8 @@ class UpgradeCommon{
public static function BypassMigrations($dir, $version)
{
$appDir = self::GetAirtimeSrcDir();
- $command = "php $appDir/library/doctrine/migrations/doctrine-migrations.phar ".
+ $command = "php --php-ini $dir/../../airtime-php.ini ".
+ "$appDir/library/doctrine/migrations/doctrine-migrations.phar ".
"--configuration=$dir/../../DoctrineMigrations/migrations.xml ".
"--db-configuration=$appDir/library/doctrine/migrations/migrations-db.php ".
"--no-interaction --add migrations:version $version";
@@ -60,7 +86,7 @@ class UpgradeCommon{
UpgradeCommon::CONF_FILE_API_CLIENT);
// Backup the config files
- $suffix = date("Ymdhis")."-".VERSION_NUMBER;
+ $suffix = date("Ymdhis")."-".UpgradeCommon::VERSION_NUMBER;
foreach ($configFiles as $conf) {
// do not back up monit cfg
if (file_exists($conf)) {
@@ -70,8 +96,7 @@ class UpgradeCommon{
}
}
- $default_suffix = CONF_BACKUP_SUFFIX;
- self::CreateIniFiles($default_suffix);
+ self::CreateIniFiles(UpgradeCommon::CONF_BACKUP_SUFFIX);
self::MergeConfigFiles($configFiles, $suffix);
}
diff --git a/install_minimal/upgrades/upgrade-template/airtime-upgrade.php b/install_minimal/upgrades/upgrade-template/airtime-upgrade.php
index 5812e84ac..dbe5c7589 100644
--- a/install_minimal/upgrades/upgrade-template/airtime-upgrade.php
+++ b/install_minimal/upgrades/upgrade-template/airtime-upgrade.php
@@ -15,15 +15,10 @@
* format, and that's what this upgrade script will be for.
*/
-const VERSION_NUMBER = "2.0.0";
-const CONF_BACKUP_SUFFIX = "200";
-
set_include_path(__DIR__.'/../../../airtime_mvc/library' . PATH_SEPARATOR . get_include_path());
-set_include_path(__DIR__.'/../../../airtime_mvc/library/pear' . PATH_SEPARATOR . get_include_path());
set_include_path(__DIR__.'/../../../airtime_mvc/application/models' . PATH_SEPARATOR . get_include_path());
set_include_path(__DIR__.'/../../../airtime_mvc/application/configs' . PATH_SEPARATOR . get_include_path());
require_once 'conf.php';
-require_once 'DB.php';
require_once 'propel/runtime/lib/Propel.php';
Propel::init(__DIR__."/../../../airtime_mvc/application/configs/airtime-conf.php");
@@ -79,7 +74,7 @@ class AirtimeMiscUpgrade{
}
}
-UpgradeCommonFunctions::connectToDatabase();
+UpgradeCommon::connectToDatabase();
AirtimeDatabaseUpgrade::start();
AirtimeStorWatchedDirsUpgrade::start();
diff --git a/python_apps/api_clients/install/api_client_install.py b/python_apps/api_clients/install/api_client_install.py
index 157032fc2..ad31bb271 100644
--- a/python_apps/api_clients/install/api_client_install.py
+++ b/python_apps/api_clients/install/api_client_install.py
@@ -10,7 +10,7 @@ def copy_dir(src_dir, dest_dir):
if (os.path.exists(dest_dir)) and (dest_dir != "/"):
shutil.rmtree(dest_dir)
if not (os.path.exists(dest_dir)):
- print "Copying directory "+os.path.realpath(src_dir)+" to "+os.path.realpath(dest_dir)
+ #print "Copying directory "+os.path.realpath(src_dir)+" to "+os.path.realpath(dest_dir)
shutil.copytree(src_dir, dest_dir)
current_script_dir = get_current_script_dir()
diff --git a/python_apps/api_clients/install/api_client_install.sh b/python_apps/api_clients/install/api_client_install.sh
deleted file mode 100644
index 9e70bd4a6..000000000
--- a/python_apps/api_clients/install/api_client_install.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash -e
-#-e Causes bash script to exit if any of the installers
-#return with a non-zero return value.
-
-if [ `whoami` != 'root' ]; then
- echo "Please run as root user."
- exit 1
-fi
-
-
-# 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`
-
-BIN_DIR=/usr/lib/airtime/api_clients
-
-#copy api_client files
-cp -R $SCRIPTPATH/../../api_clients $BIN_DIR
diff --git a/python_apps/api_clients/install/api_client_uninstall.py b/python_apps/api_clients/install/api_client_uninstall.py
index b662add19..5ecb2b036 100644
--- a/python_apps/api_clients/install/api_client_uninstall.py
+++ b/python_apps/api_clients/install/api_client_uninstall.py
@@ -17,5 +17,5 @@ except Exception, e:
print 'Error loading config file: ', e
sys.exit(1)
-print "Removing API Client files"
+print " * Removing API Client files"
remove_path(config["bin_dir"])
diff --git a/python_apps/create-pypo-user.py b/python_apps/create-pypo-user.py
index c11bd08c2..a071213cd 100644
--- a/python_apps/create-pypo-user.py
+++ b/python_apps/create-pypo-user.py
@@ -3,14 +3,14 @@ import sys
from subprocess import Popen, PIPE, STDOUT
def create_user(username):
- print "Checking for user "+username
+ print "* Checking for user "+username
p = Popen('id '+username, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
output = p.stdout.read()
if (output[0:3] != "uid"):
# Make the pypo user
- print "Creating user "+username
+ print " * Creating user "+username
os.system("adduser --system --quiet --group --shell /bin/bash "+username)
#set pypo password
diff --git a/python_apps/media-monitor/MediaMonitor.py b/python_apps/media-monitor/MediaMonitor.py
index 089418ac1..77466681a 100644
--- a/python_apps/media-monitor/MediaMonitor.py
+++ b/python_apps/media-monitor/MediaMonitor.py
@@ -65,7 +65,7 @@ try:
bootstrap = AirtimeMediaMonitorBootstrap(logger, pe, api_client, mmc)
bootstrap.scan()
- notifier = AirtimeNotifier(wm, pe, read_freq=0.1, timeout=0, airtime_config=config, api_client=api_client, bootstrap=bootstrap, mmc=mmc)
+ notifier = AirtimeNotifier(wm, pe, read_freq=0, timeout=0, airtime_config=config, api_client=api_client, bootstrap=bootstrap, mmc=mmc)
notifier.coalesce_events()
#create 5 worker threads
diff --git a/python_apps/media-monitor/airtimefilemonitor/airtimemetadata.py b/python_apps/media-monitor/airtimefilemonitor/airtimemetadata.py
index 18edbc7c5..17c97259e 100644
--- a/python_apps/media-monitor/airtimefilemonitor/airtimemetadata.py
+++ b/python_apps/media-monitor/airtimefilemonitor/airtimemetadata.py
@@ -166,9 +166,9 @@ class AirtimeMetadata:
#check if file has any metadata
if file_info is not None:
for key in file_info.keys() :
- if key in self.mutagen2airtime :
+ if key in self.mutagen2airtime and len(file_info[key]) > 0:
info = file_info[key][0]
- while 1:
+ while True:
temp = re.search(u"[\x80-\x9f]", info)
if temp is not None:
s = temp.group(0)
@@ -197,9 +197,9 @@ class AirtimeMetadata:
if isinstance(md['MDATA_KEY_TRACKNUMBER'], basestring):
match = re.search('^(\d*/\d*)?', md['MDATA_KEY_TRACKNUMBER'])
- if match.group(0) is not u'':
- md['MDATA_KEY_TRACKNUMBER'] = int(md['MDATA_KEY_TRACKNUMBER'].split("/")[0])
- else:
+ try:
+ md['MDATA_KEY_TRACKNUMBER'] = int(md['MDATA_KEY_TRACKNUMBER'].split("/")[0], 10)
+ except Exception, e:
del md['MDATA_KEY_TRACKNUMBER']
#make sure bpm is valid, need to check more types of formats for this tag to assure correct parsing.
diff --git a/python_apps/media-monitor/airtimefilemonitor/airtimeprocessevent.py b/python_apps/media-monitor/airtimefilemonitor/airtimeprocessevent.py
index 5c8e9f9d6..af8658c2a 100644
--- a/python_apps/media-monitor/airtimefilemonitor/airtimeprocessevent.py
+++ b/python_apps/media-monitor/airtimefilemonitor/airtimeprocessevent.py
@@ -1,6 +1,7 @@
import socket
import logging
import time
+import os
import pyinotify
from pyinotify import ProcessEvent
@@ -90,8 +91,9 @@ class AirtimeProcessEvent(ProcessEvent):
def process_IN_CREATE(self, event):
self.logger.info("event: %s", event)
- # record the timestamp of the time on IN_CREATE event
- self.create_dict[event.pathname] = time.time()
+ if not event.dir:
+ # record the timestamp of the time on IN_CREATE event
+ self.create_dict[event.pathname] = time.time()
#event.dir: True if the event was raised against a directory.
#event.name: filename
@@ -268,8 +270,21 @@ class AirtimeProcessEvent(ProcessEvent):
# this part is like a garbage collector
for k, t in self.create_dict.items():
now = time.time()
- if now - t > 300:
- del self.create_dict[k]
+ if now - t > 5:
+ # check if file exist
+ # When whole directory is copied to the organized dir,
+ # inotify doesn't fire IN_CLOSE_WRITE, hench we need special way of
+ # handling those cases.
+ if os.path.exists(k):
+ # check if file is open
+ command = "lsof "+k
+ f = os.popen(command)
+ if not f.readlines():
+ self.logger.info("Handling file: %s", k)
+ self.handle_created_file(False, k, os.path.basename(k))
+ del self.create_dict[k]
+ else:
+ del self.create_dict[k]
#check for any events received from Airtime.
try:
diff --git a/python_apps/media-monitor/install/media-monitor-install-files.py b/python_apps/media-monitor/install/media-monitor-copy-files.py
similarity index 94%
rename from python_apps/media-monitor/install/media-monitor-install-files.py
rename to python_apps/media-monitor/install/media-monitor-copy-files.py
index 1f6c4de4d..6d0282bd4 100644
--- a/python_apps/media-monitor/install/media-monitor-install-files.py
+++ b/python_apps/media-monitor/install/media-monitor-copy-files.py
@@ -16,7 +16,7 @@ def copy_dir(src_dir, dest_dir):
if (os.path.exists(dest_dir)) and (dest_dir != "/"):
shutil.rmtree(dest_dir)
if not (os.path.exists(dest_dir)):
- print "Copying directory "+os.path.realpath(src_dir)+" to "+os.path.realpath(dest_dir)
+ #print "Copying directory "+os.path.realpath(src_dir)+" to "+os.path.realpath(dest_dir)
shutil.copytree(src_dir, dest_dir)
def create_dir(path):
diff --git a/python_apps/media-monitor/install/media-monitor-initialize.py b/python_apps/media-monitor/install/media-monitor-initialize.py
index a40c47b7e..638ab06e1 100644
--- a/python_apps/media-monitor/install/media-monitor-initialize.py
+++ b/python_apps/media-monitor/install/media-monitor-initialize.py
@@ -11,7 +11,7 @@ try:
sts = os.waitpid(p.pid, 0)[1]
#Start media-monitor daemon
- print "Waiting for media-monitor processes to start..."
+ print "* Waiting for media-monitor processes to start..."
p = Popen("/etc/init.d/airtime-media-monitor stop", shell=True)
sts = os.waitpid(p.pid, 0)[1]
p = Popen("/etc/init.d/airtime-media-monitor start-no-monit", shell=True)
diff --git a/python_apps/media-monitor/install/media-monitor-install.py.old b/python_apps/media-monitor/install/media-monitor-install.py.old
deleted file mode 100644
index b5968b8ef..000000000
--- a/python_apps/media-monitor/install/media-monitor-install.py.old
+++ /dev/null
@@ -1,87 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import time
-import os
-import traceback
-from optparse import *
-import sys
-import time
-import datetime
-import logging
-import logging.config
-import shutil
-import string
-import platform
-from configobj import ConfigObj
-from subprocess import Popen
-
-if os.geteuid() != 0:
- print "Please run this as root."
- sys.exit(1)
-
-PATH_INI_FILE = '/etc/airtime/media-monitor.cfg'
-
-def create_path(path):
- if not (os.path.exists(path)):
- print "Creating directory " + path
- os.makedirs(path)
-
-def copy_dir(src_dir, dest_dir):
- if (os.path.exists(dest_dir)) and (dest_dir != "/"):
- print "Removing old directory "+dest_dir
- shutil.rmtree(dest_dir)
- if not (os.path.exists(dest_dir)):
- print "Copying directory "+os.path.realpath(src_dir)+" to "+os.path.realpath(dest_dir)
- shutil.copytree(src_dir, dest_dir)
-
-def get_current_script_dir():
- current_script_dir = os.path.realpath(__file__)
- index = current_script_dir.rindex('/')
- return current_script_dir[0:index]
-
-def copy_monit_file(current_script_dir):
- shutil.copy("%s/../monit-airtime-media-monitor.cfg"%current_script_dir, "/etc/monit/conf.d/")
- shutil.copy("%s/../../monit/monit-airtime-generic.cfg"%current_script_dir, "/etc/monit/conf.d/")
-
-
-try:
- # load config file
- try:
- config = ConfigObj(PATH_INI_FILE)
- except Exception, e:
- print 'Error loading config file: ', e
- sys.exit(1)
-
- current_script_dir = get_current_script_dir()
-
- copy_monit_file(current_script_dir)
-
- p = Popen("/etc/init.d/airtime-media-monitor stop >/dev/null 2>&1", shell=True)
- sts = os.waitpid(p.pid, 0)[1]
-
- print "Creating log directories"
- create_path(config["log_dir"])
- #os.system("chmod -R 755 " + config["log_dir"])
- os.system("chown -R pypo:pypo "+config["log_dir"])
-
- copy_dir("%s/.."%current_script_dir, config["bin_dir"])
-
- print "Setting permissions"
- os.system("chmod -R 755 "+config["bin_dir"])
- #os.system("chmod -R 755 "+config["bin_dir"]+"/airtime-media-monitor)
- os.system("chown -R pypo:pypo "+config["bin_dir"])
-
- print "Installing media-monitor daemon"
- shutil.copy(config["bin_dir"]+"/airtime-media-monitor-init-d", "/etc/init.d/airtime-media-monitor")
-
- p = Popen("update-rc.d airtime-media-monitor defaults >/dev/null 2>&1", shell=True)
- sts = os.waitpid(p.pid, 0)[1]
-
- print "Waiting for processes to start..."
- p = Popen("/etc/init.d/airtime-media-monitor start-no-monit", shell=True)
- sts = os.waitpid(p.pid, 0)[1]
-
-except Exception, e:
- print "exception:" + str(e)
- sys.exit(1)
-
diff --git a/python_apps/media-monitor/install/media-monitor-install.sh b/python_apps/media-monitor/install/media-monitor-install.sh
deleted file mode 100755
index 747422661..000000000
--- a/python_apps/media-monitor/install/media-monitor-install.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/bash -e
-
-python media-monitor-install-files.py
-python media-monitor-initialize.py
diff --git a/python_apps/media-monitor/install/media-monitor-remove-files.py b/python_apps/media-monitor/install/media-monitor-remove-files.py
index 549d0f3d3..cf2e2729e 100644
--- a/python_apps/media-monitor/install/media-monitor-remove-files.py
+++ b/python_apps/media-monitor/install/media-monitor-remove-files.py
@@ -24,19 +24,19 @@ except Exception, e:
try:
#remove init.d script
- print "* Removing Media-Monitor init.d Script"
+ print " * Removing Media-Monitor init.d Script"
remove_file("/etc/init.d/airtime-media-monitor")
#remove bin dir
- print "* Removing Media-Monitor Program Directory"
+ print " * Removing Media-Monitor Program Directory"
shutil.rmtree(config['bin_dir'], ignore_errors=True)
#remove log dir
- print "* Removing Media-Monitor Log Directory"
+ print " * Removing Media-Monitor Log Directory"
shutil.rmtree(config['log_dir'], ignore_errors=True)
#remove monit files
- print "* Removing Media-Monitor Monit Files"
+ print " * Removing Media-Monitor Monit Files"
remove_file("/etc/monit/conf.d/monit-airtime-media-monitor.cfg")
remove_file("/etc/monit/conf.d/monit-airtime-generic.cfg")
diff --git a/python_apps/pypo/install/pypo-install-files.py b/python_apps/pypo/install/pypo-copy-files.py
similarity index 96%
rename from python_apps/pypo/install/pypo-install-files.py
rename to python_apps/pypo/install/pypo-copy-files.py
index 05b30676a..681544a24 100644
--- a/python_apps/pypo/install/pypo-install-files.py
+++ b/python_apps/pypo/install/pypo-copy-files.py
@@ -16,7 +16,7 @@ def copy_dir(src_dir, dest_dir):
if (os.path.exists(dest_dir)) and (dest_dir != "/"):
shutil.rmtree(dest_dir)
if not (os.path.exists(dest_dir)):
- print "Copying directory "+os.path.realpath(src_dir)+" to "+os.path.realpath(dest_dir)
+ #print "Copying directory "+os.path.realpath(src_dir)+" to "+os.path.realpath(dest_dir)
shutil.copytree(src_dir, dest_dir)
def create_dir(path):
diff --git a/python_apps/pypo/install/pypo-initialize.py b/python_apps/pypo/install/pypo-initialize.py
index 6fcaebb34..4f2a6ae21 100644
--- a/python_apps/pypo/install/pypo-initialize.py
+++ b/python_apps/pypo/install/pypo-initialize.py
@@ -70,17 +70,19 @@ try:
architecture = platform.architecture()[0]
natty = is_natty()
+ print "* Detecting system architecture for Liquidsoap"
+
if architecture == '64bit' and natty:
- print "Installing 64-bit liquidsoap binary (Natty)"
+ print " * Installing 64-bit liquidsoap binary (Natty)"
shutil.copy("%s/../liquidsoap_bin/liquidsoap-natty-amd64"%current_script_dir, "%s/../liquidsoap_bin/liquidsoap"%current_script_dir)
elif architecture == '32bit' and natty:
- print "Installing 32-bit liquidsoap binary (Natty)"
+ print " * Installing 32-bit liquidsoap binary (Natty)"
shutil.copy("%s/../liquidsoap_bin/liquidsoap-natty-i386"%current_script_dir, "%s/../liquidsoap_bin/liquidsoap"%current_script_dir)
elif architecture == '64bit' and not natty:
- print "Installing 64-bit liquidsoap binary"
+ print " * Installing 64-bit liquidsoap binary"
shutil.copy("%s/../liquidsoap_bin/liquidsoap-amd64"%current_script_dir, "%s/../liquidsoap_bin/liquidsoap"%current_script_dir)
elif architecture == '32bit' and not natty:
- print "Installing 32-bit liquidsoap binary"
+ print " * Installing 32-bit liquidsoap binary"
shutil.copy("%s/../liquidsoap_bin/liquidsoap-i386"%current_script_dir, "%s/../liquidsoap_bin/liquidsoap"%current_script_dir)
else:
print "Unknown system architecture."
@@ -101,7 +103,7 @@ try:
print "Unable to connect to the Airtime server."
#restart airtime-playout
- print "Waiting for pypo processes to start..."
+ print "* Waiting for pypo processes to start..."
p = Popen("/etc/init.d/airtime-playout stop", shell=True)
sts = os.waitpid(p.pid, 0)[1]
p = Popen("/etc/init.d/airtime-playout start-no-monit", shell=True)
diff --git a/python_apps/pypo/install/pypo-install.py.old b/python_apps/pypo/install/pypo-install.py.old
deleted file mode 100644
index 70fb5a5cc..000000000
--- a/python_apps/pypo/install/pypo-install.py.old
+++ /dev/null
@@ -1,163 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import time
-import os
-from optparse import *
-import sys
-import shutil
-import platform
-from configobj import ConfigObj
-from subprocess import Popen
-sys.path.append('/usr/lib/airtime/api_clients/')
-import api_client
-
-if os.geteuid() != 0:
- print "Please run this as root."
- sys.exit(1)
-
-PATH_INI_FILE = '/etc/airtime/pypo.cfg'
-
-def create_path(path):
- if not (os.path.exists(path)):
- print "Creating directory " + path
- os.makedirs(path)
-
-def copy_dir(src_dir, dest_dir):
- if (os.path.exists(dest_dir)) and (dest_dir != "/"):
- shutil.rmtree(dest_dir)
- if not (os.path.exists(dest_dir)):
- print "Copying directory "+os.path.realpath(src_dir)+" to "+os.path.realpath(dest_dir)
- shutil.copytree(src_dir, dest_dir)
-
-def get_current_script_dir():
- current_script_dir = os.path.realpath(__file__)
- index = current_script_dir.rindex('/')
- return current_script_dir[0:index]
-
-def is_natty():
- try:
- f = open('/etc/lsb-release')
- except IOError as e:
- #File doesn't exist, so we're not even dealing with Ubuntu
- return False
-
- for line in f:
- split = line.split("=")
- split[0] = split[0].strip(" \r\n")
- split[1] = split[1].strip(" \r\n")
- if split[0] == "DISTRIB_CODENAME" and (split[1] == "natty" or split[1] == "oneiric"):
- return True
- return False
-
-def copy_monit_file(current_script_dir):
- shutil.copy("%s/../monit-airtime-playout.cfg"%current_script_dir, "/etc/monit/conf.d/")
- shutil.copy("%s/../monit-airtime-liquidsoap.cfg"%current_script_dir, "/etc/monit/conf.d/")
- shutil.copy("%s/../../monit/monit-airtime-generic.cfg"%current_script_dir, "/etc/monit/conf.d/")
-
-try:
- # load config file
- try:
- config = ConfigObj(PATH_INI_FILE)
- except Exception, e:
- print 'Error loading config file: ', e
- sys.exit(1)
-
- current_script_dir = get_current_script_dir()
-
- copy_monit_file(current_script_dir)
-
- p = Popen("/etc/init.d/airtime-playout stop >/dev/null 2>&1", shell=True)
- sts = os.waitpid(p.pid, 0)[1]
-
- create_path(config["pypo_log_dir"])
- os.system("chmod -R 755 " + config["pypo_log_dir"])
- os.system("chown -R pypo:pypo "+config["pypo_log_dir"])
-
- create_path(config["liquidsoap_log_dir"])
- os.system("chmod -R 755 " + config["liquidsoap_log_dir"])
- os.system("chown -R pypo:pypo "+config["liquidsoap_log_dir"])
-
- create_path(config["bin_dir"]+"/bin")
- create_path(config["cache_dir"])
- create_path(config["file_dir"])
- create_path(config["tmp_dir"])
-
- architecture = platform.architecture()[0]
- natty = is_natty()
-
- if architecture == '64bit' and natty:
- print "Installing 64-bit liquidsoap binary (Natty)"
- shutil.copy("%s/../liquidsoap_bin/liquidsoap-natty-amd64"%current_script_dir, "%s/../liquidsoap_bin/liquidsoap"%current_script_dir)
- elif architecture == '32bit' and natty:
- print "Installing 32-bit liquidsoap binary (Natty)"
- shutil.copy("%s/../liquidsoap_bin/liquidsoap-natty-i386"%current_script_dir, "%s/../liquidsoap_bin/liquidsoap"%current_script_dir)
- elif architecture == '64bit' and not natty:
- print "Installing 64-bit liquidsoap binary"
- shutil.copy("%s/../liquidsoap_bin/liquidsoap-amd64"%current_script_dir, "%s/../liquidsoap_bin/liquidsoap"%current_script_dir)
- elif architecture == '32bit' and not natty:
- print "Installing 32-bit liquidsoap binary"
- shutil.copy("%s/../liquidsoap_bin/liquidsoap-i386"%current_script_dir, "%s/../liquidsoap_bin/liquidsoap"%current_script_dir)
- else:
- print "Unknown system architecture."
- sys.exit(1)
-
- copy_dir("%s/.."%current_script_dir, config["bin_dir"]+"/bin/")
-
- # delete /usr/lib/airtime/pypo/bin/liquidsoap_scripts/liquidsoap.cfg
- # as we don't use it anymore.(CC-2552)
- os.remove(config["bin_dir"]+"/bin/liquidsoap_scripts/liquidsoap.cfg")
-
- print "Setting permissions"
- os.system("chmod 755 "+os.path.join(config["bin_dir"], "liquidsoap_scripts/notify.sh"))
- os.system("chown -R pypo:pypo "+config["bin_dir"])
- os.system("chown -R pypo:pypo "+config["cache_base_dir"])
-
- print "Installing pypo daemon"
- shutil.copy(config["bin_dir"]+"/bin/airtime-playout-init-d", "/etc/init.d/airtime-playout")
-
- p = Popen("update-rc.d airtime-playout defaults >/dev/null 2>&1", shell=True)
- sts = os.waitpid(p.pid, 0)[1]
-
- #copy logrotate script
- shutil.copy(config["bin_dir"]+"/bin/liquidsoap_scripts/airtime-liquidsoap.logrotate", "/etc/logrotate.d/airtime-liquidsoap")
-
-
- # we should access the DB and generate liquidsoap.cfg under /etc/airtime/
- api_client = api_client.api_client_factory(config)
- ss = api_client.get_stream_setting()
-
- # if api_client is somehow not working, just use original cfg file
- if(ss is not None):
- data = ss['msg']
- fh = open('/etc/airtime/liquidsoap.cfg', 'w')
- fh.write("################################################\n")
- fh.write("# THIS FILE IS AUTO GENERATED. DO NOT CHANGE!! #\n")
- fh.write("################################################\n")
- for d in data:
- buffer = d[u'keyname'] + " = "
- if(d[u'type'] == 'string'):
- temp = d[u'value']
- if(temp == ""):
- temp = ""
- buffer += "\"" + temp + "\""
- else:
- temp = d[u'value']
- if(temp == ""):
- temp = "0"
- buffer += temp
- buffer += "\n"
- fh.write(buffer)
- fh.write("log_file = \"/var/log/airtime/pypo-liquidsoap/