
Ein Alleskönner-Webserver für Redfish, KVM, GUI und DBus für OpenBMC
Diese Komponente versucht, ein "Alleskönner"-eingebetteter Webserver für OpenBMC zu sein.
Der Webserver implementiert einige verschiedene Schnittstellen:
bmcweb unterstützt auf Protokollebene http und https. TLS wird über OpenSSL unterstützt. HTTP/1 und HTTP/2 werden mittels ALPN-Registrierung für TLS-Verbindungen und h2c-Upgrade-Header für HTTP-Verbindungen unterstützt.
Bmcweb unterstützt mehrere Authentifizierungsprotokolle:
Jeder dieser Authentifizierungstypen kann sowohl über Laufzeitrichtlinienänderungen (über die entsprechenden Redfish-APIs) als auch über Konfigurationszeitoptionen aktiviert oder deaktiviert werden. Alle Authentifizierungsmechanismen, die Benutzername/Passwort verwenden, werden über libpam geleitet, um Anpassungen bei den Authentifizierungsimplementierungen zu ermöglichen.
Die gesamte Autorisierung in bmcweb wird zur Routing-Zeit und pro Route festgelegt und entspricht dem Redfish PrivilegeRegistry.
*Hinweis: Nicht-Redfish-Funktionen werden auf die nächstäquivalente Redfish-Berechtigungsstufe abgebildet.
bmcweb wird gemäß den Meson-Build-Dateien konfiguriert. Verfügbare Optionen sind in meson.options dokumentiert.
meson setup builddir
ninja -C builddir
Falls einige der Abhängigkeiten während der Konfiguration nicht auf dem Hostsystem gefunden werden, lädt meson sie automatisch über seine Wrap-Abhängigkeiten herunter, die in bmcweb/subprojects erwähnt werden.
bmcweb verlässt sich auf einige systeminterne Daten zur Speicherung persistenter Daten, die für den Prozess intern sind. Details zu den gespeicherten Daten und wann sie gelesen/geschrieben werden, sind aus dem Namensraum persistent_data ersichtlich.
bmcweb verwendet /tmp/bmcweb für die temporäre Dateispeicherung während Multipart-Formular-Uploads. Dieses Verzeichnis wird von systemd beim Neustart des Dienstes über die TemporaryFileSystem-Direktive in der Dienstdatei automatisch bereinigt.
Wenn SSL-Unterstützung aktiviert ist und kein verwendbares Zertifikat gefunden wird, generiert bmcweb ein selbstsigniertes Zertifikat, bevor der Server gestartet wird. Weitere Informationen zu den Parametern, mit denen dieses Zertifikat erstellt wird, finden Sie im Quellcode von bmcweb.
bmcweb unterstützt verschiedene Formen der HTTP-Komprimierung, einschließlich zstd und gzip. Die Client-Header werden ausgewertet, um festzustellen, ob komprimierte Nutzlasten unterstützt werden.
bmcweb ist in der Lage, Ressourcen von Satelliten-BMCs zu aggregieren. Weitere Informationen zur Aktivierung und Nutzung dieser Funktion finden Sie in AGGREGATION.md.