Un tracker BitTorrent en un .php y una tabla MySQL

Esto lleva un rato sin actualizar, así que traigo una cosilla que puede resultar interesante, un tracker de BitTorrent que solo ocupa un archivo .php de 250 líneas y que necesita únicamente una tabla en una base de datos MySQL, además logicamente del servidor web [ announce.php ]

Para montar el tracker hay que subirlo con el nombre announce.php al directorio raíz, de forma que quede algo así: http://www.miservidor.com/announce.php y modificar estas variables:

* $dbhost: La dirección del servidor MySQL.

* $dbuser: El usuario del servidor MySQL.

* $dbpass: La contraseña del servidor MySQL.

* $dbname: La base de datos que se utilizará.
*
* $dbtable: El nombre de la tabla.
*

La estructura de la tabla es esta

* Columnas:

  • Peer_id: char(28)
  • info_hash: char(28)
  • port: smallint unsigned
  • uploaded: int(1)
  • downloaded: int(1)
  • to_go: int(1)
  • ip: varchar(15)
  • peer_key: varchar(255)
  • completed: boolean
  • last_update: int(1)
    *

* Claves:

* Peer_id

* info_hash
*

O directamente: create table peers( peer_id char(28), info_hash char(28), port smallint unsigned, uploaded int(1), downloaded int(1), to_go int(1), ip varchar(15), peer_key varchar(255), completed boolean, last_update int(1),KEY (peer_id), KEY (info_hash));

Otros parámetros que pueden ser interesantes:

* $timeout: Tiempo que se mantendrán los datos de los clientes en la base
de datos.

* $default_peer_num: Número de pares que se envían por defecto.

* $max_peer_num: Número máximo de pares que se envían en cada petición.

* $interval: Intervalo de segundos entre peticiones del cliente.
*

Una cosa, el código está pensado para IPv4, si se envían IP's con el nuevo protocolo pueden pasar cosas extrañas, pero no supone un problema de seguridad para el servidor.

Nos vemos, dadle caña y avisad si no funciona que no me fio mucho :P

[Referencias] http://wiki.theory.org/BitTorrent_Tracker_Protocol

untagged

Como funciona BitTorrent( 1 ): los archivos *.torrent » « [Cheatsheet] de variables inseguras en PHP