API de Wapt para interfaz web

Preguntas sobre el servidor WAPT / Solicitudes y ayuda relacionadas con el servidor WAPT
Reglas del foro
Reglas del foro de la comunidad
* Soporte en inglés en www.reddit.com/r/wapt
* El soporte de la comunidad en francés está disponible en este foro
* Por favor, anteponga [RESUELTO] al título del tema si está resuelto.
* Por favor, no edite un tema que esté etiquetado como [RESUELTO]. Abra un nuevo tema haciendo referencia al anterior.
* Especifique la versión de WAPT instalada, la versión completa y el número de compilación (2.2.1.11957 / 2.2.2.12337 / etc.), así como la edición Enterprise/Discovery.
* Las versiones 1.8.2 y anteriores ya no son compatibles. Las únicas preguntas aceptadas sobre la versión 1.8.2 están relacionadas con la actualización a una versión compatible (2.1, 2.2, etc.).
* Especifique el sistema operativo del servidor (Linux/Windows) y la versión (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Especifique el sistema operativo de la máquina de administración/creación de paquetes y de la máquina con el agente problemático, si corresponde (Windows 7/10/11/Debian 11/etc.).
* Evite hacer varias preguntas al abrir un tema, ya que podría ser ignorado. Si hay varios temas, ábralos por separado, preferiblemente uno tras otro y no todos a la vez (es decir, no sature el foro con spam).
* Incluya fragmentos de código, capturas de pantalla y otras imágenes directamente en la publicación. Los enlaces a Pastebin, Bitly y otros sitios de terceros serán eliminados sistemáticamente.
* Como en cualquier foro comunitario, el soporte es proporcionado voluntariamente por los miembros. Si necesita soporte comercial, puede comunicarse con el departamento de ventas de Tranquil IT al 02.40.97.57.55.
Calvibaldo
Mensajes: 13
Inscripciones: 20 de mayo de 2019 - 16:16 horas.

20 de mayo de 2019 - 16:26

Hola, buenas noches.
Mi problema es el siguiente: estoy creando una interfaz web personalizada para WAPT. Esta interfaz está destinada a instructores de un centro de formación y quiero que puedan acceder a un menú que muestre las salas que gestionan. Este menú debería mostrar información sobre cada sala, así como todos los ordenadores disponibles en ella.

El problema es que, al carecer de documentación, me cuesta entender cómo funciona la API y me gustaría saber si es posible asignar paquetes a un grupo mediante la API. Y, en caso afirmativo, ¿cómo? ¿Es posible hacer lo mismo para ordenadores individuales?

Versión de WAPT: 1.5.
Sistema operativo del servidor: CentOS 7.
Sistema operativo del cliente: Windows 7.
- JEANTET Joey, estudiante de desarrollo
Avatar de usuario
Sfonteneau
Experto en WAPT
Mensajes: 2312
Registrado: 10 de julio de 2014 - 23:52
Contacto :

21 de mayo de 2019 - 08:50

Hola,

la API de WAPT se comunica en JSON y permite recuperar la misma información que la consola.

Aquí hay algunos ejemplos:

https://admin:password@srvwapt.mydomain ... imit=10000
https://admin:password@srvwapt.mydomain ... /v1/groups
https://admin:password@srvwapt.mydomain ... imit=10000

Con la API, puede recuperar información, cargar un paquete, eliminar un paquete, ejecutar comandos Wake-on-LAN, etc.

Sin embargo, no puede crear paquetes con la API y, por lo tanto, para responder a su pregunta, no puede asignar paquetes a un grupo o a una computadora usando la API.

Actualmente, cuando asigna paquetes a un grupo o a una computadora, la consola crea el paquete localmente en la máquina y luego lo envía al servidor WAPT con una solicitud POST:

https://admin:password@srvwapt.mydomain ... d_packages.

Este enfoque se eligió para evitar que el repositorio de WAPT se convierta en un activo sensible.
En efecto, el servidor WAPT no posee la clave privada; solo actúa como repetidor. Únicamente el titular de la clave privada puede realizar acciones en las estaciones de trabajo.
Calvibaldo
Mensajes: 13
Inscripciones: 20 de mayo de 2019 - 16:16 horas.

21 de mayo de 2019 - 09:01

Está bien, gracias por la rápida respuesta, debería poder manejarlo, ¡gracias!
- JEANTET Joey, estudiante de desarrollo
Calvibaldo
Mensajes: 13
Inscripciones: 20 de mayo de 2019 - 16:16 horas.

21 de mayo de 2019 - 11:27

Hola de nuevo, mi problema persiste. Consideré modificar la base de datos directamente con PHP o ejecutar comandos de Linux desde ella. El problema es que, al parecer, los cambios en la base de datos no se aplican en el cliente. Y no encuentro ningún comando del servidor. ¿Hay alguna solución? ¿Podría usar un script ya instalado en el servidor? ¿O un procedimiento?
- JEANTET Joey, estudiante de desarrollo
Avatar de usuario
Sfonteneau
Experto en WAPT
Mensajes: 2312
Registrado: 10 de julio de 2014 - 23:52
Contacto :

21 de mayo de 2019 - 11:58

Como ya dije, no está en la base de datos, ¡no hay necesidad de modificarlo! ... :rollo:

Estos son archivos planos ubicados en /var/www/wapt/

https://doc.ad.tranquil.it/fr/doc/wapt- ... repositorios
Calvibaldo
Mensajes: 13
Inscripciones: 20 de mayo de 2019 - 16:16 horas.

21 de mayo de 2019 - 12:09

Entendí el concepto, pero mi problema es:
¿Existe algún comando de servidor que permita agregar un paquete a un usuario para su instalación?
Por ejemplo :
wapt-add-usrpackage sta5803693 prueba-java8
y así obtenerlo aquí
Captura.PNG
Captura.PNG (48,04 KB) Visto 6635 veces
Esta función se utilizaría en un panel web con un sistema de usuario

Perdón por hacer tantas preguntas raras
- JEANTET Joey, estudiante de desarrollo
Avatar de usuario
Sfonteneau
Experto en WAPT
Mensajes: 2312
Registrado: 10 de julio de 2014 - 23:52
Contacto :

22 de mayo de 2019 - 09:21

Aquí tienes un código de muestra gratuito:

Código: Seleccionar todo

from waptpackage import PackageEntry,WaptLocalRepo
from waptcrypto import SSLCABundle,SSLPrivateKey,SSLCertificate

uuid_machine = 'BEDBD700-7277-11E3-AAA8-F44D30629A99'
removedepend=["toto"]
adddepend=["test","test2"]

certpub="/root/mykey.crt"
privatekey="/root/mykey.pem"
passwordkey='password'

ca_bundle = SSLCABundle()
signers_bundle = SSLCABundle()
signers_bundle.add_certificates_from_pem(pem_filename=certpub)
key = SSLPrivateKey(privatekey)

pe = PackageEntry(waptfile = "/var/www/wapt-host/%s.wapt" % uuid_machine)

depends = pe.depends.split(',')
for dep in adddepend:
    if not dep in depends:
        depends.append(dep)

for dep in removedepend:
    if dep in depends:
        depends.remove(dep)

pe.depends = ','.join(depends)
pe.inc_build()
pe.sign_package(private_key=key,certificate = signers_bundle.certificates(),private_key_password=passwordkey)

Código: Seleccionar todo

sudo -u wapt PYTHONPATH=/opt/wapt PYTHONHOME=/opt/wapt /opt/wapt/bin/python /opt/wapt/test.py

Obviamente desaconsejo esta técnica ya que requiere que la clave esté en el servidor... :?
Calvibaldo
Mensajes: 13
Inscripciones: 20 de mayo de 2019 - 16:16 horas.

22 de mayo de 2019 - 09:33

¡Gracias por el código gratuito, me es muy útil!

Si logro terminarlo a tiempo, lo publicaré en algún lugar del foro como código abierto. ¡
Que tengas un buen resto del día!
- JEANTET Joey, estudiante de desarrollo
Calvibaldo
Mensajes: 13
Inscripciones: 20 de mayo de 2019 - 16:16 horas.

4 de junio de 2019 - 14:51

¡Hola, hola! Soy yo de nuevo. Terminé el panel web que quería crear (está disponible en el foro), pero tengo un problema con el script de Python.

a pesar de la opción (private_key_password=passwordkey) en sign_package() el script solicita sistemáticamente la contraseña.
Captura.PNG
Captura.PNG (1,99 KB) Visto 6513 veces
lo cual pone todo en peligro.
Eché un vistazo a waptpackage.py para encontrar el método y noté password_callback=passwordkey que tampoco funciona.

¿Me perdí algo? (El código Python es el mismo que el anterior).

¡Que tengas un buen resto del día!
- JEANTET Joey, estudiante de desarrollo
Avatar de usuario
Sfonteneau
Experto en WAPT
Mensajes: 2312
Registrado: 10 de julio de 2014 - 23:52
Contacto :

5 de junio de 2019 - 09:15

Admito que no he intentado usar una contraseña en la llave.
Tendré que probarla más a fondo; podría haber algún problema.
Bloqueado