Wapt-API für Webschnittstelle

Fragen zum WAPT-Server / Anfragen und Hilfe im Zusammenhang mit dem WAPT-Server
Forumregeln
Community-Forumregeln
* Englischer Support auf www.reddit.com/r/wapt
* Französischer Community-Support ist in diesem Forum verfügbar.
* Bitte kennzeichnen Sie gelöste Themen mit [GELÖST].
* Bitte bearbeiten Sie keine Themen, die mit [GELÖST] markiert sind. Erstellen Sie stattdessen ein neues Thema und verweisen Sie auf das alte.
* Geben Sie die installierte WAPT-Version, die vollständige Versionsnummer und die Build-Nummer (2.2.1.11957 / 2.2.2.12337 / usw.) sowie die Enterprise-/Discovery-Edition an.
* Versionen 1.8.2 und älter werden nicht mehr unterstützt. Fragen zu Version 1.8.2 werden nur beantwortet, wenn sie sich auf ein Upgrade auf eine unterstützte Version (2.1, 2.2 usw.) beziehen.
* Geben Sie das Server-Betriebssystem (Linux/Windows) und die Version (Debian Buster/Bullseye – CentOS 7 – Windows Server 2012/2016/2019) an.
* Geben Sie gegebenenfalls das Betriebssystem des Administrations-/Paketerstellungsrechners und des Rechners mit dem problematischen Agenten an (Windows 7/10/11/Debian 11/etc.).
* Vermeiden Sie es, mehrere Fragen in einem Thema zu stellen, da diese sonst möglicherweise ignoriert werden. Falls mehrere Themen relevant sind, erstellen Sie bitte separate Themen, vorzugsweise nacheinander und nicht gleichzeitig (d. h. vermeiden Sie Spam im Forum).
* Fügen Sie Code-Snippets, Screenshots und andere Bilder direkt in Ihren Beitrag ein. Links zu Pastebin, Bitly und anderen Drittanbieterseiten werden systematisch entfernt.
* Wie in jedem Community-Forum erfolgt die Unterstützung freiwillig durch die Mitglieder. Für kommerziellen Support kontaktieren Sie bitte den Vertrieb von Tranquil IT unter +44 2 40 97 57 55.
Calvibald
Nachrichten: 13
Anmeldung: 20. Mai 2019 - 16:16 Uhr

20. Mai 2019 – 16:26 Uhr

Guten Abend.
Ich habe folgendes Problem: Ich entwickle gerade eine benutzerdefinierte Weboberfläche für WAPT. Diese Oberfläche ist für Trainer in einem Schulungszentrum gedacht und soll ihnen Zugriff auf ein Menü ermöglichen, in dem die von ihnen verwalteten Räume angezeigt werden. Dieses Menü soll Informationen zu jedem Raum sowie zu allen darin verfügbaren Computern enthalten.

Da die Dokumentation unzureichend ist, verstehe ich die Funktionsweise der API nicht und möchte wissen, ob es möglich ist, Pakete über die API einer Gruppe zuzuweisen. Wenn ja, wie? Ist dies auch für einzelne Computer möglich?

WAPT-Version: 1.5,
Server-Betriebssystem: CentOS 7,
Client-Betriebssystem: Windows 7
- JEANTET Joey, Entwicklungsstudent
Benutzeravatar
Sfonteneau
WAPT-Experte
Nachrichten: 2322
Registriert: 10. Juli 2014 - 23:52 Uhr
Kontakt:

21. Mai 2019 - 08:50 Uhr

Hallo,

die WAPT-API kommuniziert über JSON und ermöglicht den Abruf derselben Informationen wie die Konsole.

Hier einige Beispiele:

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

Mit der API können Sie Informationen abrufen, Pakete hochladen, löschen, Wake-on-LAN-Befehle ausführen usw.

Allerdings können Sie mit der API keine Pakete erstellen. Daher können Sie, um Ihre Frage zu beantworten, keine Pakete über die API einer Gruppe oder einem Computer zuweisen.

Wenn Sie derzeit Pakete einer Gruppe oder einem Computer zuweisen, erstellt die Konsole das Paket lokal auf dem jeweiligen Rechner und sendet es anschließend per POST-Anfrage an den WAPT-Server:

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

Dieses Vorgehen wurde gewählt, um zu verhindern, dass das WAPT-Repository zu einem sensiblen Datenträger wird.
Der WAPT-Server besitzt tatsächlich nicht den privaten Schlüssel; er fungiert lediglich als Vermittler. Nur der Inhaber des privaten Schlüssels kann Aktionen auf den Arbeitsstationen durchführen.
Calvibald
Nachrichten: 13
Anmeldung: 20. Mai 2019 - 16:16 Uhr

