$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 . '%' : '∞'); } 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 = '∞'; } 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 = ' (∞)'; } if ($cfg["max_upload_rate"] != 0) { $label_max_upload_rate = " (" . number_format($cfg["max_upload_rate"], 2) . ")"; } else { $label_max_upload_rate = ' (∞)'; } $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 . '%' : '∞'); } 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; }