Partimos de los explicado en Añadir soporte Bittorrent en servidor y de la librería FileTransfer.lib.
Por ahora sólo está probándose cómo compartir ficheros con un servidor centralizado que haría de tracker. Falta ver como compartir ficheros cuando uno de los clientes sea el que sirva de tracker.
Para que un cliente OpenGnsys pueda convertirse puntualmente en tracker debe de disponer de las herramientas necesarias para ello.
Tracker: bttrack de bittornado? test OK
Seeder: ctorrent ? test OK
Exportar el fichero Torrent: nfs ?
Pendiente de definir cuales de éstas serán las utilizadas por defecto en el sistema OpenGnsys.
Según http://www.informatica.us.es:8080/opengnsys/wiki/DirsRepositorio
El cliente cuando deba de crear el fichero torrent a partir de la imagen (*.img) almacenada en su cache, con un punto de montaje tal /mnt/OGIMG/xxx.img.
Para inciar la funcionalidad Tracker+Semiller, debe lanzar la función StartTracker y ShareTorrent (información /mnt/OGIMG/xxx.img) y tenga accesible el fichero torrent (export nfs).
Accedera al fichero torrent mountado la cache del cliente Tracker+Semillero en /mnt/$IP/
Siguiendo en tal caso, como si estuviese conectado a un Repo de OpenGnsys
Se han modificado los script de crear y restaurar la imagen para que puedan utilizar el protocolo torrent:
Crea una imagen de una partición. Siempre que se crea una imagen se genera el archivo torrent correspondiente en el mismo directorio que la imagen. Si se guarda en el repositorio utiliza como tracker el el mismo servidor, si se guarda en cache utiliza de tracker el equipo local.
La sintaxis del script no ha cambiado:
createImagen ndisco nparticion REPO|CACHE imagen
ej: createImagen 1 2 REPO Ubuntu9
Restaura una partición desde una imagen, la imagen podrá estar en cache o en el repositorio.
Si queremos restaurar el fichero desde la cache primero se comprueba si ya esta guardado en local y en caso de no existir se lo trae del repositorio por el protocolo torrent o unicast.
La sintaxis incluye el protocolo para la transferencia del fichero como parámetro opcional, necesario si se restaura desde cache.
restoreImagen REPO|CACHE imagen num_disco num_particion [ TORRENT|UNICAST ]
ej: restoreImagen CACHE WinXP 1 1 TORRENT
Nota: necesita modificación, despues de ejecutar la salida del teclado no se ve en pantalla, aunque sí funciona.
Por definir.
En la librería !FileTransfer.lib aparecen varias funciones relacionadas con torrent. Pasamos a comentarlas:
Crea un fichero torrent con la información del archivo de una imagen, se guardará en el mismo directorio donde este la imagen. Hemos de decir darle como parámetro la imagen y la ip del tracker.
ogCreateTorrent [ Repositorio| num_disco num_particion ] Imagen IpTracker
ej: ogCreateTorrent 1 1 WinXP 10.1.12.90
ogCreateTorrent REPO Suse 10.1.12.90
Comparte una imagen por el protocolo torrent. Hemos de decirle donde está guardado el fichero torrent, le damos los parámetros de la imagen.
ogShareTorrent [ Repositorio| num_disco num_particion ] Imagen
ej: ogShareTorrent 1 1 WinXP 10.1.12.90
ogShareTorrent REPO Suse 10.1.12.90
Obtiene una imagen del repositorio por protocolo torrent, copiándola a la cache local.
ogReceiveTorrent [ Repositorio| num_disco num_particion ] [path_relativo_Imagen] [path_completo_imagen]
ej: ogReceiveTorrent 1 1 WinXP
ogReceiveTorrent REPO Suse
ogReceiveTorrent /mnt/sda2/Ubuntu9