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