API Wapt per interfaccia web

Domande sul server WAPT / Richieste e assistenza relative al server WAPT
Regole del forum
Regole del forum della community
* Supporto in inglese su www.reddit.com/r/wapt
* Supporto della community in francese disponibile su questo forum
* Si prega di anteporre [RISOLTO] al titolo dell'argomento se è stato risolto.
* Si prega di non modificare un argomento contrassegnato con [RISOLTO]. Aprire un nuovo argomento facendo riferimento a quello precedente.
* Specificare la versione di WAPT installata, la versione completa e il numero di build (2.2.1.11957 / 2.2.2.12337 / ecc.) nonché l'edizione Enterprise/Discovery.
* Le versioni 1.8.2 e precedenti non sono più supportate. Le uniche domande accettate relative alla versione 1.8.2 riguardano l'aggiornamento a una versione supportata (2.1, 2.2, ecc.).
* Specificare il sistema operativo del server (Linux/Windows) e la versione (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Specificare il sistema operativo della macchina di amministrazione/creazione dei pacchetti e della macchina con l'agente problematico, se applicabile (Windows 7/10/11/Debian 11/ecc.).
* Evitare di porre più domande quando si apre una discussione, altrimenti potrebbe essere ignorata. Se ci sono più discussioni, aprirle separatamente, preferibilmente una dopo l'altra e non tutte contemporaneamente (ovvero, non intasare il forum).
* Includere frammenti di codice, screenshot e altre immagini direttamente nel post. I link a Pastebin, Bitly e altri siti di terze parti verranno sistematicamente rimossi.
* Come in qualsiasi forum della community, il supporto è fornito volontariamente dai membri. Se si necessita di supporto commerciale, è possibile contattare il reparto vendite di Tranquil IT al numero 02.40.97.57.55
Calvibaldo
Messaggi: 13
Registrazione: 20 maggio 2019 - 16:16

5 giugno 2019 - 09:39

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
- JEANTET Joey, studente di sviluppo
Calvibaldo
Messaggi: 13
Registrazione: 20 maggio 2019 - 16:16

11 giugno 2019 - 15:10

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 3830 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
- JEANTET Joey, studente di sviluppo
Avatar utente
sfontenau
Esperto WAPT
Messaggi: 2312
Registrato: 10 luglio 2014 - 23:52
Contatto:

11 giugno 2019 - 17:08

Quando si crea un pacchetto macchina, spetta a te popolare la tabella delle dipendenze
Bloccato