Ejemplo n.º 1
0
    $options = array('peers');
    $transfer = getTransmissionTransfer($hash, $options);
    $isRunning = true;
    //TODO make this actually determine if the torrent is running
    if ($isRunning) {
        foreach ($transfer['peers'] as $peer) {
            array_push($list_host, array('host' => @gethostbyaddr($peer['address']), 'port' => $peer['port']));
        }
    }
} else {
    // stat
    $sf = new StatFile($transfer);
    // set vars
    if ($sf->running == 1) {
        $transfer_pid = getTransferPid($transfer);
        $transfer_cons = netstatConnectionsByPid($transfer_pid);
        $transfer_hosts = netstatHostsByPid($transfer_pid);
        $hostAry = array_keys($transfer_hosts);
        foreach ($hostAry as $host) {
            $host = @trim($host);
            $port = @trim($transfer_hosts[$host]);
            if ($cfg["transferHosts"] == 1) {
                $host = @gethostbyaddr($host);
            }
            if ($host != "") {
                $tmpl->setvar('hosts', 1);
                array_push($list_host, array('host' => $host, 'port' => $port));
            }
        }
    }
}
function netstatConnections($torrentAlias)
{
    return netstatConnectionsByPid(getTorrentPid($torrentAlias));
}
/**
 * netstatConnections
 *
 * @param $transfer
 * @return int
 */
