
Un webserver per OpenBMC che fa tutto: Redfish, KVM, GUI e DBus
Questo componente tenta di essere un server web embedded "fai tutto" per OpenBMC.
Il server web implementa alcune interfacce distinte:
bmcweb, a livello di protocollo, supporta http e https. TLS è supportato tramite OpenSSL. HTTP/1 e HTTP/2 sono supportati utilizzando la registrazione ALPN per le connessioni TLS e l'header di upgrade h2c per le connessioni http.
Bmcweb supporta molteplici protocolli di autenticazione:
Ciascuno di questi tipi di autenticazione può essere abilitato o disabilitato sia tramite modifiche delle policy a runtime (attraverso le API Redfish pertinenti) sia tramite opzioni impostabili in fase di configurazione. Tutti i meccanismi di autenticazione che supportano nome utente/password vengono instradati a libpam, per consentire la personalizzazione delle implementazioni di autenticazione.
Tutta l'autorizzazione in bmcweb viene determinata al momento del routing, per ciascuna route, ed è conforme alla PrivilegeRegistry di Redfish.
*Nota: le funzioni non Redfish sono mappate al livello di privilegio Redfish equivalente più vicino.
bmcweb è configurato tramite i file di build meson. Le opzioni disponibili sono documentate in meson.options.
meson setup builddir
ninja -C builddir
Se una qualsiasi delle dipendenze non viene trovata sul sistema host durante la configurazione, meson la scaricherà automaticamente tramite le sue dipendenze wrap menzionate in bmcweb/subprojects.
bmcweb si affida ad alcuni dati presenti sul sistema per l'archiviazione dei dati persistenti interni al processo. I dettagli sui dati esatti memorizzati e su quando vengono letti/scritti sono visibili dal namespace persistent_data.
bmcweb utilizza /tmp/bmcweb per l'archiviazione temporanea dei file durante gli upload di moduli multipart. Questa directory viene pulita automaticamente da systemd al riavvio del servizio tramite la direttiva TemporaryFileSystem nel file di servizio.
Quando il supporto SSL è abilitato e non viene trovato un certificato utilizzabile, bmcweb genererà un certificato autofirmato prima di avviare il server. Si prega di consultare il codice sorgente di bmcweb per i dettagli sui parametri con cui viene generato questo certificato.
bmcweb supporta varie forme di compressione http, inclusi zstd e gzip. Gli header del client vengono esaminati per determinare se i payload compressi sono supportati.
bmcweb è in grado di aggregare risorse da BMC satellite. Fare riferimento a AGGREGATION.md per ulteriori informazioni su come abilitare e utilizzare questa funzionalità.