Skip to content

Proyecto 1c-2022: Cliente y Tracker de BitTorrent - FIUBA - Taller de programación 1 Curso Deymonnaz. Repositorio original:

License

Notifications You must be signed in to change notification settings

MiguelV5/Ferris-Torrent_taller1-fiuba

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

75 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Proyecto Taller de Programación I (1C-2022) - Ferris-torrent (Agregado: Ferris-Tracker)







Grupo - Ferris Appreciators

Integrantes


Objetivo del Proyecto (PRE-AGREGADO [Entrega final de Cursada])

El objetivo del proyecto es implementar un Cliente de BitTorrent con funcionalidades acotadas, detalladas aquí.

Objetivo del agregado (AGREGADO [Fechas de final Jul-Ago])

Se tiene como objetivo de funcionalidad agregada implementar un Tracker HTTP de BitTorrent con funcionalidades acotadas, y su visualización en un sitio web por medio del browser. Funcionalidades detalladas aquí.


Ejecución

En general, los distintos <tipo_de_log> son: info, debug, trace.

NOTA IMPORTANTE

Para poder ejecutar el cliente con su interfaz gráfica es necesario tener instalado gtk4. Preferiblemente desde una distribución de linux que soporte la instalación para evitar inconvenientes de incompatibilidad o instalación compleja. Ej. Ubuntu 22.04 LTS:

sudo apt-get install libgtk-4-bin libgtk-4-common libgtk-4-dev libgtk-4-doc 

Cliente Ferris Torrent

RUST_LOG=<tipo_de_log> cargo run -p ferris_torrent -- <ARGS: archivos_torrent / path_a_directorio_con_torrents>

Ferris Tracker

RUST_LOG=<tipo_de_log> cargo run -p ferris_tracker

Tests

Generales (Incluye todos los packages del Workspace de Cargo.toml)

cargo test

Solo tests de Ferris Torrent

cargo test -p ferris_torrent

Adicionalmente si se quiere correr un solo test específico o un modulo con tests, ejecutar:

cargo test -p ferris_torrent -- --test <nombre_del_modulo/test>

Solo tests de Ferris Tracker

cargo test -p ferris_tracker

Funcionalidad soportada

Primera versión (Release: checkpoint)

  • Recibir por linea de comandos la ruta de un archivo .torrent
  • Dicho .torrent es leído y decodificado según el estándar y su información almacenada.
  • Se conecta al Tracker obtenido en el .torrent y se comunica con el mismo, decodifica su respuesta y obtiene una lista de peers.
  • Se conecta con un peer y realiza la comunicación completa con el mismo para poder descargar una pieza del torrent.
  • La pieza descargada es validada internamente, pero puede verificarse también por medio del script sha1sum de linux.

Segunda versión (Release: Entrega final de cursada)

  • Permite recibir por linea de comandos la ruta de uno o más archivos ".torrent"; o un la ruta a un directorio con ellos.
  • Se ensamblan las piezas de cada torrent para obtener el archivo completo.
  • Funciona como server, es decir, responde a requests de piezas.
  • Cuenta con interfaz gráfica.
  • Cuénta con un logger en archivos que indica cuándo se descargan las piezas (y adicionalmente se loggean errores importantes).
  • Se pueden customizar el puerto en el que se escuchan peticiones, directorio de descargas y de logs mediante un archivo config.txt
  • Puede descargar más de un torrent concurrentemente, y por cada uno de esos torrents puede descargar más de una pieza de la misma

Tercera versión (Release: Entrega final (Agregado 1c 2022))

  • Implementación de Tracker que recibe y responde correctamente desde localhost:7878, sea:
    • En browser con endpoints index, /stats y /docs
    • En comunicación directa desde un cliente de BitTorrent (usando el endpoint /announce)
  • Responde el endpoint /stats mostrando estadísticas sobre peers conectados, peers con descarga completa y cantidad de torrents en el tracker. Estas estadísticas son mostradas en el sitio web HTML que puede ser accedido desde un browser. Esta página permite la visualización filtrada de las estadísticas de acuerdo a períodos fijos de tiempo (última hora, últimas 5 horas, último día, últimos 3 días) y con determinadas frecuencias (horas, minutos).
  • Responde el endpoint /announce correctamente a uno o más peers determinados, siguiendo la documentación encontrada en el endpoint /docs.
  • Para acceso a los distintos endpoints simplemente ejecutar el tracker y abrir en el browser la página en localhost:7878. Desde allí se provee la interfáz front para ingresar a los distintos endpoints mencionados.
  • (No se agrega más funcionalidad al Cliente Ferris-Torrent)

About

Proyecto 1c-2022: Cliente y Tracker de BitTorrent - FIUBA - Taller de programación 1 Curso Deymonnaz. Repositorio original:

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages