API Wapt pour interface web

Question about WAPT Server / Requêtes et aides autour du serveur Wapt
Règles du forum
Règles du forum communautaire
* English support on www.reddit.com/r/wapt
* Le support communautaire en français se fait sur ce forum
* Merci de préfixer le titre du topic par [RESOLU] s'il est résolu.
* Merci de ne pas modifier un topic qui est taggé [RESOLU]. Ouvrez un nouveau topic en référençant l'ancien
* Préciser version de WAPT installée, version complète ET numéro de build (2.2.1.11957 / 2.2.2.12337 / etc.) AINSI QUE l'édition Enterprise / Discovery
* Les versions 1.8.2 et antérieures ne sont plus maintenues. Les seules questions acceptées vis à vis de la version 1.8.2 sont liés à la mise à jour vers une version supportée (2.1, 2.2, etc.)
* Préciser OS du serveur (Linux / Windows) et version (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019)
* Préciser OS de la machine d'administration/création des paquets et de la machine avec l'agent qui pose problème le cas échéant (Windows 7 / 10 / 11 / Debian 11 / etc.)
* Eviter de poser plusieurs questions lors de l'ouverture de topic, sinon il risque d'être ignorer. Si plusieurs sujet, ouvrir plusieurs topic, et de préférence les uns après les autres et pas tous en même temps (ie ne pas spammer le forum).
* Inclure directement les morceaux de code, les captures d'écran et autres images directement dans le post. Les liens vers les pastebin, les bitly et autres sites tierces seront systématiquement supprimés.
* Comme tout forum communautaire, le support est fait bénévolement par les membres. Si vous avez besoin d'un support commercial, vous pouvez contacter le service commercial Tranquil IT au 02.40.97.57.55
Calvibald
Messages : 13
Inscription : 20 mai 2019 - 16:16

20 mai 2019 - 16:26

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
- JEANTET Joey étudiant en développement
Avatar de l’utilisateur
sfonteneau
Expert WAPT
Messages : 1783
Inscription : 10 juil. 2014 - 23:52
Contact :

21 mai 2019 - 08:50

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.
Calvibald
Messages : 13
Inscription : 20 mai 2019 - 16:16

21 mai 2019 - 09:01

Ok merci de la réponse rapide, je devrais pouvoir me débrouiller avec ça merci !
- JEANTET Joey étudiant en développement
Calvibald
Messages : 13
Inscription : 20 mai 2019 - 16:16

21 mai 2019 - 11:27

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 ?
- JEANTET Joey étudiant en développement
Avatar de l’utilisateur
sfonteneau
Expert WAPT
Messages : 1783
Inscription : 10 juil. 2014 - 23:52
Contact :

21 mai 2019 - 11:58

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
Calvibald
Messages : 13
Inscription : 20 mai 2019 - 16:16

21 mai 2019 - 12:09

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é 3262 fois
Cette fonction serait utilisé sur un panel web avec un système d'utilisateur

Désoler de poser autant de questions farfelue
- JEANTET Joey étudiant en développement
Avatar de l’utilisateur
sfonteneau
Expert WAPT
Messages : 1783
Inscription : 10 juil. 2014 - 23:52
Contact :

22 mai 2019 - 09:21

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... :?
Calvibald
Messages : 13
Inscription : 20 mai 2019 - 16:16

22 mai 2019 - 09:33

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 !
- JEANTET Joey étudiant en développement
Calvibald
Messages : 13
Inscription : 20 mai 2019 - 16:16

04 juin 2019 - 14:51

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é 3140 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 !
- JEANTET Joey étudiant en développement
Avatar de l’utilisateur
sfonteneau
Expert WAPT
Messages : 1783
Inscription : 10 juil. 2014 - 23:52
Contact :

05 juin 2019 - 09:15

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.
Verrouillé