From 7e874e5c0d6476ea6764a27fca0de3d252ef78b1 Mon Sep 17 00:00:00 2001 From: mykola2312 <49044616+mykola2312@users.noreply.github.com> Date: Fri, 18 Mar 2022 20:12:30 +0200 Subject: [PATCH] retracker: implemented proxy-announcing to all trackers registered in database & retrieve peers to database. --- announce.php | 41 ++++++++++++++++++++++++++--------------- peer.php | 18 ++++++++++++++++++ 2 files changed, 44 insertions(+), 15 deletions(-) diff --git a/announce.php b/announce.php index 9d2c661..0c68e56 100644 --- a/announce.php +++ b/announce.php @@ -1,8 +1,7 @@ setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); -$stmt = $conn->prepare("REPLACE INTO `peers` (info_hash, ip, port, update_time) VALUES (:info_hash, :ip, :port, :update_time)"); -$peer = new Peer($hash, is_loopback($ip) ? $externalIp : $ip, $port); -$peer->bind($stmt); +$peers = array(); +array_push($peers, $clientPeer); + +$stmt = $conn->prepare("SELECT * FROM `trackers`"); $stmt->execute(); +$trackers = $stmt->fetchAll(PDO::FETCH_CLASS, Tracker::class); +foreach($trackers as $tracker) { + $remotePeers = $tracker->announce($hash, + $clientPeer->getIp(), $clientPeer->getPort(), + isset($_GET["peer_id"]) ? $_GET["peer_id"] : null, + isset($_GET["uploaded"]) ? $_GET["uploaded"] : 0, + isset($_GET["downloaded"]) ? $_GET["downloaded"] : 0, + isset($_GET["left"]) ? $_GET["left"] : 0 + ); + + if ($remotePeers != false) { + $peers = array_merge($peers, $remotePeers); + } +} + +foreach($peers as $peer) { + $stmt = $conn->prepare("REPLACE INTO `peers` (info_hash, ip, port, update_time) VALUES (:info_hash, :ip, :port, :update_time)"); + $peer->bind($stmt); + $stmt->execute(); +} $peers = ''; diff --git a/peer.php b/peer.php index 4d1f418..855f8a5 100644 --- a/peer.php +++ b/peer.php @@ -1,5 +1,15 @@ bindValue(":port", $this->port, PDO::PARAM_INT); $stmt->bindValue(":update_time", $this->update_time, PDO::PARAM_STR); } + + public function getIp() { + return $this->ip; + } + + public function getPort() { + return $this->port; + } } ?> \ No newline at end of file