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/