
Универсальный веб-сервер для OpenBMC, включающий Redfish, KVM, GUI и DBus
Этот компонент представляет собой попытку создать универсальный "делающий всё" встроенный веб-сервер для OpenBMC.
Веб-сервер реализует несколько отдельных интерфейсов:
На уровне протокола bmcweb поддерживает http и https. TLS поддерживается через OpenSSL. HTTP/1 и HTTP/2 поддерживаются с использованием регистрации ALPN для TLS-соединений и заголовка h2c upgrade для http-соединений.
Bmcweb поддерживает несколько протоколов аутентификации:
Каждый из этих типов аутентификации можно включить или отключить как с помощью изменений политики во время выполнения (через соответствующие API Redfish), так и с помощью опций времени конфигурации. Все механизмы аутентификации, поддерживающие имя пользователя/пароль, направляются в libpam, что позволяет настраивать реализации аутентификации.
Вся авторизация в bmcweb определяется во время маршрутизации для каждого маршрута и соответствует Redfish PrivilegeRegistry.
*Примечание: Функции, не связанные с Redfish, сопоставляются с наиболее близким эквивалентным уровнем привилегий Redfish.
bmcweb настраивается с помощью файлов сборки meson. Доступные опции описаны в meson.options.
meson setup builddir
ninja -C builddir
Если во время конфигурации какие-либо зависимости не найдены на хост-системе, meson автоматически загрузит их через свои wrap-зависимости, указанные в bmcweb/subprojects.
bmcweb полагается на некоторые системные данные для хранения постоянных данных, внутренних для процесса. Подробную информацию о хранимых данных и о том, когда они читаются/записываются, можно получить из пространства имён persistent_data.
bmcweb использует /tmp/bmcweb для временного хранения файлов при загрузке multipart-форм. Этот каталог автоматически очищается systemd при перезапуске службы с помощью директивы TemporaryFileSystem в файле службы.
Когда поддержка SSL включена и подходящий сертификат не найден, bmcweb создаст самозаверяющий сертификат перед запуском сервера. Подробную информацию о параметрах, с которыми создаётся этот сертификат, см. в исходном коде bmcweb.
bmcweb поддерживает различные формы сжатия http, включая zstd и gzip. Для определения поддержки сжатых полезных нагрузок анализируются заголовки клиента.
bmcweb способен агрегировать ресурсы из сателлитных BMC. Дополнительную информацию о включении и использовании этой функции см. в AGGREGATION.md.