Page 2 sur 2

Re: API Wapt pour interface web

Publié : 05 juin 2019 - 09:39
par Calvibald
Bijour, bonjour, bonsoir, je reviens a la charge après mettre arrachée le peu de cheveux qu'il me reste.
j'ai donc quelque nouvelle.
J'ai fini par réussir à décrypter la clé sans mot de passe, c'est pas spécialement sécuriser mais c'est une démo. j'ai donc modifier mon code php pour intégrer la ligne
sudo -u wapt /opt/wapt/bin/python /opt/wapt/testarg.py 0019ECDE-E109-DE11-AEAF-0025111B87F7add remove
(commande que j'ai créer pour automatiser le tout)
Problème, le commande ne renvoie rien et ne fonctionne pas, j'ai donc pris les devant et découvert que pour x raison peut importe les droit que je lui accorde nginx ne peut pas faire le sudo.
La solution que j'ai utiliser est modifier dans php-fpm l'utilisateur par wapt.
si j'effectue la commande whoami sur le php elle me retourne wapt je suis donc sur le bon utilisateur. J'ai aussi modifier ma commande par
/opt/wapt/bin/python /opt/wapt/testarg.py 0019ECDE-E109-DE11-AEAF-0025111B87F7add remove
puisque le sudo est supposer être inutile.
Et la surprise, sa ne marche toujours pas.
j'ai donc modifier le fichier /etc/passwd pour autoriser la connexion avec l'utilisateur wapt pour pouvoir me connecter et testé la commande directement sur la console.
Et la surprise sa fonctionne !
J'ai donc supposer que quelque chose dans le python bloque le php.
J'ai donc ajouter des print a chaque ligne de mon code :

Code : Tout sélectionner

from waptpackage import PackageEntry,WaptLocalRepo
from waptcrypto import SSLCABundle,SSLPrivateKey,SSLCertificate
import sys
arg=""
#Configuration
certpub="/opt/wapt/wapt.crt"
privatekey="/opt/wapt/wapt.pem"

if len(sys.argv)>2:
        for i in sys.argv:
                if not i==sys.argv[0]:
                        arg=arg+i+" "
        arg=arg.split("add")
        print("1")
        option=arg[1].split("remove")
        print("2")
        uuid_machine=arg[0]
        print("3")
        adddepend=option[0].split(" ")
        print("4")
        removedepend=option[1].split(" ")
        print("5")
        adddepend.remove("")
        print("6")
        removedepend.remove("")
        print("7")
        adddepend.remove("")
        print("8")
        removedepend.remove("")
        print("9")
        ca_bundle = SSLCABundle()
        print("10")
        signers_bundle = SSLCABundle()
        print("11")
        signers_bundle.add_certificates_from_pem(pem_filename=certpub)
        print("12")
        key = SSLPrivateKey(privatekey)
        print("13")
        pe = PackageEntry(waptfile = "/var/www/html/wapt-host/%s.wapt" % uuid_machine)
        print("14")
        depends = pe.depends.split(',')
        print("15")
        if len(adddepend)>0:
                print("16")
                for dep in adddepend:
                         if not dep in depends:
                                depends.append(dep)

        if not len(removedepend)<=0:
                print("17")
                for dep in removedepend:
                        if dep in depends:
                                depends.remove(dep)
        print("18")
        pe.depends = ','.join(depends)
        print("19")
        pe.inc_build()
        print("20")
        pe.sign_package(private_key=key,certificate = signers_bundle.certificates())
        print("21")
        print("Modification reussite")
else:
        print("Erreur pas assez d arguments ont ete saisis")
Et le php me retourne :
/opt/wapt/bin/python /opt/wapt/testarg.py 0019ECDE-E109-DE11-AEAF-0025111B87F7add remove1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 18 19 20
Ce qui veux dire qu'il bloque ici :

Code : Tout sélectionner

pe.sign_package(private_key=key,certificate = signers_bundle.certificates())
Une petite idée de pourquoi le php en utilisateur wapt bloque ici ?



Système : Centos7
Version de wapt : 1.7.4
Version de php : 7.2.19

Re: API Wapt pour interface web

Publié : 11 juin 2019 - 15:10
par Calvibald
Bonjour ! J'ai résolu mon soucis :
1) Le selinux bloque le php
2) J'ai changer la méthode d’exécution du script du coup sa fonctionne y a plus d'info sur ce que j'ai fait ici : (https://github.com/jojojojojota/waptwebpanel)

Mais je rencontre un problème.
Sur mon site (sur la page pc.php) j'utilise l'api pour afficher les paquet installer ou non installer sur un poste (/api/v1/hosts)
Hors je rencontre un problème, parfois l'api ne s'update pas, comme ici :
waptbug.PNG
waptbug.PNG (56.19 Kio) Consulté 1593 fois
donc après 25 minutes l'api n'a toujours pas changer et affiche 3 paquet en dependance alors que la machine en a 5.
Voila voila.
Bonne fin de journée

Re: API Wapt pour interface web

Publié : 11 juin 2019 - 17:08
par sfonteneau
Lorsque vous créez un paquet machine c'est à vous d'alimenter la table de dépendances