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"
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
El log va a /opt/opengnsys/log/bttrack.log
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:
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
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.
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.
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
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.