Advertisement
Guest User

Untitled

a guest
Jul 4th, 2015
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.93 KB | None | 0 0
  1. public function announce($passkey = null)
  2.     {
  3.         //Log::info(Input::all());
  4.  
  5.         $hash = bin2hex(Input::get('info_hash'));
  6.         $peerId = Input::get('peer_id');
  7.         $cryptedPeerid = md5($peerId);
  8.         $torrent = Torrent::where('info_hash', '=', $hash)->firstOrFail();
  9.         $user = User::where('passkey', '=', $passkey)->firstOrFail();
  10.         $client = Peer::where('md5_peer_id', '=', $cryptedPeerid)->first();
  11.  
  12.  
  13.         if(! $client)
  14.         {
  15.             // Set the torrent data
  16.             $client = new Peer();
  17.             $client->uploaded = Input::get('uploaded');
  18.             $client->downloaded = Input::get('downloaded');
  19.         }
  20.  
  21.         $peers = Peer::where('hash', '=', $hash)->take(50)->get()->toArray();
  22.         $torrent->leechers = Peer::whereRaw('`left` > 0 AND torrent_id =' $torrent->id)->count();
  23.         $torrent->seeders = Peer::whereRaw('`left` = 0 AND torrent_id =' $torrent->id)->count();;
  24.  
  25.         if(Input::get('event') == 'started')
  26.         {
  27.             $client->ip = Request::getClientIp();
  28.             $client->port = Input::get('port');
  29.             $client->left = Input::get('left');
  30.             $client->peer_id = Input::get('peer_id');
  31.             $client->md5_peer_id = md5($client->peer_id);
  32.             $client->uploaded = 0;
  33.             $client->downloaded = 0;
  34.             $client->hash = $hash;
  35.             $client->seeder = ($client->left == 0) ? true : false;
  36.             $client->user_id = $user->id;
  37.             $client->torrent_id = $torrent->id;
  38.         }
  39.  
  40.         if(Input::get('event') == 'completed')
  41.         {
  42.             $torrent->times_completed++;
  43.             $torrent->save();
  44.  
  45.             $client->left = 0;
  46.             $client->seeder = true;
  47.             $client->save();
  48.         }
  49.  
  50.         if(Input::get('event') == 'stopped')
  51.         {
  52.             $client->delete();
  53.             return Response::make('OK', 200, array('Content-Type' => 'text/plain'));
  54.         }
  55.  
  56.         // Modification de l'upload/download de l'utilisateur pour le ratio
  57.         if(Input::get('uploaded') > $client->uploaded)
  58.         {
  59.             $user->uploaded = $user->uploaded + (Input::get('uploaded') - $client->uploaded);
  60.         }
  61.  
  62.         if(Input::get('downloaded') > $client->downloaded)
  63.         {
  64.             $user->downloaded = $user->downloaded + (Input::get('downloaded') - $client->downloaded);
  65.         }
  66.  
  67.         $user->save();
  68.  
  69.         $client->save();
  70.  
  71.         $res['interval'] = 600; // Set to 60 for debug
  72.         $res['min interval'] = 300; // Set to 30 for debug
  73.         //$res['tracker_id'] = $client->md5_peer_id; // A string that the client should send back on its next announcements.
  74.         $res['complete'] = $torrent->seeders;
  75.         $res['incomplete'] = $torrent->leechers;
  76.         $res['peers'] = $peers;
  77.  
  78.         //Log::info($res);
  79.  
  80.         return Response::make(Bencode::bencode($res), 200, array('Content-Type' => 'text/plain'));
  81.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement