Example #1
0
function wrk_sourcecfg($db, $queueargs)
{
    $action = $queueargs['mount']['action'];
    unset($queueargs['mount']['action']);
    switch ($action) {
        case 'reset':
            $dbh = cfgdb_connect($db);
            $source = cfgdb_read('cfg_source', $dbh);
            foreach ($source as $mp) {
                sysCmd("umount -f \"/mnt/NAS/" . $mp['name'] . "\"");
                sysCmd("rmdir \"/mnt/NAS/" . $mp['name'] . "\"");
            }
            if (cfgdb_delete('cfg_source', $dbh)) {
                $return = 1;
            } else {
                $return = 0;
            }
            $dbh = null;
            break;
        case 'add':
            $dbh = cfgdb_connect($db);
            print_r($queueargs);
            unset($queueargs['mount']['id']);
            // format values string
            foreach ($queueargs['mount'] as $key => $value) {
                if ($key == 'error') {
                    $values .= "'" . SQLite3::escapeString($value) . "'";
                    error_log(">>>>> values on line 1014 >>>>> " . $values, 0);
                } else {
                    $values .= "'" . SQLite3::escapeString($value) . "',";
                    error_log(">>>>> values on line 1016 >>>>> " . $values, 0);
                }
            }
            error_log(">>>>> values on line 1019 >>>>> " . $values, 0);
            // write new entry
            cfgdb_write('cfg_source', $dbh, $values);
            $newmountID = $dbh->lastInsertId();
            $dbh = null;
            if (wrk_sourcemount($db, 'mount', $newmountID)) {
                $return = 1;
            } else {
                $return = 0;
            }
            break;
        case 'edit':
            $dbh = cfgdb_connect($db);
            $mp = cfgdb_read('cfg_source', $dbh, '', $queueargs['mount']['id']);
            cfgdb_update('cfg_source', $dbh, '', $queueargs['mount']);
            sysCmd("umount -f \"/mnt/NAS/" . $mp[0]['name'] . "\"");
            if ($mp[0]['name'] != $queueargs['mount']['name']) {
                sysCmd("rmdir \"/mnt/NAS/" . $mp[0]['name'] . "\"");
                sysCmd("mkdir \"/mnt/NAS/" . $queueargs['mount']['name'] . "\"");
            }
            if (wrk_sourcemount($db, 'mount', $queueargs['mount']['id'])) {
                $return = 1;
            } else {
                $return = 0;
            }
            error_log(">>>>> wrk_sourcecfg(edit) exit status = >>>>> " . $return, 0);
            $dbh = null;
            break;
        case 'delete':
            $dbh = cfgdb_connect($db);
            $mp = cfgdb_read('cfg_source', $dbh, '', $queueargs['mount']['id']);
            sysCmd("umount -f \"/mnt/NAS/" . $mp[0]['name'] . "\"");
            sysCmd("rmdir \"/mnt/NAS/" . $mp[0]['name'] . "\"");
            if (cfgdb_delete('cfg_source', $dbh, $queueargs['mount']['id'])) {
                $return = 1;
            } else {
                $return = 0;
            }
            $dbh = null;
            break;
    }
    return $return;
}
pcntl_signal(SIGTTIN, SIG_IGN);
pcntl_signal(SIGHUP, SIG_IGN);
// --- DEMONIZE --- //
// --- INITIALIZE ENVIRONMENT --- //
// change /run and session files for correct session file locking
sysCmd('chmod 777 /run');
// reset DB permission
sysCmd('chmod -R 777 /var/www/db');
// initialize CLI session
session_save_path('/run');
// inpect session
playerSession('open', $db, '', '');
// reset session file permissions
sysCmd('chmod 777 /run/sess*');
// mount all sources
wrk_sourcemount($db, 'mountall');
// start MPD daemon
sysCmd("service mpd start");
// check Architecture
$arch = wrk_getHwPlatform();
if ($arch != $_SESSION['hwplatformid']) {
    // reset playerID if architectureID not match. This condition "fire" another first-install process
    playerSession('write', $db, 'playerid', '');
}
// --- INITIALIZE ENVIRONMENT --- //
// --- PLAYER FIRST INSTALLATION PROCESS --- //
if (isset($_SESSION['playerid']) && $_SESSION['playerid'] == '') {
    // register HW architectureID and playerID
    wrk_setHwPlatform($db);
    // destroy actual session
    playerSession('destroy', $db, '', '');
Example #3
0
function wrk_sourcecfg($queueargs)
{
    $action = $queueargs['mount']['action'];
    unset($queueargs['mount']['action']);
    switch ($action) {
        case 'reset':
            $source = ConfigDB::read('cfg_source');
            foreach ($source as $mp) {
                sysCmd("umount -f '/mnt/NAS/" . $mp['name'] . "'");
                sysCmd("rmdir '/mnt/NAS/" . $mp['name'] . "'");
            }
            $return = ConfigDB::delete('cfg_source') ? 1 : 0;
            break;
        case 'add':
            print_r($queueargs);
            unset($queueargs['mount']['id']);
            // write new entry
            $newmountID = ConfigDB::write('cfg_source', array_values($queueargs['mount']));
            $return = wrk_sourcemount('mount', $newmountID) ? 1 : 0;
            break;
        case 'edit':
            $mp = ConfigDB::read('cfg_source', '', $queueargs['mount']['id']);
            ConfigDB::update('cfg_source', '', $queueargs['mount']);
            sysCmd("umount -f '/mnt/NAS/" . $mp[0]['name'] . "'");
            if ($mp[0]['name'] != $queueargs['mount']['name']) {
                sysCmd("rmdir '/mnt/NAS/" . $mp[0]['name'] . "'");
                sysCmd("mkdir '/mnt/NAS/" . $queueargs['mount']['name'] . "'");
            }
            $return = wrk_sourcemount('mount', $queueargs['mount']['id']) ? 1 : 0;
            break;
        case 'delete':
            $mp = ConfigDB::read('cfg_source', '', $queueargs['mount']['id']);
            sysCmd("umount -f '/mnt/NAS/" . $mp[0]['name'] . "'");
            sysCmd("rmdir '/mnt/NAS/" . $mp[0]['name'] . "'");
            $return = ConfigDB::delete('cfg_source', $queueargs['mount']['id']) ? 1 : 0;
            break;
    }
    return $return;
}
Example #4
0
}
/*
 * Initialize environment
 */
