Pagina 2 di 2

Re: API Wapt per interfaccia web

Pubblicato: 5 giugno 2019 - 09:39
di Calvibald
Ciao, ciao, buonasera, sono tornata dopo essermi strappata i pochi capelli che mi sono rimasti.
Quindi ho delle novità.
Alla fine sono riuscito a decifrare la chiave senza password; non è particolarmente sicuro, ma è una demo. Quindi ho modificato il mio codice PHP per includere la riga
sudo -u wapt /opt/wapt/bin/python /opt/wapt/testarg.py 0019ECDE-E109-DE11-AEAF-0025111B87F7add rimuovi
(comando che ho creato per automatizzare tutto)
Il problema è che il comando non restituisce nulla e non funziona, quindi ho preso l'iniziativa e ho scoperto che per qualche motivo, indipendentemente dai diritti che gli concedo, nginx non riesce a usare sudo.
La soluzione che ho utilizzato è stata quella di modificare l'utente in php-fpm utilizzando wapt.
Se eseguo il comando `whoami` sullo script PHP, restituisce `wapt`, quindi sto usando l'utente corretto. Ho anche modificato il mio comando..
/opt/wapt/bin/python /opt/wapt/testarg.py 0019ECDE-E109-DE11-AEAF-0025111B87F7aggiungi rimuovi
poiché si suppone che sudo non sia necessario.
E sorprendentemente, continua a non funzionare.
Ho quindi modificato il file /etc/passwd per consentire la connessione con l'utente wapt, in modo da potermi connettere e testare il comando direttamente sulla console.
E sorprendentemente funziona!
Quindi ho pensato che qualcosa in Python stesse bloccando PHP.
Quindi ho aggiunto istruzioni print a ogni riga del mio codice:

Codice: Seleziona tutto

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")
E PHP restituisce:
/opt/wapt/bin/python /opt/wapt/testarg.py 0019ECDE-E109-DE11-AEAF-0025111B87F7add rimuovi1 2 ​​3 4 5 6 7 8 9 10 11 12 13 14 15 18 19 20
Ciò significa che è bloccato qui:

Codice: Seleziona tutto

pe.sign_package(private_key=key,certificate = signers_bundle.certificates())
Hai idea del motivo per cui PHP è bloccato come utente WAPT?



Sistema: CentOS 7
Versione Wapt: 1.7.4
Versione PHP: 7.2.19

Re: API Wapt per interfaccia web

Pubblicato: 11 giugno 2019 - 15:10
di Calvibald
Ciao! Ho risolto il mio problema:
1) Selinux blocca PHP
2) Ho modificato il metodo di esecuzione dello script, quindi ora funziona. Puoi trovare maggiori informazioni su quello che ho fatto qui: (https://github.com/jojojojojota/waptwebpanel)

Ma ho riscontrato un problema.
Sul mio sito web (nella pagina pc.php) utilizzo l'API per visualizzare i pacchetti installati o non installati su una macchina (/api/v1/hosts)
Tuttavia, riscontro un problema: a volte l'API non si aggiorna, come in questo caso:
waptbug.PNG
waptbug.PNG (56,19 KB) Visualizzato 3834 volte
Quindi dopo 25 minuti l'API non è ancora cambiata e visualizza 3 pacchetti dipendenti mentre la macchina ne ha 5.
Ecco fatto.
Buona giornata

Re: API Wapt per interfaccia web

Pubblicato: 11 giugno 2019 - 17:08
di sfontenau
Quando si crea un pacchetto macchina, spetta a te popolare la tabella delle dipendenze