wiki:ServidorTorrents

Version 17 (modified by trac, 7 years ago) (diff)

--

Servicios OpenGnSys relacionados con el protocolo P2P bittorrent

Script de arranque demonios OpenGnSys - Integrado correctamente -

  • El script de arranque /etc/init.d/opengnsys
    • Este fichero en el subversión es opengnsys.init,
    • El instalador de OpenGnSys se encarga de renombrarlo y ubicarlo en /etc/init.d/opengnsys
  • El fichero /etc/default/opengnsys para la configuración de los servicios P2P en el inicio del sistema:
# RUN_OGADMSERVER run OpenGnSys Admin service.
# RUN_OGADMREPO run OpenGnSys Repository Manager service.
# RUN_BTTRACKER run Bittorrent Tracker
# RUN_BTSEEDER starts seeding of selected torrent files
RUN_OGADMSERVER="yes"
RUN_OGADMREPO="yes"
RUN_BTTRACKER="yes"
RUN_BTSEEDER="yes"

Descripción servicio de tracker

El servicio de tracker ofrece información a los clientes de qué partes de la imagen a descargar tiene cada uno de ellos. Esto permitirá saber a quien solicitárselas. En este caso, aparte de la configuración de puerto, por defecto el 1234, etc. se ejecuta con la opción de que sólo permita descargar los archivos .torrent del directorio del repositorio de imágenes, /opt/opengnsys/images. Además de la opción para permitir descargar los torrents por http, de la forma http://$IPRepositorio:Puerto/file?hash={hash} para clientes. El hash y el estado de los torrents se pueden mirar conectando a http://$IPRepositorio:Puerto

Depurando el Tracker

El log va a /opt/opengnsys/log/bttrack.log

Implementación del servicio tracker en OG

Inicialmente estamos dando los servicios desde el mismo equipo donde tenemos el repositorio. Tenemos intalado un tracker y un cliente multiple que hace el papel "semillero" compartiendo todas imágenes que tenemos.

El tracker está implementado con bittrorrent.

Las primeras pruebas se han hecho con bttrack de bittornado y de bittorrent. También hemos probado como tracker el modulo de apache mod_bt:

  • Por ahora a la configuración por defecto sólo le hemos cambiado el puerto.
  • Tiene la desventaja que en el informe que muestra por web inicialmente sólo no aparecen los nombres de los archivos compartidos sino que se identifican por su hash
  • Existe una página register donde nos permiten poner los datos del nombre del archivo y el tamaño.
  • Habría que mirar la seguridad, con la configuración por defecto parece cualquier equipo de la red podría utilizarlo como tracker.

Descripción servicio "Seeder" (Semillero ?)

Este servicio ejerce como fuente que comparte las imagenes por torrent. El programa que se ejecuta es btlaunchmany.bittornado que cada sesenta segundos escanea el directorio que se le pasa como parámetro en busca de archivos .torrent, si encuentra un nuevo archivo .torrent se pone a descargarlo y compartirlo hasta que desaparece del directorio. Esto se puede hacer también renombrándolo a .torrent.inactive.

El directorio en que se buscan los .torrent es el del repositorio de imagenes /opt/opengnsys/images

Depurando el Seeder

El ejecutable estándar da demasiada información para sacarla a un log, se puede comprobar ejecutando /usr/bin/btlaunchmany.bittornado /opt/opengnsys/images así que de momento no hay archivo de log. Para ver el estado se debería cambiar la configuración de arranque de los servicios para que no arrancara por defecto (BT_SEEDER="no") y lanzarlo manualmente con el comando screen screen /usr/bin/btlaunchmany.bittornado /opt/opengnsys/images usando ctrl-A + D para salir de esa pantalla y screen -x para volver a verla.

notas sobre btlaunchmany

Para lanzar todos los archivos de la imágenes a la vez estamos usando el comando btlaunchmany (no da problemas con los ficheros generados con ctorrent). El cliente comprueba los ficheros torrent que existe en el directorio indicado al arrancar.

Con la opción "--parse_dir_interval seconds" definimos cada cuantos segundos queremos que revise el directorio en busca de cambios (por defecto 0, que es igual a nunca), nosotros ponemos la opción a 20 segundos.

En la función para crear el fichero torrent revisamos si existe un archivo con el mismo nombre, si es así lo borramos y esperamos un tiempo igual al --parse_dir_interval para que de tiempo al cliente a detectar que el fichero no existe. Luego generamos el nuevo fichero torrent de forma que el cliente no lo confunde con el anterior y no da error (descrito más adelante). Si modificaramos el valor de la opción "--parse_dir_interval seconds" al arrancar el cliente, también tendriamos que modificarlo en la función ogCreateTorrent.

Procesos Torrent pendientes de integrar

Creación de archivos .torrent

Para crear un nuevo .torrent desde el servidor de repositorio:

btmakemetafile.bittornado http://$IPRepositorio:6969/announce /opt/opengnsys/images/$ImageName --target /opt/opengnsys/images/$ImageName.img.torrent

Activación/Desactivación imagenes servidas por P2P

Si está el .torrent en /opt/opengnsys/images/ se comparte y distribuye, en cuanto se quita o se renombra a cualquier otra cosa, por ejemplo .torrent.inactive, deja de compartirse en el siguiente escaneo del directorio.