/** * stopTransfer * * @param $transfer */ function dispatcher_stopTransfer($transfer) { global $cfg; if ($cfg["transmission_rpc_enable"] && isHash($transfer)) { require_once 'inc/functions/functions.rpc.transmission.php'; if (isValidTransmissionTransfer($cfg['uid'], $transfer)) { stopTransmissionTransfer($transfer); return; } } // valid if (tfb_isValidTransfer($transfer) !== true) { AuditAction($cfg["constants"]["error"], "INVALID TRANSFER: " . $transfer); @error("Invalid Transfer", "", "", array($transfer)); } // ch $ch = ClientHandler::getInstance(getTransferClient($transfer)); // permission dispatcher_checkTypePermission($transfer, $ch->type, "stop"); // stop $ch->stop($transfer); // check if (count($ch->messages) > 0) { @error("There were Problems", "", "", $ch->messages); } }
/** * updateStatFiles * * @param $transfer string torrent name * @return boolean */ function updateStatFiles($transfer = "") { global $cfg, $db; //$rpc = Transmission::getInstance(); $tfs = $this->monitorRunningTransfers(); if (!is_array($tfs)) { return false; } $sql = "SELECT hash, transfer, sharekill FROM tf_transfers WHERE type='torrent' AND client = 'transmissionrpc'"; if ($transfer != "") { //only update one transfer... $sql .= " AND transfer=" . $db->qstr($transfer); } else { $hashes = array("''"); foreach ($tfs as $hash => $t) { $hashes[] = "'" . strtolower($hash) . "'"; } $sql .= " AND hash IN (" . implode(',', $hashes) . ")"; } $recordset = $db->Execute($sql); while (list($hash, $transfer, $sharekill) = $recordset->FetchRow()) { $hash = strtolower($hash); $hashes[$hash] = $transfer; $sharekills[$hash] = $sharekill; } //convertTimeText require_once "inc/functions/functions.core.php"; foreach ($tfs as $hash => $t) { if (!isset($hashes[$hash])) { continue; } $transfer = $hashes[$hash]; $sf = new StatFile($transfer); $sf->running = $t['running']; $sf->percent_done = round($t['percentDone'] * 100, 2); if ($t['status'] == 8 || $t['status'] == 9) { $sf->sharing = round($t['uploadRatio'] * 100, 2); } $sf->downtotal = $t['downloadedEver']; $sf->uptotal = $t['uploadedEver']; $sf->write(); } //SHAREKILLS Checks foreach ($tfs as $hash => $t) { if (!isset($sharekills[$hash])) { continue; } if (($t['status'] == 8 || $t['status'] == 9) && $t['uploadRatio'] * 100 > $sharekills[$hash]) { $transfer = $hashes[$hash]; if (stopTransmissionTransfer($hash)) { AuditAction($cfg["constants"]["stop_transfer"], $this->client . "-stat. : sharekill stopped {$transfer}"); stopTransferSettings($transfer); } } } return true; }