コード例 #1
0
ファイル: AirtimeIni.php プロジェクト: romansavrulin/Airtime
 /**
  * This function creates the /etc/airtime configuration folder
  * and copies the default config files to it.
  */
 public static function CreateIniFiles()
 {
     if (!file_exists("/etc/airtime/")) {
         if (!mkdir("/etc/airtime/", 0755, true)) {
             echo "Could not create /etc/airtime/ directory. Exiting.";
             exit(1);
         }
     }
     if (!copy(AirtimeInstall::GetAirtimeSrcDir() . "/build/airtime.conf", AirtimeIni::CONF_FILE_AIRTIME)) {
         echo "Could not copy airtime.conf to /etc/airtime/. Exiting.";
         exit(1);
     }
     if (!copy(__DIR__ . "/../../python_apps/api_clients/api_client.cfg", AirtimeIni::CONF_FILE_API_CLIENT)) {
         echo "Could not copy api_client.cfg to /etc/airtime/. Exiting.";
         exit(1);
     }
     if (!copy(__DIR__ . "/../../python_apps/pypo/pypo.cfg", AirtimeIni::CONF_FILE_PYPO)) {
         echo "Could not copy pypo.cfg to /etc/airtime/. Exiting.";
         exit(1);
     }
     if (!copy(__DIR__ . "/../../python_apps/show-recorder/recorder.cfg", AirtimeIni::CONF_FILE_RECORDER)) {
         echo "Could not copy recorder.cfg to /etc/airtime/. Exiting.";
         exit(1);
     }
     if (!copy(__DIR__ . "/../../python_apps/pypo/liquidsoap_scripts/liquidsoap.cfg", AirtimeIni::CONF_FILE_LIQUIDSOAP)) {
         echo "Could not copy liquidsoap.cfg to /etc/airtime/. Exiting.";
         exit(1);
     }
     if (!copy(__DIR__ . "/../../python_apps/media-monitor/media-monitor.cfg", AirtimeIni::CONF_FILE_MEDIAMONITOR)) {
         echo "Could not copy media-monitor.cfg to /etc/airtime/. Exiting.";
         exit(1);
     }
 }
コード例 #2
0
ファイル: AirtimeIni.php プロジェクト: nidzix/Airtime
 /**
  * This function creates the /etc/airtime configuration folder
  * and copies the default config files to it.
  */
 public static function CreateIniFiles()
 {
     if (!file_exists("/etc/airtime/")) {
         if (!mkdir("/etc/airtime/", 0755, true)) {
             echo "Could not create /etc/airtime/ directory. Exiting.";
             exit(1);
         }
     }
     if (!copy(AirtimeInstall::GetAirtimeSrcDir() . "/build/airtime.conf", AirtimeIni::CONF_FILE_AIRTIME)) {
         echo "Could not copy airtime.conf to /etc/airtime/. Exiting.";
         exit(1);
     } else {
         if (!self::ChangeFileOwnerGroupMod(AirtimeIni::CONF_FILE_AIRTIME, self::CONF_WWW_DATA_GRP)) {
             echo "Could not set ownership of api_client.cfg to 'pypo'. Exiting.";
             exit(1);
         }
     }
     if (getenv("python_service") == "0") {
         if (!copy(__DIR__ . "/../../python_apps/api_clients/api_client.cfg", AirtimeIni::CONF_FILE_API_CLIENT)) {
             echo "Could not copy api_client.cfg to /etc/airtime/. Exiting.";
             exit(1);
         } else {
             if (!self::ChangeFileOwnerGroupMod(AirtimeIni::CONF_FILE_API_CLIENT, self::CONF_PYPO_GRP)) {
                 echo "Could not set ownership of api_client.cfg to 'pypo'. Exiting.";
                 exit(1);
             }
         }
         if (!copy(__DIR__ . "/../../python_apps/pypo/pypo.cfg", AirtimeIni::CONF_FILE_PYPO)) {
             echo "Could not copy pypo.cfg to /etc/airtime/. Exiting.";
             exit(1);
         } else {
             if (!self::ChangeFileOwnerGroupMod(AirtimeIni::CONF_FILE_PYPO, self::CONF_PYPO_GRP)) {
                 echo "Could not set ownership of pypo.cfg to 'pypo'. Exiting.";
                 exit(1);
             }
         }
         /*
                     if (!copy(__DIR__."/../../python_apps/pypo/liquidsoap_scripts/liquidsoap.cfg", AirtimeIni::CONF_FILE_LIQUIDSOAP)){
                         echo "Could not copy liquidsoap.cfg to /etc/airtime/. Exiting.";
                         exit(1);
                     } else if (!self::ChangeFileOwnerGroupMod(AirtimeIni::CONF_FILE_LIQUIDSOAP, self::CONF_PYPO_GRP)){
                         echo "Could not set ownership of liquidsoap.cfg to 'pypo'. Exiting.";
                         exit(1);
                     }
                     * */
         if (!copy(__DIR__ . "/../../python_apps/media-monitor/media-monitor.cfg", AirtimeIni::CONF_FILE_MEDIAMONITOR)) {
             echo "Could not copy media-monitor.cfg to /etc/airtime/. Exiting.";
             exit(1);
         } else {
             if (!self::ChangeFileOwnerGroupMod(AirtimeIni::CONF_FILE_MEDIAMONITOR, self::CONF_PYPO_GRP)) {
                 echo "Could not set ownership of media-monitor.cfg to 'pypo'. Exiting.";
                 exit(1);
             }
         }
     }
 }
