From 1d9310f6769f8c3b3970f8e2751496bd53130513 Mon Sep 17 00:00:00 2001 From: Naomi Aro Date: Tue, 2 Aug 2011 11:51:29 +0200 Subject: [PATCH 01/26] CC-2621 : Support upgrades from 1.7.0 --- .../airtime-1.8.0/airtime-upgrade.php | 146 +++++++++++++++--- 1 file changed, 126 insertions(+), 20 deletions(-) diff --git a/install_minimal/upgrades/airtime-1.8.0/airtime-upgrade.php b/install_minimal/upgrades/airtime-1.8.0/airtime-upgrade.php index 897555da6..5ab38b1ff 100644 --- a/install_minimal/upgrades/airtime-1.8.0/airtime-upgrade.php +++ b/install_minimal/upgrades/airtime-1.8.0/airtime-upgrade.php @@ -46,12 +46,6 @@ $configFiles = array(AirtimeIni::CONF_FILE_AIRTIME, AirtimeIni::CONF_FILE_RECORDER, AirtimeIni::CONF_FILE_LIQUIDSOAP); -foreach ($configFiles as $conf) { - if (file_exists($conf)) { - echo "Backing up $conf to $conf.bak".PHP_EOL; - exec("cp $conf $conf.bak"); - } -} /** * This function creates the /etc/airtime configuration folder @@ -86,22 +80,134 @@ function CreateIniFiles() } } -echo "* Creating INI files".PHP_EOL; +function ReadPythonConfig($p_filename) +{ + $values = array(); + + $lines = file($p_filename); + $n=count($lines); + for ($i=0; $i<$n; $i++) { + if (strlen($lines[$i]) && !in_array(substr($lines[$i], 0, 1), array('#', PHP_EOL))){ + $info = explode("=", $lines[$i]); + $values[trim($info[0])] = trim($info[1]); + } + } + + return $values; +} + +function UpdateIniValue($p_filename, $p_property, $p_value) +{ + $lines = file($p_filename); + $n=count($lines); + foreach ($lines as &$line) { + if ($line[0] != "#"){ + $key_value = split("=", $line); + $key = trim($key_value[0]); + + if ($key == $p_property){ + $line = "$p_property = $p_value".PHP_EOL; + } + } + } + + $fp=fopen($p_filename, 'w'); + for($i=0; $i<$n; $i++){ + fwrite($fp, $lines[$i]); + } + fclose($fp); +} + +function MergeConfigFiles($configFiles, $suffix) +{ + foreach ($configFiles as $conf) { + if (file_exists("$conf$suffix.bak")) { + + if($conf === CONF_FILE_AIRTIME) { + // Parse with sections + $newSettings = parse_ini_file($conf, true); + $oldSettings = parse_ini_file("$conf$suffix.bak", true); + } + else { + $newSettings = ReadPythonConfig($conf); + $oldSettings = ReadPythonConfig("$conf$suffix.bak"); + } + + $settings = array_keys($newSettings); + + foreach($settings as $section) { + if(isset($oldSettings[$section])) { + if(is_array($oldSettings[$section])) { + $sectionKeys = array_keys($newSettings[$section]); + foreach($sectionKeys as $sectionKey) { + if(isset($oldSettings[$section][$sectionKey])) { + UpdateIniValue($conf, $sectionKey, $oldSettings[$section][$sectionKey]); + } + } + } + else { + UpdateIniValue($conf, $section, $oldSettings[$section]); + } + } + } + } + } +} + +function LoadConfig($CC_CONFIG) { + $values = parse_ini_file(CONF_FILE_AIRTIME, true); + + // Name of the web server user + $CC_CONFIG['webServerUser'] = $values['general']['web_server_user']; + $CC_CONFIG['phpDir'] = $values['general']['airtime_dir']; + $CC_CONFIG['rabbitmq'] = $values['rabbitmq']; + + // Database config + $CC_CONFIG['dsn']['username'] = $values['database']['dbuser']; + $CC_CONFIG['dsn']['password'] = $values['database']['dbpass']; + $CC_CONFIG['dsn']['hostspec'] = $values['database']['host']; + $CC_CONFIG['dsn']['phptype'] = 'pgsql'; + $CC_CONFIG['dsn']['database'] = $values['database']['dbname']; + + $CC_CONFIG['apiKey'] = array($values['general']['api_key']); + + $CC_CONFIG['soundcloud-connection-retries'] = $values['soundcloud']['connection_retries']; + $CC_CONFIG['soundcloud-connection-wait'] = $values['soundcloud']['time_between_retries']; + + return $CC_CONFIG; +} + +// Backup the config files +$suffix = date("Ymdhis")."-1.8.0"; +foreach ($configFiles as $conf) { + if (file_exists($conf)) { + echo "Backing up $conf to $conf$suffix.bak".PHP_EOL; + exec("cp $conf $conf$suffix.bak"); + } +} + CreateIniFiles(); - -AirtimeInstall::InstallPhpCode(); -AirtimeInstall::InstallBinaries(); - echo "* Initializing INI files".PHP_EOL; -AirtimeIni::UpdateIniFiles(); -global $CC_CONFIG; -$CC_CONFIG = Config::loadConfig($CC_CONFIG); +MergeConfigFiles($configFiles, $suffix); -echo "* Creating default storage directory".PHP_EOL; -AirtimeInstall::InstallStorageDirectory(); +$CC_CONFIG = LoadConfig($CC_CONFIG); -$ini = parse_ini_file(__DIR__."/../../include/airtime-install.ini"); -$stor_dir = $ini["storage_dir"]; +//echo "* Creating INI files".PHP_EOL; +//CreateIniFiles(); -AirtimeInstall::ChangeDirOwnerToWebserver($stor_dir); -AirtimeInstall::CreateSymlinksToUtils(); +//AirtimeInstall::InstallPhpCode(); +//AirtimeInstall::InstallBinaries(); + +//echo "* Initializing INI files".PHP_EOL; +//AirtimeIni::UpdateIniFiles(); +//global $CC_CONFIG; +//$CC_CONFIG = Config::loadConfig($CC_CONFIG); + +//echo "* Creating default storage directory".PHP_EOL; +//AirtimeInstall::InstallStorageDirectory(); + +//$ini = parse_ini_file(__DIR__."/../../include/airtime-install.ini"); +//$stor_dir = $ini["storage_dir"]; + +//AirtimeInstall::ChangeDirOwnerToWebserver($stor_dir); +//AirtimeInstall::CreateSymlinksToUtils(); From ff41f8306e68b027caef7aec8b9115ff45324134 Mon Sep 17 00:00:00 2001 From: Naomi Aro Date: Tue, 2 Aug 2011 12:31:25 +0200 Subject: [PATCH 02/26] CC-2621 : Support upgrades from 1.7.0 --- .../airtime-1.8.0/airtime-upgrade.php | 24 ++++--------------- .../airtime-1.8.1/airtime-upgrade.php | 4 ++++ .../airtime-1.8.2/airtime-upgrade.php | 4 ++++ 3 files changed, 12 insertions(+), 20 deletions(-) diff --git a/install_minimal/upgrades/airtime-1.8.0/airtime-upgrade.php b/install_minimal/upgrades/airtime-1.8.0/airtime-upgrade.php index 5ab38b1ff..c43b66047 100644 --- a/install_minimal/upgrades/airtime-1.8.0/airtime-upgrade.php +++ b/install_minimal/upgrades/airtime-1.8.0/airtime-upgrade.php @@ -162,6 +162,10 @@ function LoadConfig($CC_CONFIG) { $CC_CONFIG['phpDir'] = $values['general']['airtime_dir']; $CC_CONFIG['rabbitmq'] = $values['rabbitmq']; + $CC_CONFIG['baseFilesDir'] = $values['general']['base_files_dir'], + // main directory for storing binary media files + $CC_CONFIG['storageDir'] = $values['general']['base_files_dir']."/stor", + // Database config $CC_CONFIG['dsn']['username'] = $values['database']['dbuser']; $CC_CONFIG['dsn']['password'] = $values['database']['dbpass']; @@ -191,23 +195,3 @@ echo "* Initializing INI files".PHP_EOL; MergeConfigFiles($configFiles, $suffix); $CC_CONFIG = LoadConfig($CC_CONFIG); - -//echo "* Creating INI files".PHP_EOL; -//CreateIniFiles(); - -//AirtimeInstall::InstallPhpCode(); -//AirtimeInstall::InstallBinaries(); - -//echo "* Initializing INI files".PHP_EOL; -//AirtimeIni::UpdateIniFiles(); -//global $CC_CONFIG; -//$CC_CONFIG = Config::loadConfig($CC_CONFIG); - -//echo "* Creating default storage directory".PHP_EOL; -//AirtimeInstall::InstallStorageDirectory(); - -//$ini = parse_ini_file(__DIR__."/../../include/airtime-install.ini"); -//$stor_dir = $ini["storage_dir"]; - -//AirtimeInstall::ChangeDirOwnerToWebserver($stor_dir); -//AirtimeInstall::CreateSymlinksToUtils(); diff --git a/install_minimal/upgrades/airtime-1.8.1/airtime-upgrade.php b/install_minimal/upgrades/airtime-1.8.1/airtime-upgrade.php index c077e1c25..478262dde 100644 --- a/install_minimal/upgrades/airtime-1.8.1/airtime-upgrade.php +++ b/install_minimal/upgrades/airtime-1.8.1/airtime-upgrade.php @@ -88,6 +88,10 @@ function LoadConfig($CC_CONFIG) { $CC_CONFIG['phpDir'] = $values['general']['airtime_dir']; $CC_CONFIG['rabbitmq'] = $values['rabbitmq']; + $CC_CONFIG['baseFilesDir'] = $values['general']['base_files_dir'], + // main directory for storing binary media files + $CC_CONFIG['storageDir'] = $values['general']['base_files_dir']."/stor", + //$CC_CONFIG['baseUrl'] = $values['general']['base_url']; //$CC_CONFIG['basePort'] = $values['general']['base_port']; diff --git a/install_minimal/upgrades/airtime-1.8.2/airtime-upgrade.php b/install_minimal/upgrades/airtime-1.8.2/airtime-upgrade.php index 788db3e26..33107d79f 100644 --- a/install_minimal/upgrades/airtime-1.8.2/airtime-upgrade.php +++ b/install_minimal/upgrades/airtime-1.8.2/airtime-upgrade.php @@ -88,6 +88,10 @@ function LoadConfig($CC_CONFIG) { $CC_CONFIG['phpDir'] = $values['general']['airtime_dir']; $CC_CONFIG['rabbitmq'] = $values['rabbitmq']; + $CC_CONFIG['baseFilesDir'] = $values['general']['base_files_dir'], + // main directory for storing binary media files + $CC_CONFIG['storageDir'] = $values['general']['base_files_dir']."/stor", + $CC_CONFIG['baseUrl'] = $values['general']['base_url']; $CC_CONFIG['basePort'] = $values['general']['base_port']; From cc18a646684314c8fd84485686710d4341bff8c6 Mon Sep 17 00:00:00 2001 From: Naomi Aro Date: Tue, 2 Aug 2011 12:56:39 +0200 Subject: [PATCH 03/26] CC-2621 : Support upgrades from 1.7.0 --- install_minimal/include/AirtimeInstall.php | 8 ++++++++ install_minimal/include/airtime-install.php | 2 +- install_minimal/include/airtime-upgrade.php | 7 ++++++- .../upgrades/airtime-1.8.0/airtime-upgrade.php | 4 ++-- .../upgrades/airtime-1.8.1/airtime-upgrade.php | 4 ++-- .../upgrades/airtime-1.8.2/airtime-upgrade.php | 4 ++-- 6 files changed, 21 insertions(+), 8 deletions(-) diff --git a/install_minimal/include/AirtimeInstall.php b/install_minimal/include/AirtimeInstall.php index 60438e200..904cbe8f1 100644 --- a/install_minimal/include/AirtimeInstall.php +++ b/install_minimal/include/AirtimeInstall.php @@ -68,6 +68,14 @@ class AirtimeInstall if (PEAR::isError($version)) { return null; } + + $sql = "SELECT * FROM cc_show_rebroadcast LIMIT 1"; + $result = $CC_DBC->GetOne($sql); + if (!PEAR::isError($result)) { + $version = "1.7.0"; + //echo "Airtime Version: ".$version." ".PHP_EOL; + } + // no version string detected if($version == ''){ $version = false; diff --git a/install_minimal/include/airtime-install.php b/install_minimal/include/airtime-install.php index faaad8d0e..ff4f8d731 100644 --- a/install_minimal/include/airtime-install.php +++ b/install_minimal/include/airtime-install.php @@ -72,7 +72,7 @@ if (isset($version) && ($version != false) && ($version < AIRTIME_VERSION) && !i } if($version === false){ - echo "A version of Airtime older than 1.8.0 detected, please upgrade to 1.8.0 first.\n"; + echo "A version of Airtime older than 1.7.0 detected, please upgrade to 1.7.0 first.\n"; echo "You will then be able to upgrade to 1.9.0 using this installer.\n"; exit(3); } diff --git a/install_minimal/include/airtime-upgrade.php b/install_minimal/include/airtime-upgrade.php index 856a1a57f..32c68ad33 100644 --- a/install_minimal/include/airtime-upgrade.php +++ b/install_minimal/include/airtime-upgrade.php @@ -12,6 +12,7 @@ set_include_path(__DIR__.'/../../airtime_mvc/library/pear' . PATH_SEPARATOR . ge require_once('DB.php'); require_once(__DIR__.'/../../airtime_mvc/application/configs/constants.php'); require_once(dirname(__FILE__).'/AirtimeIni.php'); +require_once(dirname(__FILE__).'/AirtimeInstall.php'); if(exec("whoami") != "root"){ echo "Must be root user.\n"; @@ -43,6 +44,7 @@ if (PEAR::isError($CC_DBC)) { $CC_DBC->setFetchMode(DB_FETCHMODE_ASSOC); } +/* $sql = "SELECT valstr FROM cc_pref WHERE keystr = 'system_version'"; $version = $CC_DBC->GetOne($sql); @@ -52,7 +54,7 @@ if (PEAR::isError($version)) { if (!$version){ - $sql = "SELECT * FROM ".$p_name; + $sql = "SELECT * FROM cc_show_rebroadcast LIMIT 1"; $result = $CC_DBC->GetOne($sql); if (!PEAR::isError($result)) { $version = "1.7.0"; @@ -63,6 +65,9 @@ if (!$version){ echo "Airtime Version: ".$version." ".PHP_EOL; } } +*/ + +$version = AirtimeInstall::GetVersionInstalled(); echo "******************************** Update Begin *********************************".PHP_EOL; diff --git a/install_minimal/upgrades/airtime-1.8.0/airtime-upgrade.php b/install_minimal/upgrades/airtime-1.8.0/airtime-upgrade.php index c43b66047..d3f20807f 100644 --- a/install_minimal/upgrades/airtime-1.8.0/airtime-upgrade.php +++ b/install_minimal/upgrades/airtime-1.8.0/airtime-upgrade.php @@ -162,9 +162,9 @@ function LoadConfig($CC_CONFIG) { $CC_CONFIG['phpDir'] = $values['general']['airtime_dir']; $CC_CONFIG['rabbitmq'] = $values['rabbitmq']; - $CC_CONFIG['baseFilesDir'] = $values['general']['base_files_dir'], + $CC_CONFIG['baseFilesDir'] = $values['general']['base_files_dir']; // main directory for storing binary media files - $CC_CONFIG['storageDir'] = $values['general']['base_files_dir']."/stor", + $CC_CONFIG['storageDir'] = $values['general']['base_files_dir']."/stor"; // Database config $CC_CONFIG['dsn']['username'] = $values['database']['dbuser']; diff --git a/install_minimal/upgrades/airtime-1.8.1/airtime-upgrade.php b/install_minimal/upgrades/airtime-1.8.1/airtime-upgrade.php index 478262dde..2b4764db2 100644 --- a/install_minimal/upgrades/airtime-1.8.1/airtime-upgrade.php +++ b/install_minimal/upgrades/airtime-1.8.1/airtime-upgrade.php @@ -88,9 +88,9 @@ function LoadConfig($CC_CONFIG) { $CC_CONFIG['phpDir'] = $values['general']['airtime_dir']; $CC_CONFIG['rabbitmq'] = $values['rabbitmq']; - $CC_CONFIG['baseFilesDir'] = $values['general']['base_files_dir'], + $CC_CONFIG['baseFilesDir'] = $values['general']['base_files_dir']; // main directory for storing binary media files - $CC_CONFIG['storageDir'] = $values['general']['base_files_dir']."/stor", + $CC_CONFIG['storageDir'] = $values['general']['base_files_dir']."/stor"; //$CC_CONFIG['baseUrl'] = $values['general']['base_url']; //$CC_CONFIG['basePort'] = $values['general']['base_port']; diff --git a/install_minimal/upgrades/airtime-1.8.2/airtime-upgrade.php b/install_minimal/upgrades/airtime-1.8.2/airtime-upgrade.php index 33107d79f..0f88c22c3 100644 --- a/install_minimal/upgrades/airtime-1.8.2/airtime-upgrade.php +++ b/install_minimal/upgrades/airtime-1.8.2/airtime-upgrade.php @@ -88,9 +88,9 @@ function LoadConfig($CC_CONFIG) { $CC_CONFIG['phpDir'] = $values['general']['airtime_dir']; $CC_CONFIG['rabbitmq'] = $values['rabbitmq']; - $CC_CONFIG['baseFilesDir'] = $values['general']['base_files_dir'], + $CC_CONFIG['baseFilesDir'] = $values['general']['base_files_dir']; // main directory for storing binary media files - $CC_CONFIG['storageDir'] = $values['general']['base_files_dir']."/stor", + $CC_CONFIG['storageDir'] = $values['general']['base_files_dir']."/stor"; $CC_CONFIG['baseUrl'] = $values['general']['base_url']; $CC_CONFIG['basePort'] = $values['general']['base_port']; From 923bd5d9b596f15d314538f06e2241a53e7bf5ea Mon Sep 17 00:00:00 2001 From: Naomi Aro Date: Tue, 2 Aug 2011 13:09:23 +0200 Subject: [PATCH 04/26] CC-2621 : Support upgrades from 1.7.0 --- install_minimal/upgrades/airtime-1.8.0/airtime-upgrade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install_minimal/upgrades/airtime-1.8.0/airtime-upgrade.php b/install_minimal/upgrades/airtime-1.8.0/airtime-upgrade.php index d3f20807f..cdb90a5a5 100644 --- a/install_minimal/upgrades/airtime-1.8.0/airtime-upgrade.php +++ b/install_minimal/upgrades/airtime-1.8.0/airtime-upgrade.php @@ -62,7 +62,7 @@ function CreateIniFiles() } } - if (!copy("airtime.conf.180", CONF_FILE_AIRTIME)){ + if (!copy(__DIR__."/airtime.conf.180", CONF_FILE_AIRTIME)){ echo "Could not copy airtime.conf to /etc/airtime/. Exiting."; exit(1); } From a4e5d0751000e4aba0f50bd93816668367f72794 Mon Sep 17 00:00:00 2001 From: Naomi Aro Date: Tue, 2 Aug 2011 16:31:03 +0200 Subject: [PATCH 05/26] CC-2621 : Support upgrades from 1.7.0 --- .../upgrades/airtime-1.8.0/airtime-upgrade.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/install_minimal/upgrades/airtime-1.8.0/airtime-upgrade.php b/install_minimal/upgrades/airtime-1.8.0/airtime-upgrade.php index cdb90a5a5..29170d325 100644 --- a/install_minimal/upgrades/airtime-1.8.0/airtime-upgrade.php +++ b/install_minimal/upgrades/airtime-1.8.0/airtime-upgrade.php @@ -11,6 +11,17 @@ require_once __DIR__.'/../../../airtime_mvc/application/configs/conf.php'; require_once(dirname(__FILE__).'/../../include/AirtimeInstall.php'); require_once(dirname(__FILE__).'/../../include/AirtimeIni.php'); +//global $AIRTIME_SRC; +//global $AIRTIME_UTILS; +global $AIRTIME_PYTHON_APPS; + +global $CC_CONFIG; + +//$AIRTIME_SRC = __DIR__.'/../../../airtime_mvc'; +//$AIRTIME_UTILS = __DIR__.'/../../../utils'; +$AIRTIME_PYTHON_APPS = __DIR__.'/../../../python_apps'; + + AirtimeInstall::DbConnect(true); echo PHP_EOL."*** Updating Database Tables ***".PHP_EOL; From 81bcd563609b0d11abaa818954b3f58d0d301a82 Mon Sep 17 00:00:00 2001 From: Naomi Aro Date: Tue, 2 Aug 2011 18:14:46 +0200 Subject: [PATCH 06/26] CC-2621 : Support upgrades from 1.7.0 --- .../upgrades/airtime-1.8.0/liquidsoap.cfg.180 | 38 +++++ .../upgrades/airtime-1.8.0/pypo.cfg.180 | 139 ++++++++++++++++++ .../upgrades/airtime-1.8.0/recorder.cfg.180 | 35 +++++ .../upgrades/airtime-1.8.1/liquidsoap.cfg.181 | 38 +++++ .../upgrades/airtime-1.8.1/pypo.cfg.181 | 139 ++++++++++++++++++ .../upgrades/airtime-1.8.1/recorder.cfg.181 | 35 +++++ .../upgrades/airtime-1.8.2/liquidsoap.cfg.182 | 46 ++++++ .../upgrades/airtime-1.8.2/pypo.cfg.182 | 139 ++++++++++++++++++ .../upgrades/airtime-1.8.2/recorder.cfg.182 | 35 +++++ .../upgrades/airtime-1.9.0/liquidsoap.cfg.190 | 55 +++++++ .../airtime-1.9.0/media-monitor.cfg.190 | 21 +++ .../upgrades/airtime-1.9.0/pypo.cfg.190 | 72 +++++++++ .../upgrades/airtime-1.9.0/recorder.cfg.190 | 26 ++++ 13 files changed, 818 insertions(+) create mode 100644 install_minimal/upgrades/airtime-1.8.0/liquidsoap.cfg.180 create mode 100644 install_minimal/upgrades/airtime-1.8.0/pypo.cfg.180 create mode 100644 install_minimal/upgrades/airtime-1.8.0/recorder.cfg.180 create mode 100644 install_minimal/upgrades/airtime-1.8.1/liquidsoap.cfg.181 create mode 100644 install_minimal/upgrades/airtime-1.8.1/pypo.cfg.181 create mode 100644 install_minimal/upgrades/airtime-1.8.1/recorder.cfg.181 create mode 100644 install_minimal/upgrades/airtime-1.8.2/liquidsoap.cfg.182 create mode 100644 install_minimal/upgrades/airtime-1.8.2/pypo.cfg.182 create mode 100644 install_minimal/upgrades/airtime-1.8.2/recorder.cfg.182 create mode 100644 install_minimal/upgrades/airtime-1.9.0/liquidsoap.cfg.190 create mode 100644 install_minimal/upgrades/airtime-1.9.0/media-monitor.cfg.190 create mode 100644 install_minimal/upgrades/airtime-1.9.0/pypo.cfg.190 create mode 100644 install_minimal/upgrades/airtime-1.9.0/recorder.cfg.190 diff --git a/install_minimal/upgrades/airtime-1.8.0/liquidsoap.cfg.180 b/install_minimal/upgrades/airtime-1.8.0/liquidsoap.cfg.180 new file mode 100644 index 000000000..360ee107f --- /dev/null +++ b/install_minimal/upgrades/airtime-1.8.0/liquidsoap.cfg.180 @@ -0,0 +1,38 @@ +########################################### +# liquidsoap config file # +########################################### + + +########################################### +# general settings # +########################################### + +log_file = "/var/log/airtime/pypo-liquidsoap/