function netstatConnections($transfer)
{
    return netstatConnectionsByPid(getTransferPid($transfer));
}
$tmpl->setvar('downTotal', @formatFreeSpace($totals["downtotal"] / 1048576));
$tmpl->setvar('upTotal', @formatFreeSpace($totals["uptotal"] / 1048576));
// more
if ($sf->running == 1) {
    // running
    $tmpl->setvar('running', 1);
    // current totals
    $tmpl->setvar('downTotalCurrent', formatFreeSpace($totalsCurrent["downtotal"] / 1048576));
    $tmpl->setvar('upTotalCurrent', formatFreeSpace($totalsCurrent["uptotal"] / 1048576));
    // seeds + peers
    $tmpl->setvar('seeds', $sf->seeds);
    $tmpl->setvar('peers', $sf->peers);
    // port + cons
    $transfer_pid = getTransferPid($transfer);
    $tmpl->setvar('port', netstatPortByPid($transfer_pid));
    $tmpl->setvar('cons', netstatConnectionsByPid($transfer_pid));
    // up speed
    $tmpl->setvar('up_speed', trim($sf->up_speed) != "" ? $sf->up_speed : '0.0 kB/s');
    // down speed
    $tmpl->setvar('down_speed', trim($sf->down_speed) != "" ? $sf->down_speed : '0.0 kB/s');
    // sharekill
    $tmpl->setvar('sharekill', $ch->sharekill != 0 ? $ch->sharekill . '%' : '&#8734');
} else {
    // running
    $tmpl->setvar('running', 0);
    // current totals
    $tmpl->setvar('downTotalCurrent', "");
    $tmpl->setvar('upTotalCurrent', "");
    // seeds + peers
    $tmpl->setvar('seeds', "");
    $tmpl->setvar('peers', "");
/**
 * gets details of a transfer as array
 *
 * @param $transfer
 * @param $full
 * @return array with details
 *
 * array-keys :
 *
 * running
 * speedDown
 * speedUp
 * downCurrent
 * upCurrent
 * downTotal
 * upTotal
 * percentDone
 * sharing
 * timeLeft
 * seeds
 * peers
 * cons
 *
 * owner
 * size
 * maxSpeedDown
 * maxSpeedUp
 * maxcons
 * sharekill
 * port
 *
 */
function getTransferDetails($transfer, $full)
{
    global $cfg, $transfers;
    $details = array();
    // common functions
    require_once 'inc/functions/functions.common.php';
    $transferowner = getOwner($transfer);
    // settings
    if (isset($transfers['settings'][$transfer])) {
        $settingsAry = $transfers['settings'][$transfer];
    } else {
        $settingsAry = array();
        $ftransfer = str_replace('.imported', '', $transfer);
        if (substr($ftransfer, -8) == ".torrent") {
            // this is a t-client
            $settingsAry['type'] = "torrent";
            $settingsAry['client'] = getTransferClient($transfer);
            if (empty($settingsAry['client'])) {
                $settingsAry['client'] = $cfg["btclient"];
            }
        } else {
            if (substr($transfer, -5) == ".wget") {
                // this is wget.
                $settingsAry['type'] = "wget";
                $settingsAry['client'] = "wget";
            } else {
                if (substr($transfer, -4) == ".nzb") {
                    // this is nzbperl.
                    $settingsAry['type'] = "nzb";
                    $settingsAry['client'] = "nzbperl";
                } else {
                    AuditAction($cfg["constants"]["error"], "INVALID TRANSFER: " . $ftransfer);
                    @error("Invalid Transfer", "", "", array($transfer));
                }
            }
        }
        $settingsAry['hash'] = "";
        $settingsAry["savepath"] = $cfg["enable_home_dirs"] != 0 ? $cfg["path"] . $transferowner . '/' : $cfg["path"] . $cfg["path_incoming"] . '/';
        $settingsAry['datapath'] = "";
    }
    $totalsCurrent = array("downtotal" => 0, "uptotal" => 0);
    $totals = array("downtotal" => 0, "uptotal" => 0);
    // stat
    $sf = new StatFile($transfer, $transferowner);
    // totals
    $afu = $sf->uptotal;
    $afd = $sf->downtotal;
    if (isset($settingsAry['client'])) {
        $ch = ClientHandler::getInstance($settingsAry['client']);
        $totalsCurrent = $ch->getTransferCurrentOP($transfer, $settingsAry['hash'], $afu, $afd);
        $totals = $ch->getTransferTotalOP($transfer, $settingsAry['hash'], $afu, $afd);
        $ch->updateStatFiles($transfer);
        $sf = new StatFile($transfer, $transferowner);
        $bIsRPC = (int) $ch->useRPC;
    }
    // size
    $size = floatval($sf->size);
    // running
    $running = $sf->running;
    $details['running'] = $running;
    $details['cons'] = "";
    $details['port'] = "";
    // speed_down + speed_up + seeds + peers + cons
    if ($bIsRPC) {
        $stat = $ch->monitorTransfer($transfer, $format = "tf");
        $totals["downtotal"] = $stat['downTotal'];
        $totals["uptotal"] = $stat['upTotal'];
        $details['running'] = $stat['running'];
        // speed_down
        $details['speedDown'] = empty($stat['speedDown']) ? '' : $stat['speedDown'];
        // speed_up
        $details['speedUp'] = empty($stat['speedUp']) ? '' : $stat['speedUp'];
        // down_current
        $details['downCurrent'] = formatFreeSpace($totals["downtotal"] / 1048576);
        // up_current
        $details['upCurrent'] = formatFreeSpace($totals["uptotal"] / 1048576);
        // seeds
        $details['seeds'] = $stat['seeds'];
        // peers
        $details['peers'] = $stat['peers'];
        // connections
        $details['cons'] = $stat['cons'];
        // percentage
        $percentage = $stat['percentDone'];
        // sharing
        $details['sharing'] = $stat['sharing'];
        // size
        $size = $stat['size'];
        // eta
        $details['eta'] = $stat['eta'];
    } elseif ($running == 1) {
        // pid
        $pid = (int) getTransferPid($transfer);
        // speed_down
        $details['speedDown'] = trim($sf->down_speed) != "" ? $sf->down_speed : '0.0 kB/s';
        // speed_up
        $details['speedUp'] = trim($sf->up_speed) != "" ? $sf->up_speed : '0.0 kB/s';
        // down_current
        $details['downCurrent'] = formatFreeSpace($totalsCurrent["downtotal"] / 1048576);
        // up_current
        $details['upCurrent'] = formatFreeSpace($totalsCurrent["uptotal"] / 1048576);
        // seeds
        $details['seeds'] = $sf->seeds;
        // peers
        $details['peers'] = $sf->peers;
        // percentage
        $percentage = $sf->percent_done;
        // eta
        $details['eta'] = $sf->time_left;
        // cons
        if ($pid > 0) {
            $details['cons'] = netstatConnectionsByPid($pid);
        }
    } else {
        // speed_down
        $details['speedDown'] = "";
        // speed_up
        $details['speedUp'] = "";
        // down_current
        $details['downCurrent'] = "";
        // up_current
        $details['upCurrent'] = "";
        // seeds
        $details['seeds'] = "";
        // peers
        $details['peers'] = "";
        // eta
        $details['eta'] = "";
        // percentage
        $percentage = $sf->percent_done;
    }
    // down_total
    $details['downTotal'] = formatFreeSpace($totals["downtotal"] / 1048576);
    // up_total
    $details['upTotal'] = formatFreeSpace($totals["uptotal"] / 1048576);
    if ($percentage < 0) {
        $percentage = round($percentage * -1 - 100, 1);
        $sf->time_left = $cfg['_INCOMPLETE'];
    } elseif ($percentage > 100) {
        $percentage = 100;
    }
    $details['percentDone'] = $percentage;
    // sharing
    if (is_array($totals)) {
        $details['sharing'] = $totals["downtotal"] > 0 ? @number_format($totals["uptotal"] / $totals["downtotal"] * 100, 2) : 0;
    }
    // full (including static) details
    if ($full) {
        // owner
        $details['owner'] = $transferowner;
        // size
        $details['size'] = @formatBytesTokBMBGBTB($size);
        if ($running == 1) {
            // max_download_rate
            $details['maxSpeedDown'] = number_format($cfg["max_download_rate"], 2);
            // max_upload_rate
            $details['maxSpeedUp'] = number_format($cfg["max_upload_rate"], 2);
            // maxcons
            $details['maxcons'] = $cfg["maxcons"];
            // sharekill
            $details['sharekill'] = $cfg["sharekill"];
            // port
            if ($pid > 0) {
                $details['port'] = netstatPortByPid($pid);
            }
        } else {
            // max_download_rate
            $details['maxSpeedDown'] = "";
            // max_upload_rate
            $details['maxSpeedUp'] = "";
            // maxcons
            $details['maxcons'] = "";
            // sharekill
            $details['sharekill'] = "";
        }
    }
    // return
    return $details;
}
$label_peers = "";
$label_maxcons = "";
$label_sharing = $sharing . '%';
if ($cfg["sharekill"] != 0) {
    $label_sharekill = $cfg["sharekill"] . '%';
} else {
    $label_sharekill = '&#8734';
}
if ($af->running == 1 && $alias != "") {
    $label_downTotalCurrent = formatFreeSpace($downTotalCurrent / 1048576);
    $label_upTotalCurrent = formatFreeSpace($upTotalCurrent / 1048576);
    $label_seeds = $af->seeds;
    $label_peers = $af->peers;
    $torrent_pid = getTorrentPid($alias);
    $torrent_port = netstatPortByPid($torrent_pid);
    $torrent_cons = netstatConnectionsByPid($torrent_pid);
    if ($cfg["max_download_rate"] != 0) {
        $label_max_download_rate = " (" . number_format($cfg["max_download_rate"], 2) . ")";
    } else {
        $label_max_download_rate = ' (&#8734)';
    }
    if ($cfg["max_upload_rate"] != 0) {
        $label_max_upload_rate = " (" . number_format($cfg["max_upload_rate"], 2) . ")";
    } else {
        $label_max_upload_rate = ' (&#8734)';
    }
    $label_maxcons = " (" . $cfg["maxcons"] . ")";
}
if ($af->percent_done < 0) {
    $af->percent_done = round($af->percent_done * -1 - 100, 1);
    $af->time_left = _INCOMPLETE;
function transmissionSetVars($transfer, $tmpl)
{
    //require_once('inc/functions/functions.rpc.transmission.php');
    require_once 'functions.rpc.transmission.php';
    $options = array("eta", "percentDone", "rateDownload", "rateUpload", "downloadedEver", "uploadedEver", "percentDone", "sizeWhenDone", "peers", "trackerStats");
    $returnArr = getTransmissionTransfer($transfer, $options);
    $tmpl->setvar('transferowner', getTransmissionTransferOwner($transfer));
    $tmpl->setvar('size', @formatBytesTokBMBGBTB($returnArr['sizeWhenDone']));
    // sharing
    $tmpl->setvar('sharing', $returnArr["downloadedEver"] > 0 ? @number_format($returnArr["uploadedEver"] / $returnArr["downloadedEver"] * 100, 2) : "0");
    // totals
    $tmpl->setvar('downTotal', @formatFreeSpace($returnArr["downloadedEver"] / 1048576));
    $tmpl->setvar('upTotal', @formatFreeSpace($returnArr["uploadedEver"] / 1048576));
    // port + cons
    //$tmpl->setvar('size', @formatBytesTokBMBGBTB($transferSize));
    $isRunning = true;
    // TODO make this actually detect if torrent is running
    if ($isRunning) {
        $tmpl->setvar('running', 1);
        // current totals
        $tmpl->setvar('downTotalCurrent', formatFreeSpace($totalsCurrent["downtotal"] / 1048576));
        $tmpl->setvar('upTotalCurrent', formatFreeSpace($totalsCurrent["uptotal"] / 1048576));
        // seeds + peers
        $seeds = getTransmissionSeederCount($transfer);
        $tmpl->setvar('seeds', $seeds == "" ? "Could not be retrieved" : $seeds . " (might be incorrect)");
        $tmpl->setvar('peers', sizeof($returnArr['peers']));
        // port + cons
        $transfer_pid = getTransferPid($transfer);
        $tmpl->setvar('port', netstatPortByPid($transfer_pid));
        $tmpl->setvar('cons', netstatConnectionsByPid($transfer_pid));
        // TODO: this is probably incorrect
        // up speed
        $tmpl->setvar('up_speed', trim($returnArr['rateUpload']) != "" ? formatBytesTokBMBGBTB($returnArr['rateUpload']) . '/s' : '0.0 kB/s');
        // down speed
        $tmpl->setvar('down_speed', trim($returnArr['rateDownload']) != "" ? formatBytesTokBMBGBTB($returnArr['rateDownload']) . '/s' : '0.0 kB/s');
        // sharekill
        $tmpl->setvar('sharekill', $ch->sharekill != 0 ? $ch->sharekill . '%' : '&#8734');
    } else {
        // running
        $tmpl->setvar('running', 0);
        // current totals
        $tmpl->setvar('downTotalCurrent', "");
        $tmpl->setvar('upTotalCurrent', "");
        // seeds + peers
        $tmpl->setvar('seeds', "");
        $tmpl->setvar('peers', "");
        // port + cons
        $tmpl->setvar('port', "");
        $tmpl->setvar('cons', "");
        // up speed
        $tmpl->setvar('up_speed', "");
        // down speed
        $tmpl->setvar('down_speed', "");
        // sharekill
        $tmpl->setvar('sharekill', "");
    }
    if ($returnArr['eta'] < 0) {
        $tmpl->setvar('time_left', 'n/a');
    } else {
        $tmpl->setvar('time_left', convertTime($returnArr['eta']));
    }
    // graph width
    $tmpl->setvar('graph_width1', $returnArr['percentDone'] * 100);
    $tmpl->setvar('graph_width2', 100 - $returnArr['percentDone'] * 100);
    $tmpl->setvar('percent_done', $returnArr['percentDone'] * 100);
    // language vars
    global $cfg;
    $tmpl->setvar('_USER', $cfg['_USER']);
    $tmpl->setvar('_SHARING', $cfg['_SHARING']);
    $tmpl->setvar('_ID_CONNECTIONS', $cfg['_ID_CONNECTIONS']);
    $tmpl->setvar('_ID_PORT', $cfg['_ID_PORT']);
    $tmpl->setvar('_DOWNLOADSPEED', $cfg['_DOWNLOADSPEED']);
    $tmpl->setvar('_UPLOADSPEED', $cfg['_UPLOADSPEED']);
    $tmpl->setvar('_PERCENTDONE', $cfg['_PERCENTDONE']);
    $tmpl->setvar('_ESTIMATEDTIME', $cfg['_ESTIMATEDTIME']);
    return $tmpl;
}