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! ...
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

- 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.

- 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.