21. Mai 2019 - 09:01 Uhr

Okay, danke für die schnelle Antwort, damit sollte ich zurechtkommen, danke!
- JEANTET Joey, Entwicklungsstudent
Calvibald
Nachrichten: 13
Anmeldung: 20. Mai 2019 - 16:16 Uhr

21. Mai 2019 - 11:27 Uhr

Hallo nochmal, mein Problem besteht weiterhin. Ich habe überlegt, die Datenbank direkt mit PHP zu bearbeiten oder Linux-Befehle darin auszuführen. Das Problem ist, dass die Änderungen an der Datenbank anscheinend nicht clientseitig übernommen werden. Und ich finde keine serverseitigen Befehle. Gibt es eine mögliche Lösung? Könnte ich ein bereits auf dem Server vorhandenes Skript oder eine Prozedur verwenden?
- JEANTET Joey, Entwicklungsstudent
Benutzeravatar
Sfonteneau
WAPT-Experte
Nachrichten: 2322
Registriert: 10. Juli 2014 - 23:52 Uhr
Kontakt:

21. Mai 2019 - 11:58 Uhr

Wie bereits erwähnt, befindet es sich nicht in der Datenbank, daher ist keine Änderung erforderlich! ... :rollen:

Es handelt sich um einfache Dateien im Verzeichnis /var/www/wapt/

https://doc.ad.tranquil.it/fr/doc/wapt- ... positories
Calvibald
Nachrichten: 13
Anmeldung: 20. Mai 2019 - 16:16 Uhr

21. Mai 2019 - 12:09 Uhr

Ich habe das Konzept verstanden, aber mein Problem ist:
Gibt es einen Serverbefehl, mit dem man einem Benutzer ein Paket zur Installation hinzufügen kann?
Zum Beispiel :
wapt-add-usrpackage sta5803693 test-java8
und erhalten Sie es somit hier
Capture.PNG
Capture.PNG (48,04 KB) 6805 Mal angesehen
Diese Funktion würde auf einem Webpanel mit einem Benutzersystem verwendet werden

Entschuldigung für die vielen seltsamen Fragen
- JEANTET Joey, Entwicklungsstudent
Benutzeravatar
Sfonteneau
WAPT-Experte
Nachrichten: 2322
Registriert: 10. Juli 2014 - 23:52 Uhr
Kontakt:

22. Mai 2019 - 09:21 Uhr

Hier ist ein kostenloser Beispielcode:

Code: Alle auswählen

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)

Code: Alle auswählen

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

Ich rate von dieser Methode ausdrücklich ab, da sie voraussetzt, dass sich der Schlüssel auf dem Server befindet... :?
Calvibald
Nachrichten: 13
Anmeldung: 20. Mai 2019 - 16:16 Uhr

22. Mai 2019 - 09:33 Uhr

Vielen Dank für den kostenlosen Code, der ist sehr hilfreich!

Wenn ich es schaffe, den Code rechtzeitig fertigzustellen, werde ich ihn hier im Forum als Open Source veröffentlichen.
Ich wünsche Ihnen noch einen schönen Tag!
- JEANTET Joey, Entwicklungsstudent
Calvibald
Nachrichten: 13
Anmeldung: 20. Mai 2019 - 16:16 Uhr

4. Juni 2019 – 14:51 Uhr

Hallo, hallo! Ich bin's wieder. Ich habe das Webpanel fertiggestellt, das ich erstellen wollte (es ist im Forum verfügbar), aber ich habe ein Problem mit dem Python-Skript.

Trotz der Option (private_key_password=passwordkey) in sign_package() fragt das Skript systematisch nach dem Passwort.
Capture.PNG
Capture.PNG (1,99 KB) 6683 Mal angesehen
was alles gefährdet.
Ich habe mir die Datei waptpackage.py angesehen, um die Methode zu finden, und dabei ist mir aufgefallen, dass password_callback=passwordkey ebenfalls nicht funktioniert.

Habe ich etwas übersehen? (Der Python-Code ist derselbe wie oben.).

Ich wünsche Ihnen noch einen schönen restlichen Tag!
- JEANTET Joey, Entwicklungsstudent
Benutzeravatar
Sfonteneau
WAPT-Experte
Nachrichten: 2322
Registriert: 10. Juli 2014 - 23:52 Uhr
Kontakt:

5. Juni 2019 - 09:15 Uhr

Ich gebe zu, dass ich noch kein Passwort für den Schlüssel ausprobiert habe.
Ich muss das noch genauer testen; möglicherweise gibt es ein Problem.
Gesperrt