Пример #1
0
 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;
 }
Пример #2
0
 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");
     }
 }
Пример #3
0
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();
    }
}
Пример #4
0
 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 '';
     }
 }
Пример #5
0
 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;
 }