コード例 #3
0
ファイル: airtime-upgrade.php プロジェクト: nidzix/Airtime
require_once 'propel/runtime/lib/Propel.php';
Propel::init(AirtimeInstall::GetAirtimeSrcDir() . "/application/configs/db-conf.php");
Propel::init(AirtimeInstall::GetAirtimeSrcDir() . "/application/configs/airtime-conf-production.php");
function pause()
{
    /* Type "sudo -s" to change to root user then type "export AIRTIME_INSTALL_DEBUG=1" and then
     * start airtime-install to enable this feature. Is used to pause between upgrade scripts
     * to examine the state of the system and see if everything is as expected. */
    if (getenv("AIRTIME_INSTALL_DEBUG") === "1") {
        echo "Press Enter to Continue" . PHP_EOL;
        fgets(STDIN);
    }
}
AirtimeInstall::DbConnect(true);
$con = Propel::getConnection();
$version = AirtimeInstall::GetVersionInstalled();
echo "******************************** Upgrade Begin *********************************" . PHP_EOL;
global $CC_CONFIG;
$user = $CC_CONFIG['dsn']['username'];
$password = $CC_CONFIG['dsn']['password'];
$host = $CC_CONFIG['dsn']['hostspec'];
$database = $CC_CONFIG['dsn']['database'];
$airtime_version = AIRTIME_VERSION;
$target_dir = trim(getenv("HOME"));
if (strlen($target_dir) == 0) {
    $target_dir = "/tmp";
}
$target_file = "/airtime_{$airtime_version}.sql";
$target_path = $target_dir . $target_file;
echo "* Backing up current database to {$target_path}" . PHP_EOL;
exec("export PGPASSWORD={$password} && pg_dump -h {$host} -U {$user} -f {$target_path} {$database}", $arr, $return_code);
コード例 #4
0
            AirtimeInstall::InstallQuery($sql, false);
            AirtimeInstall::DropSequence($tablename . "_id");
            echo "done." . PHP_EOL;
        }
        echo " * Deleting database sequences..." . PHP_EOL;
        $sql = "SELECT c.relname FROM pg_class c WHERE c.relkind = 'S';";
        try {
            $rows = $con->query($sql)->fetchAll();
        } catch (Exception $e) {
            $rows = array();
        }
        foreach ($rows as $row) {
            $sequence = $row["relname"];
            echo "   * Removing database sequence {$sequence}...";
            $sql = "DROP SEQUENCE {$sequence} CASCADE";
            AirtimeInstall::InstallQuery($sql, false);
            echo "done." . PHP_EOL;
        }
    }
}
//------------------------------------------------------------------------
// Delete the user
//------------------------------------------------------------------------
echo " * Deleting database user '{$CC_CONFIG['dsn']['username']}'..." . PHP_EOL;
$command = "echo \"DROP USER IF EXISTS {$CC_CONFIG['dsn']['username']}\" | su postgres -c psql >/dev/null 2>&1";
@exec($command, $output, $results);
if ($results == 0) {
    echo "   * User '{$CC_CONFIG['dsn']['username']}' deleted." . PHP_EOL;
} else {
    echo "   * Nothing to delete." . PHP_EOL;
}
コード例 #5
0
 public static function getOpts()
 {
     try {
         $autoloader = Zend_Loader_Autoloader::getInstance();
         $opts = new Zend_Console_Getopt(array('help|h' => 'Displays usage information.', 'overwrite|o' => 'Overwrite any existing config files.', 'preserve|p' => 'Keep any existing config files.', 'no-db|n' => 'Turn off database install.', 'reinstall|r' => 'Force a fresh install of this Airtime Version', 'webonly|w' => 'Install only web files'));
         $opts->parse();
     } catch (Zend_Console_Getopt_Exception $e) {
         print $e->getMessage() . PHP_EOL;
         AirtimeInstall::printUsage($opts);
         return NULL;
     }
     return $opts;
 }
