diff --git a/README.md b/README.md index 218f1f4..5db2375 100644 --- a/README.md +++ b/README.md @@ -32,9 +32,9 @@ El presente documento detalla los endpoints de la API, con sus respectivos pará 10. [Exportar una Imagen](#exportar-una-imagen) - `PUT /ogrepository/v1/repo/images` 11. [Crear archivos auxiliares](#crear-archivos-auxiliares) - `POST /ogrepository/v1/images/torrentsum` 12. [Enviar paquete Wake On Lan](#enviar-paquete-wake-on-lan) - `POST /ogrepository/v1/wol` -13. [Enviar una Imagen mediante UDPcast](#enviar-una-imagen-mediante-udpcast) - `POST /ogrepository/v1/udpcast/images/{ID_img}` -14. [Enviar una Imagen mediante UFTP](#enviar-una-imagen-mediante-uftp) - `POST /ogrepository/v1/uftp/images/{ID_img}` -15. [Enviar una Imagen mediante P2P](#enviar-una-imagen-mediante-p2p) - `POST /ogrepository/v1/p2p/images/{ID_img}` +13. [Enviar una Imagen mediante UDPcast](#enviar-una-imagen-mediante-udpcast) - `POST /ogrepository/v1/udpcast` +14. [Enviar una Imagen mediante UFTP](#enviar-una-imagen-mediante-uftp) - `POST /ogrepository/v1/uftp` +15. [Enviar una Imagen mediante P2P](#enviar-una-imagen-mediante-p2p) - `POST /ogrepository/v1/p2p` 16. [Ver Estado de Transmisiones UDPcast](#ver-estado-de-transmisiones-udpcast) - `GET /ogrepository/v1/udpcast` 17. [Cancelar Transmisión UDPcast](#cancelar-transmisión-udpcast) - `DELETE /ogrepository/v1/udpcast/images/{ID_img}` 18. [Cancelar Transmisiones P2P](#cancelar-transmisiones-p2p) - `DELETE /ogrepository/v1/p2p` @@ -406,8 +406,9 @@ curl -X PUT -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d --- ### Crear archivos auxiliares -Se crearán los archivos ".sum", ".full.sum", ".size" y ".torrent", para la imagen especificada como parámetro. -Se puede hacer con el script "**createTorrentSum.py**", que debe ser llamado por el endpoint. +Se crearán los archivos ".sum", ".full.sum", ".size" y ".torrent", para la imagen especificada como parámetro. +Se puede hacer con el script "**createTorrentSum.py**", que debe ser llamado por el endpoint. +**NOTA**: La versión actual de este script requiere que se le pase el nombre de la imagen (con extensión, e incluyendo el nombre del directorio correspondiente a la OU, si fuera el caso) como unico parámetro. Este parámetro no puede obtenerse en la API, a partir del ID de imagen (como en otros casos), porque el ID corresponde al contenido del archivo "full.sum" asociado (que no estará creado hasta que no se ejecute este script). **URL:** `/ogrepository/v1/images/torrentsum` **Método HTTP:** POST @@ -427,10 +428,11 @@ curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d - **Código 200 OK:** Los archivos se han creado exitosamente. --- -### Enviar paquete Wake On Lan +### Enviar paquete Wake On Lan Se enviará un paquete Wake On Lan a la dirección MAC especificada, a través de la IP de broadcast especificada. Se puede hacer con el script "**sendWakeOnLan.py**", que debe ser llamado por el endpoint. +**NOTA**: La versión actual de este script requiere que se le pase la dirección IP de broadcast como primer parámetro, y la dirección MAC destino como segundo parámetro. Estos datos deben enviarse desde ogCore (en el JSON). **URL:** `/ogrepository/v1/wol` **Método HTTP:** POST @@ -453,14 +455,13 @@ curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d Se enviará la imagen especificada por Multicast, mediante la aplicación UDPcast. Se puede hacer con el script "**sendFileMcast.py**", que a su vez llama al binario "**udp-sender**", que es quien realmente realiza el envío. -**NOTA**: Los datos multicast deben extraerse de la configuracién del Aula/OU (incluido el puerto). +**NOTA**: La versión actual de este script requiere que se le pase el nombre de la imagen (con extensión, e incluyendo el nombre del directorio correspondiente a la OU, si fuera el caso) como primer parámetro, y los datos de transferencia como segundo parámetro (en una cadena, con los datos separados por dos puntos). El primer parámetro se obtiene en la API, a partir del ID de la imagen (que corresponde al contenido del archivo "full.sum"), pero los datos de transferencia deben enviarse desde ogCore (y luego son tratados en la API, para construir la cadena correspondiente al parámetro). -**URL:** `/ogrepository/v1/udpcast/images/{ID_img}` +**URL:** `/ogrepository/v1/udpcast` **Método HTTP:** POST **Cuerpo de la Solicitud (JSON):** -- **image**: Nombre de la imagen (con extensión). -- **ou_subdir**: Subdirectorio correspondiente a la OU (o "none" si no es el caso). +- **ID_img**: Identificador de la imagen (correspondiente al contenido del archivo "full.sum" asociado). - **port**: Puerto Multicast. - **method**: Modalidad half-duplex o full-duplex. - **ip**: IP Multicast. @@ -471,7 +472,7 @@ Se puede hacer con el script "**sendFileMcast.py**", que a su vez llama al binar **Ejemplo de Solicitud:** ```bash -curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"image":"Windows10.img", "ou_subdir":"none", "port":"9000", "method":"full", "ip":"239.194.17.2", "bitrate":"70M", "nclients":"20", "maxtime":"120"}' http://example.com/ogrepository/v1/udpcast/images/{ID_img} +curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"ID_img":"image_id", "port":"9000", "method":"full", "ip":"239.194.17.2", "bitrate":"70M", "nclients":"20", "maxtime":"120"}' http://example.com/ogrepository/v1/udpcast ``` **Respuestas:** - **Código 500 Internal Server Error:** Ocurrió un error al enviar la imagen. @@ -482,15 +483,14 @@ curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d ### Enviar una Imagen mediante UFTP Se enviará la imagen especificada por Unicast o Multicast, mediante el protocolo "UFTP". -Se puede hacer con el script "**sendFileUFTP.py**", que requiere que previamente los clientes ogLive destino se pongan en escucha con un daemon "UFTPD" (ejecutando el script "**listenUFTPD.py**"). -**NOTA**: Los envíos mediante "UFTP" funcionan al revés que los envíos mediante "UDPcast" (con este último, primero se debe ejecutar un comando en el servidor, y luego en los clientes). +Se puede hacer con el script "**sendFileUFTP.py**", que requiere que previamente los clientes ogLive destino se pongan en escucha con un daemon "UFTPD" (ejecutando el script "**listenUFTPD.py**"). Esto funciona al revés que "UDPcast", ya que primero se debe ejecutar un comando en los clientes, y luego en el servidor. +**NOTA**: La versión actual de este script requiere que se le pase el nombre de la imagen (con extensión, e incluyendo el nombre del directorio correspondiente a la OU, si fuera el caso) como primer parámetro, y los datos de transferencia como segundo parámetro (en una cadena, con los datos separados por dos puntos). El primer parámetro se obtiene en la API, a partir del ID de la imagen (que corresponde al contenido del archivo "full.sum"), pero los datos de transferencia deben enviarse desde ogCore (y luego son tratados en la API, para construir la cadena correspondiente al parámetro). -**URL:** `/ogrepository/v1/uftp/images/{ID_img}` +**URL:** `/ogrepository/v1/uftp` **Método HTTP:** POST **Cuerpo de la Solicitud (JSON):** -- **image**: Nombre de la imagen (con extensión). -- **ou_subdir**: Subdirectorio correspondiente a la OU (o "none" si no es el caso). +- **ID_img**: Identificador de la imagen (correspondiente al contenido del archivo "full.sum" asociado). - **port**: Puerto Multicast. - **ip**: IP Unicast/Multicast. - **bitrate**: Velocidad de transmisión (con "K" para Kbps, "M" para Mbps o "G" para Gbps). @@ -498,7 +498,7 @@ Se puede hacer con el script "**sendFileUFTP.py**", que requiere que previamente **Ejemplo de Solicitud:** ```bash -curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"image":"Windows10.img", "ou_subdir":"none", "port":"9000", "ip":"239.194.17.2", "bitrate":"1G"}' http://example.com/ogrepository/v1/uftp/images/{ID_img} +curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"ID_img":"image_id", "port":"9000", "ip":"239.194.17.2", "bitrate":"1G"}' http://example.com/ogrepository/v1/uftp ``` **Respuestas:** - **Código 500 Internal Server Error:** Ocurrió un error al enviar la imagen. @@ -508,23 +508,26 @@ curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d --- ### Enviar una Imagen mediante P2P -Se enviará la imagen especificada mediante "P2P", iniciando el tracker y el seeder (que harán tracking y seed de los torrents contenidos en la raiz del subdirectorio especificado). -Se debe llamar al script "**runTorrentTracker.py**" y al script "**runTorrentSeeder.py**", especificando la ruta en la que está contenido el torrent (que debe estar en la raiz de dicha ruta). -**NOTA**: El directorio en el que está contenida la imagen y su torrent asociado puede obtenerse a partir del ID de la imagen (que corresponde al fullsum). +Se enviará la imagen especificada mediante "P2P", iniciando el tracker y el seeder (que harán tracking y seed de los torrents contenidos en la raiz del directorio especificado). +Se puede hacer con los scripts "**runTorrentTracker.py**" y "**runTorrentSeeder.py**", que deben ser llamados por el endpoint. +**NOTA**: La versión actual de estos scripts requiere que se le pase el directorio en el que está situada la imagen a enviar como único parámetro. Este dato se obtiene en la API, a partir del ID de la imagen (que corresponde al contenido del archivo "full.sum"). -**URL:** `/ogrepository/v1/p2p/images/{ID_img}` +**URL:** `/ogrepository/v1/p2p` **Método HTTP:** POST +**Cuerpo de la Solicitud (JSON):** +- **ID_img**: Identificador de la imagen (correspondiente al contenido del archivo "full.sum" asociado). + **Ejemplo de Solicitud:** ```bash -curl -X POST -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/p2p/images/{ID_img} +curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"ID_img":"image_id"}' http://example.com/ogrepository/v1/p2p ``` **Respuestas:** -- **Código 500 Internal Server Error:** Ocurrió un error al enviar la imagen. +- **Código 500 Internal Server Error:** Ocurrió un error al intentar enviar la imagen. - **Código 400 Bad Request:** No se ha encontrado la imagen especificada. -- **Código 200 OK:** La imagen se ha enviado exitosamente. +- **Código 200 OK:** La imagen se está enviando exitosamente. --- ### Ver Estado de Transmisiones UDPcast diff --git a/bin/sendFileUFTP.py b/bin/sendFileUFTP.py index ef6e8bb..c765b31 100644 --- a/bin/sendFileUFTP.py +++ b/bin/sendFileUFTP.py @@ -6,7 +6,7 @@ Este script envía mediante UFTP la imagen recibida como primer parámetro, al p a la velocidad de transferencia tambíén especificada en el segundo parámetro (la sintaxis de este parámetro es "Port:IP:Bitrate"). Previamente, los clientes deben haberse puesto a escuchar en la IP Multicast correspondiente (tanto para envíos Multicast como para envíos Unicast). -Paquetes APT requeridos: "uftp" +Paquetes APT requeridos: "uftp" (se puede instalar con "sudo apt install uftp"). Parámetros ------------