|
|
@ -4,10 +4,10 @@ ogRepository - OpenGnsys Repository Manager
|
|
|
|
|
|
|
|
|
|
|
|
Este repositorio GIT contiene la estructura de datos del repositorio de imágenes de OpenGnsys.
|
|
|
|
Este repositorio GIT contiene la estructura de datos del repositorio de imágenes de OpenGnsys.
|
|
|
|
|
|
|
|
|
|
|
|
- **admin** -------- Archivos de configuración del repositorio.
|
|
|
|
- **admin** --- Archivos de configuración del repositorio.
|
|
|
|
- **bin** ----------- Binarios y scripts de gestión del repositorio.
|
|
|
|
- **bin** ------ Scripts en Python 3 y binarios de gestión del repositorio.
|
|
|
|
- **etc** ----------- Ficheros y plantillas de configuración del repositorio.
|
|
|
|
- **etc** ------ Ficheros y plantillas de configuración del repositorio.
|
|
|
|
- **py_scripts** --- Scripts en Python 3, algunos de los cuales son traducciones de los scripts bash situados en "bin".
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
@ -20,21 +20,21 @@ El presente documento detalla los endpoints de la API, con sus respectivos pará
|
|
|
|
---
|
|
|
|
---
|
|
|
|
### Tabla de Contenido:
|
|
|
|
### Tabla de Contenido:
|
|
|
|
|
|
|
|
|
|
|
|
1. [Obtener Información de todas las Imágenes](#obtener-información-de-todas-las-imágenes) - `GET /ogrepository/v1/images/get-info`
|
|
|
|
1. [Obtener Información de todas las Imágenes](#obtener-información-de-todas-las-imágenes) - `GET /ogrepository/v1/images`
|
|
|
|
2. [Obtener Información de una Imagen concreta](#obtener-información-de-una-imagen-concreta) - `GET /ogrepository/v1/images/get-info`
|
|
|
|
2. [Obtener Información de una Imagen concreta](#obtener-información-de-una-imagen-concreta) - `GET /ogrepository/v1/images/{ID_img}`
|
|
|
|
3. [Actualizar Información del Repositorio](#actualizar-información-del-repositorio) - `PUT /ogrepository/v1/images`
|
|
|
|
3. [Actualizar Información del Repositorio](#actualizar-información-del-repositorio) - `PUT /ogrepository/v1/images`
|
|
|
|
4. [Chequear integridad de Imagen](#chequear-integridad-de-imagen) - `GET /ogrepository/v1/images/check-image`
|
|
|
|
4. [Chequear integridad de Imagen](#chequear-integridad-de-imagen) - `GET /ogrepository/v1/images/check-image`
|
|
|
|
5. [Eliminar una Imagen](#eliminar-una-imagen) - `DELETE /ogrepository/v1/images/delete-image`
|
|
|
|
5. [Eliminar una Imagen](#eliminar-una-imagen) - `DELETE /ogrepository/v1/images/{ID_img}`
|
|
|
|
6. [Recuperar una Imagen](#recuperar-una-imagen) - `POST /ogrepository/v1/images/recover-image`
|
|
|
|
6. [Recuperar una Imagen](#recuperar-una-imagen) - `POST /ogrepository/v1/trash/images/{ID_img}`
|
|
|
|
7. [Importar una Imagen](#importar-una-imagen) - `POST /ogrepository/v1/images/import-image`
|
|
|
|
7. [Eliminar una Imagen de la Papelera](#eliminar-una-imagen-de-la-papelera) - `DELETE /ogrepository/v1/trash/images/{ID_img}`
|
|
|
|
8. [Crear archivos auxiliares](#crear-archivos-auxiliares) - `POST /ogrepository/v1/images/create-torrentsum`
|
|
|
|
8. [Importar una Imagen](#importar-una-imagen) - `POST /ogrepository/v1/repo/{ID_repo}/images/{ID_img}`
|
|
|
|
9. [Enviar paquete Wake On Lan](#enviar-paquete-wake-on-lan) - `POST /ogrepository/v1/images/send-wol`
|
|
|
|
9. [Crear archivos auxiliares](#crear-archivos-auxiliares) - `POST /ogrepository/v1/images/create-torrentsum`
|
|
|
|
10. [Iniciar el Tracker P2P](#iniciar-el-tracker-p2p) - `POST /ogrepository/v1/images/run-tracker`
|
|
|
|
10. [Enviar paquete Wake On Lan](#enviar-paquete-wake-on-lan) - `POST /ogrepository/v1/images/send-wol`
|
|
|
|
11. [Iniciar el Seeder P2P](#iniciar-el-seeder-p2p) - `POST /ogrepository/v1/images/run-seeder`
|
|
|
|
11. [Enviar una Imagen mediante UDPcast](#enviar-una-imagen-mediante-udpcast) - `POST /ogrepository/v1/udpcast/images/{ID_img}`
|
|
|
|
12. [Enviar una Imagen mediante UDPcast](#enviar-una-imagen-mediante-udpcast) - `POST /ogrepository/v1/images/send-udpcast`
|
|
|
|
12. [Enviar una Imagen mediante UFTP](#enviar-una-imagen-mediante-uftp) - `POST /ogrepository/v1/uftp/images/{ID_img}`
|
|
|
|
13. [Enviar una Imagen mediante UFTP](#enviar-una-imagen-mediante-uftp) - `POST /ogrepository/v1/images/send-uftp`
|
|
|
|
13. [Enviar una Imagen mediante P2P](#enviar-una-imagen-mediante-p2p) - `POST /ogrepository/v1/p2p/images/{ID_img}`
|
|
|
|
14. [Cancelar Transmisión UDPcast](#cancelar-transmisión-udpcast) - `POST /ogrepository/v1/images/stop-udpcast`
|
|
|
|
14. [Cancelar Transmisión UDPcast](#cancelar-transmisión-udpcast) - `DELETE /ogrepository/v1/udpcast/images/{ID_img}`
|
|
|
|
15. [Cancelar Transmisiones P2P](#cancelar-transmisiones-p2p) - `POST /ogrepository/v1/images/stop-p2p`
|
|
|
|
15. [Cancelar Transmisiones P2P](#cancelar-transmisiones-p2p) - `DELETE /ogrepository/v1/p2p`
|
|
|
|
16. [Ver Estado de Transmisiones Multicast-P2P](#ver-estado-de-transmisiones-multicast-p2p) -
|
|
|
|
16. [Ver Estado de Transmisiones Multicast-P2P](#ver-estado-de-transmisiones-multicast-p2p) -
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
---
|
|
|
@ -42,18 +42,15 @@ El presente documento detalla los endpoints de la API, con sus respectivos pará
|
|
|
|
|
|
|
|
|
|
|
|
Se devolverá la informacion contenida en el archivo "**/opt/opengnsys/etc/repoinfo.json**" (que corresponde a todas las imágenes almacenadas en el repositorio), y en el archivo "**/opt/opengnsys/etc/trashinfo.json**" (que corresponde a las imágenes que fueron eliminadas, que estarán en la papelera).
|
|
|
|
Se devolverá la informacion contenida en el archivo "**/opt/opengnsys/etc/repoinfo.json**" (que corresponde a todas las imágenes almacenadas en el repositorio), y en el archivo "**/opt/opengnsys/etc/trashinfo.json**" (que corresponde a las imágenes que fueron eliminadas, que estarán en la papelera).
|
|
|
|
Se puede utilizar el script "**getRepoInfo.py**, que hemos programado recientemente.
|
|
|
|
Se puede utilizar el script "**getRepoInfo.py**, que hemos programado recientemente.
|
|
|
|
|
|
|
|
**NOTA**: La versión actual de este script requiere que se le pase "all" como primer parámetro (que correspondería al nombre de la imagen) y "none" como segundo parámetro (que corresponderia al nombre del subdirectorio correspondiente a la OU). Esta transformación de parámetros se puede realizar en el controlador PHP.
|
|
|
|
|
|
|
|
|
|
|
|
**URL:** `/ogrepository/v1/images/get-info`
|
|
|
|
**URL:** `/ogrepository/v1/images`
|
|
|
|
**Método HTTP:** GET
|
|
|
|
**Método HTTP:** GET
|
|
|
|
|
|
|
|
|
|
|
|
**Cuerpo de la Solicitud (JSON):**
|
|
|
|
|
|
|
|
- **image**: Nombre de la imagen (con extensión), pero en este caso "all".
|
|
|
|
|
|
|
|
- **ou_subdir**: Subdirectorio correspondiente a la OU, pero en este caso "none".
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**Ejemplo de Solicitud:**
|
|
|
|
**Ejemplo de Solicitud:**
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
```bash
|
|
|
|
curl -X GET -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"image":"all","ou_subdir":"none"}' http://example.com/ogrepository/v1/images/get-info
|
|
|
|
curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/images
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**Respuestas:**
|
|
|
|
**Respuestas:**
|
|
|
@ -150,19 +147,16 @@ curl -X GET -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d
|
|
|
|
### Obtener Información de una Imagen concreta
|
|
|
|
### Obtener Información de una Imagen concreta
|
|
|
|
|
|
|
|
|
|
|
|
Se devolverá la informacion de la imagen especificada, que puede estar en el archivo "**/opt/opengnsys/etc/repoinfo.json**" o en el archivo "**/opt/opengnsys/etc/trashinfo.json**" (en este último caso, si la imagen está en la papelera).
|
|
|
|
Se devolverá la informacion de la imagen especificada, que puede estar en el archivo "**/opt/opengnsys/etc/repoinfo.json**" o en el archivo "**/opt/opengnsys/etc/trashinfo.json**" (en este último caso, si la imagen está en la papelera).
|
|
|
|
Se puede utilizar el script "**getRepoInfo.py**, que hemos programado recientemente.
|
|
|
|
Se puede utilizar el script "**getRepoInfo.py**, que hemos programado recientemente.
|
|
|
|
|
|
|
|
**NOTA**: La versión actual de este script requiere que se le pase el nombre de la imagen (con extensión) como primer parámetro, y el subdirectorio correspondiente a la OU (o "none" si no es el caso) como segundo parámetro. En principio, ogCore puede acceder a estos datos a partir del ID de la imagen (que hemos quedado que será el contenido del archivo "full.sum"), y la transformación de parámetros puede realizarse en el controlador PHP.
|
|
|
|
|
|
|
|
|
|
|
|
**URL:** `/ogrepository/v1/images/get-info`
|
|
|
|
**URL:** `/ogrepository/v1/images/{ID_img}`
|
|
|
|
**Método HTTP:** GET
|
|
|
|
**Método HTTP:** GET
|
|
|
|
|
|
|
|
|
|
|
|
**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).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**Ejemplo de Solicitud:**
|
|
|
|
**Ejemplo de Solicitud:**
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
```bash
|
|
|
|
curl -X GET -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"image":"Windows10.img","ou_subdir":"none"}' http://example.com/ogrepository/v1/images/get-info
|
|
|
|
curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/images/{ID_img}
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**Respuestas:**
|
|
|
|
**Respuestas:**
|
|
|
@ -205,7 +199,7 @@ curl -X GET -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d
|
|
|
|
|
|
|
|
|
|
|
|
Se actualizará la información de las imágenes almacenadas en el repositorio, reflejándola en el archivo "**/opt/opengnsys/etc/repoinfo.json**".
|
|
|
|
Se actualizará la información de las imágenes almacenadas en el repositorio, reflejándola en el archivo "**/opt/opengnsys/etc/repoinfo.json**".
|
|
|
|
Se puede hacer con el script "**updateRepoInfo.py**", que hemos programado recientemente (y que es similar al script bash original "**checkrepo**").
|
|
|
|
Se puede hacer con el script "**updateRepoInfo.py**", que hemos programado recientemente (y que es similar al script bash original "**checkrepo**").
|
|
|
|
Este endpoint es llamado por el script "**deleteImage.py**" (para actualizar la información cada vez que se elimine una imagen), y creemos que también debe ser llamado por ogCore u ogLive cada vez que se haya creado una imagen.
|
|
|
|
Este endpoint es llamado por el script "**deleteImage.py**" (para actualizar la información cada vez que se elimine una imagen), y creemos que también debe ser llamado por ogCore u ogLive cada vez que se haya creado una imagen.
|
|
|
|
|
|
|
|
|
|
|
|
**URL:** `/ogrepository/v1/images`
|
|
|
|
**URL:** `/ogrepository/v1/images`
|
|
|
|
**Método HTTP:** PUT
|
|
|
|
**Método HTTP:** PUT
|
|
|
@ -249,19 +243,18 @@ curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d
|
|
|
|
|
|
|
|
|
|
|
|
Se eliminará la imagen especificada como parámetro, pudiendo eliminarla permanentemente o enviarla a la papelera.
|
|
|
|
Se eliminará la imagen especificada como parámetro, pudiendo eliminarla permanentemente o enviarla a la papelera.
|
|
|
|
Se puede hacer con el script "**deleteimage.py**", que hemos programado recientemente (y que incluye la funcionalidad "papelera"), y que a su vez llama al script "**updateRepoInfo.py**", para actualizar la información del repositorio.
|
|
|
|
Se puede hacer con el script "**deleteimage.py**", que hemos programado recientemente (y que incluye la funcionalidad "papelera"), y que a su vez llama al script "**updateRepoInfo.py**", para actualizar la información del repositorio.
|
|
|
|
|
|
|
|
**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 el parámetro opcional "-p" (para que la eliminación sea permanente). En principio, ogCore puede acceder a estos datos a partir del ID de la imagen (que hemos quedado que será el contenido del archivo "full.sum"), y la transformación de parámetros puede realizarse en el controlador PHP, pero en principio habrá que especificar el método de eliminación en un json (en la URL).
|
|
|
|
|
|
|
|
|
|
|
|
**URL:** `/ogrepository/v1/images/delete-image`
|
|
|
|
**URL:** `/ogrepository/v1/images/{ID_img}`
|
|
|
|
**Método HTTP:** DELETE
|
|
|
|
**Método HTTP:** DELETE
|
|
|
|
|
|
|
|
|
|
|
|
**Cuerpo de la Solicitud (JSON):**
|
|
|
|
**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).
|
|
|
|
|
|
|
|
- **method**: Método de eliminación (puede ser "trash" o "permanent").
|
|
|
|
- **method**: Método de eliminación (puede ser "trash" o "permanent").
|
|
|
|
|
|
|
|
|
|
|
|
**Ejemplo de Solicitud:**
|
|
|
|
**Ejemplo de Solicitud:**
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
```bash
|
|
|
|
curl -X DELETE -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"image":"Windows10.img", "ou_subdir":"none", "method":"trash"}' http://example.com/ogrepository/v1/images/delete-image
|
|
|
|
curl -X DELETE -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"method":"trash"}' http://example.com/ogrepository/v1/images/{ID_img}
|
|
|
|
```
|
|
|
|
```
|
|
|
|
**Respuestas:**
|
|
|
|
**Respuestas:**
|
|
|
|
- **Código 500 Internal Server Error:** Ocurrió un error al eliminar la imagen.
|
|
|
|
- **Código 500 Internal Server Error:** Ocurrió un error al eliminar la imagen.
|
|
|
@ -273,43 +266,58 @@ curl -X DELETE -H "Authorization: $API_KEY" -H "Content-Type: application/json"
|
|
|
|
|
|
|
|
|
|
|
|
Se recuperará la imagen especificada como parámetro, desde la papelera.
|
|
|
|
Se recuperará la imagen especificada como parámetro, desde la papelera.
|
|
|
|
Se puede hacer con el script "**recoverImage.py**", que hemos programado recientemente, y que a su vez llama al script "**updateRepoInfo.py**", para actualizar la información del repositorio.
|
|
|
|
Se puede hacer con el script "**recoverImage.py**", que hemos programado recientemente, y que a su vez llama al script "**updateRepoInfo.py**", para actualizar la información del repositorio.
|
|
|
|
|
|
|
|
**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 único parámetro. En principio, ogCore puede acceder a estos datos a partir del ID de la imagen (que hemos quedado que será el contenido del archivo "full.sum"), y la transformación de parámetros puede realizarse en el controlador PHP.
|
|
|
|
|
|
|
|
|
|
|
|
**URL:** `/ogrepository/v1/images/recover-image`
|
|
|
|
**URL:** `/ogrepository/v1/trash/images/{ID_img}`
|
|
|
|
**Método HTTP:** POST
|
|
|
|
**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).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**Ejemplo de Solicitud:**
|
|
|
|
**Ejemplo de Solicitud:**
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
```bash
|
|
|
|
curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"image":"Windows10.img", "ou_subdir":"none"}' http://example.com/ogrepository/v1/images/recover-image
|
|
|
|
curl -X POST -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/trash/images/{ID_img}
|
|
|
|
```
|
|
|
|
```
|
|
|
|
**Respuestas:**
|
|
|
|
**Respuestas:**
|
|
|
|
- **Código 500 Internal Server Error:** Ocurrió un error al recuperar la imagen.
|
|
|
|
- **Código 500 Internal Server Error:** Ocurrió un error al recuperar la imagen.
|
|
|
|
- **Código 400 Bad Request:** No se ha encontrado la imagen especificada.
|
|
|
|
- **Código 400 Bad Request:** No se ha encontrado la imagen especificada.
|
|
|
|
- **Código 200 OK:** La imagen se recuperó exitosamente.
|
|
|
|
- **Código 200 OK:** La imagen se recuperó exitosamente.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
### Eliminar una Imagen de la Papelera
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Se eliminará permanentemente la imagen especificada como parámetro, desde la papelera.
|
|
|
|
|
|
|
|
Se puede hacer con el script "**deleteimage.py**", que hemos programado recientemente, y que a su vez llama al script "**updateRepoInfo.py**", para actualizar la información del repositorio.
|
|
|
|
|
|
|
|
**NOTA**: La versión actual de este script requiere que se le pase la ruta y nombre de la imagen como primer parámetro, y el parámetro opcional "-p" (para que la eliminación sea permanente). En principio, ogCore puede acceder a estos datos a partir del ID de la imagen (que hemos quedado que será el contenido del archivo "full.sum"), y la transformación de parámetros puede realizarse en el controlador PHP.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**URL:** `/ogrepository/v1/trash/images/{ID_img}`
|
|
|
|
|
|
|
|
**Método HTTP:** DELETE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**Ejemplo de Solicitud:**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
|
|
curl -X DELETE -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/trash/images/{ID_img}
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
**Respuestas:**
|
|
|
|
|
|
|
|
- **Código 500 Internal Server Error:** Ocurrió un error al eliminar la imagen.
|
|
|
|
|
|
|
|
- **Código 400 Bad Request:** No se ha encontrado la imagen especificada.
|
|
|
|
|
|
|
|
- **Código 200 OK:** La imagen se eliminó exitosamente.
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
---
|
|
|
|
### Importar una Imagen
|
|
|
|
### Importar una Imagen
|
|
|
|
|
|
|
|
|
|
|
|
Se importará una imagen de un repositorio remoto al repositorio local.
|
|
|
|
Se importará una imagen de un repositorio remoto al repositorio local.
|
|
|
|
Se puede hacer con el script "**importImage.py**", que hemos programado recientemente.
|
|
|
|
Se puede hacer con el script "**importImage.py**", que hemos programado recientemente.
|
|
|
|
|
|
|
|
**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, la IP o hostname del repositorio remoto como segundo parámetro, y el usuario remoto como tercer parámetro. En principio, ogCore puede acceder a estos datos a partir del ID de la imagen (que hemos quedado que será el contenido del archivo "full.sum"), y la transformación de parámetros puede realizarse en el controlador PHP, pero en principio habrá que especificar el usuario remoto en un json (en la URL).
|
|
|
|
|
|
|
|
|
|
|
|
**URL:** `/ogrepository/v1/images/import-image`
|
|
|
|
**URL:** `/ogrepository/v1/repo/{ID_repo}/images/{ID_img}`
|
|
|
|
**Método HTTP:** POST
|
|
|
|
**Método HTTP:** POST
|
|
|
|
|
|
|
|
|
|
|
|
**Cuerpo de la Solicitud (JSON):**
|
|
|
|
**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).
|
|
|
|
|
|
|
|
- **repo**: IP o hostname del repositorio remoto.
|
|
|
|
|
|
|
|
- **user**: Usuario con el que acceder al repositorio remoto.
|
|
|
|
- **user**: Usuario con el que acceder al repositorio remoto.
|
|
|
|
|
|
|
|
|
|
|
|
**Ejemplo de Solicitud:**
|
|
|
|
**Ejemplo de Solicitud:**
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
```bash
|
|
|
|
curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"image":"Windows10.img", "ou_subdir":"none", "repo":"192.168.56.100", "user":"user_name"}' http://example.com/ogrepository/v1/images/import-image
|
|
|
|
curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"user":"user_name"}' http://example.com/ogrepository/v1/repo/{ID_repo}/images/{ID_img}
|
|
|
|
```
|
|
|
|
```
|
|
|
|
**Respuestas:**
|
|
|
|
**Respuestas:**
|
|
|
|
- **Código 500 Internal Server Error:** Ocurrió un error al importar la imagen.
|
|
|
|
- **Código 500 Internal Server Error:** Ocurrió un error al importar la imagen.
|
|
|
@ -361,53 +369,14 @@ curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d
|
|
|
|
- **Código 500 Internal Server Error:** Ocurrió un error al enviar el paquete Wake On Lan.
|
|
|
|
- **Código 500 Internal Server Error:** Ocurrió un error al enviar el paquete Wake On Lan.
|
|
|
|
- **Código 200 OK:** El paquete Wake On Lan se ha enviado exitosamente.
|
|
|
|
- **Código 200 OK:** El paquete Wake On Lan se ha enviado exitosamente.
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
### Iniciar el Tracker P2P
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Se iniciará el tracker "bttrack" (o se reiniciará, en el caso de que ya estuviera iniciado), para hacer tracking de los torrents almacenados en el directorio de imágenes de ogRepository.
|
|
|
|
|
|
|
|
Se puede hacer con el script "**runTorrentTracker.py**", que hemos programado recientemente.
|
|
|
|
|
|
|
|
**NOTA**: Actualmente esto se hace automáticamente, al iniciar ogRepopository (desde el script "**/etc/init.d/opengnsys**"), pero creemos que solo debe hacerse cuando se solicite una descarga P2P.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**URL:** `/ogrepository/v1/images/run-tracker`
|
|
|
|
|
|
|
|
**Método HTTP:** POST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**Ejemplo de Solicitud:**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
|
|
curl -X POST -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/images/run-tracker
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
**Respuestas:**
|
|
|
|
|
|
|
|
- **Código 500 Internal Server Error:** Ocurrió un error al iniciar el tracker.
|
|
|
|
|
|
|
|
- **Código 200 OK:** El tracker se ha iniciado exitosamente.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
### Iniciar el Seeder P2P
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Se iniciará el seeder "bittornado" (o se reiniciará, en el caso de que ya estuviera iniciado), para hacer seed de los torrents almacenados en la raíz del directorio de imágenes de ogRepository (o en el subidrectorio de OU que se especifique).
|
|
|
|
|
|
|
|
Se puede hacer con el script "**runTorrentSeeder.py**", que hemos programado recientemente.
|
|
|
|
|
|
|
|
**NOTA**: Actualmente esto se hace automáticamente, al iniciar ogRepopository (desde el script "**/etc/init.d/opengnsys**"), pero creemos que solo debe hacerse cuando se solicite una descarga P2P.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**URL:** `/ogrepository/v1/images/run-seeder`
|
|
|
|
|
|
|
|
**Método HTTP:** POST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**Cuerpo de la Solicitud (JSON):**
|
|
|
|
|
|
|
|
- **ou_subdir**: Subdirectorio correspondiente a la OU (o "none" si no es el caso).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**Ejemplo de Solicitud:**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
|
|
curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"ou_subdir":"none"}' http://example.com/ogrepository/v1/images/run-seeder
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
**Respuestas:**
|
|
|
|
|
|
|
|
- **Código 500 Internal Server Error:** Ocurrió un error al iniciar el seeder.
|
|
|
|
|
|
|
|
- **Código 200 OK:** El seeder se ha iniciado exitosamente.
|
|
|
|
|
|
|
|
---
|
|
|
|
---
|
|
|
|
### Enviar una Imagen mediante UDPcast
|
|
|
|
### Enviar una Imagen mediante UDPcast
|
|
|
|
|
|
|
|
|
|
|
|
Se enviará una imagen por Multicast, mediante la aplicación UDPcast.
|
|
|
|
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.
|
|
|
|
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).
|
|
|
|
|
|
|
|
|
|
|
|
**URL:** `/ogrepository/v1/images/send-udpcast`
|
|
|
|
**URL:** `/ogrepository/v1/udpcast/images/{ID_img}`
|
|
|
|
**Método HTTP:** POST
|
|
|
|
**Método HTTP:** POST
|
|
|
|
|
|
|
|
|
|
|
|
**Cuerpo de la Solicitud (JSON):**
|
|
|
|
**Cuerpo de la Solicitud (JSON):**
|
|
|
@ -423,7 +392,7 @@ Se puede hacer con el script "**sendFileMcast.py**", que a su vez llama al binar
|
|
|
|
**Ejemplo de Solicitud:**
|
|
|
|
**Ejemplo de Solicitud:**
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
```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/images/send-udpcast
|
|
|
|
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}
|
|
|
|
```
|
|
|
|
```
|
|
|
|
**Respuestas:**
|
|
|
|
**Respuestas:**
|
|
|
|
- **Código 500 Internal Server Error:** Ocurrió un error al enviar la imagen.
|
|
|
|
- **Código 500 Internal Server Error:** Ocurrió un error al enviar la imagen.
|
|
|
@ -433,11 +402,11 @@ curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d
|
|
|
|
---
|
|
|
|
---
|
|
|
|
### Enviar una Imagen mediante UFTP
|
|
|
|
### Enviar una Imagen mediante UFTP
|
|
|
|
|
|
|
|
|
|
|
|
Se enviará una imagen por Unicast o Multicast, mediante el protocolo "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**").
|
|
|
|
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).
|
|
|
|
**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).
|
|
|
|
|
|
|
|
|
|
|
|
**URL:** `/ogrepository/v1/images/send-uftp`
|
|
|
|
**URL:** `/ogrepository/v1/uftp/images/{ID_img}`
|
|
|
|
**Método HTTP:** POST
|
|
|
|
**Método HTTP:** POST
|
|
|
|
|
|
|
|
|
|
|
|
**Cuerpo de la Solicitud (JSON):**
|
|
|
|
**Cuerpo de la Solicitud (JSON):**
|
|
|
@ -450,7 +419,28 @@ Se puede hacer con el script "**sendFileUFTP.py**", que requiere que previamente
|
|
|
|
**Ejemplo de Solicitud:**
|
|
|
|
**Ejemplo de Solicitud:**
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
```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/images/send-uftp
|
|
|
|
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}
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
**Respuestas:**
|
|
|
|
|
|
|
|
- **Código 500 Internal Server Error:** Ocurrió un error al 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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
### 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).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**URL:** `/ogrepository/v1/p2p/images/{ID_img}`
|
|
|
|
|
|
|
|
**Método HTTP:** POST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**Ejemplo de Solicitud:**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
|
|
curl -X POST -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/p2p/images/{ID_img}
|
|
|
|
```
|
|
|
|
```
|
|
|
|
**Respuestas:**
|
|
|
|
**Respuestas:**
|
|
|
|
- **Código 500 Internal Server Error:** Ocurrió un error al enviar la imagen.
|
|
|
|
- **Código 500 Internal Server Error:** Ocurrió un error al enviar la imagen.
|
|
|
@ -462,18 +452,15 @@ curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d
|
|
|
|
|
|
|
|
|
|
|
|
Se cancelará la transmisión por UDPcast activa de la imagen especificada como parámetro, deteniendo el proceso "udp-sender" asociado a dicha imagen.
|
|
|
|
Se cancelará la transmisión por UDPcast activa de la imagen especificada como parámetro, deteniendo el proceso "udp-sender" asociado a dicha imagen.
|
|
|
|
Se puede hacer con el script "**stopUDPcast.py**", que hemos programado recientemente.
|
|
|
|
Se puede hacer con el script "**stopUDPcast.py**", que hemos programado recientemente.
|
|
|
|
|
|
|
|
**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 único parámetro. En principio, ogCore puede acceder a estos datos a partir del ID de la imagen (que hemos quedado que será el contenido del archivo "full.sum"), y la transformación de parámetros puede realizarse en el controlador PHP.
|
|
|
|
|
|
|
|
|
|
|
|
**URL:** `/ogrepository/v1/images/stop-udpcast`
|
|
|
|
**URL:** `/ogrepository/v1/udpcast/images/{ID_img}`
|
|
|
|
**Método HTTP:** POST
|
|
|
|
**Método HTTP:** DELETE
|
|
|
|
|
|
|
|
|
|
|
|
**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).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**Ejemplo de Solicitud:**
|
|
|
|
**Ejemplo de Solicitud:**
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
```bash
|
|
|
|
curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"image":"Windows10.img", "ou_subdir":"none"}' http://example.com/ogrepository/v1/images/stop-udpcast
|
|
|
|
curl -X DELETE -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/udpcast/images/{ID_img}
|
|
|
|
```
|
|
|
|
```
|
|
|
|
**Respuestas:**
|
|
|
|
**Respuestas:**
|
|
|
|
- **Código 500 Internal Server Error:** Ocurrió un error al cancelar la transmisión.
|
|
|
|
- **Código 500 Internal Server Error:** Ocurrió un error al cancelar la transmisión.
|
|
|
@ -485,15 +472,15 @@ curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d
|
|
|
|
|
|
|
|
|
|
|
|
Se cancelarán las transmisiones P2P activas en el ogRepository al que se envíe la orden, deteniendo los procesos "bttrack" y "btlaunchmany.bittornado".
|
|
|
|
Se cancelarán las transmisiones P2P activas en el ogRepository al que se envíe la orden, deteniendo los procesos "bttrack" y "btlaunchmany.bittornado".
|
|
|
|
Se puede hacer con el script "**stopP2P.py**", que hemos programado recientemente.
|
|
|
|
Se puede hacer con el script "**stopP2P.py**", que hemos programado recientemente.
|
|
|
|
**NOTA**: No he encontrado la forma de detener la transmisión de una imagen concreta, ya que "bttrack" hace tracking de todos los torrrents, y "btlaunchmany.bittornado" hace seed de todos los torrents existentes en la raíz del directorio especificado (aparte, no bastaría con finalizar el seeder, porque los clientes también hacen seed).
|
|
|
|
**NOTA**: No he encontrado la forma de detener la transmisión de una imagen concreta, ya que "bttrack" y "btlaunchmany.bittornado" hacen tracking y seed (respectivamente) de todos los torrents existentes en la raíz del directorio especificado.
|
|
|
|
|
|
|
|
|
|
|
|
**URL:** `/ogrepository/v1/images/stop-p2p`
|
|
|
|
**URL:** `/ogrepository/v1/p2p`
|
|
|
|
**Método HTTP:** POST
|
|
|
|
**Método HTTP:** DELETE
|
|
|
|
|
|
|
|
|
|
|
|
**Ejemplo de Solicitud:**
|
|
|
|
**Ejemplo de Solicitud:**
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
```bash
|
|
|
|
curl -X POST -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/images/stop-p2p
|
|
|
|
curl -X DELETE -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/p2p
|
|
|
|
```
|
|
|
|
```
|
|
|
|
**Respuestas:**
|
|
|
|
**Respuestas:**
|
|
|
|
- **Código 500 Internal Server Error:** Ocurrió un error al cancelar las transmisiones.
|
|
|
|
- **Código 500 Internal Server Error:** Ocurrió un error al cancelar las transmisiones.
|
|
|
|