コード例 #6
0
<?php

set_include_path(__DIR__ . '/..' . PATH_SEPARATOR . get_include_path());
set_include_path(__DIR__ . '/../../../library' . PATH_SEPARATOR . get_include_path());
require_once __DIR__ . '/../Show.php';
require_once __DIR__ . '/../StoredFile.php';
require_once __DIR__ . '/../Playlist.php';
require_once __DIR__ . '/../Schedule.php';
require_once __DIR__ . '/../Preference.php';
require_once __DIR__ . '/../RabbitMq.php';
require_once __DIR__ . '/../../configs/conf.php';
require_once __DIR__ . '/../../../install_minimal/include/AirtimeIni.php';
require_once __DIR__ . '/../../../install_minimal/include/AirtimeInstall.php';
require_once __DIR__ . '/../../../library/propel/runtime/lib/Propel.php';
Propel::init(__DIR__ . '/../../configs/airtime-conf.php');
AirtimeInstall::DbConnect(true);
$con = Propel::getConnection();
$sql = "DELETE FROM cc_show";
$con->exec($sql);
$sql = "DELETE FROM cc_show_days";
$con->exec($sql);
$sql = "DELETE FROM cc_show_instances";
$con->exec($sql);
/*
// Create a playlist
$playlist = new Application_Model_Playlist();
$playlist->create("Calendar Load test playlist ".uniqid());

// Add a file
$values = array("filepath" => __DIR__."/test10001.mp3");
$storedFile = Application_Model_StoredFile::Insert($values, false);
コード例 #7
0
<?php

require_once dirname(__FILE__) . '/include/AirtimeIni.php';
require_once dirname(__FILE__) . '/include/AirtimeInstall.php';
AirtimeInstall::DirCheck();
コード例 #8
0
}
if ($overwrite) {
    echo "* Creating INI files" . PHP_EOL;
    AirtimeIni::CreateIniFiles();
}
AirtimeIni::CreateMonitFile();
AirtimeInstall::InstallPhpCode();
AirtimeInstall::InstallBinaries();
if ($overwrite) {
    echo "* Initializing INI files" . PHP_EOL;
    AirtimeIni::UpdateIniFiles();
}
// Update the build.properties file to point to the correct directory.
AirtimeIni::UpdateIniValue(AirtimeInstall::CONF_DIR_WWW . '/build/build.properties', 'project.home', AirtimeInstall::CONF_DIR_WWW);
require_once AirtimeInstall::GetAirtimeSrcDir() . '/application/configs/conf.php';
echo "* Airtime Version: " . AIRTIME_VERSION . PHP_EOL;
AirtimeInstall::InstallStorageDirectory();
if ($db_install) {
    if ($newInstall) {
        // This is called with "system" so that we can pass in a parameter.  See the file itself
        // for why we need to do this.
        system('php ' . __DIR__ . '/airtime-db-install.php y');
        AirtimeInstall::DbConnect(true);
    } else {
        require_once 'airtime-db-install.php';
    }
}
AirtimeInstall::CreateSymlinksToUtils();
AirtimeInstall::CreateZendPhpLogFile();
AirtimeInstall::CreateCronFile();
/* FINISHED AIRTIME PHP INSTALLER */
コード例 #9
0
    }
}
if ($overwrite) {
    echo "* Creating INI files" . PHP_EOL;
    AirtimeIni::CreateIniFiles();
    echo "* Initializing INI files" . PHP_EOL;
    AirtimeIni::UpdateIniFiles();
}
if (!$iniExists) {
    require_once AirtimeInstall::GetAirtimeSrcDir() . '/application/configs/conf.php';
    $CC_CONFIG = Config::getConfig();
    require_once 'propel/runtime/lib/Propel.php';
    Propel::init(AirtimeInstall::GetAirtimeSrcDir() . "/application/configs/airtime-conf-production.php");
}
echo "* Airtime Version: " . AIRTIME_VERSION . PHP_EOL;
AirtimeInstall::InstallStorageDirectory();
$db_install = getenv("nodb") != "t";
if ($db_install) {
    echo "* Checking database for correct encoding" . PHP_EOL;
    exec('su -c \'psql -t -c "SHOW SERVER_ENCODING"\' postgres | grep -i "UTF.*8"', $out, $return_code);
    if ($return_code != 0) {
        echo " * Unfortunately your postgresql database has not been created using a UTF-8 encoding." . PHP_EOL;
        echo " * As of Airtime 2.1, installs will fail unless the encoding has been set to UTF-8. Please verify this is the case" . PHP_EOL;
        echo " * and try the install again" . PHP_EOL;
        exit(1);
    }
    if ($newInstall) {
        //call external script. "y" argument means force creation of database tables.
        passthru('php ' . __DIR__ . '/airtime-db-install.php y');
    } else {
        require_once 'airtime-db-install.php';
コード例 #10
0
            $userAnswer = trim(fgets(STDIN));
        }
        if (in_array($userAnswer, array("y", "Y"))) {
            AirtimeInstall::CreateDatabaseTables($dbuser, $dbpasswd, $dbname, $dbhost);
        }
    } else {
        //Database was just created, meaning the tables do not
        //exist. Let's create them.
        AirtimeInstall::CreateDatabaseTables($dbuser, $dbpasswd, $dbname, $dbhost);
    }
}
echo " * Setting Airtime version" . PHP_EOL;
AirtimeInstall::SetAirtimeVersion(AIRTIME_VERSION);
if (AirtimeInstall::$databaseTablesCreated) {
    AirtimeInstall::SetDefaultTimezone();
    // set up some keys in DB
    AirtimeInstall::SetUniqueId();
    AirtimeInstall::SetImportTimestamp();
    $ini = parse_ini_file(__DIR__ . "/airtime-install.ini");
    $stor_dir = realpath($ini["storage_dir"]) . "/";
    echo " * Inserting stor directory location {$stor_dir} into music_dirs table" . PHP_EOL;
    $con = Propel::getConnection();
    $sql = "INSERT INTO cc_music_dirs (directory, type) VALUES ('{$stor_dir}', 'stor')";
    try {
        $con->exec($sql);
    } catch (Exception $e) {
        echo "  * Failed inserting {$stor_dir} in cc_music_dirs" . PHP_EOL;
        echo "  * Message {$e->getMessage()}" . PHP_EOL;
        exit(1);
    }
}
コード例 #11
0
    if (!file_exists("/etc/airtime/")) {
        if (!mkdir("/etc/airtime/", 0755, true)) {
            echo "Could not create /etc/airtime/ directory. Exiting.";
            exit(1);
        }
    }
    if (!copy("airtime.conf.170", CONF_FILE_AIRTIME)) {
        echo "Could not copy airtime.conf to /etc/airtime/. Exiting.";
        exit(1);
    }
    if (!copy($AIRTIME_PYTHON_APPS . "/pypo/pypo.cfg", CONF_FILE_PYPO)) {
        echo "Could not copy pypo.cfg to /etc/airtime/. Exiting.";
        exit(1);
    }
    if (!copy($AIRTIME_PYTHON_APPS . "/show-recorder/recorder.cfg", CONF_FILE_RECORDER)) {
        echo "Could not copy recorder.cfg to /etc/airtime/. Exiting.";
        exit(1);
    }
    if (!copy($AIRTIME_PYTHON_APPS . "/pypo/liquidsoap_scripts/liquidsoap.cfg", CONF_FILE_LIQUIDSOAP)) {
        echo "Could not copy liquidsoap.cfg to /etc/airtime/. Exiting.";
        exit(1);
    }
}
CreateIniFiles();
AirtimeIni::UpdateIniFiles();
echo PHP_EOL . "*** Updating Database Tables ***" . PHP_EOL;
AirtimeInstall::MigrateTablesToVersion(__DIR__, '20110402164819');
echo PHP_EOL . "*** Updating Pypo ***" . PHP_EOL;
system("python " . __DIR__ . "/../../../python_apps/pypo/install/pypo-install.py");
echo PHP_EOL . "*** Recorder Installation ***" . PHP_EOL;
system("python " . __DIR__ . "/../../../python_apps/show-recorder/install/recorder-install.py");
コード例 #12
0
function load_airtime_config()
{
    $ini_array = parse_ini_file('/etc/airtime/airtime.conf', true);
    return $ini_array;
}
$values = load_airtime_config();
$CC_CONFIG = array('webServerUser' => $values['general']['web_server_user'], 'rabbitmq' => $values['rabbitmq'], 'baseFilesDir' => $values['general']['base_files_dir'], 'storageDir' => $values['general']['base_files_dir'] . "/stor", 'dsn' => array('username' => $values['database']['dbuser'], 'password' => $values['database']['dbpass'], 'hostspec' => $values['database']['host'], 'phptype' => 'pgsql', 'database' => $values['database']['dbname']), 'tblNamePrefix' => 'cc_', 'apiKey' => array($values['general']['api_key']), 'apiPath' => '/api/', 'soundcloud-client-id' => '2CLCxcSXYzx7QhhPVHN4A', 'soundcloud-client-secret' => 'pZ7beWmF06epXLHVUP1ufOg2oEnIt9XhE8l8xt0bBs', 'soundcloud-connection-retries' => $values['soundcloud']['connection_retries'], 'soundcloud-connection-wait' => $values['soundcloud']['time_between_retries'], "rootDir" => __DIR__ . "/../..", 'pearPath' => dirname(__FILE__) . '/../../library/pear', 'zendPath' => dirname(__FILE__) . '/../../library/Zend', 'phingPath' => dirname(__FILE__) . '/../../library/phing');
AirtimeInstall::DbConnect(true);
echo PHP_EOL . "*** Updating Database Tables ***" . PHP_EOL;
if (AirtimeInstall::DbTableExists('doctrine_migration_versions') === false) {
    $migrations = array('20110312121200', '20110331111708', '20110402164819');
    foreach ($migrations as $migration) {
        AirtimeInstall::BypassMigrations(__DIR__, $migration);
    }
}
AirtimeInstall::MigrateTablesToVersion(__DIR__, '20110406182005');
//setting data for new aggregate show length column.
$sql = "SELECT id FROM cc_show_instances";
$show_instances = $CC_DBC->GetAll($sql);
foreach ($show_instances as $show_instance) {
    $sql = "UPDATE cc_show_instances SET time_filled = (SELECT SUM(clip_length) FROM cc_schedule WHERE instance_id = {$show_instance["id"]}) WHERE id = {$show_instance["id"]}";
    $CC_DBC->query($sql);
}
//end setting data for new aggregate show length column.
exec("rm -fr /opt/pypo");
exec("rm -fr /opt/recorder");
const CONF_FILE_AIRTIME = "/etc/airtime/airtime.conf";
const CONF_FILE_PYPO = "/etc/airtime/pypo.cfg";
const CONF_FILE_RECORDER = "/etc/airtime/recorder.cfg";
const CONF_FILE_LIQUIDSOAP = "/etc/airtime/liquidsoap.cfg";
$configFiles = array(CONF_FILE_AIRTIME, CONF_FILE_PYPO, CONF_FILE_RECORDER, CONF_FILE_LIQUIDSOAP);
コード例 #13
0
 public static function InstallBinaries()
 {
     echo "* Installing binaries to " . AirtimeInstall::CONF_DIR_BINARIES . PHP_EOL;
     exec("mkdir -p " . AirtimeInstall::CONF_DIR_BINARIES);
     exec("cp -R " . AirtimeInstall::GetUtilsSrcDir() . " " . AirtimeInstall::CONF_DIR_BINARIES);
 }
