function getTime($keyconnexion, $idtorrentfilm) { \model\simple\Utilisateur::authentificationDistante($keyconnexion); if (!\config\Conf::$user["user"]) { throw new \Exception("Non User"); } $tf = \model\mysql\Torrentserie::getTorrentSerieParId($idtorrentfilm); $tf->mediainfo = json_decode($tf->mediainfo); if (is_null($tf)) { throw new \Exception("Id incorrect"); } if ($tf->fini === "0") { $cmds = array("d.name", "d.down.rate", "d.size_chunks", "d.completed_chunks", "d.chunk_size"); $req = new \model\xmlrpc\rXMLRPCRequest($tf->scgi); foreach ($cmds as $v) { $req->addCommand(new \model\xmlrpc\rXMLRPCCommand($tf->scgi, $v, $tf->hash)); } if ($req->success()) { $tf->nomtorrent = $req->val[0]; $get_completed_chunks = $req->val[3]; $get_size_chunks = $req->val[2]; $get_chunk_size = $req->val[4]; $tf->timerestant = $req->val[1] > 0 ? floor(($get_size_chunks - $get_completed_chunks) * $get_chunk_size / $req->val[1]) : -1; //Eta 9 (Temps restant en seconde) } } $this->set("file", $tf); }
function xmlrpcrxmlrpcrequestall() { $cmds = array("d.get_hash=", "d.is_open=", "d.is_hash_checking=", "d.is_hash_checked=", "d.get_state=", "d.get_name=", "d.get_size_bytes=", "d.get_completed_chunks=", "d.get_size_chunks=", "d.get_bytes_done=", "d.get_up_total=", "d.get_ratio=", "d.get_up_rate=", "d.get_down_rate=", "d.get_chunk_size=", "d.get_custom1=", "d.get_peers_accounted=", "d.get_peers_not_connected=", "d.get_peers_connected=", "d.get_peers_complete=", "d.get_left_bytes=", "d.get_priority=", "d.get_state_changed=", "d.get_skip_total=", "d.get_hashing=", "d.get_chunks_hashed=", "d.get_base_path=", "d.get_creation_date=", "d.get_tracker_focus=", "d.is_active=", "d.get_message=", "d.get_custom2=", "d.get_free_diskspace=", "d.is_private=", "d.is_multi_file=", "d.get_throttle_name=", "d.get_custom=chk-state", "d.get_custom=chk-time", "d.get_custom=sch_ignore", 'cat="$t.multicall=d.get_hash=,t.get_scrape_complete=,cat={#}"', 'cat="$t.multicall=d.get_hash=,t.get_scrape_incomplete=,cat={#}"', 'cat=$d.views=', "d.get_custom=seedingtime", "d.get_custom=addtime"); $cmd = new \model\xmlrpc\rXMLRPCCommand("d.multicall", "main"); $cmd->addParameters(array_map("\\model\\xmlrpc\\rTorrentSettings::getCmd", $cmds)); $cnt = count($cmd->params) - 1; $req = new \model\xmlrpc\rXMLRPCRequest(5001, $cmd); $t = null; if ($req->success()) { $i = 0; $tmp = array(); $status = array('started' => 1, 'paused' => 2, 'checking' => 4, 'hashing' => 8, 'error' => 16); while ($i < count($req->val)) { $torrent = null; $state = 0; $is_open = $req->val[$i + 1]; $is_hash_checking = $req->val[$i + 2]; $is_hash_checked = $req->val[$i + 3]; $get_state = $req->val[$i + 4]; $get_hashing = $req->val[$i + 24]; $is_active = $req->val[$i + 29]; $msg = $req->val[$i + 30]; if ($is_open != 0) { $state |= $status["started"]; if ($get_state == 0 || $is_active == 0) { $state |= $status["paused"]; } } if ($get_hashing != 0) { $state |= $status["hashing"]; } if ($is_hash_checking != 0) { $state |= $status["checking"]; } if ($msg != "" && $msg != "Tracker: [Tried all trackers.]") { $state |= $status["error"]; } $torrent[] = $state; //state 0 $torrent[] = $req->val[$i + 5]; //nom 1 $torrent[] = $req->val[$i + 6]; //taille 2 $get_completed_chunks = $req->val[$i + 7]; $get_hashed_chunks = $req->val[$i + 25]; $get_size_chunks = $req->val[$i + 8]; $chunks_processing = $is_hash_checking == 0 ? $get_completed_chunks : $get_hashed_chunks; $done = floor($chunks_processing / $get_size_chunks * 1000); $torrent[] = $done; // 3 $torrent[] = $req->val[$i + 9]; //downloaded 4 $torrent[] = $req->val[$i + 10]; //Uploaded 5 $torrent[] = $req->val[$i + 11]; //ratio 6 $torrent[] = $req->val[$i + 12]; //UL 7 $torrent[] = $req->val[$i + 13]; //DL 8 $get_chunk_size = $req->val[$i + 14]; $torrent[] = $req->val[$i + 13] > 0 ? floor(($get_size_chunks - $get_completed_chunks) * $get_chunk_size / $req->val[$i + 13]) : -1; //Eta 9 (Temps restant en seconde) /*$get_peers_not_connected = $req->val[$i+17]; $get_peers_connected = $req->val[$i+18]; $get_peers_all = $get_peers_not_connected+$get_peers_connected;*/ $torrent[] = $req->val[$i + 16]; //Peer Actual 10 $torrent[] = $req->val[$i + 19]; //Seed Actual 11 $seeds = 0; foreach (explode("#", $req->val[$i + 39]) as $k => $v) { $seeds += $v; } $peers = 0; foreach (explode("#", $req->val[$i + 40]) as $k => $v) { $peers += $v; } $torrent[] = $peers; //Peer total 12 $torrent[] = $seeds; //Seed tota 13 $torrent[] = $req->val[$i + 20]; //Taille restant 14 $torrent[] = $req->val[$i + 21]; //Priority 15 (0 ne pas télécharger, 1 basse, 2 moyenne, 3 haute) $torrent[] = $req->val[$i + 22]; //State change 16 (dernière date de change d'état) $torrent[] = $req->val[$i + 23]; //Skip total 17 $torrent[] = $req->val[$i + 26]; //Base Path 18 $torrent[] = $req->val[$i + 27]; //Date create 19 $torrent[] = $req->val[$i + 28]; //Focus tracker 20 /*try { torrent.comment = this.getValue(values,31); if(torrent.comment.search("VRS24mrker")==0) torrent.comment = decodeURIComponent(torrent.comment.substr(10)); } catch(e) { torrent.comment = ''; }*/ $torrent[] = $req->val[$i + 32]; //Torrent free diskspace 21 $torrent[] = $req->val[$i + 33]; //Torrent is private 22 $torrent[] = $req->val[$i + 34]; //Torrent is multifile 23 $torrent[] = preg_replace("#\n#", "", $req->val[$i + 42]); //Torrent seed time 24 $torrent[] = preg_replace("#\n#", "", $req->val[$i + 43]); //Torrent add time 25 $torrent[] = $msg; //Message tracker 26 $torrent[] = $req->val[$i]; //Hash 27 $tmp[$req->val[$i]] = $torrent; $i = $i + 44; } $data = $tmp; /*if (isset($_REQUEST["cid"])){ if ($anc = MyMemcache::value("listrt".$_REQUEST["cid"])){ foreach ($anc as $k=>$v){ if (!isset($tmp[$k])) $tmp[$k]=false; foreach($v as $kk=>$vv){ if (isset($tmp[$k][$kk]) && $tmp[$k][$kk] == $vv){ unset($tmp[$k][$kk]); } } if (count($tmp[$k]) ==0) unset($tmp[$k]); } } } $cid = uniqid(sha1(time()).$_COOKIE["login"]); if (!(MyMemcache::value("listrt".$cid,$data,60*5))) trigger_error("Impossible de mettre des données dans le cache");*/ $t[] = $tmp; //$t[]= $cid; //$t[]= $_SERVER["HTTP_HOST"]; //$t[]= disk_total_space(Variable::$documentroot."../rtorrent/data/salorium"); //$t[]= disk_total_space(Variable::$documentroot."../rtorrent/data/salorium")-disk_free_space(Variable::$documentroot."../rtorrent/data/salorium"); $cmds = array("get_up_rate", "get_upload_rate", "get_up_total", "get_down_rate", "get_download_rate", "get_down_total"); $req = new \model\xmlrpc\rXMLRPCRequest(5001); foreach ($cmds as $cmd) { $req->addCommand(new \model\xmlrpc\rXMLRPCCommand(5001, $cmd)); } if ($req->success()) { $t[] = $req->val; } } if (is_null($t)) { trigger_error("Impossible de se connecter à rtorrent :("); } var_dump($t); }