diff --git a/Changelog b/Changelog
index 8c3440cf1..722fa950f 100644
--- a/Changelog
+++ b/Changelog
@@ -1,3 +1,14 @@
+1.9.1 - August 17th, 2011
+ *Fixes
+ -airtime-user shell script failing to start
+ -Progress bar for tracks appearing when no content scheduled
+ -Fix upgrades from Airtime 1.8.2 failing
+ -Fix various install issues with virtualenv
+ -Prevent users from doing a manual install of Airtime if they already have the
+ Debian package version installed
+ *Changes
+ -Support Settings moved to a seperate page accessible by Admin user only.
+
1.9.0 - August 9, 2011
The cool stuff:
diff --git a/airtime_mvc/application/controllers/ApiController.php b/airtime_mvc/application/controllers/ApiController.php
index 2e743c0e9..5ed94b3c5 100644
--- a/airtime_mvc/application/controllers/ApiController.php
+++ b/airtime_mvc/application/controllers/ApiController.php
@@ -434,6 +434,13 @@ class ApiController extends Zend_Controller_Action
}
$this->view->stor = MusicDir::getStorDir()->getDirectory();
+
+ $watchedDirs = MusicDir::getWatchedDirs();
+ $watchedDirsPath = array();
+ foreach($watchedDirs as $wd){
+ $watchedDirsPath[] = $wd->getDirectory();
+ }
+ $this->view->watched_dirs = $watchedDirsPath;
}
public function reloadMetadataAction() {
diff --git a/airtime_mvc/application/controllers/NowplayingController.php b/airtime_mvc/application/controllers/NowplayingController.php
index 03f89d9bc..00a0d5f7e 100644
--- a/airtime_mvc/application/controllers/NowplayingController.php
+++ b/airtime_mvc/application/controllers/NowplayingController.php
@@ -29,8 +29,11 @@ class NowplayingController extends Zend_Controller_Action
$form = new Application_Form_RegisterAirtime();
$values = $request->getPost();
- if ($values["Publicise"] != 1){
+ if ($values["Publicise"] != 1 && $form->isValid($values)){
Application_Model_Preference::SetSupportFeedback($values["SupportFeedback"]);
+ if(isset($values["Privacy"])){
+ Application_Model_Preference::SetPrivacyPolicyCheck($values["Privacy"]);
+ }
// unset session
Zend_Session::namespaceUnset('referrer');
}
@@ -49,6 +52,9 @@ class NowplayingController extends Zend_Controller_Action
Application_Model_Preference::SetStationDescription($values["Description"]);
Application_Model_Preference::SetStationLogo($imagePath);
Application_Model_Preference::SetSupportFeedback($values["SupportFeedback"]);
+ if(isset($values["Privacy"])){
+ Application_Model_Preference::SetPrivacyPolicyCheck($values["Privacy"]);
+ }
// unset session
Zend_Session::namespaceUnset('referrer');
}else{
diff --git a/airtime_mvc/application/controllers/PreferenceController.php b/airtime_mvc/application/controllers/PreferenceController.php
index 1ad5ef721..39dbd3612 100644
--- a/airtime_mvc/application/controllers/PreferenceController.php
+++ b/airtime_mvc/application/controllers/PreferenceController.php
@@ -62,24 +62,29 @@ class PreferenceController extends Zend_Controller_Action
$form = new Application_Form_SupportSettings();
if ($request->isPost()) {
- if ($form->isValid($request->getPost())) {
- $values = $form->getValues();
-
- Application_Model_Preference::SetHeadTitle($values["stationName"], $this->view);
- Application_Model_Preference::SetPhone($values["Phone"]);
- Application_Model_Preference::SetEmail($values["Email"]);
- Application_Model_Preference::SetStationWebSite($values["StationWebSite"]);
- Application_Model_Preference::SetSupportFeedback($values["SupportFeedback"]);
- Application_Model_Preference::SetPublicise($values["Publicise"]);
-
- $form->Logo->receive();
- $imagePath = $form->Logo->getFileName();
-
- Application_Model_Preference::SetStationCountry($values["Country"]);
- Application_Model_Preference::SetStationCity($values["City"]);
- Application_Model_Preference::SetStationDescription($values["Description"]);
- Application_Model_Preference::SetStationLogo($imagePath);
-
+ $values = $request->getPost();
+ if ($form->isValid($values)) {
+ if ($values["Publicise"] != 1){
+ Application_Model_Preference::SetSupportFeedback($values["SupportFeedback"]);
+ if(isset($values["Privacy"])){
+ Application_Model_Preference::SetPrivacyPolicyCheck($values["Privacy"]);
+ }
+ }else{
+ Application_Model_Preference::SetHeadTitle($values["stationName"], $this->view);
+ Application_Model_Preference::SetPhone($values["Phone"]);
+ Application_Model_Preference::SetEmail($values["Email"]);
+ Application_Model_Preference::SetStationWebSite($values["StationWebSite"]);
+ Application_Model_Preference::SetSupportFeedback($values["SupportFeedback"]);
+ Application_Model_Preference::SetPublicise($values["Publicise"]);
+
+ $form->Logo->receive();
+ $imagePath = $form->Logo->getFileName();
+
+ Application_Model_Preference::SetStationCountry($values["Country"]);
+ Application_Model_Preference::SetStationCity($values["City"]);
+ Application_Model_Preference::SetStationDescription($values["Description"]);
+ Application_Model_Preference::SetStationLogo($imagePath);
+ }
$this->view->statusMsg = "
Support setting updated.
";
}
}
@@ -87,7 +92,13 @@ class PreferenceController extends Zend_Controller_Action
if($logo){
$this->view->logoImg = $logo;
}
+ $privacyChecked = false;
+ if(Application_Model_Preference::GetPrivacyPolicyCheck() == 1){
+ $privacyChecked = true;
+ }
+ $this->view->privacyChecked = $privacyChecked;
$this->view->form = $form;
+ //$form->render($this->view);
}
public function directoryConfigAction()
diff --git a/airtime_mvc/application/forms/RegisterAirtime.php b/airtime_mvc/application/forms/RegisterAirtime.php
index e31e67c3b..694224b9d 100644
--- a/airtime_mvc/application/forms/RegisterAirtime.php
+++ b/airtime_mvc/application/forms/RegisterAirtime.php
@@ -8,10 +8,15 @@ class Application_Form_RegisterAirtime extends Zend_Form
$this->setAction('/Nowplaying');
$this->setMethod('post');
- $country_list = Application_Model_Preference::GetCountryList();
-
+ $country_list = Application_Model_Preference::GetCountryList();
+
+ $privacyChecked = false;
+ if(Application_Model_Preference::GetPrivacyPolicyCheck() == 1){
+ $privacyChecked = true;
+ }
+
$this->setDecorators(array(
- array('ViewScript', array('viewScript' => 'form/register-dialog.phtml')),
+ array('ViewScript', array('viewScript' => 'form/register-dialog.phtml', 'privacyChecked'=>$privacyChecked)),
array('File', array('viewScript' => 'form/register-dialog.phtml', 'placement' => false)))
);
@@ -143,5 +148,22 @@ class Application_Form_RegisterAirtime extends Zend_Form
->setDecorators(array('ViewHelper'));
$this->addElement($checkboxPrivacy);
}
+
+ // overriding isValid function
+ public function isValid ($data)
+ {
+ $isValid = parent::isValid($data);
+ if($data['Publicise'] != 1){
+ $isValid = true;
+ }
+ if(isset($data["Privacy"])){
+ $checkPrivacy = $this->getElement('Privacy');
+ if($data["SupportFeedback"] == "1" && $data["Privacy"] != "1"){
+ $checkPrivacy->addError("You have to agree to privacy policy.");
+ $isValid = false;
+ }
+ }
+ return $isValid;
+ }
}
diff --git a/airtime_mvc/application/forms/SupportSettings.php b/airtime_mvc/application/forms/SupportSettings.php
index ef6b9f2fa..2e0d238a3 100644
--- a/airtime_mvc/application/forms/SupportSettings.php
+++ b/airtime_mvc/application/forms/SupportSettings.php
@@ -5,8 +5,8 @@ class Application_Form_SupportSettings extends Zend_Form
public function init()
{
- $country_list = Application_Model_Preference::GetCountryList();
-
+ $country_list = Application_Model_Preference::GetCountryList();
+
$this->setDecorators(array(
array('ViewScript', array('viewScript' => 'form/support-setting.phtml')),
array('File', array('viewScript' => 'form/support-setting.phtml', 'placement' => false)))
@@ -157,14 +157,19 @@ class Application_Form_SupportSettings extends Zend_Form
$this->addElement($submit);
}
- // overwriting isValid function
+ // overriding isValid function
public function isValid ($data)
{
$isValid = parent::isValid($data);
- $checkPrivacy = $this->getElement('Privacy');
- if($data["SupportFeedback"] == "1" && $data["Privacy"] != "1"){
- $checkPrivacy->addError("You have to agree to privacy policy.");
- $isValid = false;
+ if($data['Publicise'] != 1){
+ $isValid = true;
+ }
+ if(isset($data["Privacy"])){
+ $checkPrivacy = $this->getElement('Privacy');
+ if($data["SupportFeedback"] == "1" && $data["Privacy"] != "1"){
+ $checkPrivacy->addError("You have to agree to privacy policy.");
+ $isValid = false;
+ }
}
return $isValid;
}
diff --git a/airtime_mvc/application/models/Preference.php b/airtime_mvc/application/models/Preference.php
index 4be4882f5..a71e46d8f 100644
--- a/airtime_mvc/application/models/Preference.php
+++ b/airtime_mvc/application/models/Preference.php
@@ -386,5 +386,13 @@ class Application_Model_Preference
$sb = Application_Model_Preference::GetValue("stream_bitrate");
return explode(',', $sb);
}
+
+ public static function SetPrivacyPolicyCheck($flag){
+ Application_Model_Preference::SetValue("privacy_policy", $flag);
+ }
+
+ public static function GetPrivacyPolicyCheck(){
+ return Application_Model_Preference::GetValue("privacy_policy");
+ }
}
diff --git a/airtime_mvc/application/views/scripts/form/register-dialog.phtml b/airtime_mvc/application/views/scripts/form/register-dialog.phtml
index 58a0d55b6..f600b3352 100644
--- a/airtime_mvc/application/views/scripts/form/register-dialog.phtml
+++ b/airtime_mvc/application/views/scripts/form/register-dialog.phtml
@@ -166,10 +166,14 @@
-
- element->getElement('Privacy') ?>
- element->getElement('Privacy')->getLabel() ?>
-
+ privacyChecked){?>
+
+ element->getElement('Privacy') ?>
+ element->getElement('Privacy')->getLabel() ?>
+
+
+
Terms and Conditions
+
\ No newline at end of file
diff --git a/airtime_mvc/application/views/scripts/form/support-setting.phtml b/airtime_mvc/application/views/scripts/form/support-setting.phtml
index bb24b89ed..b670733e2 100644
--- a/airtime_mvc/application/views/scripts/form/support-setting.phtml
+++ b/airtime_mvc/application/views/scripts/form/support-setting.phtml
@@ -159,16 +159,20 @@
-
- element->getElement('Privacy') ?>
- element->getElement('Privacy')->getLabel() ?>
-
- element->getElement('Privacy')->hasErrors()) : ?>
-
- element->getElement('Privacy')->getMessages() as $error): ?>
-
-
-
-
+ element->getView()->privacyChecked){?>
+
+ element->getElement('Privacy') ?>
+ element->getElement('Privacy')->getLabel() ?>
+
+ element->getElement('Privacy')->hasErrors()) : ?>
+
+ element->getElement('Privacy')->getMessages() as $error): ?>
+
+
+
+
+
+
Terms and Conditions
+
\ No newline at end of file
diff --git a/airtime_mvc/public/js/airtime/nowplaying/register.js b/airtime_mvc/public/js/airtime/nowplaying/register.js
index 534378a7f..084e933d0 100644
--- a/airtime_mvc/public/js/airtime/nowplaying/register.js
+++ b/airtime_mvc/public/js/airtime/nowplaying/register.js
@@ -36,7 +36,12 @@ $(document).ready(function(){
});
var button = $("#help_airtime");
- button.attr('disabled', 'disabled').addClass('ui-state-disabled');
+
+ if($("#link_to_terms_and_condition").length > 0 ){
+ button.removeAttr('disabled').removeClass('ui-state-disabled');
+ }else{
+ button.attr('disabled', 'disabled' ).addClass('ui-state-disabled');
+ }
dialog.dialog('open');
@@ -57,7 +62,7 @@ $(document).ready(function(){
button.attr('disabled', 'disabled' ).addClass('ui-state-disabled');
}else{
pub.removeAttr("disabled");
- if(privacy.is(':checked')){
+ if(privacy.length == 0 || privacy.is(':checked')){
button.removeAttr('disabled').removeClass('ui-state-disabled');
}
}
@@ -85,7 +90,7 @@ $(document).ready(function(){
}
});
- if($("#SupportFeedback").is(':checked') && $("#Privacy").is(':checked')){
+ if($("#SupportFeedback").is(':checked') && ($("#Privacy").length == 0 || $("#Privacy").is(':checked'))){
button.removeAttr('disabled').removeClass('ui-state-disabled');
}else{
button.attr('disabled', 'disabled' ).addClass('ui-state-disabled');
diff --git a/airtime_mvc/public/js/airtime/preferences/support-setting.js b/airtime_mvc/public/js/airtime/preferences/support-setting.js
index d22ee962c..acd3fe671 100644
--- a/airtime_mvc/public/js/airtime/preferences/support-setting.js
+++ b/airtime_mvc/public/js/airtime/preferences/support-setting.js
@@ -52,7 +52,10 @@ $(document).ready(function() {
if(!$("#SupportFeedback").is(':checked')){
promote.removeAttr("checked");
promote.attr("disabled", true);
+ }else{
+ promote.removeAttr("disabled");
}
+
promote.live('click', function(){
if($(this).is(':checked')){
$("#public-info").show();
diff --git a/install_full/apache/airtime-vhost b/install_full/apache/airtime-vhost
index 6e160ae84..1f42bdf02 100644
--- a/install_full/apache/airtime-vhost
+++ b/install_full/apache/airtime-vhost
@@ -1,9 +1,9 @@
ServerAdmin foo@bar.org
- DocumentRoot /var/www/airtime/public
+ DocumentRoot /usr/share/airtime/public
php_admin_value upload_tmp_dir /tmp
-
+
DirectoryIndex index.php
AllowOverride all
Order allow,deny
diff --git a/install_minimal/include/AirtimeInstall.php b/install_minimal/include/AirtimeInstall.php
index 2904aa7c5..754e4c269 100644
--- a/install_minimal/include/AirtimeInstall.php
+++ b/install_minimal/include/AirtimeInstall.php
@@ -6,7 +6,7 @@ require_once('DB.php');
class AirtimeInstall
{
const CONF_DIR_BINARIES = "/usr/lib/airtime";
- const CONF_DIR_WWW = "/var/www/airtime";
+ const CONF_DIR_WWW = "/usr/share/airtime/";
const CONF_DIR_LOG = "/var/log/airtime";
public static $databaseTablesCreated = false;
diff --git a/install_minimal/include/airtime-db-install.php b/install_minimal/include/airtime-db-install.php
index 0e0f7baa4..c1675f1df 100644
--- a/install_minimal/include/airtime-db-install.php
+++ b/install_minimal/include/airtime-db-install.php
@@ -47,12 +47,12 @@ if (isset($argv[1]) && $argv[1] == 'y') {
echo "* Setting Airtime version".PHP_EOL;
AirtimeInstall::SetAirtimeVersion(AIRTIME_VERSION);
-// set up some keys in DB
-AirtimeInstall::SetUniqueId();
-AirtimeInstall::SetImportTimestamp();
if (AirtimeInstall::$databaseTablesCreated) {
AirtimeInstall::SetDefaultTimezone();
+ // set up some keys in DB
+ AirtimeInstall::SetUniqueId();
+ AirtimeInstall::SetImportTimestamp();
$ini = parse_ini_file(__DIR__."/airtime-install.ini");
diff --git a/install_minimal/include/airtime-upgrade.php b/install_minimal/include/airtime-upgrade.php
index 760d41419..84e647402 100644
--- a/install_minimal/include/airtime-upgrade.php
+++ b/install_minimal/include/airtime-upgrade.php
@@ -44,29 +44,6 @@ 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);
-
-if (PEAR::isError($version)) {
- $version = false;
-}
-
-if (!$version){
-
- $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;
- }
- else {
- $version = "1.6";
- echo "Airtime Version: ".$version." ".PHP_EOL;
- }
-}
-*/
-
$version = AirtimeInstall::GetVersionInstalled();
echo "******************************** Update Begin *********************************".PHP_EOL;
@@ -89,11 +66,13 @@ if (strcmp($version, "1.8.2") < 0){
if (strcmp($version, "1.9.0") < 0){
system("php ".__DIR__."/../upgrades/airtime-1.9.0/airtime-upgrade.php");
}
+if (strcmp($version, "1.9.2") < 0){
+ system("php ".__DIR__."/../upgrades/airtime-1.9.2/airtime-upgrade.php");
+}
if (strcmp($version, "2.0.0") < 0){
system("php ".__DIR__."/../upgrades/airtime-2.0.0/airtime-upgrade.php");
}
-
//set the new version in the database.
$sql = "DELETE FROM cc_pref WHERE keystr = 'system_version'";
$CC_DBC->query($sql);
diff --git a/install_minimal/upgrades/airtime-1.9.0/airtime-upgrade.php b/install_minimal/upgrades/airtime-1.9.0/airtime-upgrade.php
index db7e97bb9..47a7d8a5e 100644
--- a/install_minimal/upgrades/airtime-1.9.0/airtime-upgrade.php
+++ b/install_minimal/upgrades/airtime-1.9.0/airtime-upgrade.php
@@ -22,13 +22,6 @@ class AirtimeInstall{
const CONF_DIR_LOG = "/var/log/airtime";
const CONF_DIR_BINARIES = "/usr/lib/airtime";
- public static function CreateSymlinksToUtils()
- {
- echo "* Installing airtime-user".PHP_EOL;
- $dir = AirtimeInstall::CONF_DIR_BINARIES."/utils/airtime-user";
- exec("ln -s $dir /usr/bin/airtime-user");
- }
-
public static function CreateZendPhpLogFile(){
global $CC_CONFIG;
@@ -62,6 +55,10 @@ class AirtimeInstall{
echo "* Installing airtime-check-system".PHP_EOL;
$dir = CONF_DIR_BINARIES."/utils/airtime-check-system";
exec("ln -s $dir /usr/bin/airtime-check-system");
+
+ echo "* Installing airtime-user".PHP_EOL;
+ $dir = AirtimeInstall::CONF_DIR_BINARIES."/utils/airtime-user";
+ exec("ln -s $dir /usr/bin/airtime-user");
}
public static function RemoveSymlinks()
@@ -577,14 +574,15 @@ class Airtime190Upgrade{
}
- public static function removeOldAirtimeImport(){
+ // we don't need thses functions anymore as it's done in CreateSymlinksToUtils()
+ /*public static function removeOldAirtimeImport(){
exec('rm -f "/usr/bin/airtime-import"');
}
public static function updateAirtimeImportSymLink(){
$dir = "/usr/lib/airtime/utils/airtime-import/airtime-import";
exec("ln -s $dir /usr/bin/airtime-import");
- }
+ }*/
public static function execSqlQuery($sql){
global $CC_DBC;
@@ -801,8 +799,9 @@ Airtime190Upgrade::CopyUtils();
/* James made a new airtime-import script, lets remove the old airtime-import php script,
*install the new airtime-import.py script and update the /usr/bin/symlink.
*/
-Airtime190Upgrade::removeOldAirtimeImport();
-Airtime190Upgrade::updateAirtimeImportSymLink();
+// we don't need thses functions anymore as it's done in CreateSymlinksToUtils()
+/*Airtime190Upgrade::removeOldAirtimeImport();
+Airtime190Upgrade::updateAirtimeImportSymLink();*/
Airtime190Upgrade::connectToDatabase();
diff --git a/install_minimal/upgrades/airtime-1.9.2/airtime-monit.cfg.192 b/install_minimal/upgrades/airtime-1.9.2/airtime-monit.cfg.192
new file mode 100644
index 000000000..22f05e2ca
--- /dev/null
+++ b/install_minimal/upgrades/airtime-1.9.2/airtime-monit.cfg.192
@@ -0,0 +1,23 @@
+ set daemon 10 # Poll at 10 second intervals
+ set logfile syslog facility log_daemon
+
+ set httpd port 2812 and use address 127.0.0.1
+ allow localhost
+ allow admin:monit
+
+ check process airtime-playout
+ with pidfile "/var/run/airtime-playout.pid"
+ start program = "/etc/init.d/airtime-playout start" with timeout 10 seconds
+ stop program = "/etc/init.d/airtime-playout stop"
+ check process airtime-liquidsoap
+ with pidfile "/var/run/airtime-liquidsoap.pid"
+ start program = "/etc/init.d/airtime-playout start" with timeout 10 seconds
+ stop program = "/etc/init.d/airtime-playout stop"
+# check process airtime-media-monitor
+# with pidfile "/var/run/airtime-media-monitor.pid"
+# start program = "/etc/init.d/airtime-media-monitor start" with timeout 10 seconds
+# stop program = "/etc/init.d/airtime-media-monitor stop"
+ check process airtime-show-recorder
+ with pidfile "/var/run/airtime-show-recorder.pid"
+ start program = "/etc/init.d/airtime-show-recorder start" with timeout 10 seconds
+ stop program = "/etc/init.d/airtime-show-recorder stop"
diff --git a/install_minimal/upgrades/airtime-1.9.2/airtime-upgrade.php b/install_minimal/upgrades/airtime-1.9.2/airtime-upgrade.php
new file mode 100644
index 000000000..1e38b54b9
--- /dev/null
+++ b/install_minimal/upgrades/airtime-1.9.2/airtime-upgrade.php
@@ -0,0 +1,184 @@
+
\ No newline at end of file
diff --git a/install_minimal/upgrades/airtime-1.9.2/airtime.conf.192 b/install_minimal/upgrades/airtime-1.9.2/airtime.conf.192
new file mode 100644
index 000000000..b9729ac97
--- /dev/null
+++ b/install_minimal/upgrades/airtime-1.9.2/airtime.conf.192
@@ -0,0 +1,23 @@
+[database]
+host = localhost
+dbname = airtime
+dbuser = airtime
+dbpass = airtime
+
+[rabbitmq]
+host = 127.0.0.1
+port = 5672
+user = guest
+password = guest
+vhost = /
+
+[general]
+api_key = AAA
+web_server_user = www-data
+airtime_dir = /usr/share/airtime/
+base_url = localhost
+base_port = 80
+
+[soundcloud]
+connection_retries = 3
+time_between_retries = 60
diff --git a/install_minimal/upgrades/airtime-1.9.2/api_client.cfg.192 b/install_minimal/upgrades/airtime-1.9.2/api_client.cfg.192
new file mode 100644
index 000000000..7c94e34c2
--- /dev/null
+++ b/install_minimal/upgrades/airtime-1.9.2/api_client.cfg.192
@@ -0,0 +1,110 @@
+bin_dir = "/usr/lib/airtime/api_clients"
+
+#############################
+## Common
+#############################
+
+# Value needed to access the API
+api_key = 'AAA'
+
+# Path to the base of the API
+api_base = 'api'
+
+# URL to get the version number of the server API
+version_url = 'version/api_key/%%api_key%%'
+
+# Hostname
+base_url = 'localhost'
+base_port = 80
+
+#############################
+## Config for Media Monitor
+#############################
+
+# URL to setup the media monitor
+media_setup_url = 'media-monitor-setup/format/json/api_key/%%api_key%%'
+
+# Tell Airtime the file id associated with a show instance.
+upload_recorded = 'upload-recorded/format/json/api_key/%%api_key%%/fileid/%%fileid%%/showinstanceid/%%showinstanceid%%'
+
+# URL to tell Airtime to update file's meta data
+update_media_url = 'reload-metadata/format/json/api_key/%%api_key%%/mode/%%mode%%'
+
+# URL to tell Airtime we want a listing of all files it knows about
+list_all_db_files = 'list-all-files/format/json/api_key/%%api_key%%/dir_id/%%dir_id%%'
+
+# URL to tell Airtime we want a listing of all dirs its watching (including the stor dir)
+list_all_watched_dirs = 'list-all-watched-dirs/format/json/api_key/%%api_key%%'
+
+# URL to tell Airtime we want to add watched directory
+add_watched_dir = 'add-watched-dir/format/json/api_key/%%api_key%%/path/%%path%%'
+
+# URL to tell Airtime we want to add watched directory
+remove_watched_dir = 'remove-watched-dir/format/json/api_key/%%api_key%%/path/%%path%%'
+
+# URL to tell Airtime we want to add watched directory
+set_storage_dir = 'set-storage-dir/format/json/api_key/%%api_key%%/path/%%path%%'
+
+
+#############################
+## Config for Recorder
+#############################
+
+# URL to get the schedule of shows set to record
+show_schedule_url = 'recorded-shows/format/json/api_key/%%api_key%%'
+
+# URL to upload the recorded show's file to Airtime
+upload_file_url = 'upload-file/format/json/api_key/%%api_key%%'
+
+#number of retries to upload file if connection problem
+upload_retries = 3
+
+#time to wait between attempts to upload file if connection problem (in seconds)
+upload_wait = 60
+
+################################################################################
+# Uncomment *one of the sets* of values from the API clients below, and comment
+# out all the others.
+################################################################################
+
+#############################
+## Config for Pypo
+#############################
+
+# Schedule export path.
+# %%from%% - starting date/time in the form YYYY-MM-DD-hh-mm
+# %%to%% - starting date/time in the form YYYY-MM-DD-hh-mm
+export_url = 'schedule/api_key/%%api_key%%'
+
+get_media_url = 'get-media/file/%%file%%/api_key/%%api_key%%'
+
+# Update whether a schedule group has begun playing.
+update_item_url = 'notify-schedule-group-play/api_key/%%api_key%%/schedule_id/%%schedule_id%%'
+
+# Update whether an audio clip is currently playing.
+update_start_playing_url = 'notify-media-item-start-play/api_key/%%api_key%%/media_id/%%media_id%%/schedule_id/%%schedule_id%%'
+
+# ???
+generate_range_url = 'generate_range_dp.php'
+
+
+##############
+# OBP config #
+##############
+
+# URL to get the version number of the server API
+#version_url = 'api/pypo/status/json'
+
+# Schedule export path.
+# %%from%% - starting date/time in the form YYYY-MM-DD-hh-mm
+# %%to%% - starting date/time in the form YYYY-MM-DD-hh-mm
+
+# Update whether an item has been played.
+#update_item_url = 'api/pypo/update_shedueled_item/$$item_id%%?played=%%played%%'
+
+# Update whether an item is currently playing.
+#update_start_playing_url = 'api/pypo/mod/medialibrary/?playlist_type=%%playlist_type%%&export_source=%%export_source%%&media_id=%%media_id%%&playlist_id=%%playlist_id%%&transmission_id=%%transmission_id%%'
+
+# ???
+#generate_range_url = 'api/pypo/generate_range_dp/'
+
diff --git a/install_minimal/upgrades/airtime-1.9.2/liquidsoap.cfg.192 b/install_minimal/upgrades/airtime-1.9.2/liquidsoap.cfg.192
new file mode 100644
index 000000000..ef4b26b62
--- /dev/null
+++ b/install_minimal/upgrades/airtime-1.9.2/liquidsoap.cfg.192
@@ -0,0 +1,55 @@
+###########################################
+# Liquidsoap config file #
+###########################################
+
+###########################################
+# Output settings #
+###########################################
+output_sound_device = false
+output_icecast_vorbis = true
+output_icecast_mp3 = false
+output_shoutcast = false
+
+#output_bitrate = 128
+#output_samplerate = 44100
+#output_stereo = true
+
+###########################################
+# Logging settings #
+###########################################
+log_file = "/var/log/airtime/pypo-liquidsoap/