Page 1 sur 2

API Wapt pour interface web

Publié : 20 mai 2019 - 16:26
par Calvibald
Bonjour bonsoir,
Voila mon problème, je suis actuellement entrain de créer une interface web personnalisé pour le WAPT. Cette interface étant destiné à des formateurs dans un centre de formation je souhaite permettre au formateurs d’accéder à un menu avec affiché les salles qu'il gère. ce menu amenant vers les info de la salle ainsi que tous les ordinateurs disponible dans cette salle.

Mon problème se présente ici, faute de documentation j'ai du mal a comprendre le fonctionnement de l'api et je voulais savoir s'il était possible depuis l'api d'attribuer des paquet à un groupe. Et si cela est possible comment ? est-il possible de faire la même chose pour les ordinateurs?

Version de WAPT : 1.5
OS serveur : CentOS 7
OS client : Windows 7

Re: API Wapt pour interface web

Publié : 21 mai 2019 - 08:50
par sfonteneau
Bonjour

L'api de wapt discute en json et vous permet de récupérer les même information que la console:

Quelques exemple:

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

Avec l'api vous pouvez récupérer des information, uploader un paquet, supprimer un paquet, lancer des wakeonlan...

Mais vous ne pouvez pas créer de paquet avec l'api et donc pour répondre a votre question vous ne pouvez pas attribuer des paquet à un groupe ou un ordinateur avec l'api.

Aujourd'hui, lorsque vous attribuez des paquet à un groupe ou un ordinateur, c'est la console qui construit le paquet localement sur le poste puis l'envoie au serveur wapt avec un requet POST

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

Ce fonctionnement a été choisi pour éviter que le dépôt wapt ne deviennent un bien sensible.
En effet le serveur wapt ne possède pas la clé privé, il ne sert que de relai. Seul le détenteur de la clé privé peut effectuer des action sur les postes.

Re: API Wapt pour interface web

Publié : 21 mai 2019 - 09:01
par Calvibald
Ok merci de la réponse rapide, je devrais pouvoir me débrouiller avec ça merci !

Re: API Wapt pour interface web

Publié : 21 mai 2019 - 11:27
par Calvibald
Re bonjour, mon problème est finalement toujours d'actualité. j'ai pensé directement modifier la bdd avec du php ou executer des commande linux depuis celui si. Le problème est que visiblement les changement dans la bdd ne sont pas pris en compte coté client. Et que je ne trouve pas de commande coté serveur. y a t-il une solution envisageable ? utiliser un script déjà présent sur le serveur ? ou une procédure ?

Re: API Wapt pour interface web

Publié : 21 mai 2019 - 11:58
par sfonteneau
Comme je l'ai déjà dis ce n'est n'est pas dans la BDD, inutile de modifer ! ... :roll:

Ce sont des fichier plat présent dans /var/www/wapt/

https://doc.ad.tranquil.it/fr/doc/wapt- ... positories

Re: API Wapt pour interface web

Publié : 21 mai 2019 - 12:09
par Calvibald
J'avais bien saisi ce concept mon problème est :
Existe t-il une commande serveur qui permet d'ajouter un paquet à un utilisateur pour une installation
par exemple :
wapt-add-usrpackage sta5803693 test-java8
et ainsi l'obtenir ici
Capture.PNG
Capture.PNG (48.04 Kio) Consulté 3281 fois
Cette fonction serait utilisé sur un panel web avec un système d'utilisateur

Désoler de poser autant de questions farfelue

Re: API Wapt pour interface web

Publié : 22 mai 2019 - 09:21
par sfonteneau
Un code d'exemple c'est cadeau:

Code : Tout sélectionner

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)

Code : Tout sélectionner

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

Je déconseille bien entendue cette technique puisque cela nécessite que la clé soit sur le serveur... :?

Re: API Wapt pour interface web

Publié : 22 mai 2019 - 09:33
par Calvibald
Merci du code en cadeau sa aide !

Si j'arrive a finir le code dans les temps je le publierais quelque part sur le forum en source libre.
bonne fin de journée !

Re: API Wapt pour interface web

Publié : 04 juin 2019 - 14:51
par Calvibald
Bonjour, bonjour ! c'est encore moi. J'ai fini le panel web que j'avais l'intention de faire (il est dispo sur le forum) mais j'ai un soucis avec le script python.

malgré l'option (private_key_password=passwordkey) dans sign_package() le script demande systématiquement le mot de passe.
Capture.PNG
Capture.PNG (1.99 Kio) Consulté 3159 fois
ce qui compromet tout.
J'ai jeter un oeil au waptpackage.py pour trouver la méthode et j'ai pu remarquer password_callback=passwordkey qui ne fonctionne pas non plus.

J'ai raté quelque chose ? (le code python est le même que au dessus).

Bonne fin de journée !

Re: API Wapt pour interface web

Publié : 05 juin 2019 - 09:15
par sfonteneau
J'avoue je n'ai pas tenté avec un mot de passe sur la clé.
Il faudra que je test plus en profondeur il y a peut être un soucis.