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

20 maggio 2019 - 16:26

Salve, buonasera.
Ecco il mio problema: sto creando un'interfaccia web personalizzata per WAPT. Questa interfaccia è destinata ai formatori di un centro di formazione e vorrei consentire loro di accedere a un menu che mostri le aule che gestiscono. Questo menu dovrebbe fornire informazioni su ciascuna aula, nonché su tutti i computer disponibili in essa.

Il problema è che, in mancanza di documentazione, ho difficoltà a capire come funziona l'API e vorrei sapere se è possibile assegnare pacchetti a un gruppo tramite l'API. E se sì, come? È possibile fare lo stesso per i singoli computer?

Versione di WAPT: 1.5
Sistema operativo server: CentOS 7
Sistema operativo client: Windows 7
- JEANTET Joey, studente di sviluppo
Avatar utente
sfontenau
Esperto WAPT
Messaggi: 2312
Registrato: 10 luglio 2014 - 23:52
Contatto:

21 maggio 2019 - 08:50

Ciao,

l'API WAPT comunica in formato JSON e ti permette di recuperare le stesse informazioni della console.

Ecco alcuni esempi:

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

Con l'API puoi recuperare informazioni, caricare un pacchetto, eliminare un pacchetto, avviare comandi Wake-on-LAN, ecc.

Tuttavia, non puoi creare pacchetti con l'API e, quindi, per rispondere alla tua domanda, non puoi assegnare pacchetti a un gruppo o a un computer utilizzando l'API.

Attualmente, quando assegni pacchetti a un gruppo o a un computer, la console crea il pacchetto localmente sulla macchina e poi lo invia al server WAPT con una richiesta POST:

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

Questo approccio è stato scelto per evitare che il repository WAPT diventasse una risorsa sensibile.
Infatti, il server WAPT non possiede la chiave privata; funge solo da intermediario. Solo il detentore della chiave privata può eseguire operazioni sulle workstation.
Calvibaldo
Messaggi: 13
Registrazione: 20 maggio 2019 - 16:16

21 maggio 2019 - 09:01

Ok, grazie per la risposta rapida, dovrei riuscire a farcela, grazie!
- JEANTET Joey, studente di sviluppo
Calvibaldo
Messaggi: 13
Registrazione: 20 maggio 2019 - 16:16

21 maggio 2019 - 11:27

Ciao di nuovo, il mio problema persiste. Ho pensato di modificare direttamente il database con PHP o di eseguire comandi Linux dall'interno. Il problema è che le modifiche al database a quanto pare non vengono applicate lato client. E non riesco a trovare alcun comando lato server. C'è una possibile soluzione? Potrei usare uno script già presente sul server? O una procedura?
- JEANTET Joey, studente di sviluppo
Avatar utente
sfontenau
Esperto WAPT
Messaggi: 2312
Registrato: 10 luglio 2014 - 23:52
Contatto:

21 maggio 2019 - 11:58

Come ho già detto, non è nel database, non c'è bisogno di modificarlo! ... :rotolo:

Si tratta di file flat situati in /var/www/wapt/

https://doc.ad.tranquil.it/fr/doc/wapt- ... repository
Calvibaldo
Messaggi: 13
Registrazione: 20 maggio 2019 - 16:16

21 maggio 2019 - 12:09

Ho capito il concetto, ma il mio problema è:
Esiste un comando server che consente di aggiungere un pacchetto a un utente per l'installazione?
Per esempio :
wapt-add-usrpackage sta5803693 test-java8
e quindi ottenerlo qui
Cattura.PNG
Capture.PNG (48,04 KB) Visualizzato 6621 volte
Questa funzione verrebbe utilizzata su un pannello web con un sistema utente

Scusate se ho fatto così tante domande strane
- JEANTET Joey, studente di sviluppo
Avatar utente
sfontenau
Esperto WAPT
Messaggi: 2312
Registrato: 10 luglio 2014 - 23:52
Contatto:

22 maggio 2019 - 09:21

Ecco un codice di esempio gratuito:

Codice: Seleziona tutto

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)

Codice: Seleziona tutto

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

Ovviamente sconsiglio questa tecnica poiché richiede che la chiave sia sul server... :?
Calvibaldo
Messaggi: 13
Registrazione: 20 maggio 2019 - 16:16

22 maggio 2019 - 09:33

Grazie per il codice gratuito, è molto utile!

Se riesco a finirlo in tempo, lo pubblicherò da qualche parte sul forum come open source.
Buona continuazione di giornata!
- JEANTET Joey, studente di sviluppo
Calvibaldo
Messaggi: 13
Registrazione: 20 maggio 2019 - 16:16

4 giugno 2019 - 14:51

Ciao, ciao! Sono di nuovo io. Ho finito il pannello web che intendevo creare (è disponibile sul forum), ma ho un problema con lo script Python.

nonostante l'opzione (private_key_password=passwordkey) in sign_package() lo script chiede sistematicamente la password.
Cattura.PNG
Capture.PNG (1,99 KB) Visualizzato 6499 volte
che mette a repentaglio tutto.
Ho dato un'occhiata a waptpackage.py per trovare il metodo e ho notato che password_callback=passwordkey non funziona.

Mi è sfuggito qualcosa? (Il codice Python è lo stesso di cui sopra.).

Buona giornata!
- JEANTET Joey, studente di sviluppo
Avatar utente
sfontenau
Esperto WAPT
Messaggi: 2312
Registrato: 10 luglio 2014 - 23:52
Contatto:

5 giugno 2019 - 09:15

Ammetto di non aver provato a impostare una password per la chiave.
Dovrò testarla più a fondo; potrebbe esserci qualche problema.
Bloccato