From 4552089c192f23f44d17f493a89bb0cee4e0dec3 Mon Sep 17 00:00:00 2001 From: Duncan Sommerville Date: Thu, 15 Jan 2015 17:33:47 -0500 Subject: [PATCH] Fixes to install & uninstall procedure --- airtime_mvc/application/Bootstrap.php | 5 +- .../airtime-setup/forms/database-settings.php | 2 +- airtime_mvc/build/airtime.example.conf | 424 +++++++++--------- python_apps/pypo/setup.py | 2 +- uninstall | 15 +- 5 files changed, 227 insertions(+), 221 deletions(-) diff --git a/airtime_mvc/application/Bootstrap.php b/airtime_mvc/application/Bootstrap.php index ee49b73a8..3af4c793e 100644 --- a/airtime_mvc/application/Bootstrap.php +++ b/airtime_mvc/application/Bootstrap.php @@ -79,8 +79,11 @@ class Bootstrap extends Zend_Application_Bootstrap_Bootstrap } protected function _initUpgrade() { - Logging::info("Checking if upgrade is needed..."); if (AIRTIME_CODE_VERSION > Application_Model_Preference::GetAirtimeVersion()) { + // This line is actually fairly important (incidentally) because it + // instantiates the logger singleton, which in turn decides the Airtime PHP error policy, + // otherwise we would trip up on the '#' characters in airtime.conf + Logging::info("Checking if upgrade is needed..."); $upgradeManager = new UpgradeManager(); $upgradeManager->runUpgrades(array(new AirtimeUpgrader252()), (__DIR__ . "/controllers")); } diff --git a/airtime_mvc/build/airtime-setup/forms/database-settings.php b/airtime_mvc/build/airtime-setup/forms/database-settings.php index d9df0e42e..58e17426d 100644 --- a/airtime_mvc/build/airtime-setup/forms/database-settings.php +++ b/airtime_mvc/build/airtime-setup/forms/database-settings.php @@ -10,7 +10,7 @@

Database Settings

- Enter your Airtime database settings here. Empty or non-existent database names will be created and populated + Enter your Airtime database settings here. Empty or non-existent databases will be created and populated if the given user has administrative permissions in postgres.

diff --git a/airtime_mvc/build/airtime.example.conf b/airtime_mvc/build/airtime.example.conf index 65369e0c5..98c5c7887 100644 --- a/airtime_mvc/build/airtime.example.conf +++ b/airtime_mvc/build/airtime.example.conf @@ -1,42 +1,42 @@ -; ---------------------------------------------------------------------- -; A I R T I M E C O N F I G U R A T I O N -; ---------------------------------------------------------------------- -; -; This is an example configuration for Airtime. If you just want to -; get started with a basic Airtime setup, or don't know if you should -; be reconfiguring any of the following values, just rename this file -; to 'airtime.conf'. -; -; ---------------------------------------------------------------------- +# ---------------------------------------------------------------------- +# A I R T I M E C O N F I G U R A T I O N +# ---------------------------------------------------------------------- +# +# This is an example configuration for Airtime. If you just want to +# get started with a basic Airtime setup, or don't know if you should +# be reconfiguring any of the following values, just rename this file +# to 'airtime.conf'. +# +# ---------------------------------------------------------------------- -; ---------------------------------------------------------------------- -; G E N E R A L S E T T I N G S -; ---------------------------------------------------------------------- -; -; These settings are used for Airtime's webserver configuration, and -; for general-purpose properties. -; -; api_key: The API key for your Airtime installation. -; The value is generated the first time you use Airtime. -; -; web_server_user: The default webserver user. -; The default is www-data. -; -; base_url: The host name for your webserver. -; The default is localhost. -; -; base_port: The port for your webserver. -; The default is 80. -; -; base_dir: The root directory for your Airtime installation -; on your webserver, relative to the base_url. -; The default is /. -; -; cache_ahead_hours: How many hours ahead of time the Airtime playout -; engine (pypo) should cache scheduled media files. -; The default is 1. -; +# ---------------------------------------------------------------------- +# G E N E R A L S E T T I N G S +# ---------------------------------------------------------------------- +# +# These settings are used for Airtime's webserver configuration, and +# for general-purpose properties. +# +# api_key: The API key for your Airtime installation. +# The value is generated the first time you use Airtime. +# +# web_server_user: The default webserver user. +# The default is www-data. +# +# base_url: The host name for your webserver. +# The default is localhost. +# +# base_port: The port for your webserver. +# The default is 80. +# +# base_dir: The root directory for your Airtime installation +# on your webserver, relative to the base_url. +# The default is /. +# +# cache_ahead_hours: How many hours ahead of time the Airtime playout +# engine (pypo) should cache scheduled media files. +# The default is 1. +# [general] api_key = web_server_user = www-data @@ -44,99 +44,99 @@ base_url = localhost base_port = 80 base_dir = / cache_ahead_hours = 1 -; -; ---------------------------------------------------------------------- +# +# ---------------------------------------------------------------------- -; ---------------------------------------------------------------------- -; D A T A B A S E -; ---------------------------------------------------------------------- -; -; These settings are used to configure your database connection. -; -; host: The hostname of the database server. -; On a default Airtime installation, set this to localhost. -; -; dbname: The name of the Airtime database. -; The default is airtime. -; -; dbuser: The username for the Airtime database user. -; The default is airtime. -; -; dbpass: The password for the Airtime database user. -; The default is airtime. -; +# ---------------------------------------------------------------------- +# D A T A B A S E +# ---------------------------------------------------------------------- +# +# These settings are used to configure your database connection. +# +# host: The hostname of the database server. +# On a default Airtime installation, set this to localhost. +# +# dbname: The name of the Airtime database. +# The default is airtime. +# +# dbuser: The username for the Airtime database user. +# The default is airtime. +# +# dbpass: The password for the Airtime database user. +# The default is airtime. +# [database] host = localhost dbname = airtime dbuser = airtime dbpass = airtime -; -; ---------------------------------------------------------------------- +# +# ---------------------------------------------------------------------- -; ---------------------------------------------------------------------- -; R A B B I T M Q -; ---------------------------------------------------------------------- -; -; These settings are used to configure the RabbitMQ messaging -; configuration for your Airtime installation. -; -; host: The IP address for the RabbitMQ service. -; The default is 127.0.0.1. -; -; port: The port for the RabbitMQ service. -; The default is 5672. -; -; user: The username for the RabbitMQ user. -; The default is airtime. -; -; password: The password for the RabbitMQ user. -; The default is airtime. -; -; vhost: The virtual host for the RabbitMQ service database. -; The default is /airtime. -; +# ---------------------------------------------------------------------- +# R A B B I T M Q +# ---------------------------------------------------------------------- +# +# These settings are used to configure the RabbitMQ messaging +# configuration for your Airtime installation. +# +# host: The IP address for the RabbitMQ service. +# The default is 127.0.0.1. +# +# port: The port for the RabbitMQ service. +# The default is 5672. +# +# user: The username for the RabbitMQ user. +# The default is airtime. +# +# password: The password for the RabbitMQ user. +# The default is airtime. +# +# vhost: The virtual host for the RabbitMQ service database. +# The default is /airtime. +# [rabbitmq] host = 127.0.0.1 port = 5672 user = airtime password = airtime vhost = /airtime -; -; ---------------------------------------------------------------------- +# +# ---------------------------------------------------------------------- -; ---------------------------------------------------------------------- -; M E D I A M O N I T O R -; ---------------------------------------------------------------------- -; -; check_filesystem_events: How long to queue up events performed on the -; files themselves, in seconds -; The default is 5 -; -; check_airtime_events: How long to queue metadata input from airtime, -; in seconds -; The default is 30 -; -; touch_interval: -; The default is 5 -; -; chunking_number: -; The default is 450 -; -; request_max_wait: The maximum request wait time, in seconds -; The default is 3.0 -; -; rmq_event_wait: The RabbitMQ event wait time, in seconds -; The default is 0.1 -; -; logpath: The media monitor log file path -; The default is '/var/log/airtime/media-monitor/media-monitor.log' -; -; index_path: The media monitor index path -; The default is '/var/tmp/airtime/media-monitor/last_index' -; +# ---------------------------------------------------------------------- +# M E D I A M O N I T O R +# ---------------------------------------------------------------------- +# +# check_filesystem_events: How long to queue up events performed on the +# files themselves, in seconds +# The default is 5 +# +# check_airtime_events: How long to queue metadata input from airtime, +# in seconds +# The default is 30 +# +# touch_interval: +# The default is 5 +# +# chunking_number: +# The default is 450 +# +# request_max_wait: The maximum request wait time, in seconds +# The default is 3.0 +# +# rmq_event_wait: The RabbitMQ event wait time, in seconds +# The default is 0.1 +# +# logpath: The media monitor log file path +# The default is '/var/log/airtime/media-monitor/media-monitor.log' +# +# index_path: The media monitor index path +# The default is '/var/tmp/airtime/media-monitor/last_index' +# [media-monitor] check_filesystem_events = 5 check_airtime_events = 30 @@ -146,129 +146,129 @@ request_max_wait = 3.0 rmq_event_wait = 0.1 logpath = '/var/log/airtime/media-monitor/media-monitor.log' index_path = '/var/tmp/airtime/media-monitor/last_index' -; -; ---------------------------------------------------------------------- +# +# ---------------------------------------------------------------------- -; ---------------------------------------------------------------------- -; P Y P O -; ---------------------------------------------------------------------- -; -; api_client: Set the type of client you are using. -; Currently supported types: -; 1) 'obp' = Open Broadcast Platform -; 2) 'airtime' -; The default is 'airtime' -; -; cache_dir: The directory for pypo cache files -; The default is '/var/tmp/airtime/pypo/cache/' -; -; file_dir: The directory for pypo media files -; The default is '/var/tmp/airtime/pypo/files/' -; -; tmp_dir: The directory for pypo temp files -; The default is '/var/tmp/airtime/pypo/tmp/' -; -; cache_base_dir: The pypo base cache directory -; The default is '/var/tmp/airtime/pypo/' -; -; log_base_dir: The base directory for Airtime log files -; The default is '/var/log/airtime' -; -; pypo_log_dir: The directory for pypo log files -; The default is '/var/log/airtime/pypo' -; -; liquidsoap_log_dir: The directory for liquidsoap log files -; The default is '/var/log/airtime/pypo-liquidsoap' -; -; ls_host: Liquidsoap connection host -; The default is '127.0.0.1' -; -; ls_port: Liquidsoap connection port -; The default is '1234' -; -; poll_interval: Poll interval in seconds -; -; This will rarely need to be changed because any schedule -; changes are automatically sent to pypo immediately -; This is how often the poll script downloads new schedules -; and files from the server in the event that no changes -; are made to the schedule -; The default is 3600 -; -; push_interval: Push interval in seconds -; -; This is how often the push script checks whether it has -; something new to push to liquidsoap -; The default is 1 -; -; cue_style: Can be set to 'pre' or 'otf' -; 'pre' cues while playlist preparation -; 'otf' (on the fly) cues while loading into ls -; (needs the post_processor patch) -; The default is 'pre' -; -; record_bitrate: The bitrate for recordings -; The default is 256 -; -; record_samplerate: The samplerate for recordings -; The default is 44100 -; -; record_channels: The number of channels for recordings -; The default is 2 -; -; record_sample_size: The sample size for recordings -; The default is 16 -; -; record_file_type: Can be either ogg|mp3, mp3 recording requires -; installation of the package "lame" -; The default is ogg -; -; base_recorded_files: Base path to store recordered shows at -; The default is '/var/tmp/airtime/show-recorder/' -; +# ---------------------------------------------------------------------- +# P Y P O +# ---------------------------------------------------------------------- +# +# api_client: Set the type of client you are using. +# Currently supported types: +# 1) 'obp' = Open Broadcast Platform +# 2) 'airtime' +# The default is 'airtime' +# +# cache_dir: The directory for pypo cache files +# The default is '/var/tmp/airtime/pypo/cache/' +# +# file_dir: The directory for pypo media files +# The default is '/var/tmp/airtime/pypo/files/' +# +# tmp_dir: The directory for pypo temp files +# The default is '/var/tmp/airtime/pypo/tmp/' +# +# cache_base_dir: The pypo base cache directory +# The default is '/var/tmp/airtime/pypo/' +# +# log_base_dir: The base directory for Airtime log files +# The default is '/var/log/airtime' +# +# pypo_log_dir: The directory for pypo log files +# The default is '/var/log/airtime/pypo' +# +# liquidsoap_log_dir: The directory for liquidsoap log files +# The default is '/var/log/airtime/pypo-liquidsoap' +# +# ls_host: Liquidsoap connection host +# The default is '127.0.0.1' +# +# ls_port: Liquidsoap connection port +# The default is '1234' +# +# poll_interval: Poll interval in seconds +# +# This will rarely need to be changed because any schedule +# changes are automatically sent to pypo immediately +# This is how often the poll script downloads new schedules +# and files from the server in the event that no changes +# are made to the schedule +# The default is 3600 +# +# push_interval: Push interval in seconds +# +# This is how often the push script checks whether it has +# something new to push to liquidsoap +# The default is 1 +# +# cue_style: Can be set to 'pre' or 'otf' +# 'pre' cues while playlist preparation +# 'otf' (on the fly) cues while loading into ls +# (needs the post_processor patch) +# The default is 'pre' +# +# record_bitrate: The bitrate for recordings +# The default is 256 +# +# record_samplerate: The samplerate for recordings +# The default is 44100 +# +# record_channels: The number of channels for recordings +# The default is 2 +# +# record_sample_size: The sample size for recordings +# The default is 16 +# +# record_file_type: Can be either ogg|mp3, mp3 recording requires +# installation of the package "lame" +# The default is ogg +# +# base_recorded_files: Base path to store recordered shows at +# The default is '/var/tmp/airtime/show-recorder/' +# [pypo] api_client = 'airtime' -; ---------- Cache directories - !! Include trailing slash !! ---------- +# ---------- Cache directories - !! Include trailing slash !! ---------- cache_dir = '/var/tmp/airtime/pypo/cache/' file_dir = '/var/tmp/airtime/pypo/files/' tmp_dir = '/var/tmp/airtime/pypo/tmp/' -; ------- Setup directories - !! Don't include trailing slash !! ------- +# ------- Setup directories - !! Don't include trailing slash !! ------- cache_base_dir = '/var/tmp/airtime/pypo' log_base_dir = '/var/log/airtime' pypo_log_dir = '/var/log/airtime/pypo' liquidsoap_log_dir = '/var/log/airtime/pypo-liquidsoap' -; ------------------------ Liquidsoap Settings ------------------------- +# ------------------------ Liquidsoap Settings ------------------------- ls_host = '127.0.0.1' ls_port = '1234' -; -------------------------- Pypo Preferences -------------------------- +# -------------------------- Pypo Preferences -------------------------- poll_interval = 3600 push_interval = 1 cue_style = 'pre' -; ---------------------- Recorded Audio Settings ----------------------- +# ---------------------- Recorded Audio Settings ----------------------- record_bitrate = 256 record_samplerate = 44100 record_channels = 2 record_sample_size = 16 record_file_type = 'ogg' base_recorded_files = '/var/tmp/airtime/show-recorder/' -; -; ---------------------------------------------------------------------- +# +# ---------------------------------------------------------------------- -; ---------------------------------------------------------------------- -; S O U N D C L O U D -; ---------------------------------------------------------------------- -; -; connection_retries: The number of times to retry the connection to -; Soundcloud. -; The default is 3. -; -; time_between_retries: The time between connection retries, in seconds. -; The default is 60. -; +# ---------------------------------------------------------------------- +# S O U N D C L O U D +# ---------------------------------------------------------------------- +# +# connection_retries: The number of times to retry the connection to +# Soundcloud. +# The default is 3. +# +# time_between_retries: The time between connection retries, in seconds. +# The default is 60. +# [soundcloud] connection_retries = 3 time_between_retries = 60 -; -; ---------------------------------------------------------------------- \ No newline at end of file +# +# ---------------------------------------------------------------------- \ No newline at end of file diff --git a/python_apps/pypo/setup.py b/python_apps/pypo/setup.py index fd57676b5..5f0d8a61e 100644 --- a/python_apps/pypo/setup.py +++ b/python_apps/pypo/setup.py @@ -21,7 +21,7 @@ else: ('/etc/init', ['install/airtime-playout.conf.template']), ('/etc/init', ['install/airtime-liquidsoap.conf.template']), ('/var/log/airtime/pypo', []), - ('/var/log/airtime/pypo/liquidsoap', []), + ('/var/log/airtime/pypo-liquidsoap', []), ('/var/tmp/airtime/pypo', []), ('/var/tmp/airtime/pypo/cache', []), ('/var/tmp/airtime/pypo/files', []), diff --git a/uninstall b/uninstall index de957b815..e2b6c0b31 100755 --- a/uninstall +++ b/uninstall @@ -31,8 +31,13 @@ EOF } removeRabbitmqAirtimeSettings() { - RMQ_VHOST=$(awk -F ' = ' '{if (! ($0 ~ /^;/) && $0 ~ /^vhost/ ) print $2}' /etc/airtime/airtime.conf) - RMQ_USER=$(awk -F ' = ' '{if (! ($0 ~ /^;/) && $0 ~ /^user/ ) print $2}' /etc/airtime/airtime.conf) + if [ -f /etc/airtime/airtime.conf ]; then + RMQ_VHOST=$(awk -F ' = ' '{if (! ($0 ~ /^;/) && $0 ~ /^vhost/ ) print $2}' /etc/airtime/airtime.conf) + RMQ_USER=$(awk -F ' = ' '{if (! ($0 ~ /^;/) && $0 ~ /^user/ ) print $2}' /etc/airtime/airtime.conf) + else + RMQ_VHOST=/airtime + RMQ_USER=airtime + fi rabbitmqctl delete_vhost ${RMQ_VHOST} rabbitmqctl delete_user ${RMQ_USER} @@ -82,15 +87,13 @@ else fi echo -e "\nUninstalling Airtime..." -if [ -f /etc/airtime/airtime.conf ]; then - removeRabbitmqAirtimeSettings -fi +removeRabbitmqAirtimeSettings for i in ${FILES[*]}; do rm -rf $i done -echo -e "\Do you want to drop your current Airtime database? (Y/n): \c" +echo -e "\nDo you want to drop your current Airtime database? (Y/n): \c" read IN if [[ "$IN" = "y" || "$IN" = "Y" ]]; then echo -e "\nDropping Airtime database..."