コード例 #14
0
ファイル: airtime-uninstall.php プロジェクト: nidzix/Airtime
    $connected = AirtimeInstall::DbConnect(false);
    if ($connected) {
        $con = Propel::getConnection();
        $sql = "select * from pg_tables where tableowner = 'airtime'";
        try {
            $rows = $con->query($sql)->fetchAll();
        } catch (Exception $e) {
            $rows = array();
        }
        foreach ($rows as $row) {
            $tablename = $row["tablename"];
            echo "   * Removing database table {$tablename}...";
            if (AirtimeInstall::DbTableExists($tablename)) {
                $sql = "DROP TABLE {$tablename} CASCADE";
                AirtimeInstall::InstallQuery($sql, false);
                AirtimeInstall::DropSequence($tablename . "_id");
            }
            echo "done." . PHP_EOL;
        }
    }
}
//------------------------------------------------------------------------
// Delete the user
//------------------------------------------------------------------------
echo " * Deleting database user '{$CC_CONFIG['dsn']['username']}'..." . PHP_EOL;
$command = "echo \"DROP USER IF EXISTS {$CC_CONFIG['dsn']['username']}\" | su postgres -c psql >/dev/null 2>&1";
@exec($command, $output, $results);
if ($results == 0) {
    echo "   * User '{$CC_CONFIG['dsn']['username']}' deleted." . PHP_EOL;
} else {
    echo "   * Nothing to delete." . PHP_EOL;
コード例 #15
0
            $rows = array();
        }
        foreach ($rows as $row) {
            $tablename = $row["tablename"];
            echo "   * Removing database table {$tablename}...";
            if (AirtimeInstall::DbTableExists($tablename)) {
                $sql = "DROP TABLE {$tablename} CASCADE";
                AirtimeInstall::InstallQuery($sql, false);
                $CC_DBC->dropSequence($tablename . "_id");
            }
            echo "done." . PHP_EOL;
        }
    }
}
//------------------------------------------------------------------------
// Delete the user
//------------------------------------------------------------------------
echo " * Deleting database user '{$CC_CONFIG['dsn']['username']}'..." . PHP_EOL;
$command = "echo \"DROP USER IF EXISTS {$CC_CONFIG['dsn']['username']}\" | su postgres -c psql >/dev/null 2>&1";
@exec($command, $output, $results);
if ($results == 0) {
    echo "   * User '{$CC_CONFIG['dsn']['username']}' deleted." . PHP_EOL;
} else {
    echo "   * Nothing to delete." . PHP_EOL;
}
AirtimeInstall::RemoveSymlinks();
AirtimeInstall::UninstallBinaries();
AirtimeInstall::RemoveLogDirectories();
AirtimeIni::RemoveMonitFile();
@unlink('/etc/cron.d/airtime-crons');
/* FINISHED AIRTIME PHP UNINSTALLER */