// reset file permissions
// TODO can this be moved to wrk_sysChmod?
sysCmd('chmod 777 /run');
sysCmd('chmod 777 /run/sess*');
sysCmd('chmod 777 ' . MPD_LIB . 'WEBRADIO/*.*');
sysCmd('chmod 777 ' . MPD_LIB . 'SDCARD');
sysCmd('chmod 777 /var/www/tcmods.conf');
sysCmd('chmod 777 /var/www/playhistory.log');
sysCmd('chmod 777 /var/www/liblog.txt');
sysCmd('chmod -R 777 /var/www/db');
// mount all sources
wrk_sourcemount('mountall');
// start MPD daemon with consume mode off
sysCmd("service mpd start");
if (false !== ($mpd = openMpdSocket(MPD_HOST, 6600))) {
    sendMpdCommand($mpd, 'consume 0');
    closeMpdSocket($mpd);
}
// - set symlink for album art lookup
sysCmd("ln -s /var/lib/mpd/music /var/www/coverroot");
// load session
Session::wrap(function () {
    // make sure session vars are set
    $vars = array('w_active', 'w_lock', 'w_queue', 'w_queueargs', 'debug', 'debugdata');
    foreach ($vars as $var) {
        if (!isset($_SESSION[$var])) {
            $_SESSION[$var] = '';
Example #5
0
function wrk_sourcecfg($redis, $action, $args)
{
    runelog('function wrk_sourcecfg(' . $action . ')', $args);
    switch ($action) {
        case 'add':
            // unset($args->id);
            $args->id = $redis->incr('mountidx');
            $args = (array) $args;
            $redis->hMset('mount_' . $args['id'], $args);
            $return = wrk_sourcemount($redis, 'mount', $args['id']);
            break;
        case 'edit':
            $mp = $redis->hGetAll('mount_' . $args->id);
            $args = (array) $args;
            $redis->hMset('mount_' . $args['id'], $args);
            sysCmd('mpc stop');
            usleep(500000);
            sysCmd("umount -f \"/mnt/MPD/NAS/" . $mp['name'] . "\"");
            if ($mp['name'] != $args['name']) {
                sysCmd("rmdir \"/mnt/MPD/NAS/" . $mp['name'] . "\"");
                sysCmd("mkdir \"/mnt/MPD/NAS/" . $args['name'] . "\"");
            }
            $return = wrk_sourcemount($redis, 'mount', $args['id']);
            runelog('wrk_sourcecfg(edit) exit status', $return);
            break;
        case 'delete':
            $mp = $redis->hGetAll('mount_' . $args->id);
            sysCmd('mpc stop');
            usleep(500000);
            sysCmd("umount -f \"/mnt/MPD/NAS/" . $mp['name'] . "\"");
            sleep(3);
            if (!empty($mp['name'])) {
                sysCmd("rmdir \"/mnt/MPD/NAS/" . $mp['name'] . "\"");
            }
            $return = $redis->del('mount_' . $args->id);
            break;
        case 'reset':
            $source = $redis->keys('mount_*');
            sysCmd('systemctl stop mpd');
            usleep(500000);
            foreach ($source as $key) {
                $mp = $redis->hGetAll($key);
                runelog('wrk_sourcecfg() internal loop $mp[name]', $mp['name']);
                sysCmd("umount -f \"/mnt/MPD/NAS/" . $mp['name'] . "\"");
                sysCmd("rmdir \"/mnt/MPD/NAS/" . $mp['name'] . "\"");
                $return = $redis->del($key);
            }
            // reset mount index
            if ($return) {
                $redis->del('mountidx');
            }
            sysCmd('systemctl start mpd');
            // set process priority
            sysCmdAsync('sleep 1 && rune_prio nice');
            break;
        case 'mountall':
            $return = wrk_sourcemount($redis, 'mountall');
            break;
        case 'umountusb':
            $return = sysCmd('udevil umount ' . $args);
            break;
    }
    return $return;
}