From dccdc9a845a3f50ac45cf9980c65c4b837d8966e Mon Sep 17 00:00:00 2001 From: martin Date: Tue, 1 Nov 2011 14:02:05 -0400 Subject: [PATCH 01/16] CC-3009: Install script installs virtualenv twice. -fixed --- install_minimal/include/airtime-copy-files.sh | 1 - install_minimal/include/airtime-initialize.sh | 1 - install_minimal/include/airtime-remove-files.sh | 1 - install_minimal/include/airtime-uninitialize.sh | 3 +++ 4 files changed, 3 insertions(+), 3 deletions(-) diff --git a/install_minimal/include/airtime-copy-files.sh b/install_minimal/include/airtime-copy-files.sh index 964c11a9b..2967ef64a 100755 --- a/install_minimal/include/airtime-copy-files.sh +++ b/install_minimal/include/airtime-copy-files.sh @@ -45,7 +45,6 @@ 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 diff --git a/install_minimal/include/airtime-initialize.sh b/install_minimal/include/airtime-initialize.sh index 91fb92f75..3dfc95dba 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 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 From 306e886f58f5e5cc455fb0803e2cdd8c923f18ee Mon Sep 17 00:00:00 2001 From: martin Date: Tue, 1 Nov 2011 14:07:56 -0400 Subject: [PATCH 02/16] CC-3009: Install script installs virtualenv twice. -fixed --- install_minimal/airtime-install | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/install_minimal/airtime-install b/install_minimal/airtime-install index 1fc2bff04..c02b5a87e 100755 --- a/install_minimal/airtime-install +++ b/install_minimal/airtime-install @@ -36,8 +36,12 @@ echo -e "\n******************************** Install Begin ********************** SCRIPT=`readlink -f $0` # Absolute path this script is in, thus /home/user/bin SCRIPTPATH=`dirname $SCRIPT` +AIRTIMEROOT=$SCRIPTPATH/../ + +$AIRTIMEROOT/python_apps/python-virtualenv/virtualenv-install.sh +python $AIRTIMEROOT/python_apps/create-pypo-user.py + -python $SCRIPTPATH/../python_apps/create-pypo-user.py $SCRIPTPATH/include/airtime-copy-files.sh $SCRIPTPATH/include/airtime-initialize.sh $@ From d2f4e55dd6d53bdf3c63e3135e9ae883c2c884bf Mon Sep 17 00:00:00 2001 From: martin Date: Tue, 1 Nov 2011 14:35:54 -0400 Subject: [PATCH 03/16] -re-enable rabbitmq monit monitoring --- install_minimal/airtime-install | 2 -- install_minimal/include/airtime-initialize.sh | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/install_minimal/airtime-install b/install_minimal/airtime-install index c02b5a87e..426ec0087 100755 --- a/install_minimal/airtime-install +++ b/install_minimal/airtime-install @@ -41,8 +41,6 @@ AIRTIMEROOT=$SCRIPTPATH/../ $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 $@ diff --git a/install_minimal/include/airtime-initialize.sh b/install_minimal/include/airtime-initialize.sh index 3dfc95dba..e03b92448 100755 --- a/install_minimal/include/airtime-initialize.sh +++ b/install_minimal/include/airtime-initialize.sh @@ -47,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 From 8f6804155f3f44897e00b6be1905137f5a2b3405 Mon Sep 17 00:00:00 2001 From: James Date: Tue, 1 Nov 2011 14:52:27 -0400 Subject: [PATCH 04/16] CC-2934: Phone Home Stat: it should work with new airtime-check-system - initial commit --- airtime_mvc/application/models/Preference.php | 2 +- utils/phone_home_stat.php | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) 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/utils/phone_home_stat.php b/utils/phone_home_stat.php index efa005638..2ac9fc855 100644 --- a/utils/phone_home_stat.php +++ b/utils/phone_home_stat.php @@ -54,13 +54,17 @@ if (PEAR::isError($CC_DBC)) { //echo "* Connected to database".PHP_EOL; $CC_DBC->setFetchMode(DB_FETCHMODE_ASSOC); } + if(Application_Model_Preference::GetSupportFeedback() == '1'){ $infoArray = Application_Model_Preference::GetSystemInfo(true); + $url = 'http://stat.sourcefabric.org/index.php?p=airtime'; + //$url = 'http://stat-dev.sourcefabric.org/index.php?p=airtime'; + $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, 1); - curl_setopt($ch, CURLOPT_URL, 'http://stat.sourcefabric.org/index.php?p=airtime'); + curl_setopt($ch, CURLOPT_URL, $url); $data = json_encode($infoArray); From f2ef0063851e75ca421b5d08cb30a0de2c685049 Mon Sep 17 00:00:00 2001 From: martin Date: Tue, 1 Nov 2011 15:21:09 -0400 Subject: [PATCH 05/16] CC-2758: Make airtime-install script Debian/Ubuntu compatible -cosmetic changes --- install_minimal/airtime-install | 4 +++ install_minimal/airtime-uninstall | 4 +++ install_minimal/include/AirtimeInstall.php | 28 +++++++++---------- install_minimal/include/airtime-copy-files.sh | 8 ++++++ .../include/airtime-db-install.php | 10 +++---- .../api_clients/install/api_client_install.py | 2 +- .../install/api_client_uninstall.py | 2 +- python_apps/create-pypo-user.py | 4 +-- .../install/media-monitor-initialize.py | 2 +- .../install/media-monitor-install-files.py | 2 +- .../install/media-monitor-remove-files.py | 8 +++--- python_apps/pypo/install/pypo-initialize.py | 12 ++++---- .../pypo/install/pypo-install-files.py | 2 +- python_apps/pypo/install/pypo-remove-files.py | 10 +++---- .../install/recorder-initialize.py | 2 +- .../install/recorder-install-files.py | 8 +++--- .../install/recorder-remove-files.py | 10 +++---- 17 files changed, 67 insertions(+), 51 deletions(-) diff --git a/install_minimal/airtime-install b/install_minimal/airtime-install index 426ec0087..c144362e1 100755 --- a/install_minimal/airtime-install +++ b/install_minimal/airtime-install @@ -44,6 +44,10 @@ 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-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/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 2967ef64a..da73dd061 100755 --- a/install_minimal/include/airtime-copy-files.sh +++ b/install_minimal/include/airtime-copy-files.sh @@ -33,6 +33,7 @@ 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 @@ -41,6 +42,7 @@ 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 +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 @@ -48,6 +50,7 @@ echo "$MIN $HOUR * * * root /usr/lib/airtime/utils/phone_home_stat" > /etc/cron. 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 @@ -55,16 +58,21 @@ python $AIRTIMEROOT/python_apps/show-recorder/install/recorder-install-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" 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/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_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/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-files.py b/python_apps/media-monitor/install/media-monitor-install-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-install-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-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-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-files.py b/python_apps/pypo/install/pypo-install-files.py index 05b30676a..681544a24 100644 --- a/python_apps/pypo/install/pypo-install-files.py +++ b/python_apps/pypo/install/pypo-install-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-remove-files.py b/python_apps/pypo/install/pypo-remove-files.py index 8d5cc3d71..185c37dae 100644 --- a/python_apps/pypo/install/pypo-remove-files.py +++ b/python_apps/pypo/install/pypo-remove-files.py @@ -24,27 +24,27 @@ except Exception, e: try: #remove log rotate script - print "* Removing Pypo Log Rotate Script" + print " * Removing Pypo Log Rotate Script" remove_file("/etc/logrotate.d/airtime-liquidsoap") #remove init.d script - print "* Removing Pypo init.d Script" + print " * Removing Pypo init.d Script" remove_file("/etc/init.d/airtime-playout") #remove bin, cache, tmp and file dir - print "* Removing Pypo Program directories" + print " * Removing Pypo Program directories" shutil.rmtree(config['bin_dir'], ignore_errors=True) shutil.rmtree(config['cache_dir'], ignore_errors=True) shutil.rmtree(config['file_dir'], ignore_errors=True) shutil.rmtree(config['tmp_dir'], ignore_errors=True) #remove liquidsoap and pypo log dir - print "* Removing Pypo Log Directories" + print " * Removing Pypo Log Directories" shutil.rmtree(config['liquidsoap_log_dir'], ignore_errors=True) shutil.rmtree(config['pypo_log_dir'], ignore_errors=True) #remove monit files - print "* Removing Pypo Monit Files" + print " * Removing Pypo Monit Files" remove_file("/etc/monit/conf.d/monit-airtime-playout.cfg") remove_file("/etc/monit/conf.d/monit-airtime-liquidsoap.cfg") remove_file("/etc/monit/conf.d/monit-airtime-generic.cfg") diff --git a/python_apps/show-recorder/install/recorder-initialize.py b/python_apps/show-recorder/install/recorder-initialize.py index 2027bb06b..caefa436a 100644 --- a/python_apps/show-recorder/install/recorder-initialize.py +++ b/python_apps/show-recorder/install/recorder-initialize.py @@ -12,7 +12,7 @@ try: sts = os.waitpid(p.pid, 0)[1] #start daemon - print "Waiting for show-recorder processes to start..." + print "* Waiting for show-recorder processes to start..." p = Popen("/etc/init.d/airtime-show-recorder stop", shell=True) sts = os.waitpid(p.pid, 0)[1] p = Popen("/etc/init.d/airtime-show-recorder start-no-monit", shell=True) diff --git a/python_apps/show-recorder/install/recorder-install-files.py b/python_apps/show-recorder/install/recorder-install-files.py index 12af8c68e..7765d9799 100644 --- a/python_apps/show-recorder/install/recorder-install-files.py +++ b/python_apps/show-recorder/install/recorder-install-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): @@ -43,13 +43,13 @@ try: shutil.copy('%s/../../monit/monit-airtime-generic.cfg'%current_script_dir, '/etc/monit/conf.d/') #create temporary media-storage directory - print "Creating temporary media storage directory" + #print "Creating temporary media storage directory" create_dir(config["base_recorded_files"]) #os.system("chmod -R 755 "+config["base_recorded_files"]) os.system("chown -R pypo:pypo "+config["base_recorded_files"]) #create log directories - print "Creating log directories" + #print "Creating log directories" create_dir(config["log_dir"]) os.system("chmod -R 755 " + config["log_dir"]) os.system("chown -R pypo:pypo "+config["log_dir"]) @@ -58,7 +58,7 @@ try: copy_dir("%s/.."%current_script_dir, config["bin_dir"]) #set python file permissions - print "Setting permissions" + #print "Setting permissions" os.system("chmod -R 755 "+config["bin_dir"]) os.system("chown -R pypo:pypo "+config["bin_dir"]) diff --git a/python_apps/show-recorder/install/recorder-remove-files.py b/python_apps/show-recorder/install/recorder-remove-files.py index abe4ca15f..f2801bba6 100644 --- a/python_apps/show-recorder/install/recorder-remove-files.py +++ b/python_apps/show-recorder/install/recorder-remove-files.py @@ -24,23 +24,23 @@ except Exception, e: try: #remove init.d script - print "* Removing Show-Recorder init.d script" + print " * Removing Show-Recorder init.d script" remove_file('/etc/init.d/airtime-show-recorder') #remove bin dir - print "* Removing Show-Recorder Program Directories" + print " * Removing Show-Recorder Program Directories" shutil.rmtree(config["bin_dir"], ignore_errors=True) #remove log dir - print "* Removing Show-Recorder Log Directory" + print " * Removing Show-Recorder Log Directory" shutil.rmtree(config["log_dir"], ignore_errors=True) #remove temporary media-storage dir - print "* Removing Show-Recorder Temporary Directory" + print " * Removing Show-Recorder Temporary Directory" shutil.rmtree(config["base_recorded_files"], ignore_errors=True) #remove monit files - print "* Removing Show-Recorder Monit Files" + print " * Removing Show-Recorder Monit Files" remove_file("/etc/monit/conf.d/monit-airtime-show-recorder.cfg") remove_file("/etc/monit/conf.d/monit-airtime-generic.cfg") From 38a0f8697a7967db870e15a4fb19a0676d716e80 Mon Sep 17 00:00:00 2001 From: Martin Konecny Date: Tue, 1 Nov 2011 22:43:12 -0400 Subject: [PATCH 06/16] CC-2758: Make airtime-install script Debian/Ubuntu compatible -cleanup --- install_minimal/airtime-install | 1 + install_minimal/airtime-install.old | 96 ----------- install_minimal/airtime-uninstall.old | 56 ------ install_minimal/include/airtime-copy-files.sh | 7 +- .../api_clients/install/api_client_install.sh | 19 -- ...l-files.py => media-monitor-copy-files.py} | 0 .../install/media-monitor-install.py.old | 87 ---------- .../install/media-monitor-install.sh | 4 - ...po-install-files.py => pypo-copy-files.py} | 0 python_apps/pypo/install/pypo-install.py.old | 163 ------------------ python_apps/pypo/install/pypo-install.sh | 4 - python_apps/pypo/install/pypo-remove-files.py | 2 +- ...nstall-files.py => recorder-copy-files.py} | 0 .../install/recorder-install.py.old | 84 --------- .../show-recorder/install/recorder-install.sh | 4 - .../install/recorder-remove-files.py | 4 +- 16 files changed, 8 insertions(+), 523 deletions(-) delete mode 100755 install_minimal/airtime-install.old delete mode 100755 install_minimal/airtime-uninstall.old delete mode 100644 python_apps/api_clients/install/api_client_install.sh rename python_apps/media-monitor/install/{media-monitor-install-files.py => media-monitor-copy-files.py} (100%) delete mode 100644 python_apps/media-monitor/install/media-monitor-install.py.old delete mode 100755 python_apps/media-monitor/install/media-monitor-install.sh rename python_apps/pypo/install/{pypo-install-files.py => pypo-copy-files.py} (100%) delete mode 100644 python_apps/pypo/install/pypo-install.py.old delete mode 100755 python_apps/pypo/install/pypo-install.sh rename python_apps/show-recorder/install/{recorder-install-files.py => recorder-copy-files.py} (100%) delete mode 100644 python_apps/show-recorder/install/recorder-install.py.old delete mode 100755 python_apps/show-recorder/install/recorder-install.sh diff --git a/install_minimal/airtime-install b/install_minimal/airtime-install index c144362e1..7aa9c963e 100755 --- a/install_minimal/airtime-install +++ b/install_minimal/airtime-install @@ -38,6 +38,7 @@ SCRIPT=`readlink -f $0` SCRIPTPATH=`dirname $SCRIPT` AIRTIMEROOT=$SCRIPTPATH/../ +rm -rf "/usr/lib/airtime" $AIRTIMEROOT/python_apps/python-virtualenv/virtualenv-install.sh python $AIRTIMEROOT/python_apps/create-pypo-user.py 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.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/airtime-copy-files.sh b/install_minimal/include/airtime-copy-files.sh index da73dd061..f7d42df79 100755 --- a/install_minimal/include/airtime-copy-files.sh +++ b/install_minimal/include/airtime-copy-files.sh @@ -52,9 +52,9 @@ virtualenv_bin="/usr/lib/airtime/airtime_virtualenv/bin/" 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 @@ -66,6 +66,7 @@ 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/ 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/media-monitor/install/media-monitor-install-files.py b/python_apps/media-monitor/install/media-monitor-copy-files.py similarity index 100% rename from python_apps/media-monitor/install/media-monitor-install-files.py rename to python_apps/media-monitor/install/media-monitor-copy-files.py 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/pypo/install/pypo-install-files.py b/python_apps/pypo/install/pypo-copy-files.py similarity index 100% rename from python_apps/pypo/install/pypo-install-files.py rename to python_apps/pypo/install/pypo-copy-files.py 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/