
Um webserver para OpenBMC que faz tudo: Redfish, KVM, GUI e DBus
Este componente tenta ser um servidor web embarcado "faz-tudo" para OpenBMC.
O servidor web implementa algumas interfaces distintas:
A nível de protocolo, o bmcweb suporta http e https. O TLS é suportado através de OpenSSL. HTTP/1 e HTTP/2 são suportados usando registo ALPN para ligações TLS e o cabeçalho de atualização h2c para ligações http.
O bmcweb suporta múltiplos protocolos de autenticação:
Cada um destes tipos de autenticação pode ser ativado ou desativado tanto por alterações de política em tempo de execução (através das APIs Redfish relevantes) como por opções de configuração. Todos os mecanismos de autenticação que suportam nome de utilizador/palavra-passe são encaminhados para libpam, para permitir a personalização nas implementações de autenticação.
Toda a autorização no bmcweb é determinada no momento do roteamento, por rota, e está em conformidade com o Redfish PrivilegeRegistry.
*Nota: As funções não Redfish são mapeadas para o nível de privilégio Redfish equivalente mais próximo.
O bmcweb é configurado de acordo com os
ficheiros de compilação meson. As opções
disponíveis estão documentadas em meson.options.
meson setup builddir
ninja -C builddir
Se alguma das dependências não for encontrada no sistema anfitrião durante a
configuração, o meson irá descarregá-las automaticamente através das suas dependências wrap
mencionadas em bmcweb/subprojects.
O bmcweb depende de alguns dados no sistema para armazenamento de dados persistentes internos
ao processo. Os detalhes sobre os dados exactos armazenados e quando são
lidos/escritos podem ser consultados no espaço de nomes persistent_data.
O bmcweb utiliza /tmp/bmcweb para armazenamento de ficheiros temporários durante uploads de
formulários multipart. Este diretório é limpo automaticamente pelo systemd no reinício do
serviço através da diretiva TemporaryFileSystem no ficheiro de serviço.
Quando o suporte SSL está ativado e não é encontrado um certificado utilizável, o bmcweb irá gerar um certificado auto-assinado antes de iniciar o servidor. Consulte o código-fonte do bmcweb para obter detalhes sobre os parâmetros com os quais este certificado é construído.
O bmcweb suporta várias formas de compressão http, incluindo zstd e gzip. Os cabeçalhos do cliente são observados para determinar se payloads comprimidos são suportados.
O bmcweb é capaz de agregar recursos de BMCs satélite. Consulte AGGREGATION.md para obter mais informações sobre como ativar e utilizar este recurso.