diff --git a/airtime_mvc/application/controllers/PlaylistController.php b/airtime_mvc/application/controllers/PlaylistController.php
index 43103edf9..678a17195 100644
--- a/airtime_mvc/application/controllers/PlaylistController.php
+++ b/airtime_mvc/application/controllers/PlaylistController.php
@@ -127,7 +127,7 @@ class PlaylistController extends Zend_Controller_Action
private function blockDynamic($obj)
{
- $this->view->error = "You cannot add tracks to dynamic block.";
+ $this->view->error = "You cannot add tracks to dynamic blocks.";
$this->createFullResponse($obj);
}
@@ -152,6 +152,11 @@ class PlaylistController extends Zend_Controller_Action
Logging::log("{$e->getLine()}");
Logging::log("{$e->getMessage()}");
}
+
+ private function playlistDenied($obj) {
+ $this->view->error = "You cannot add playlists to smart playlists.";
+ $this->createFullResponse($obj);
+ }
public function indexAction()
{
@@ -307,9 +312,15 @@ class PlaylistController extends Zend_Controller_Action
$obj->addAudioClips($ids, $afterItem, $addType);
} else if ($obj->isStatic()) {
// if the dest is a block object
+ //check if any items are playlists
+ foreach($ids as $id) {
+ if (is_array($id) && isset($id[1]) && $id[1] == 'playlist') {
+ throw new Exception('playlist to block');
+ }
+ }
$obj->addAudioClips($ids, $afterItem, $addType);
} else {
- throw new BlockDynamicException;
+ throw new Exception('track to dynamic');
}
$this->createUpdateResponse($obj);
}
@@ -319,11 +330,14 @@ class PlaylistController extends Zend_Controller_Action
catch (PlaylistNotFoundException $e) {
$this->playlistNotFound($obj_type);
}
- catch (BlockDynamicException $e) {
- $this->blockDynamic($obj);
- }
catch (Exception $e) {
- $this->playlistUnknownError($e);
+ if ($e->getMessage() == 'playlist to block') {
+ $this->playlistDenied($obj);
+ } else if ($e->getMessage() == 'track to dynamic') {
+ $this->blockDynamic($obj);
+ } else {
+ $this->playlistUnknownError($e);
+ }
}
}
diff --git a/airtime_mvc/application/forms/SmartBlockCriteria.php b/airtime_mvc/application/forms/SmartBlockCriteria.php
index 7b1aa64b2..0cb16205d 100644
--- a/airtime_mvc/application/forms/SmartBlockCriteria.php
+++ b/airtime_mvc/application/forms/SmartBlockCriteria.php
@@ -33,7 +33,7 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
"rating" => "Rating",
"sample_rate" => "Sample Rate",
"track_title" => "Title",
- "track_num" => "Track Number",
+ "track_number" => "Track Number",
"utime" => "Uploaded",
"year" => "Year"
);
@@ -64,7 +64,7 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
"rating" => "n",
"sample_rate" => "n",
"track_title" => "s",
- "track_num" => "n",
+ "track_number" => "n",
"year" => "n"
);
diff --git a/airtime_mvc/application/models/Block.php b/airtime_mvc/application/models/Block.php
index e0cfecef5..65fc55c80 100644
--- a/airtime_mvc/application/models/Block.php
+++ b/airtime_mvc/application/models/Block.php
@@ -76,11 +76,11 @@ class Application_Model_Block
"mood" => "DbMood",
"name" => "DbName",
"orchestra" => "DbOrchestra",
- "radio_station_name" => "DbRadioStation",
+ "radio_station_name" => "DbRadioStationName",
"rating" => "DbRating",
"sample_rate" => "DbSampleRate",
"track_title" => "DbTrackTitle",
- "track_num" => "DbTrackNum",
+ "track_number" => "DbTrackNumber",
"year" => "DbYear"
);
@@ -245,11 +245,35 @@ EOT;
// function return "N/A" if dynamic
public function getLength()
{
- $length = $this->block->getDbLength();
+ if ($this->isStatic()){
+ $length = $this->block->getDbLength();
+ } else {
+ $length = $this->getDynamicBlockLength();
+ }
$length = $length == null ? "N/A" : $length;
return $length;
}
+ public function getDynamicBlockLength()
+ {
+ $result = CcBlockcriteriaQuery::create()->filterByDbBlockId($this->id)
+ ->filterByDbCriteria('limit')->findOne();
+ $modifier = $result->getDbModifier();
+ $value = $result->getDbValue();
+ if ($modifier == "items") {
+ $length = $value." ".$modifier;
+ } else {
+ if ($modifier == "minutes") {
+ $timestamp = "00:".$value.":00";
+ } else if ($modifier == "hours") {
+ $timestamp = $value.":00:00.0";
+ }
+ $formatter = new LengthFormatter($timestamp);
+ $length = "~".$formatter->format();
+ }
+ return $length;
+ }
+
//
public function getStaticLength(){
$sql = "SELECT SUM(cliplength) as length FROM cc_blockcontents WHERE block_id={$this->id}";
@@ -364,9 +388,14 @@ EOT;
foreach ($p_items as $ac) {
Logging::log("Adding audio file {$ac}");
-
- $res = $this->insertBlockElement($this->buildEntry($ac, $pos));
- $pos = $pos + 1;
+
+ if (is_array($ac) && $ac[1] == 'audioclip') {
+ $res = $this->insertBlockElement($this->buildEntry($ac[0], $pos));
+ $pos = $pos + 1;
+ } elseif (!is_array($ac)) {
+ $res = $this->insertBlockElement($this->buildEntry($ac, $pos));
+ $pos = $pos + 1;
+ }
}
//reset the positions of the remaining items.
@@ -1033,7 +1062,7 @@ EOT;
// as it cannot be calculated
if ($blockType == 'dynamic') {
$this->setLength(null);
- $output['blockLength'] = "N/A";
+ $output['blockLength'] = $this->getDynamicBlockLength();
} else {
$length = $this->getStaticLength();
$this->setLength($length);
@@ -1169,7 +1198,7 @@ EOT;
"rating" => "Rating",
"sample_rate" => "Sample Rate",
"track_title" => "Title",
- "track_num" => "Track Number",
+ "track_number" => "Track Number",
"utime" => "Uploaded",
"year" => "Year"
);
diff --git a/airtime_mvc/application/models/Datatables.php b/airtime_mvc/application/models/Datatables.php
index 545b08cbb..f54631cb7 100644
--- a/airtime_mvc/application/models/Datatables.php
+++ b/airtime_mvc/application/models/Datatables.php
@@ -93,6 +93,9 @@ class Application_Model_Datatables
if ($r['ftype'] == 'playlist') {
$pl = new Application_Model_Playlist($r['id']);
$r['length'] = $pl->getLength();
+ } else if ($r['ftype'] == "block") {
+ $bl = new Application_Model_Block($r['id']);
+ $r['length'] = $bl->getLength();
}
}
} catch (Exception $e) {
diff --git a/airtime_mvc/application/models/Playlist.php b/airtime_mvc/application/models/Playlist.php
index faf3d838d..f560c4f37 100644
--- a/airtime_mvc/application/models/Playlist.php
+++ b/airtime_mvc/application/models/Playlist.php
@@ -196,7 +196,12 @@ EOT;
$offset_cliplength = Application_Common_DateHelper::secondsToPlaylistTime($offset);
//format the length for UI.
- $formatter = new LengthFormatter($row['length']);
+ if ($row['type'] == 2){
+ $bl = new Application_Model_Block($row['item_id']);
+ $formatter = new LengthFormatter($bl->getLength());
+ } else {
+ $formatter = new LengthFormatter($row['length']);
+ }
$row['length'] = $formatter->format();
$formatter = new LengthFormatter($offset_cliplength);
@@ -268,7 +273,6 @@ EOT;
//aggregate column on playlistcontents cliplength column.
public function getLength()
{
- Logging::log($this->hasDynamicBlockOrWebStream());
if ($this->hasDynamicBlockOrWebStream()){
return "N/A";
} else {
diff --git a/airtime_mvc/application/models/airtime/map/CcBlockcriteriaTableMap.php b/airtime_mvc/application/models/airtime/map/CcBlockcriteriaTableMap.php
index 6968366fc..6565bf259 100644
--- a/airtime_mvc/application/models/airtime/map/CcBlockcriteriaTableMap.php
+++ b/airtime_mvc/application/models/airtime/map/CcBlockcriteriaTableMap.php
@@ -39,7 +39,7 @@ class CcBlockcriteriaTableMap extends TableMap {
$this->setPrimaryKeyMethodInfo('cc_blockcriteria_id_seq');
// columns
$this->addPrimaryKey('ID', 'DbId', 'INTEGER', true, null, null);
- $this->addColumn('CRITERIA', 'DbCriteria', 'VARCHAR', true, 16, null);
+ $this->addColumn('CRITERIA', 'DbCriteria', 'VARCHAR', true, 32, null);
$this->addColumn('MODIFIER', 'DbModifier', 'VARCHAR', true, 16, null);
$this->addColumn('VALUE', 'DbValue', 'VARCHAR', true, 512, null);
$this->addColumn('EXTRA', 'DbExtra', 'VARCHAR', false, 512, null);
diff --git a/airtime_mvc/application/models/formatters/LengthFormatter.php b/airtime_mvc/application/models/formatters/LengthFormatter.php
index d41ffc563..5278b1a82 100644
--- a/airtime_mvc/application/models/formatters/LengthFormatter.php
+++ b/airtime_mvc/application/models/formatters/LengthFormatter.php
@@ -16,8 +16,8 @@ class LengthFormatter {
}
public function format() {
- if ($this->_length == "N/A" || $this->_length == "") {
- return "N/A";
+ if (!preg_match("/^[0-9]{2}:[0-9]{2}:[0-9]{2}/", $this->_length)) {
+ return $this->_length;
}
$pieces = explode(":", $this->_length);
diff --git a/airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml b/airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml
index 4f747c74b..3579b1d7c 100644
--- a/airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml
+++ b/airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml
@@ -1,24 +1,25 @@
type == "audioclip") : ?>
-
Title:md["MDATA_KEY_TITLE"]);?>
-Creator:md["MDATA_KEY_CREATOR"]);?>
-Album:md["MDATA_KEY_SOURCE"]);?>
-Track:md["MDATA_KEY_TRACKNUMBER"]);?>
-Length:md["MDATA_KEY_DURATION"]);?>
-Sample Rate:md["MDATA_KEY_SAMPLERATE"]);?>
-Bit Rate:md["MDATA_KEY_BITRATE"]);?>
-Mood:md["MDATA_KEY_MOOD"]);?>
-Genre:md["MDATA_KEY_GENRE"]);?>
-Year:md["MDATA_KEY_YEAR"]);?>
-Label:md["MDATA_KEY_LABEL"]);?>
-BPM:md["MDATA_KEY_BPM"]);?>
-Composer:md["MDATA_KEY_COMPOSER"]);?>
-Conductor:md["MDATA_KEY_CONDUCTOR"]);?>
-Copyright:md["MDATA_KEY_COPYRIGHT"]);?>
-Isrc Number:md["MDATA_KEY_ISRC"]);?>
-Website:md["MDATA_KEY_URL"]);?>
-Language:md["MDATA_KEY_LANGUAGE"]);?>
-File Path:md["MDATA_KEY_FILEPATH"]);?>
-
+
+Title: | md["MDATA_KEY_TITLE"]);?> |
+Creator: | md["MDATA_KEY_CREATOR"]);?> |
+Album: | md["MDATA_KEY_SOURCE"]);?> |
+Track: | md["MDATA_KEY_TRACKNUMBER"]);?> |
+Length: | md["MDATA_KEY_DURATION"]);?> |
+Sample Rate: | md["MDATA_KEY_SAMPLERATE"]);?> |
+Bit Rate: | md["MDATA_KEY_BITRATE"]);?> |
+Mood: | md["MDATA_KEY_MOOD"]);?> |
+Genre: | md["MDATA_KEY_GENRE"]);?> |
+Year: | md["MDATA_KEY_YEAR"]);?> |
+Label: | md["MDATA_KEY_LABEL"]);?> |
+BPM: | md["MDATA_KEY_BPM"]);?> |
+Composer: | md["MDATA_KEY_COMPOSER"]);?> |
+Conductor: | md["MDATA_KEY_CONDUCTOR"]);?> |
+Copyright: | md["MDATA_KEY_COPYRIGHT"]);?> |
+Isrc Number: | md["MDATA_KEY_ISRC"]);?> |
+Website: | md["MDATA_KEY_URL"]);?> |
+Language: | md["MDATA_KEY_LANGUAGE"]);?> |
+File Path: | md["MDATA_KEY_FILEPATH"]);?> |
+
type == "playlist" || $this->type == "block") : ?>
@@ -93,18 +94,22 @@
blType == "Dynamic") { ?>
Dynamic Playlist Criteria:
-
+
contents["crit"] as $criterias) : ?>
$maxStrLen) {
+ $valMaxStrLen = 25;
+ if (strlen($crit["value"]) > $valMaxStrLen) {
$crit["value"] = substr($crit["value"], 0, 24)."...";
}
+ $critMaxStrLen = 13;
+ if (strlen($crit["display_name"]) > $critMaxStrLen) {
+ $crit["display_name"] = substr($crit["display_name"], 0, 12)."...";
+ }
?>
- |
- |
+ |
+ |
to |
diff --git a/airtime_mvc/build/schema.xml b/airtime_mvc/build/schema.xml
index 5e2045d0f..95f8329ae 100644
--- a/airtime_mvc/build/schema.xml
+++ b/airtime_mvc/build/schema.xml
@@ -273,7 +273,7 @@
-
+
diff --git a/airtime_mvc/build/sql/schema.sql b/airtime_mvc/build/sql/schema.sql
index a346ecdae..493f805e0 100644
--- a/airtime_mvc/build/sql/schema.sql
+++ b/airtime_mvc/build/sql/schema.sql
@@ -363,7 +363,7 @@ DROP TABLE "cc_blockcriteria" CASCADE;
CREATE TABLE "cc_blockcriteria"
(
"id" serial NOT NULL,
- "criteria" VARCHAR(16) NOT NULL,
+ "criteria" VARCHAR(32) NOT NULL,
"modifier" VARCHAR(16) NOT NULL,
"value" VARCHAR(512) NOT NULL,
"extra" VARCHAR(512),
diff --git a/airtime_mvc/public/css/styles.css b/airtime_mvc/public/css/styles.css
index cbbc0ce28..55c8ad23c 100644
--- a/airtime_mvc/public/css/styles.css
+++ b/airtime_mvc/public/css/styles.css
@@ -418,11 +418,15 @@ input[type="text"]:focus, input[type="password"]:focus, textarea:focus, .input_t
}
/***** LIBRARY QTIP METADATA SPECIFIC STYLES BEGIN *****/
+table.library-track-md{
+ width: 280px;
+}
+
.ui-tooltip-dark.file-md-long{
max-width: 415px !important;
}
-.library-get-file-md tr td{
+.library-get-file-md tr td, .library-track-md tr td{
font-size:10px;
padding: 0px;
vertical-align:top;
@@ -434,12 +438,20 @@ table.library-get-file-md{
width:350px;
}
-.file-md-qtip-criteria-width-small{
- width:80px;
+table.library-get-file-md.table-small{
+ width: 290px !important;
+}
+
+.file-md-qtip-criteria-width-crit{
+ width:70px;
+}
+
+.file-md-qtip-criteria-width-mod{
+ width:60px;
}
.file-md-qtip-criteria-width{
- width:120px;
+ width:110px;
}
.file-md-qtip-row-width-title{
@@ -468,8 +480,6 @@ table.library-get-file-md{
.file-md-qtip-playlist.static td{
color: #f09839;
}
-
-
/***** LIBRARY QTIP METADATA SPECIFIC STYLES END *****/
diff --git a/airtime_mvc/public/js/airtime/library/events/library_playlistbuilder.js b/airtime_mvc/public/js/airtime/library/events/library_playlistbuilder.js
index c5845ce4c..dcb63f8af 100644
--- a/airtime_mvc/public/js/airtime/library/events/library_playlistbuilder.js
+++ b/airtime_mvc/public/js/airtime/library/events/library_playlistbuilder.js
@@ -128,11 +128,14 @@ var AIRTIME = (function(AIRTIME){
for (i = 0, length = aData.length; i < length; i++) {
temp = aData[i];
if (temp.ftype === "audioclip" || temp.ftype === "block") {
- aMediaIds.push(temp.id);
+ aMediaIds.push(new Array (temp.id, temp.ftype));
}
}
-
- AIRTIME.playlist.fnAddItems(aMediaIds, undefined, 'after');
+ if (aMediaIds.length > 0) {
+ AIRTIME.playlist.fnAddItems(aMediaIds, undefined, 'after');
+ } else {
+ alert('You cannot add playlists to smart playlists');
+ }
});
//delete from library.
diff --git a/airtime_mvc/public/js/airtime/library/library.js b/airtime_mvc/public/js/airtime/library/library.js
index 1b262c709..cfd1be807 100644
--- a/airtime_mvc/public/js/airtime/library/library.js
+++ b/airtime_mvc/public/js/airtime/library/library.js
@@ -639,7 +639,7 @@ var AIRTIME = (function(AIRTIME) {
//delete through the playlist controller, will reset
//playlist screen if this is the currently edited playlist.
- if (data.ftype === "playlist" && screen === "playlist") {
+ if ((data.ftype === "playlist" || data.ftype === "block") && screen === "playlist") {
callback = function() {
if (confirm('Are you sure you want to delete the selected item?')) {
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 000000000..1459c3a63
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,288 @@
+airtime (2.2.0-1) unstable; urgency=low
+
+ * Nightly development snapshot of Airtime 2.2.x
+
+ -- Daniel James Thu, 02 Aug 2012 11:19:03 +0100
+
+airtime (2.1.3-2) unstable; urgency=low
+
+ * Use a debconf question to set storage directory (CC-3576)
+
+ -- Daniel James Tue, 24 Jul 2012 14:55:13 +0100
+
+airtime (2.1.3-1) unstable; urgency=low
+
+ * Upstream 2.1.3 release
+ * Prompt user to answer No to set Icecast passwords manually (CC-4013)
+
+ -- Daniel James Thu, 05 Jul 2012 17:01:20 +0100
+
+airtime (2.1.2-1) unstable; urgency=low
+
+ * Upstream 2.1.2 release
+
+ -- Daniel James Mon, 18 Jun 2012 10:01:43 +0100
+
+airtime (2.1.1-1) unstable; urgency=low
+
+ * Upstream 2.1.1 release
+
+ -- Daniel James Thu, 14 Jun 2012 09:56:38 +0100
+
+airtime (2.1.0-1) unstable; urgency=low
+
+ * Upstream 2.1.0 release
+ * Test the symlink to the Liquidsoap binary
+
+ -- Daniel James Mon, 04 June 2012 18:25:11 +0100
+
+airtime (2.0.3-1) unstable; urgency=low
+
+ * Upstream 2.0.3 release
+ * Added Apache license to copyright file
+
+ -- Daniel James Wed, 04 Apr 2012 11:11:15 +0100
+
+airtime (2.0.2-1) unstable; urgency=low
+
+ * Upstream 2.0.2 release
+ * Strip install_full scripts from tarball
+
+ -- Daniel James Wed, 29 Feb 2012 10:34:35 +0000
+
+airtime (2.0.1-1) unstable; urgency=low
+
+ * Upstream 2.0.1 release
+ * Strip ZFDebug library from tarball
+ * Depend on distro's package of Zend
+
+ -- Daniel James Wed, 15 Feb 2012 12:57:23 +0000
+
+airtime (2.0.0-5) unstable; urgency=low
+
+ * Strip phing library from tarball
+
+ -- Daniel James Wed, 01 Feb 2012 15:50:18 +0000
+
+airtime (2.0.0-4) unstable; urgency=low
+
+ * Fix for overbooked shows longer than 24 hours
+
+ -- Daniel James Wed, 25 Jan 2012 10:11:33 +0000
+
+airtime (2.0.0-3) unstable; urgency=low
+
+ * Upstream 2.0.0 final release
+
+ -- Daniel James Fri, 20 Jan 2012 12:03:55 +0000
+
+airtime (2.0.0-2) unstable; urgency=low
+
+ * Upstream 2.0.0-RC1 release
+
+ -- Daniel James Mon, 16 Jan 2012 15:41:15 +0000
+
+airtime (2.0.0-1) unstable; urgency=low
+
+ * Upstream 2.0.0-beta2 release
+
+ -- Daniel James Thu, 05 Jan 2012 17:15:07 +0000
+
+airtime (1.9.5-3) unstable; urgency=low
+
+ * Upstream 1.9.5-RC5 release
+
+ -- Daniel James Mon, 14 Nov 2011 10:34:51 +0000
+
+airtime (1.9.5-2) unstable; urgency=low
+
+ * Upstream 1.9.5-RC2 release
+
+ -- Daniel James Wed, 09 Nov 2011 17:09:07 +0000
+
+airtime (1.9.5-1) unstable; urgency=low
+
+ * Upstream 1.9.5-RC1 release
+
+ -- Daniel James Mon, 07 Nov 2011 16:16:57 +0000
+
+airtime (1.9.4-13) unstable; urgency=low
+
+ * Increase PHP memory limit to more than post_max_size
+
+ -- Daniel James Mon, 03 Oct 2011 17:29:05 +0100
+
+airtime (1.9.4-12) unstable; urgency=low
+
+ * Use invoke-rc.d rather than wwwconfig-common
+
+ -- Daniel James Fri, 30 Sep 2011 16:52:28 +0100
+
+airtime (1.9.4-11) unstable; urgency=low
+
+ * Insist on python-virtualenv 1.4.9 or later
+
+ -- Daniel James Wed, 28 Sep 2011 14:45:19 +0100
+
+airtime (1.9.4-10) unstable; urgency=low
+
+ * Install python-virtualenv as a Pre-Depends
+
+ -- Daniel James Tue, 27 Sep 2011 11:04:29 +0100
+
+airtime (1.9.4-9) unstable; urgency=low
+
+ * Add dependency on ed, configure monit without asking
+
+ -- Daniel James Mon, 26 Sep 2011 10:55:09 +0100
+
+airtime (1.9.4-8) unstable; urgency=low
+
+ * Upstream 1.9.4-RC9 release
+
+ -- Daniel James Fri, 23 Sep 2011 14:37:15 +0100
+
+airtime (1.9.4-7) unstable; urgency=low
+
+ * Don't depend on Ruby packages
+
+ -- Daniel James Thu, 22 Sep 2011 15:51:42 +0100
+
+airtime (1.9.4-6) unstable; urgency=low
+
+ * Upstream 1.9.4-RC8 release
+
+ -- Daniel James Wed, 21 Sep 2011 16:22:57 +0100
+
+airtime (1.9.4-5) unstable; urgency=low
+
+ * Upstream 1.9.4-RC7 release
+
+ -- Daniel James Tue, 20 Sep 2011 20:12:24 +0100
+
+airtime (1.9.4-4) unstable; urgency=low
+
+ * Upstream 1.9.4-RC6 release
+
+ -- Daniel James Tue, 20 Sep 2011 11:48:38 +0100
+
+airtime (1.9.4-3) unstable; urgency=low
+
+ * Upstream 1.9.4-RC3 release
+
+ -- Daniel James Thu, 15 Sep 2011 10:28:22 +0100
+
+airtime (1.9.4-2) unstable; urgency=low
+
+ * Upstream 1.9.4-RC2 release
+
+ -- Daniel James Wed, 14 Sep 2011 15:18:20 +0100
+
+airtime (1.9.4-1) unstable; urgency=low
+
+ * Upstream 1.9.4-RC1 release
+
+ -- Daniel James Tue, 13 Sep 2011 14:50:02 +0100
+
+airtime (1.9.3-4) unstable; urgency=low
+
+ * Improvements to package error logging
+
+ -- Daniel James Mon, 05 Sep 2011 16:02:21 +0100
+
+airtime (1.9.3-3) unstable; urgency=low
+
+ * Updated dependency list
+
+ -- Daniel James Sat, 03 Sep 2011 11:29:26 +0100
+
+airtime (1.9.3-2) unstable; urgency=low
+
+ * Fixed reconfigure action so that airtime-install does not run again
+
+ -- Daniel James Tue, 30 Aug 2011 17:48:49 +0100
+
+airtime (1.9.3-1) unstable; urgency=low
+
+ * upstream 1.9.3
+
+ -- Daniel James Sat, 27 Aug 2011 12:58:46 +0100
+
+airtime (1.9.2-2) unstable; urgency=low
+
+ * upstream 1.9.2
+
+ -- Daniel James Wed, 24 Aug 2011 12:26:57 +0100
+
+airtime (1.9.2-1) unstable; urgency=low
+
+ * upstream 1.9.2-RC1
+
+ -- Daniel James Tue, 23 Aug 2011 15:49:31 +0100
+
+airtime (1.9.1-1) unstable; urgency=low
+
+ * upstream 1.9.1
+
+ -- Daniel James Mon, 22 Aug 2011 11:04:33 +0100
+
+airtime (1.9.0-1) unstable; urgency=low
+
+ * upstream 1.9.0
+
+ -- Daniel James Fri, 12 Aug 2011 14:11:21 +0100
+
+airtime (1.8.2-4) unstable; urgency=low
+
+ * upstream 1.8.2-RC4
+
+ -- Robin Gareus Tue, 07 Jun 2011 21:45:55 +0200
+
+airtime (1.8.2-3) unstable; urgency=low
+
+ * upstream 1.8.2-RC3
+
+ -- Robin Gareus Tue, 07 Jun 2011 02:56:12 +0200
+
+airtime (1.8.2-2) unstable; urgency=low
+
+ * fixed postinst
+
+ -- Robin Gareus Wed, 01 Jun 2011 20:48:29 +0200
+
+airtime (1.8.2-1) unstable; urgency=low
+
+ * upstream 1.8.2-RC2 release
+
+ -- Robin Gareus Wed, 01 Jun 2011 16:21:40 +0200
+
+airtime (1.8.1-1) unstable; urgency=low
+
+ * upstream 1.8.1 release
+
+ -- Robin Gareus Wed, 11 May 2011 22:50:03 +0200
+
+airtime (1.8.0-1) unstable; urgency=low
+
+ * upstream 1.8.0 release
+
+ -- Robin Gareus Tue, 19 Apr 2011 15:44:40 +0200
+
+airtime (1.7.0-2) unstable; urgency=low
+
+ * fixed few lintian warnings
+ * allow to de-install apache 000default
+
+ -- Robin Gareus Tue, 05 Apr 2011 20:45:52 +0200
+
+airtime (1.7.0-1) unstable; urgency=low
+
+ * upstream 1.7.0-GA release
+
+ -- Robin Gareus Mon, 04 Apr 2011 21:19:56 +0200
+
+airtime (1.6.1-1) unstable; urgency=low
+
+ * initial package
+
+ -- Robin Gareus Sat, 02 Apr 2011 22:48:35 +0200
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 000000000..7f8f011eb
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+7
diff --git a/debian/config b/debian/config
new file mode 100644
index 000000000..553a85fd1
--- /dev/null
+++ b/debian/config
@@ -0,0 +1,46 @@
+#!/bin/bash
+# Debconf config script for airtime
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_input high airtime/apache-setup || true
+db_go ||true
+
+db_get airtime/apache-setup
+if [ "$RET" = "dedicated v-host" ]; then
+ db_input high airtime/apache-servername || true
+ db_go ||true
+ db_input high airtime/apache-serveradmin || true
+ db_go ||true
+ db_input high airtime/apache-deldefault || true
+ db_go ||true
+fi
+
+db_input high airtime/icecast-setup || true
+db_go ||true
+
+db_get airtime/icecast-setup
+if [ "$RET" = "true" ]; then
+ db_input high airtime/icecast-hostname || true
+ db_go ||true
+ db_input high airtime/icecast-sourcepw || true
+ db_go ||true
+ db_input high airtime/icecast-relaypw || true
+ db_go ||true
+ db_input high airtime/icecast-adminpw || true
+ db_go ||true
+fi
+
+# Only ask for storage directory and admin password on clean installs
+if [ ! -e /var/log/airtime/pypo/pypo.log ]; then
+ db_input high airtime/storage-directory || true
+ db_go ||true
+ db_input high airtime/admin-password || true
+ db_go ||true
+fi
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/control b/debian/control
new file mode 100644
index 000000000..a0a14ce19
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,69 @@
+Source: airtime
+Section: web
+Priority: optional
+Maintainer: Daniel James
+Build-Depends: debhelper (>= 7.0.50~), po-debconf
+Standards-Version: 3.8.4
+Homepage: http://www.sourcefabric.org/en/products/airtime_overview/
+
+Package: airtime
+Architecture: all
+Pre-Depends: postgresql, python-virtualenv (>= 1.4.9)
+Depends: apache2,
+ curl,
+ ecasound,
+ gzip (>= 1.3.12),
+ libao-ocaml,
+ libapache2-mod-php5,
+ libcamomile-ocaml-data,
+ libesd0,
+ libmad-ocaml,
+ libmp3lame0,
+ libportaudio2,
+ libpulse0,
+ libsamplerate0,
+ libsoundtouch-ocaml,
+ libtaglib-ocaml,
+ liquidsoap (>= 1.0.0~),
+ lsof,
+ monit,
+ multitail,
+ odbc-postgresql,
+ patch,
+ php-db,
+ php5-cli,
+ php5-curl,
+ php5-gd,
+ php-pear,
+ php5-pgsql,
+ rabbitmq-server,
+ sudo,
+ sysv-rc,
+ tar (>= 1.22),
+ unzip,
+ vorbis-tools,
+ zendframework | libzend-framework-php,
+ ${misc:Depends},
+ ${python:Depends}
+Recommends: icecast2
+Suggests: airtime-audio-samples,
+ alsa-utils
+Description: The open radio software for scheduling and remote station management.
+ Airtime is an open source application that provides remote automation
+ of a radio station.
+ .
+ Major features:
+ .
+ Web-based remote station management. Authorized personnel can add
+ program material, create playlists, and schedule programming all via
+ a web interface.
+ .
+ Automation. Airtime has a scheduler function that enables users to
+ set shows with playlists for playback at a date and time of their choosing.
+ Playlists can be played back multiple times.
+ .
+ Solid, fast playback. Airtime uses the open source Liquidsoap
+ multimedia framework for clean, reliable, fast playback.
+ .
+ Open, extensible architecture. Stations are free to extend and alter
+ all parts of the program code.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 000000000..0f11be953
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,152 @@
+Format: http://anonscm.debian.org/viewvc/dep/web/deps/dep5.mdwn?revision=200
+Upstream-Name: airtime
+Upstream-Contact: Sourcefabric
+Source: http://sourceforge.net/projects/airtime/files/
+
+Files: *
+Copyright:
+ 2010-2012 Sourcefabric o.p.s
+ 2004-2009 Media Development Loan Fund
+License: GPL-3
+
+Files: airtime/python_apps/pypo/*
+Copyright:
+ Jonas Ohrstrom
+ Paul Baranowski
+ Martin Konecny
+License: GPL-3+
+
+Files: airtime_mvc/library/doctrine/migrations/*
+Copyright: No copyright holders
+License: LGPL-2.1
+Comment:
+ This software consists of voluntary contributions made by many individuals
+ and is licensed under the LGPL. For more information, see
+
+
+Files: airtime_mvc/library/soundcloud-api/*
+Copyright: 2010-2011 Anton Lindqvist
+License: Expat
+
+Files: airtime_mvc/library/php-amqplib/*
+Copyright:
+ Barry Pederson
+ Vadim Zaliva
+ taavi013@gmail.com
+ Sean Murphy
+ spiderbill
+License: LGPL-2.1
+
+Files: airtime_mvc/library/propel/*
+Copyright: 2005-2011 Hans Lellelid, David Zuelke, Francois Zaninotto, William Durand
+License: Expat
+
+Files: airtime_mvc/library/propel/test/etc/xsl/*
+Copyright: 2001-2004 The Apache Software Foundation
+License: Apache-2.0
+
+Files: debian/*
+Copyright:
+ 2012 Alessio Treglia
+ 2011 Robin Gareus
+License: GPL-2+
+
+License: Expat
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the “Software”),
+ to deal in the Software without restriction, including without limitation the
+ rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+ .
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+ .
+ THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+
+License: GPL-3
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 3 as
+ published by the Free Software Foundation.
+ .
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+Comment:
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+ .
+ On Debian systems, the complete text of the GNU General Public
+ License can be found in `/usr/share/common-licenses/GPL-3'.
+
+License: GPL-3+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+ .
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+Comment:
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+ .
+ On Debian systems, the complete text of the GNU General Public
+ License can be found in `/usr/share/common-licenses/GPL-3'.
+
+License: LGPL-2.1
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License version 2.1 as published by the Free Software Foundation.
+ .
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+Comment:
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+ .
+ On Debian systems, the complete text of the GNU General Public
+ License can be found in `/usr/share/common-licenses/LGPL-2.1'.
+
+License: GPL-2+
+ This package is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+ .
+ This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+Comment:
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+ .
+ On Debian systems, the complete text of the GNU General Public
+ License can be found in `/usr/share/common-licenses/GPL-2'.
+
+License: Apache-2.0
+ Copyright 2001-2004 The Apache Software Foundation
+ .
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+ .
+ http://www.apache.org/licenses/LICENSE-2.0
+ .
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/debian/docs b/debian/docs
new file mode 100644
index 000000000..ccedcc212
--- /dev/null
+++ b/debian/docs
@@ -0,0 +1,4 @@
+airtime/README
+airtime/CREDITS
+airtime/LICENSE_3RD_PARTY
+airtime/changelog
diff --git a/debian/etc/airtime.ini b/debian/etc/airtime.ini
new file mode 100644
index 000000000..e35f600b0
--- /dev/null
+++ b/debian/etc/airtime.ini
@@ -0,0 +1,5 @@
+[PHP]
+memory_limit = 512M
+magic_quotes_gpc = Off
+file_uploads = On
+upload_tmp_dir = /tmp
diff --git a/debian/etc/apache.conf b/debian/etc/apache.conf
new file mode 100644
index 000000000..d3d84e92c
--- /dev/null
+++ b/debian/etc/apache.conf
@@ -0,0 +1,11 @@
+Alias /airtime /usr/share/airtime/public
+
+SetEnv APPLICATION_ENV "development"
+
+
+ DirectoryIndex index.php
+ Options -Indexes FollowSymLinks MultiViews
+ AllowOverride All
+ Order allow,deny
+ Allow from all
+
diff --git a/debian/etc/apache.vhost.tpl b/debian/etc/apache.vhost.tpl
new file mode 100644
index 000000000..3d7334107
--- /dev/null
+++ b/debian/etc/apache.vhost.tpl
@@ -0,0 +1,18 @@
+
+ ServerName __SERVER_NAME__
+ #ServerAlias www.example.com
+
+ ServerAdmin __SERVER_ADMIN__
+
+ DocumentRoot /usr/share/airtime/public
+ DirectoryIndex index.php
+
+ SetEnv APPLICATION_ENV "production"
+
+
+ Options -Indexes FollowSymLinks MultiViews
+ AllowOverride All
+ Order allow,deny
+ Allow from all
+
+
diff --git a/debian/gbp.conf b/debian/gbp.conf
new file mode 100644
index 000000000..5474c6080
--- /dev/null
+++ b/debian/gbp.conf
@@ -0,0 +1,3 @@
+[DEFAULT]
+pristine-tar = True
+sign-tags = True
diff --git a/debian/install b/debian/install
new file mode 100644
index 000000000..763300c99
--- /dev/null
+++ b/debian/install
@@ -0,0 +1,17 @@
+airtime/airtime_mvc var/lib/airtime/tmp/
+airtime/install_minimal var/lib/airtime/tmp/
+airtime/python_apps var/lib/airtime/tmp/
+airtime/utils var/lib/airtime/tmp/
+
+airtime/widgets usr/share/doc/airtime/examples/
+
+debian/etc/apache.conf /etc/airtime/
+debian/etc/airtime.ini /etc/airtime/
+debian/etc/apache.vhost.tpl /etc/airtime/
+
+debian/usr/bin/airtime-launch-browser /usr/bin/
+debian/usr/share/applications/airtime.desktop /usr/share/applications/
+debian/usr/share/man/man1 /usr/share/man/
+debian/usr/share/menu/airtime /usr/share/menu
+debian/usr/share/pixmaps/airtime.xpm /usr/share/pixmaps/
+
diff --git a/debian/po/POTFILES.in b/debian/po/POTFILES.in
new file mode 100644
index 000000000..cef83a340
--- /dev/null
+++ b/debian/po/POTFILES.in
@@ -0,0 +1 @@
+[type: gettext/rfc822deb] templates
diff --git a/debian/po/templates.pot b/debian/po/templates.pot
new file mode 100644
index 000000000..6458b85ac
--- /dev/null
+++ b/debian/po/templates.pot
@@ -0,0 +1,249 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR , YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: airtime@packages.debian.org\n"
+"POT-Creation-Date: 2012-07-05 16:49+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Choices
+#: ../templates:1001
+msgid "dedicated v-host"
+msgstr ""
+
+#. Type: select
+#. Choices
+#: ../templates:1001
+msgid "no thanks"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid "Create apache2 config:"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid ""
+"This setup script can perform Apache web server configuration so that you "
+"can connect to Airtime directly after this installation."
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid ""
+"Production systems should choose \"dedicated v-host\". This option will ask "
+"for a server hostname (FQDN) and will create a minimal Apache virtual host "
+"configuration that you can adapt."
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid ""
+"\"no, thanks\": no problem. You're welcome to set it up however you like. "
+"Note that the files in /etc/airtime/ may come in handy doing so."
+msgstr ""
+
+#. Type: select
+#. Choices
+#: ../templates:2001
+msgid "remove default"
+msgstr ""
+
+#. Type: select
+#. Choices
+#: ../templates:2001
+msgid "no change"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:2002
+msgid "Remove 000-default apache config:"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:2002
+msgid ""
+"By default the Apache webserver is configured to send all virtual hosts to "
+"the /var/www/ directory."
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:2002
+msgid ""
+"This option will invoke `sudo a2dissite default` and is recommended when "
+"using a virtual host for Airtime."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:3001
+msgid "FQDN - Apache virtual host ServerName:"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:3001
+msgid ""
+"Enter the main hostname of the web server. The DNS of this name must resolve "
+"to the Apache server running on this machine."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:3001
+msgid "e.g. \"example.com\" or \"www.example.com\" (without the quotes)"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:3001
+msgid ""
+"You can customize /etc/apache2/sites-enabled/airtime.vhost afterward and add "
+"ServerAliases and further custom configuration."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:4001
+msgid "Email of the ServerAdmin:"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:4001
+msgid "An email address is required for the virtual host configuration."
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:5001
+msgid "Enable Icecast2 and set passwords automatically?"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:5001
+msgid ""
+"This option enables a local Icecast streaming media server to start on boot, "
+"and configures passwords for both the Icecast server and Airtime."
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:5001
+msgid ""
+"Note: these settings are here for convenience only. Strictly speaking they "
+"should be done during Icecast installation - not Airtime installation."
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:5001
+msgid ""
+"If you wish to set Icecast server passwords manually, you should answer No "
+"here."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:6001
+msgid "Icecast2 hostname:"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:6001
+msgid ""
+"Specify the hostname of the Icecast server. Depending on your setup, this "
+"might be the same as the Airtime ServerName. For testing purposes, you can "
+"use the default of 'localhost'."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid "Icecast2 Source Password:"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid "Specify a password to send A/V sources to Icecast"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:8001
+msgid "Icecast2 Relay Password:"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:8001
+msgid ""
+"Specify a password for stream relay access. This is not needed by Airtime, "
+"however you should change it from the default to lock down your system."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:9001
+msgid "Icecast2 Admin Password:"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:9001
+msgid ""
+"Specify the admin password for Icecast. You can access icecast2's admin "
+"interface via http://localhost:8000/ - and both monitor connection as well "
+"as block users."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:10001
+msgid "Airtime Admin Password:"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:10001
+msgid ""
+"Specify a secure admin password for Airtime. You can access the Airtime "
+"administration interface at http://localhost/ to set up other user accounts, "
+"upload media, create playlists and schedule shows."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:11001
+msgid "Airtime Storage Directory:"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:11001
+msgid ""
+"Specify the main storage path which Airtime will use, ending with a slash. "
+"You can also specify watched folders in the Airtime administration interface."
+msgstr ""
diff --git a/debian/postinst b/debian/postinst
new file mode 100755
index 000000000..637d9bf52
--- /dev/null
+++ b/debian/postinst
@@ -0,0 +1,248 @@
+#!/bin/bash
+#postinst script for airtime
+
+set -x
+
+. /usr/share/debconf/confmodule
+
+wwwdir="/usr/share/airtime"
+tmpdir="/var/lib/airtime/tmp"
+configdir="/etc/airtime"
+includefile="${configdir}/apache.conf"
+a2tplfile="${configdir}/apache.vhost.tpl"
+phpinifile="${configdir}/airtime.ini"
+OLDVERSION="$2"
+NEWVERSION="2.1.4"
+
+case "$1" in
+ configure|reconfigure)
+
+ webserver="apache2"
+ php="php5"
+
+ # clean up previous configurations
+ if [ -L /etc/$webserver/conf.d/airtime.conf ]; then
+ rm -f /etc/$webserver/conf.d/airtime.conf
+ fi
+
+ if [ -f /etc/$webserver/sites-available/airtime-vhost ]; then
+ a2dissite airtime-vhost
+ fi
+
+ # this file in 1.8.2 is a directory path in 1.9.3
+ if [ -f /var/www/airtime/utils/airtime-import ]; then
+ rm -f /var/www/airtime/utils/airtime-import
+ fi
+
+ # APACHE config
+ echo "Setting up apache2..."
+
+ # create the document root if it doesn't exist
+ if [ ! -d $wwwdir/public/ ]; then
+ install -d -m755 $wwwdir/public/
+ fi
+
+ # set up the virtual host
+ db_get airtime/apache-setup
+ if [ "$RET" == "system-wide (all vhosts)" ]; then
+ if [ ! -d /etc/$webserver/conf.d/ ]; then
+ install -d -m755 /etc/$webserver/conf.d/
+ fi
+ if [ ! -e /etc/$webserver/conf.d/airtime.conf ]; then
+ ln -s ${includefile} /etc/$webserver/conf.d/airtime.conf
+ fi
+
+ elif [ "$RET" == "dedicated v-host" ]; then
+ db_get airtime/apache-servername
+ SN=$RET
+ db_get airtime/apache-serveradmin
+ SA=$RET
+
+ if [ ! -d /etc/$webserver/sites-available/ ]; then
+ install -d -m755 /etc/$webserver/sites-available/
+ fi
+ sed -e "s/__SERVER_ADMIN__/${SA}/;s/__SERVER_NAME__/${SN}/" \
+ ${a2tplfile} > /etc/$webserver/sites-available/airtime-vhost
+
+ command -v a2ensite > /dev/null
+ RETVAL=$?
+ if [ $RETVAL -eq 0 ]; then
+ a2ensite airtime-vhost
+ fi
+ fi
+
+ # enable the rewrite module
+ command -v a2enmod > /dev/null
+ RETVAL=$?
+ if [ $RETVAL -eq 0 ]; then
+ a2enmod rewrite
+ fi
+
+ # remove the default site, if requested to
+ db_get airtime/apache-deldefault
+ if [ "$RET" == "remove default" ]; then
+ if [ -f /etc/apache2/sites-available/default ]; then
+ a2dissite default
+ fi
+ fi
+
+ # PHP config
+ echo "Configuring php5..."
+ if [ ! -d /etc/$php/conf.d/ ]; then
+ install -d -m755 /etc/$php/conf.d/
+ fi
+ if [ ! -e /etc/$php/conf.d/airtime.ini ]; then
+ ln -s ${phpinifile} /etc/$php/conf.d/airtime.ini
+ fi
+
+ # XXX ICECAST XXX
+ db_get airtime/icecast-setup
+ if [ "$RET" == "true" ]; then
+ if [ -f /etc/default/icecast2 -a -f /etc/icecast2/icecast.xml ]; then
+ echo "Setting up icecast2..."
+ sed -i "s:ENABLE=.*:ENABLE=true:g" /etc/default/icecast2
+ db_get airtime/icecast-sourcepw
+ ICESOURCE=$RET
+ sed -i "s:.*<\/source-password>:$ICESOURCE<\/source-password>:g" /etc/icecast2/icecast.xml
+ db_get airtime/icecast-relaypw
+ ICERELAY=$RET
+ sed -i "s:.*<\/relay-password>:$ICERELAY<\/relay-password>:g" /etc/icecast2/icecast.xml
+ db_get airtime/icecast-adminpw
+ ICEADMIN=$RET
+ sed -i "s:.*<\/admin-password>:$ICEADMIN<\/admin-password>:g" /etc/icecast2/icecast.xml
+ db_get airtime/icecast-hostname
+ ICEHOST=$RET
+ sed -i "s:.*<\/hostname>:$ICEHOST<\/hostname>:g" /etc/icecast2/icecast.xml
+
+ # restart icecast server
+ invoke-rc.d icecast2 restart || true
+
+ # save icecast hostname and source-password in airtime
+ db_get airtime/icecast-hostname
+ ICEHOST=$RET
+ sed -i "s:'s1_host', '127.0.0.1', 'string':'s1_host', '$ICEHOST', 'string':g" ${tmpdir}/airtime_mvc/build/sql/defaultdata.sql
+
+ db_get airtime/icecast-sourcepw
+ ICESOURCE=$RET
+ sed -i "s:'s1_pass', 'hackme', 'string':'s1_pass', '$ICESOURCE', 'string':g" ${tmpdir}/airtime_mvc/build/sql/defaultdata.sql
+
+ else
+ echo "The icecast2 package does not appear to be installed on this server."
+ fi
+ fi
+
+ # Monit setup
+ if [ -f /etc/default/monit ]; then
+ echo "Setting up monit configuration..."
+ sed -i 's:startup=.*:startup=1:g' /etc/default/monit
+
+ MONITCONFIGURED=$(grep "include /etc/monit/conf.d" /etc/monit/monitrc || true)
+ if [ -z "$MONITCONFIGURED" ]; then
+ echo "include /etc/monit/conf.d/*" >> /etc/monit/monitrc
+ fi
+
+ invoke-rc.d monit restart
+ else
+ echo "The monit package does not appear to be installed on this server."
+ fi
+
+ # get airtime admin password on new installs
+ if [ ! -e /var/log/airtime/pypo/pypo.log ]; then
+ db_get airtime/admin-password
+ AIRTIMEADMIN=$RET
+ sed -i "1s:md5('admin'):md5('$AIRTIMEADMIN'):g" ${tmpdir}/airtime_mvc/build/sql/defaultdata.sql
+ fi
+
+ # get the main storage directory specified by the user
+ db_get airtime/storage-directory
+ AIRTIMESTORAGE=$RET
+ if [ "$AIRTIMESTORAGE" != "/srv/airtime/stor/" ]; then
+ sed -i "1s:/srv/airtime/stor/:$AIRTIMESTORAGE:g" ${tmpdir}/install_minimal/include/airtime-install.ini
+ fi
+
+ # stop debconf so daemons started by the install script cannot hold open the pipe
+ db_stop
+
+ # start rabbitmq if it isn't running
+ if [ -f /etc/init.d/rabbitmq-server ]; then
+ RABBITMQSTOPPED=$(invoke-rc.d rabbitmq-server status | grep no_nodes_running || true)
+ if [ -n "$RABBITMQSTOPPED" ]; then
+ invoke-rc.d rabbitmq-server start
+ fi
+
+ # Warn if rabbitmq is installed but not set to start on boot
+ RABBITMQSTARTONBOOT=$(ls /etc/rc2.d/ | grep rabbitmq || true)
+ if [ -z "$RABBITMQSTARTONBOOT" ]; then
+ echo "Warning: rabbitmq-server is not configured to start after a reboot!"
+ echo "Fix Default-Start and Default-Stop lines in /etc/init.d/rabbitmq-server"
+ echo "then run this command as root: update-rc.d rabbitmq-server defaults"
+ fi
+ else
+ echo "The rabbitmq-server package does not appear to be installed on this server."
+ fi
+
+ # restart apache
+ invoke-rc.d apache2 restart
+
+ # fix the Liquidsoap symlink if it doesn't point to standard location
+ if [ -h /usr/bin/airtime-liquidsoap ]; then
+ SYMLINK_TARGET=`readlink /usr/bin/airtime-liquidsoap`
+ if [ "$SYMLINK_TARGET" != "/usr/bin/liquidsoap" ]; then
+ echo "Liquidsoap symlink points to the wrong place, fixing it!"
+ rm /usr/bin/airtime-liquidsoap
+ ln -s /usr/bin/liquidsoap /usr/bin/airtime-liquidsoap
+ fi
+
+ if [ "$SYMLINK_TARGET" == "/usr/bin/liquidsoap" ]; then
+ echo "Liquidsoap symlink points to the right place!"
+ fi
+ fi
+
+ # symlink the Liquidsoap path to standard location, if symlink doesn't exist
+ if [ ! -h /usr/bin/airtime-liquidsoap ]; then
+ echo "Creating symlink for Liquidsoap..."
+ ln -s /usr/bin/liquidsoap /usr/bin/airtime-liquidsoap
+ fi
+
+ # don't run airtime-install if the user is doing a dpkg-reconfigure
+ if [ "$1" = "reconfigure" ] || [ -n "$DEBCONF_RECONFIGURE" ] ; then
+ echo "Reconfiguration complete."
+ else
+
+ if [ -n "$OLDVERSION" ] && [[ "${OLDVERSION:0:3}" < "1.9" ]]; then
+ echo "Upgrades from Airtime versions before 1.9.0 are not supported. Please back up your files and perform a clean install."
+ else
+
+ mkdir -p /var/log/airtime
+ cd $tmpdir/install_minimal/
+
+ if [ "${OLDVERSION:0:5}" == "${NEWVERSION}" ] ; then
+ echo "Reinstallation detected..."
+ echo | ./airtime-install -rp 2> /var/log/airtime/reinstallation-errors.log
+ else
+
+ ./airtime-install 2> /var/log/airtime/installation-errors.log
+
+ fi
+
+ # Update the desktop menu to show Airtime
+ if test -x /usr/bin/update-menus; then
+ update-menus;
+ fi
+ fi
+ fi
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/postrm b/debian/postrm
new file mode 100755
index 000000000..c455121ed
--- /dev/null
+++ b/debian/postrm
@@ -0,0 +1,128 @@
+#!/bin/bash
+#postrm script for airtime
+
+set -e
+
+if [ -f /usr/share/debconf/confmodule ]; then
+ . /usr/share/debconf/confmodule
+fi
+
+if [ "$DPKG_DEBUG" = "developer" ]; then
+ set -x
+fi
+
+package_name="airtime"
+datadir="/srv/airtime"
+wwwdir="/usr/share/airtime"
+tmpdir="/var/lib/airtime/tmp"
+configdir="/etc/airtime"
+
+webserver="apache2"
+php="php5"
+
+case "$1" in
+ purge|remove)
+
+ # airtime uninstaller does not remove these
+
+ if [ -L /var/lib/airtime/airtime_mvc ]; then
+ rm -rf /var/lib/airtime/ || true
+ fi
+
+ if [ -f /var/lib/airtime/.htaccess ]; then
+ rm -f /var/lib/airtime/.htaccess || true
+ fi
+
+ if [ -f ${tmpdir}/install_minimal/distribute-0.6.10.tar.gz ]; then
+ rm -f ${tmpdir}/install_minimal/distribute-0.6.10.tar.gz || true
+ fi
+
+ if [ -f /usr/share/python-virtualenv/distribute-0.6.10.tar.gz ]; then
+ rm -f /usr/share/python-virtualenv/distribute-0.6.10.tar.gz || true
+ fi
+
+ if [ -d ${tmpdir}/python_apps/pypo/liquidsoap_bin ]; then
+ rm -f ${tmpdir}/python_apps/pypo/liquidsoap_bin/* || true
+ rm -rf ${tmpdir}/python_apps/pypo/liquidsoap_bin || true
+ fi
+
+ if [ -d /var/lib/airtime/python_apps/pypo/liquidsoap ]; then
+ rm -rf /var/lib/airtime/python_apps/pypo/liquidsoap || true
+ fi
+
+ if [ -d ${tmpdir}/install_minimal/upgrades/airtime-1.9.0/airtimefilemonitor ]; then
+ rm -rf ${tmpdir}/install_minimal/upgrades/airtime-1.9.0/airtimefilemonitor || true
+ fi
+
+ if [ -f ${tmpdir}/install_minimal/upgrades/airtime-1.9.0/storDump.txt ]; then
+ rm -f ${tmpdir}/install_minimal/upgrades/airtime-1.9.0/storDump.txt || true
+ fi
+
+ if [ -L /usr/bin/airtime-clean-storage ]; then
+ rm -f /usr/bin/airtime-clean-storage || true
+ fi
+
+ if [ -L /usr/bin/airtime-user ]; then
+ rm -f /usr/bin/airtime-user || true
+ fi
+
+ if [ -L /usr/bin/airtime-log ]; then
+ rm -f /usr/bin/airtime-log || true
+ fi
+
+ # Un-configure webservers
+ if [ -L /etc/$webserver/conf.d/airtime.conf ]; then
+ rm -f /etc/$webserver/conf.d/airtime.conf || true
+ restart="$webserver $restart"
+ fi
+
+ if [ -L /etc/$php/conf.d/airtime.ini ]; then
+ rm -f /etc/$php/conf.d/airtime.ini || true
+ restart="$webserver $restart"
+ fi
+
+ if [ -f /etc/$webserver/sites-available/airtime-vhost ]; then
+ a2dissite airtime-vhost &>/dev/null || true
+ # TODO: if airtime-vhost is not modified -> delete it
+ restart="$webserver $restart"
+ fi
+
+ servers="apache2"
+ # may not exist if package was manually installed
+ if [ -r /usr/share/wwwconfig-common/restart.sh ]; then
+ . /usr/share/wwwconfig-common/restart.sh || true
+ echo $error
+ fi
+
+ # Remove Airtime menu entry and icon
+ if test -x /usr/bin/update-menus; then
+ update-menus;
+ fi
+
+ # Remove legacy permission overrides
+ dpkg-statoverride --list $datadir &>/dev/null && \
+ dpkg-statoverride --remove $datadir || true
+
+ # Only remove settings if purge is called as an argument
+ if [ "$1" = "purge" ]; then
+ echo "Removing configuration files from /etc/airtime/" >&2
+ rm -rf /etc/airtime || true
+ echo "Purging Airtime settings from debconf database" >&2
+ db_purge || true
+ fi
+
+ ;;
+
+ upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+
+ ;;
+
+ *)
+ echo "postrm called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/preinst b/debian/preinst
new file mode 100755
index 000000000..02b762856
--- /dev/null
+++ b/debian/preinst
@@ -0,0 +1,33 @@
+#!/bin/bash
+#preinst script for airtime
+
+set -e
+
+if [ "$DPKG_DEBUG" = "developer" ]; then
+ set -x
+fi
+
+case "$1" in
+ install|upgrade)
+
+ # Remove liquidsoap binary from old installs
+ if [ -f /var/lib/airtime/python_apps/pypo/liquidsoap/liquidsoap ]; then
+ echo "Removing old Liquidsoap binary..." >&2
+ rm -f /var/lib/airtime/python_apps/pypo/liquidsoap/liquidsoap
+ fi
+
+ ;;
+
+ abort-upgrade)
+ echo "Upgrade aborting..." >&2
+ ;;
+
+ *)
+ echo "preinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/prerm b/debian/prerm
new file mode 100755
index 000000000..b8796400d
--- /dev/null
+++ b/debian/prerm
@@ -0,0 +1,29 @@
+#!/bin/bash
+#prerm script for airtime
+
+set -e
+
+package_name="airtime"
+datadir="/var/lib/${package_name}/tmp"
+
+case "$1" in
+ remove)
+ cd $datadir/install_minimal/ && ./airtime-uninstall || true
+ ;;
+
+ purge)
+ cd $datadir/install_minimal/ && ./airtime-uninstall --purge || true
+ ;;
+
+ upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+ ;;
+
+ *)
+ echo "prerm called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 000000000..d91c2d9f2
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+
+#override_dh_shlibdeps:
+# dh_makeshlibs
+# -dh_shlibdeps -- --ignore-missing-info
+
+%:
+ dh $@
+
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 000000000..163aaf8d8
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/debian/source/include-binaries b/debian/source/include-binaries
new file mode 100644
index 000000000..cc43edcc4
--- /dev/null
+++ b/debian/source/include-binaries
@@ -0,0 +1,5 @@
+debian/usr/share/man/man1/airtime-import.1.gz
+debian/usr/share/man/man1/airtime-launch-browser.1.gz
+debian/usr/share/man/man1/airtime-log.1.gz
+debian/usr/share/man/man1/airtime-test-soundcard.1.gz
+debian/usr/share/man/man1/airtime-test-stream.1.gz
diff --git a/debian/templates b/debian/templates
new file mode 100644
index 000000000..4cd301493
--- /dev/null
+++ b/debian/templates
@@ -0,0 +1,109 @@
+Template: airtime/apache-setup
+Type: select
+__Choices: dedicated v-host, no thanks
+Choices-de.UTF-8: v-host einrichten, nein danke
+Default: dedicated v-host
+_Description: Create apache2 config:
+ This setup script can perform Apache web server configuration
+ so that you can connect to Airtime directly after this installation.
+ .
+ Production systems should choose "dedicated v-host". This option
+ will ask for a server hostname (FQDN) and will create a minimal Apache
+ virtual host configuration that you can adapt.
+ .
+ "no, thanks": no problem. You're welcome to set it up however you like.
+ Note that the files in /etc/airtime/ may come in handy doing so.
+Description-de.UTF-8: Erzeugen einer apache2 konfiuration:
+ .
+
+Template: airtime/apache-deldefault
+Type: select
+__Choices: remove default, no change
+Default: no change
+_Description: Remove 000-default apache config:
+ By default the Apache webserver is configured to send all virtual hosts
+ to the /var/www/ directory.
+ .
+ This option will invoke `sudo a2dissite default` and is recommended
+ when using a virtual host for Airtime.
+
+Template: airtime/apache-servername
+Type: string
+Default: localhost
+_Description: FQDN - Apache virtual host ServerName:
+ Enter the main hostname of the web server.
+ The DNS of this name must resolve to the Apache server running on this
+ machine.
+ .
+ e.g. "example.com" or "www.example.com" (without the quotes)
+ .
+ You can customize /etc/apache2/sites-enabled/airtime.vhost afterward
+ and add ServerAliases and further custom configuration.
+
+Template: airtime/apache-serveradmin
+Type: string
+Default: root@localhost
+_Description: Email of the ServerAdmin:
+ An email address is required for the virtual host configuration.
+
+Template: airtime/icecast-setup
+Type: boolean
+Default: false
+_Description: Enable Icecast2 and set passwords automatically?
+ This option enables a local Icecast streaming media server to start
+ on boot, and configures passwords for both the Icecast server and Airtime.
+ .
+ Note: these settings are here for convenience only. Strictly speaking
+ they should be done during Icecast installation - not Airtime installation.
+ .
+ If you wish to set Icecast server passwords manually,
+ you should answer No here.
+
+Template: airtime/icecast-hostname
+Type: string
+Default: localhost
+_Description: Icecast2 hostname:
+ Specify the hostname of the Icecast server. Depending on your
+ setup, this might be the same as the Airtime ServerName. For
+ testing purposes, you can use the default of 'localhost'.
+
+Template: airtime/icecast-sourcepw
+Type: string
+Default: hackme
+_Description: Icecast2 Source Password:
+ Specify a password to send A/V sources to Icecast
+
+Template: airtime/icecast-relaypw
+Type: string
+Default: hackme
+_Description: Icecast2 Relay Password:
+ Specify a password for stream relay access.
+ This is not needed by Airtime, however you should
+ change it from the default to lock down your system.
+
+Template: airtime/icecast-adminpw
+Type: string
+Default: hackme
+_Description: Icecast2 Admin Password:
+ Specify the admin password for Icecast.
+ You can access icecast2's admin interface via
+ http://localhost:8000/ - and both monitor connection as
+ well as block users.
+
+Template: airtime/admin-password
+Type: string
+Default: admin
+_Description: Airtime Admin Password:
+ Specify a secure admin password for Airtime.
+ You can access the Airtime administration interface
+ at http://localhost/ to set up other user accounts,
+ upload media, create playlists and schedule shows.
+
+Template: airtime/storage-directory
+Type: string
+Default: /srv/airtime/stor/
+_Description: Airtime Storage Directory:
+ Specify the main storage path which Airtime will use,
+ ending with a slash.
+ You can also specify watched folders in the Airtime
+ administration interface.
diff --git a/debian/usr/bin/airtime-launch-browser b/debian/usr/bin/airtime-launch-browser
new file mode 100755
index 000000000..c0bf585c0
--- /dev/null
+++ b/debian/usr/bin/airtime-launch-browser
@@ -0,0 +1,26 @@
+#!/bin/bash
+#-------------------------------------------------------------------------------
+# Copyright (c) 2012 Sourcefabric O.P.S.
+#
+# This file is part of the Airtime project.
+# http://airtime.sourcefabric.org/
+#
+# Airtime is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# Airtime is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Airtime; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+#-------------------------------------------------------------------------------
+#-------------------------------------------------------------------------------
+# This script opens the default graphical web browser on the Airtime login page.
+
+/usr/bin/x-www-browser http://localhost/ || exit 1
diff --git a/debian/usr/share/applications/airtime.desktop b/debian/usr/share/applications/airtime.desktop
new file mode 100644
index 000000000..e712670ee
--- /dev/null
+++ b/debian/usr/share/applications/airtime.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Type=Application
+Version=1.0
+Name=Airtime
+GenericName=Broadcast automation system
+Icon=/usr/share/pixmaps/airtime.xpm
+Exec=/usr/bin/airtime-launch-browser
+Categories=AudioVideo;Audio;
diff --git a/debian/usr/share/man/man1/airtime-import.1.gz b/debian/usr/share/man/man1/airtime-import.1.gz
new file mode 100644
index 000000000..828d8cf66
Binary files /dev/null and b/debian/usr/share/man/man1/airtime-import.1.gz differ
diff --git a/debian/usr/share/man/man1/airtime-launch-browser.1.gz b/debian/usr/share/man/man1/airtime-launch-browser.1.gz
new file mode 100644
index 000000000..e9e211c0d
Binary files /dev/null and b/debian/usr/share/man/man1/airtime-launch-browser.1.gz differ
diff --git a/debian/usr/share/man/man1/airtime-log.1.gz b/debian/usr/share/man/man1/airtime-log.1.gz
new file mode 100644
index 000000000..c6e47d873
Binary files /dev/null and b/debian/usr/share/man/man1/airtime-log.1.gz differ
diff --git a/debian/usr/share/man/man1/airtime-test-soundcard.1.gz b/debian/usr/share/man/man1/airtime-test-soundcard.1.gz
new file mode 100644
index 000000000..6d915473d
Binary files /dev/null and b/debian/usr/share/man/man1/airtime-test-soundcard.1.gz differ
diff --git a/debian/usr/share/man/man1/airtime-test-stream.1.gz b/debian/usr/share/man/man1/airtime-test-stream.1.gz
new file mode 100644
index 000000000..c6660fd4d
Binary files /dev/null and b/debian/usr/share/man/man1/airtime-test-stream.1.gz differ
diff --git a/debian/usr/share/menu/airtime b/debian/usr/share/menu/airtime
new file mode 100644
index 000000000..d9db710dc
--- /dev/null
+++ b/debian/usr/share/menu/airtime
@@ -0,0 +1,6 @@
+?package(airtime):\
+ needs="X11"\
+ section="Applications/Sound"\
+ title="Airtime"\
+ command="/usr/bin/airtime-launch-browser"\
+ icon="/usr/share/pixmaps/airtime.xpm"
diff --git a/debian/usr/share/pixmaps/airtime.xpm b/debian/usr/share/pixmaps/airtime.xpm
new file mode 100644
index 000000000..95c8ab39c
--- /dev/null
+++ b/debian/usr/share/pixmaps/airtime.xpm
@@ -0,0 +1,50 @@
+/* XPM */
+static char * airtime_xpm[] = {
+"32 32 15 1",
+" c None",
+". c #FFE1D5",
+"+ c #FFA47F",
+"@ c #FF7137",
+"# c #FF5D1A",
+"$ c #FF7B45",
+"% c #FFB89B",
+"& c #FF9062",
+"* c #FFCDB8",
+"= c #FF6728",
+"- c #FFC3AA",
+"; c #FF9A70",
+"> c #FFD7C6",
+", c #FF8653",
+"' c #FFAE8D",
+" .+@+. ",
+" .+@#####$% ",
+" .+@###########&* ",
+" %$################=+ ",
+" $######################$- ",
+" %$#######################;.",
+" .+=#####################>",
+" *#################, ",
+" %@###############> ",
+" .;=###########, ",
+" -@#########> ",
+" =########, ",
+" -#########> ",
+" ,########$ ",
+" #########- ",
+" %########@ ",
+" @########- ",
+" .########@ ",
+" ;########- ",
+" =#######@ ",
+" -#######,. ",
+" ####@* ",
+" ####=' ",
+" %###; ",
+" $#,. ",
+" .@- ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" "};
diff --git a/debian/watch b/debian/watch
new file mode 100644
index 000000000..c4bb6aaec
--- /dev/null
+++ b/debian/watch
@@ -0,0 +1,2 @@
+version=3
+http://sf.net/airtime/airtime-([\d\.]+)\.tar\.gz
diff --git a/gen-snapshot.sh b/gen-snapshot.sh
new file mode 100755
index 000000000..f7daf9536
--- /dev/null
+++ b/gen-snapshot.sh
@@ -0,0 +1,81 @@
+#/bin/sh
+# Script for generating nightly Airtime snapshot packages
+# Run from the directory containg the files checked out from git
+
+VERSION=2.2.0~$(date "+%Y%m%d")
+BUILDDEST=/tmp/airtime-${VERSION}/
+DEBDIR=`pwd`/debian
+
+git checkout devel
+git pull
+
+echo "cleaning up previous build..."
+
+rm -rf /tmp/airtime-*
+mkdir -p ${BUILDDEST}airtime
+
+echo "copying files to temporary directory..."
+
+cp -a * ${BUILDDEST}airtime || exit
+cp -a $DEBDIR ${BUILDDEST}debian || exit
+
+cd ${BUILDDEST} || exit
+
+# Set the version of the snapshot package
+
+sed -i "1s:(2.2.0-1):(${VERSION}):g" debian/changelog
+
+# FIXES for 2.2.0 #############
+
+# these are all moved to debian/copyright
+rm airtime/python_apps/pypo/LICENSE
+rm airtime/airtime_mvc/library/php-amqplib/LICENSE
+rm airtime/airtime_mvc/library/phing/LICENSE
+rm airtime/airtime_mvc/library/propel/LICENSE
+rm airtime/airtime_mvc/library/soundcloud-api/README.md
+
+# Disable install script check for Debian package, it breaks the .deb install
+sed -i '11s:DEB=$(dpkg:# DEB=$(dpkg:g' airtime/install_minimal/airtime-install
+sed -i '13s\"$DEB" = "Status: install ok installed"\-f /var/lib/dpkg/info/airtime.config\g' airtime/install_minimal/airtime-install
+sed -i '14s: Please use the debian package to upgrade.:..:g' airtime/install_minimal/airtime-install
+sed -i '15s:exit 1:# We do not exit here:g' airtime/install_minimal/airtime-install
+
+# Remove Liquidsoap binaries
+rm -r airtime/python_apps/pypo/liquidsoap_bin/
+
+# Disable installation of Liquidsoap binaries
+sed -i '84s:print:#print:g' airtime/python_apps/pypo/install/pypo-initialize.py
+sed -i '86s:binary_path:#binary_path:g' airtime/python_apps/pypo/install/pypo-initialize.py
+sed -i '88s:try:#try:g' airtime/python_apps/pypo/install/pypo-initialize.py
+sed -i '89s:open:#open:g' airtime/python_apps/pypo/install/pypo-initialize.py
+sed -i '91s:try:#try:g' airtime/python_apps/pypo/install/pypo-initialize.py
+sed -i '92s:os.remove:#os.remove:g' airtime/python_apps/pypo/install/pypo-initialize.py
+sed -i '93s:except:#except:g' airtime/python_apps/pypo/install/pypo-initialize.py
+sed -i '95s:pass:#pass:g' airtime/python_apps/pypo/install/pypo-initialize.py
+sed -i '97s:os.symlink:#os.symlink:g' airtime/python_apps/pypo/install/pypo-initialize.py
+sed -i '98s:except:#except:g' airtime/python_apps/pypo/install/pypo-initialize.py
+sed -i '99s: """:""":g' airtime/python_apps/pypo/install/pypo-initialize.py
+sed -i '107s: """:""":g' airtime/python_apps/pypo/install/pypo-initialize.py
+sed -i '108s:print:#print:g' airtime/python_apps/pypo/install/pypo-initialize.py
+sed -i '109s:print:#print:g' airtime/python_apps/pypo/install/pypo-initialize.py
+sed -i '110s:sys.exit(1):#sys.exit(1):g' airtime/python_apps/pypo/install/pypo-initialize.py
+
+#Remove phing library
+rm -r airtime/airtime_mvc/library/phing/
+
+#Remove ZFDebug
+rm -r airtime/airtime_mvc/library/ZFDebug/
+
+#Strip un-needed install scripts
+rm -r airtime/install_full/
+
+#############################
+
+echo "running the build..."
+
+debuild --no-lintian -b -uc -us $@ || exit
+
+exit
+
+# optionally, copy the new package to the public server
+scp /tmp/airtime_${VERSION}_all.deb apt.sourcefabric.org:/var/www/apt/snapshots/