Pagina 1 di 2

API Wapt per interfaccia web

Pubblicato: 20 maggio 2019 - 16:26
di Calvibald
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

Re: API Wapt per interfaccia web

Pubblicato: 21 maggio 2019 - 08:50
di sfontenau
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.

Re: API Wapt per interfaccia web

Pubblicato: 21 maggio 2019 - 09:01
di Calvibald
Ok, grazie per la risposta rapida, dovrei riuscire a farcela, grazie!

Re: API Wapt per interfaccia web

Pubblicato: 21 maggio 2019 - 11:27
di Calvibald
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?

Re: API Wapt per interfaccia web

Pubblicato: 21 maggio 2019 - 11:58
di sfontenau
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

Re: API Wapt per interfaccia web

Pubblicato: 21 maggio 2019 - 12:09
di Calvibald
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 6645 volte
Questa funzione verrebbe utilizzata su un pannello web con un sistema utente

Scusate se ho fatto così tante domande strane

Re: API Wapt per interfaccia web

Pubblicato: 22 maggio 2019 - 09:21
di sfontenau
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... :?

Re: API Wapt per interfaccia web

Pubblicato: 22 maggio 2019 - 09:33
di Calvibald
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!

Re: API Wapt per interfaccia web

Pubblicato: 4 giugno 2019 - 14:51
di Calvibald
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 6523 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!

Re: API Wapt per interfaccia web

Pubblicato: 5 giugno 2019 - 09:15
di sfontenau
Ammetto di non aver provato a impostare una password per la chiave.
Dovrò testarla più a fondo; potrebbe esserci qualche problema.