public static function sendTorrent($fname, $isStart, $isAddPath, $directory, $label, $saveTorrent, $isFast, $addition = null) { $hash = false; $torrent = is_object($fname) ? $fname : new Torrent($fname); if (!$torrent->errors()) { if ($isFast && ($resume = self::fastResume($torrent, $directory, $isAddPath))) { $torrent = $resume; } $cmd = new rXMLRPCCommand($isStart ? 'load_raw_start' : 'load_raw'); $cmd->addParameter(base64_encode($torrent->__toString()), "base64"); if (!$saveTorrent && is_string($fname)) { @unlink($fname); } $comment = $torrent->comment(); if ($comment) { if (isInvalidUTF8($comment)) { $comment = win2utf($comment); } if (strlen($comment) > 0) { $comment = "VRS24mrker" . rawurlencode($comment); if (strlen($comment) <= 4096) { $cmd->addParameter("d.set_custom2=" . $comment); } } } if ($label && strlen($label) > 0) { $label = rawurlencode($label); if (strlen($label) <= 4096) { $cmd->addParameter("d.set_custom1=" . $label); } } if ($directory && strlen($directory) > 0) { $cmd->addParameter(($isAddPath ? "d.set_directory=\"" : "d.set_directory_base=\"") . $directory . "\""); } if (is_array($addition)) { foreach ($addition as $key => $prm) { $cmd->addParameter($prm, 'string'); } } $req = new rXMLRPCRequest($cmd); if ($req->run() && !$req->fault) { $hash = $torrent->hash_info(); } } return $hash; }
protected static function correctItem(&$nfo) { if (empty($nfo["time"])) { $nfo["time"] = 0; } if (empty($nfo["size"])) { $nfo["size"] = 0; } if (empty($nfo["seeds"])) { $nfo["seeds"] = 0; } if (empty($nfo["peers"])) { $nfo["peers"] = 0; } if (isInvalidUTF8($nfo["name"])) { $nfo["name"] = commonEngine::toUTF($nfo["name"], "ISO-8859-1"); } }
function rtAddTorrent($fname, $isStart, $directory, $label, $dbg = false) { if ($isStart) { $method = 'load_start_verbose'; } else { $method = 'load_verbose'; } if ($dbg) { rtDbg(__FUNCTION__, "1" . $fname); } $torrent = new Torrent($fname); if ($dbg) { rtDbg(__FUNCTION__, "2"); } if ($torrent->errors()) { if ($dbg) { rtDbg(__FUNCTION__, "fail to create Torrent() object"); } return false; } if ($directory && strlen($directory) > 0) { $directory = rtMakeStrParam("d.set_directory=\"" . $directory . "\""); } else { $directory = ""; } $comment = $torrent->comment(); if ($comment && strlen($comment) > 0) { if (isInvalidUTF8($comment)) { $comment = win2utf($comment); } if (strlen($comment) > 0) { $comment = rtMakeStrParam("d.set_custom2=VRS24mrker" . rawurlencode($comment)); if (strlen($comment) > 4096) { $comment = ''; } } } else { $comment = ""; } if ($label && strlen($label) > 0) { $label = rtMakeStrParam("d.set_custom1=\"" . rawurlencode($label) . "\""); } else { $label = ""; } $addition = ""; global $saveUploadedTorrents; $delete_tied = $saveUploadedTorrents ? "" : rtMakeStrParam("d.delete_tied="); $content = '<?xml version="1.0" encoding="UTF-8"?>' . '<methodCall>' . '<methodName>' . $method . '</methodName>' . '<params>' . '<param><value><string>' . $fname . '</string></value></param>' . $directory . $comment . $label . $addition . $delete_tied . '</params></methodCall>'; //if( $dbg ) rtDbg( __FUNCTION__, $content ); $res = rXMLRPCRequest::send($content); if ($dbg && !empty($res)) { rtDbg(__FUNCTION__, $res); } if (!$res || ($res = '')) { return false; } else { return $torrent->hash_info(); } }
protected function search($pattern, $subject, $needTranslate = false) { preg_match($pattern, $subject, $out); if (isset($out[1])) { $out[1] = strtr($out[1], array('<![CDATA[' => '', ']]>' => '')); if ($this->encoding && $this->encoding != "utf-8") { $out[1] = $this->convert($out[1], $needTranslate); } else { if ($needTranslate) { $out[1] = self::removeTegs($out[1]); } } if (isInvalidUTF8($out[1])) { $out[1] = win2utf($out[1]); } return trim($out[1]); } else { return ''; } }
public static function sendTorrent($fname, $isStart, $isAddPath, $directory, $label, $saveTorrent, $isFast, $isNew = true, $addition = null) { $hash = false; $torrent = is_object($fname) ? $fname : new Torrent($fname); if (!$torrent->errors()) { if ($isFast && ($resume = self::fastResume($torrent, $directory, $isAddPath))) { $torrent = $resume; } else { if ($isNew) { if (isset($torrent->{'libtorrent_resume'})) { unset($torrent->{'libtorrent_resume'}); } } } if ($isNew) { if (isset($torrent->{'rtorrent'})) { unset($torrent->{'rtorrent'}); } } $raw_value = base64_encode($torrent->__toString()); $filename = is_object($fname) ? $torrent->getFileName() : $fname; if (strlen($raw_value) < self::RTORRENT_PACKET_LIMIT || is_null($filename) || !isLocalMode()) { $cmd = new rXMLRPCCommand($isStart ? 'load_raw_start' : 'load_raw'); $cmd->addParameter($raw_value, "base64"); if (!is_null($filename) && !$saveTorrent) { @unlink($filename); } } else { $cmd = new rXMLRPCCommand($isStart ? 'load_start' : 'load'); $cmd->addParameter($filename); } if (!is_null($filename) && rTorrentSettings::get()->iVersion >= 0x805) { $cmd->addParameter(getCmd("d.set_custom") . "=x-filename," . rawurlencode(getFileName($filename))); } $req = new rXMLRPCRequest(); if ($directory && strlen($directory) > 0) { if (!rTorrentSettings::get()->correctDirectory($directory)) { return false; } $req->addCommand(new rXMLRPCCommand('execute', array('mkdir', '-p', $directory))); $cmd->addParameter(($isAddPath ? getCmd("d.set_directory=") . "\"" : getCmd("d.set_directory_base=") . "\"") . $directory . "\""); } $comment = $torrent->comment(); if ($comment) { if (isInvalidUTF8($comment)) { $comment = win2utf($comment); } if (strlen($comment) > 0) { $comment = "VRS24mrker" . rawurlencode($comment); if (strlen($comment) <= 4096) { $cmd->addParameter(getCmd("d.set_custom2=") . $comment); } } } if ($label && strlen($label) > 0) { $label = rawurlencode($label); if (strlen($label) <= 4096) { $cmd->addParameter(getCmd("d.set_custom1=") . $label); } } if (is_array($addition)) { foreach ($addition as $key => $prm) { $cmd->addParameter($prm, 'string'); } } $req->addCommand($cmd); if ($req->run() && !$req->fault) { $hash = $torrent->hash_info(); } } return $hash; }