/** * resets totals of a transfer * * @param $transfer name of the transfer * @param $delete boolean if to delete meta-file * @return array */ function resetTransferTotals($transfer, $delete = false) { global $cfg, $db, $transfers; $msgs = array(); $tid = getTransferHash($transfer); $client = getTransferClient($transfer); // delete meta-file if ($delete) { $ch = ClientHandler::getInstance($client); $ch->delete($transfer); if (count($ch->messages) > 0) { $msgs = array_merge($msgs, $ch->messages); } } else { // reset in stat-file $sf = new StatFile($transfer, getOwner($transfer)); $sf->uptotal = 0; $sf->downtotal = 0; $sf->write(); if ($client == "vuzerpc") { require_once "inc/functions/functions.rpc.vuze.php"; vuzeResetUpload($tid); } } // reset in db $uid = (int) getTransferOwnerID($transfer); $sql = "UPDATE tf_transfer_totals SET uptotal=0 WHERE tid = " . $db->qstr($tid) . " AND uid IN (0,{$uid})"; $db->Execute($sql); if ($db->ErrorNo() != 0) { dbError($sql); } // set transfers-cache cacheTransfersSet(); return $msgs; }
/** * processUpload */ function dispatcher_processUpload() { global $cfg; // check if files exist if (empty($_FILES)) { // log AuditAction($cfg["constants"]["error"], "no file in file-upload"); // return return; } // action-id $actionId = tfb_getRequestVar('aid'); // file upload $uploadMessages = array(); // stack $tStack = array(); // process upload while (count($_FILES) > 0) { $upload = array_shift($_FILES); if (is_array($upload['size'])) { foreach ($upload['size'] as $id => $size) { if ($size > 0) { _dispatcher_processUpload($upload['name'][$id], $upload['tmp_name'][$id], $size, $actionId, $uploadMessages, $tStack); } } } else { if ($upload['size'] > 0) { _dispatcher_processUpload($upload['name'], $upload['tmp_name'], $upload['size'], $actionId, $uploadMessages, $tStack); } } } // instant action ? if ($actionId > 1 && !empty($tStack)) { foreach ($tStack as $transfer) { $ch = ClientHandler::getInstance(getTransferClient($transfer)); switch ($actionId) { case 3: $ch->start($transfer, false, true); break; case 2: $ch->start($transfer, false, false); break; } if (count($ch->messages) > 0) { $uploadMessages = array_merge($uploadMessages, $ch->messages); } } } // messages if (count($uploadMessages) > 0) { @error("There were Problems", "", "", $uploadMessages); } }
require_once 'inc/functions/functions.transfer.php'; // init template-instance tmplInitializeInstance($cfg["theme"], "page.transferHosts.tmpl"); // init transfer transfer_init(); $isTransmissionTransfer = false; if ($cfg["transmission_rpc_enable"] > 0) { if (isHash($transfer)) { $hash = $transfer; } else { $hash = getTransferHash($transfer); } require_once 'inc/functions/functions.rpc.transmission.php'; $isTransmissionTransfer = isTransmissionTransfer($hash); if (!$isTransmissionTransfer && $cfg["transmission_rpc_enable"] == 1) { $isTransmissionTransfer = getTransferClient($transfer) == 'transmissionrpc'; } } $list_host = array(); if ($isTransmissionTransfer) { $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
*******************************************************************************/ // prevent direct invocation if (!isset($cfg['user']) || isset($_REQUEST['cfg'])) { @ob_end_clean(); @header("location: ../../index.php"); exit; } /******************************************************************************/ // common functions require_once 'inc/functions/functions.common.php'; // transfer functions require_once 'inc/functions/functions.transfer.php'; // init template-instance tmplInitializeInstance($cfg["theme"], "page.transferDetails.tmpl"); // init transfer transfer_init(); // init ch-instance $ch = ClientHandler::getInstance(getTransferClient($transfer)); // load settings, default if settings could not be loaded (fresh transfer) if ($ch->settingsLoad($transfer) !== true) { $ch->settingsDefault(); } // set details vars transfer_setDetailsVars(); // title + foot tmplSetFoot(false); tmplSetTitleBar($transferLabel . " - Details", false); // iid tmplSetIidVars(); // parse template $tmpl->pparse();
/** * _maintenanceTransfers * * @param $trestart * @return boolean */ function _maintenanceTransfers($trestart = false) { global $cfg, $db, $transfers; // set var $this->_restartTransfers = $trestart; // output $this->_outputMessage("transfers-maintenance...\n"); // sanity-check for transfers-dir if (!is_dir($cfg["transfer_file_path"])) { $this->state = MAINTENANCEANDREPAIR_STATE_ERROR; $msg = "invalid dir-settings. no dir : " . $cfg["transfer_file_path"]; array_push($this->messages, $msg); $this->_outputError($msg . "\n"); return false; } // pid-files of transfer-clients $pidFiles = array(); if ($dirHandle = @opendir($cfg["transfer_file_path"])) { while (false !== ($file = @readdir($dirHandle))) { if (strlen($file) > 3 && substr($file, -4, 4) == ".pid") { array_push($pidFiles, $file); } } @closedir($dirHandle); } // return if no pid-files found if (count($pidFiles) < 1) { $this->_outputMessage("no pid-files found.\n"); $this->_outputMessage("transfers-maintenance done.\n"); return true; } // get process-list $psString = trim(shell_exec("ps x -o pid='' -o ppid='' -o command='' -ww")); // test if client for pid is still up $this->_bogusTransfers = array(); foreach ($pidFiles as $pidFile) { $transfer = substr($pidFile, 0, -4); if (stristr($psString, $transfer) === false) { if (getTransferClient($transfer) != "azureus") { array_push($this->_bogusTransfers, $transfer); } } } // return if no stale pid-files $this->_countProblems = count($this->_bogusTransfers); if ($this->_countProblems < 1) { $this->_outputMessage("no stale pid-files found.\n"); $this->_outputMessage("transfers-maintenance done.\n"); return true; } /* repair the bogus clients */ $this->_countFixed = 0; $this->_outputMessage("repairing died clients...\n"); foreach ($this->_bogusTransfers as $transfer) { // output $this->_outputMessage("repairing " . $transfer . " ...\n"); // set stopped flag in db stopTransferSettings($transfer); // rewrite stat-file $sf = new StatFile($transfer, getOwner($transfer)); $sf->running = 0; $sf->percent_done = -100.0; $sf->time_left = 'Transfer Died'; $sf->down_speed = 0; $sf->up_speed = 0; $sf->seeds = 0; $sf->peers = 0; $sf->write(); // delete pid-file @unlink($cfg["transfer_file_path"] . $transfer . ".pid"); // DEBUG : log the repair of the bogus transfer if ($cfg['debuglevel'] > 0) { AuditAction($cfg["constants"]["debug"], "transfers-maintenance : transfer repaired : " . $transfer); } // output $this->_outputMessage("done.\n"); // count $this->_countFixed++; } // output if ($this->_countProblems > 0) { $this->_outputMessage("repaired transfers : " . $this->_countFixed . "/" . $this->_countProblems . "\n"); } /* restart transfers */ if ($this->_restartTransfers) { $this->_fixedTransfers = array(); $this->_outputMessage("restarting died clients...\n"); // hold current user $whoami = $this->_mode == MAINTENANCEANDREPAIR_MODE_CLI ? GetSuperAdmin() : $cfg["user"]; foreach ($this->_bogusTransfers as $transfer) { // output $this->_outputMessage("Starting " . $transfer . " ...\n"); // set current user to transfer-owner $cfg["user"] = getOwner($transfer); // clientHandler + start $ch = ClientHandler::getInstance(getTransferClient($transfer)); $ch->start($transfer, false, FluxdQmgr::isRunning()); // DEBUG : log the restart of the died transfer if ($cfg['debuglevel'] > 0) { $staret = $ch->state == CLIENTHANDLER_STATE_OK ? "OK" : "FAILED"; AuditAction($cfg["constants"]["debug"], "transfers-maintenance : restarted transfer " . $transfer . " by " . $whoami . " : " . $staret); } if ($ch->state == CLIENTHANDLER_STATE_OK) { // output $this->_outputMessage("done.\n"); // add to ary array_push($this->_fixedTransfers, $transfer); // count $this->_countFixed++; } else { $this->messages = array_merge($this->messages, $ch->messages); $this->_outputError(implode("\n", $ch->messages) . "\n"); } } // set user back $cfg["user"] = $whoami; // output $this->_countFixed = count($this->_fixedTransfers); if ($this->_countFixed > 0) { $this->_outputMessage("restarted transfers : " . $this->_countFixed . "/" . $this->_countProblems . "\n"); } } /* done */ $this->_outputMessage("transfers-maintenance done.\n"); // return return true; }
/** * set transfer setting * * @param $transfer * @param $key * @param $val * @param $options * @return mixed */ function _tset($transfer, $key, $val, $options) { global $cfg; // check transfer if (!transferExists($transfer)) { $this->_outputError("transfer does not exist.\n"); return false; } // check params $settingsKeys = array('uprate' => 'NUMBER', 'downrate' => 'NUMBER', 'completion' => 'BOOL', 'sharekill' => 'NUMBER'); if (!array_key_exists($key, $settingsKeys)) { $this->_outputError("invalid settings-key: " . $key . "\n"); return false; } if (strlen($val) < 1) { $this->_outputError("value for " . $key . " invalid.\n"); return false; } switch ($settingsKeys[$key]) { case 'NUMBER': if (!preg_match('/^[0-9\\-]+$/D', $val)) { $this->_outputError("value for " . $key . " must be a number: " . $val . "\n"); return false; } break; case 'BOOL': $val = strtolower($val); if ($val != 'true' && $val != 'false') { $this->_outputError("value for " . $key . " must be true or false: " . $val . "\n"); return false; } break; } // set user $cfg["user"] = getOwner($transfer); // output $this->_outputMessage("Setting " . $key . " to " . $val . " for " . $transfer . " for user " . $cfg["user"] . "...\n"); // init ch-instance $ch = ClientHandler::getInstance(getTransferClient($transfer)); // load settings, default if settings could not be loaded (fresh transfer) if ($ch->settingsLoad($transfer) !== true) { $ch->settingsDefault(); } // autosend $send = strpos($options, 's') !== false && isTransferRunning($transfer); // set setting switch ($key) { case 'uprate': if ($ch->rate != $val) { $ch->setRateUpload($transfer, $val, $send); break; } else { $this->_outputMessage("no changes.\n"); return false; } case 'downrate': if ($ch->drate != $val) { $ch->setRateDownload($transfer, $val, $send); break; } else { $this->_outputMessage("no changes.\n"); return false; } case 'completion': if (strtolower($ch->runtime) != $val) { $ch->setRuntime($transfer, $val == 'true' ? 'True' : 'False', $send); break; } else { $this->_outputMessage("no changes.\n"); return false; } case 'sharekill': if ($ch->sharekill != $val) { $ch->setSharekill($transfer, $val, $send); break; } else { $this->_outputMessage("no changes.\n"); return false; } } // save $ch->settingsSave(); // output + return if ($send) { $this->_outputMessage("settings saved + changes sent to client.\n"); } else { $this->_outputMessage("settings saved.\n"); } return true; }
/** * 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; }
/** * transfers * * @param $action */ function sa_transfers($action = "") { global $cfg, $error, $statusImage, $statusMessage, $htmlTitle, $htmlTop, $htmlMain; if ($action == "") { return; } buildPage("t"); switch ($action) { case "0": // Transfers-main $htmlTitle = "Transfer Bulk Operations"; $htmlMain .= '<br><div align="left">'; $htmlMain .= '<p>Select action to perform on all items in the transfer list:</p>'; $htmlMain .= '<a href="' . _FILE_THIS . '?t=1"><img src="themes/' . $cfg["theme"] . '/images/arrow.gif" width="9" height="9" title="Stop All Transfers" border="0"> Stop All Transfers</a>'; $htmlMain .= '<p>'; $htmlMain .= '<a href="' . _FILE_THIS . '?t=2"><img src="themes/' . $cfg["theme"] . '/images/arrow.gif" width="9" height="9" title="Start All Transfers" border="0"> Start All Transfers</a>'; $htmlMain .= '<p>'; $htmlMain .= '<a href="' . _FILE_THIS . '?t=3"><img src="themes/' . $cfg["theme"] . '/images/arrow.gif" width="9" height="9" title="Resume All Transfers" border="0"> Resume All Transfers</a>'; $htmlMain .= '<br><br><strong>Note:</strong><br>\'Start All Transfers\' will start all transfers in the transfer list, regardless of whether they have been started previously or not.<br><br>\'Resume All Transfers\' will only start those transfers that have previously been started and are currently in the \'stopped\' state'; $htmlMain .= '</div><br><br>'; break; case "1": // Transfers-Stop $htmlTitle = "Transfers - Stop"; $htmlMain .= '<br><strong>Transfers Stopped:</strong><br>'; $htmlMain .= '<pre>'; $transferList = getTransferArray(); foreach ($transferList as $transfer) { if (isTransferRunning($transfer)) { $ch = ClientHandler::getInstance(getTransferClient($transfer)); $ch->stop($transfer); $htmlMain .= ' - ' . $transfer . ""; $htmlMain .= "\n"; } } $htmlMain .= '</pre>'; $htmlMain .= '<hr><br>'; break; case "2": // Transfers-Start $htmlTitle = "Transfers - Start"; $htmlMain .= '<br><strong>Transfers Started:</strong><br>'; $htmlMain .= '<pre>'; $transferList = getTransferArray(); foreach ($transferList as $transfer) { if (!isTransferRunning($transfer)) { $ch = ClientHandler::getInstance(getTransferClient($transfer)); $ch->start($transfer, false, false); $htmlMain .= ' - ' . $transfer . ""; $htmlMain .= "\n"; } } $htmlMain .= '</pre>'; $htmlMain .= '<hr><br>'; break; case "3": // Transfers-Resume $htmlTitle = "Transfers - Resume"; $htmlMain .= '<br><strong>Transfers Resumed:</strong><br>'; $htmlMain .= '<pre>'; $transferList = getTransferArray(); $sf = new StatFile(""); foreach ($transferList as $transfer) { $sf->init($transfer); if (trim($sf->running) == 0 && !isTransferRunning($transfer)) { $ch = ClientHandler::getInstance(getTransferClient($transfer)); $ch->start($transfer, false, false); $htmlMain .= ' - ' . $transfer . ""; $htmlMain .= "\n"; } } $htmlMain .= '</pre>'; $htmlMain .= '<hr><br>'; break; } $htmlMain .= '<br><strong>Transfers:</strong><br>'; $htmlMain .= '<pre>'; $transferList = getTransferArray(); foreach ($transferList as $transfer) { $htmlMain .= ' - ' . $transfer . ""; if (isTransferRunning($transfer)) { $htmlMain .= " (running)"; } $htmlMain .= "\n"; } $htmlMain .= '</pre>'; printPage(); exit; }
} /******************************************************************************/ // common functions require_once 'inc/functions/functions.common.php'; // transfer functions require_once 'inc/functions/functions.transfer.php'; // init template-instance tmplInitializeInstance($cfg["theme"], "page.transferSettings.tmpl"); // init transfer transfer_init(); // request-vars $saveop = tfb_getRequestVar('save'); $client = tfb_getRequestVar('client'); $isSave = $saveop == 1 ? true : false; // init ch-instance $ch = $client == "" ? ClientHandler::getInstance(getTransferClient($transfer)) : ClientHandler::getInstance($client); // customize-vars transfer_setCustomizeVars(); // load settings, default if settings could not be loaded (fresh transfer) if ($ch->settingsLoad($transfer) !== true) { $ch->settingsDefault(); } // set running-field $ch->running = isTransferRunning($transfer) ? 1 : 0; // save/display if ($isSave) { /* save */ // set save-var $tmpl->setvar('isSave', 1); // send to client $doSend = isset($_REQUEST['sendbox']) && $ch->running == 1 ? true : false;
/** * pieTransferPeers */ function image_pieTransferPeers() { global $cfg; // transfer-id $transfer = tfb_getRequestVar('transfer'); if (empty($transfer)) { Image::paintNoOp(); } // validate transfer $validTransfer = false; if (isHash($transfer)) { $hash = $transfer; } else { $hash = getTransferHash($transfer); } if ($cfg["transmission_rpc_enable"]) { require_once 'inc/functions/functions.rpc.transmission.php'; $options = array('trackerStats', 'peers'); $transTransfer = getTransmissionTransfer($hash, $options); // false if not found; TODO check if transmission enabled if (is_array($transTransfer)) { $validTransfer = true; $client = "transmissionrpc"; } } if (!$validTransfer) { // If not found in transmission transfer if (tfb_isValidTransfer($transfer)) { // stat $sf = new StatFile($transfer); $seeds = trim($sf->seeds); $peers = trim($sf->peers); // client-switch + get peer-data $peerData = array(); $peerData['seeds'] = 0; $peerData['peers'] = 0; $peerData['seedsLabel'] = $seeds != "" ? $seeds : 0; $peerData['peersLabel'] = $peers != "" ? $peers : 0; $client = getTransferClient($transfer); $validTransfer = true; } } if (!$validTransfer) { AuditAction($cfg["constants"]["error"], "INVALID TRANSFER: " . $transfer); Image::paintNoOp(); } switch ($client) { case "tornado": if ($seeds != "") { if (strpos($seeds, "+") !== false) { $seeds = preg_replace('/(\\d+)\\+.*/i', '${1}', $seeds); } if (is_numeric($seeds)) { $peerData['seeds'] = $seeds; } $peerData['seedsLabel'] = $seeds; } if ($peers != "") { if (strpos($peers, "+") !== false) { $peers = preg_replace('/(\\d+)\\+.*/i', '${1}', $peers); } if (is_numeric($peers)) { $peerData['peers'] = $peers; } $peerData['peersLabel'] = $peers; } break; case "transmission": case "transmissionrpc": $peers = sizeof($transTransfer['peers']); $seeds = 0; foreach ($transTransfer['trackerStats'] as $tracker) { $seeds += $tracker['seederCount'] == -1 ? 0 : $tracker['seederCount']; } $peerData['seedsLabel'] = $seeds; $peerData['seeds'] = $seeds; $peerData['peersLabel'] = $peers; $peerData['peers'] = $peers; break; case "vuzerpc": if (empty($seeds) || empty($peers)) { $ch = ClientHandler::getInstance($client); $running = $ch->monitorRunningTransfers(); $hash = strtoupper(getTransferHash($transfer)); if (!empty($running[$hash])) { $t = $running[$hash]; $peerData['seeds'] = $t['seeds']; $peerData['seedsLabel'] = $t['seeds']; $peerData['peers'] = $t['peers']; $peerData['peersLabel'] = $t['peers']; } } break; case "azureus": if ($seeds != "") { if (strpos($seeds, "(") !== false) { $seeds = preg_replace('/.*(\\d+) .*/i', '${1}', $seeds); } if (is_numeric($seeds)) { $peerData['seeds'] = $seeds; } $peerData['seedsLabel'] = $seeds; } if ($peers != "") { if (strpos($peers, "(") !== false) { $peers = preg_replace('/.*(\\d+) .*/i', '${1}', $peers); } if (is_numeric($peers)) { $peerData['peers'] = $peers; } $peerData['peersLabel'] = $peers; } break; case "mainline": if ($seeds != "" && is_numeric($seeds)) { $peerData['seeds'] = $seeds; $peerData['seedsLabel'] = $seeds; } if ($peers != "" && is_numeric($peers)) { $peerData['peers'] = $peers; $peerData['peersLabel'] = $peers; } break; case "wget": case "nzbperl": $peerData['seeds'] = $seeds != "" ? $seeds : 0; $peerData['peers'] = $peers != "" ? $peers : 0; break; default: AuditAction($cfg["constants"]["error"], "INVALID TRANSFER: " . $transfer); Image::paintNoOp(); } // draw image Image::paintPie3D(202, 160, 100, 50, 200, 100, 20, Image::stringToRGBColor($cfg["body_data_bg"]), array($peerData['seeds'] + 1.0E-5, $peerData['peers'] + 1.0E-5), image_getColors(), array('Seeds : ' . $peerData['seedsLabel'], 'Peers : ' . $peerData['peersLabel']), 58, 130, 2, 14); }
/** * resets totals of a transfer * * @param $transfer name of the transfer * @param $delete boolean if to delete meta-file * @return array */ function resetTransferTotals($transfer, $delete = false) { global $cfg, $db, $transfers; $msgs = array(); $tid = getTransferHash($transfer); // delete meta-file if ($delete) { $ch = ClientHandler::getInstance(getTransferClient($transfer)); $ch->delete($transfer); if (count($ch->messages) > 0) { $msgs = array_merge($msgs, $ch->messages); } } else { // reset in stat-file $sf = new StatFile($transfer, getOwner($transfer)); $sf->uptotal = 0; $sf->downtotal = 0; $sf->write(); } // reset in db $sql = "DELETE FROM tf_transfer_totals WHERE tid = " . $db->qstr($tid); $db->Execute($sql); if ($db->ErrorNo() != 0) { dbError($sql); } // set transfers-cache cacheTransfersSet(); return $msgs; }
/** * pieTransferPeers */ function image_pieTransferPeers() { global $cfg; // transfer-id $transfer = tfb_getRequestVar('transfer'); if (empty($transfer)) { Image::paintNoOp(); } // validate transfer if (tfb_isValidTransfer($transfer) !== true) { AuditAction($cfg["constants"]["error"], "INVALID TRANSFER: " . $transfer); Image::paintNoOp(); } // stat $sf = new StatFile($transfer); $seeds = trim($sf->seeds); $peers = trim($sf->peers); // client-switch + get peer-data $peerData = array(); $peerData['seeds'] = 0; $peerData['peers'] = 0; $peerData['seedsLabel'] = $seeds != "" ? $seeds : 0; $peerData['peersLabel'] = $peers != "" ? $peers : 0; $client = getTransferClient($transfer); switch ($client) { case "tornado": if ($seeds != "") { if (strpos($seeds, "+") !== false) { $seeds = preg_replace('/(\\d+)\\+.*/i', '${1}', $seeds); } if (is_numeric($seeds)) { $peerData['seeds'] = $seeds; } $peerData['seedsLabel'] = $seeds; } if ($peers != "") { if (strpos($peers, "+") !== false) { $peers = preg_replace('/(\\d+)\\+.*/i', '${1}', $peers); } if (is_numeric($peers)) { $peerData['peers'] = $peers; } $peerData['peersLabel'] = $peers; } break; case "transmission": case "azureus": if ($seeds != "") { if (strpos($seeds, "(") !== false) { $seeds = preg_replace('/.*(\\d+) .*/i', '${1}', $seeds); } if (is_numeric($seeds)) { $peerData['seeds'] = $seeds; } $peerData['seedsLabel'] = $seeds; } if ($peers != "") { if (strpos($peers, "(") !== false) { $peers = preg_replace('/.*(\\d+) .*/i', '${1}', $peers); } if (is_numeric($peers)) { $peerData['peers'] = $peers; } $peerData['peersLabel'] = $peers; } break; case "mainline": if ($seeds != "" && is_numeric($seeds)) { $peerData['seeds'] = $seeds; $peerData['seedsLabel'] = $seeds; } if ($peers != "" && is_numeric($peers)) { $peerData['peers'] = $peers; $peerData['peersLabel'] = $peers; } break; case "wget": case "nzbperl": $peerData['seeds'] = $seeds != "" ? $seeds : 0; $peerData['peers'] = $peers != "" ? $peers : 0; break; default: AuditAction($cfg["constants"]["error"], "INVALID TRANSFER: " . $transfer); Image::paintNoOp(); } // draw image Image::paintPie3D(202, 160, 100, 50, 200, 100, 20, Image::stringToRGBColor($cfg["body_data_bg"]), array($peerData['seeds'] + 1.0E-5, $peerData['peers'] + 1.0E-5), array(array('r' => 0x0, 'g' => 0xeb, 'b' => 0xc), array('r' => 0x10, 'g' => 0x0, 'b' => 0xff)), array('Seeds : ' . $peerData['seedsLabel'], 'Peers : ' . $peerData['peersLabel']), 58, 130, 2, 14); }
/** * Function with which metafiles are uploaded and injected * * @deprecated */ function compat_tf_processUpload() { global $cfg; $filename = ""; $uploadMessages = array(); if (isset($_FILES['upload_file']) && !empty($_FILES['upload_file']['name'])) { $filename = stripslashes($_FILES['upload_file']['name']); $filename = tfb_cleanFileName($filename); if ($filename === false) { // invalid file array_push($uploadMessages, "The type of file you are uploading is not allowed."); array_push($uploadMessages, "\nvalid file-extensions: "); array_push($uploadMessages, $cfg["file_types_label"]); } else { // file is valid if (substr($filename, -5) == ".wget") { // is enabled ? if ($cfg["enable_wget"] == 0) { AuditAction($cfg["constants"]["error"], "ILLEGAL ACCESS: " . $cfg["user"] . " tried to upload wget-file " . $filename); @error("wget is disabled", "", ""); } else { if ($cfg["enable_wget"] == 1) { if (!$cfg['isAdmin']) { AuditAction($cfg["constants"]["error"], "ILLEGAL ACCESS: " . $cfg["user"] . " tried to upload wget-file " . $filename); @error("wget is disabled for users", "", ""); } } } } else { if (substr($filename, -4) == ".nzb") { // is enabled ? if ($cfg["enable_nzbperl"] == 0) { AuditAction($cfg["constants"]["error"], "ILLEGAL ACCESS: " . $cfg["user"] . " tried to upload nzb-file " . $filename); @error("nzbperl is disabled", "", ""); } else { if ($cfg["enable_nzbperl"] == 1) { if (!$cfg['isAdmin']) { AuditAction($cfg["constants"]["error"], "ILLEGAL ACCESS: " . $cfg["user"] . " tried to upload nzb-file " . $filename); @error("nzbperl is disabled for users", "", ""); } } } } } if ($_FILES['upload_file']['size'] <= $cfg["upload_limit"] && $_FILES['upload_file']['size'] > 0) { //FILE IS BEING UPLOADED if (@is_file($cfg["transfer_file_path"] . $filename)) { // Error array_push($uploadMessages, "the file " . $filename . " already exists on the server."); } else { if (@move_uploaded_file($_FILES['upload_file']['tmp_name'], $cfg["transfer_file_path"] . $filename)) { @chmod($cfg["transfer_file_path"] . $filename, 0644); AuditAction($cfg["constants"]["file_upload"], $filename); // inject injectTransfer($filename); // instant action ? $actionId = tfb_getRequestVar('aid'); if ($actionId > 1) { $ch = ClientHandler::getInstance(getTransferClient($filename)); switch ($actionId) { case 3: $ch->start($filename, false, true); break; case 2: $ch->start($filename, false, false); break; } if (count($ch->messages) > 0) { $uploadMessages = array_merge($uploadMessages, $ch->messages); } } } else { array_push($uploadMessages, "File not uploaded, file could not be found or could not be moved: " . $cfg["transfer_file_path"] . $filename); } } } else { array_push($uploadMessages, "File not uploaded, file size limit is " . $cfg["upload_limit"] . ". file has " . $_FILES['upload_file']['size']); } } } if (count($uploadMessages) > 0) { AuditAction($cfg["constants"]["error"], $cfg["constants"]["file_upload"] . " :: " . $filename); @error("There were Problems", "", "", $uploadMessages); } }