Ouistiti (ˈwistiti) é o nome francês de Marmoset um pequeno macaco do Novo Mundo.
Ouistiti é um pequeno servidor da web para gerenciar e configurar dispositivos pequenos. Ele permite criar uma interface da Web unificada para segurança em documentos , websocket , API REST e muito mais.
Ouistiti é dedicado a ser incorporado ao dispositivo para controle de um servidor da Web.
Com ouistiti , todas as páginas, websockets, scripts são protegidas da mesma maneira. É inútil gerenciar a autenticação pelo seu eu.
A conexão TLS/SSL está disponível como módulo na biblioteca MBEDTLS ou OpenSSL .
A autenticação está disponível em toda a conexão do cliente . A senha dos usuários pode ser criptografada para o armazenamento. O seguinte desafio é suportado:
Um módulo Crie uma ponte WebSocket entre o HTTP Socket Client e o Unix Socket. É capaz de gerenciar o aperto de mão e a transferência de dados para o seu aplicativo. Você desenvolve um servidor de Cammands em um soquete UNIX, o Ouistiti o protege com uma conexão HTTPS e seu portão de autenticação. Você pode encontrar um exemplo de servidores:
Como o WebSocket , o Ouistiti é capaz de proteger o servidor do seu fluxo . Seu aplicativo deve enviar apenas dados em um soquete Unix, o Ouistiti faz o resto.
Como qualquer servidor da web, o Ouistiti é capaz de enviar qualquer tipo de arquivo para o seu cliente. E ao mesmo tempo, ele pode gerenciá -los em seu servidor:
Os scripts CGI podem ser chamados do cliente.
Alguns URI devem ser redirecionados em outro URI. Este módulo faz isso apenas com o arquivo de configuração.
O servidor pode começar com uma lista negra e uma lista de permissões de endereço IP.
O servidor armazena em um banco de dados as regras sobre acesso URI. Uma regra é uma combinação de "funções" do usuário, tipo de solicitação e uma expressão no URI. Cada solicitação é verificada após a autenticação e antes de acessar o Ressource.
O módulo contém seu próprio Restapi para definir o banco de dados e usa o módulo de autenticação para a verificação de direitos.
Este módulo é capaz de atualizar uma conexão e transferir dados entre o soquete aberto e um servidor de soquete Unix.
O servidor UNIX pode enviar e receber qualquer tipo de dados no soquete. Ele permite reutilizar um servidor inseguro e usa os recursos HTTP, como autenticação e conexão TLS.
Está fechado para o módulo Websocket, mas pode ser útil para algum protocolo sobre o HTTP.
Este módulo executa o interpretador do Python para chamar scripts. Atualmente, este módulo está encenando e deseja executar o site Django.
Ouistiti pode ser construído para gerenciar conexões de clientes com apenas um processo, para ser o servidor da web mais rápido . Ou pode criar um processo independente para cada conexão do cliente, para criar uma caixa de areia ao seu redor.
Ouistiti está escrito para ser construído no máximo de sistema. O código é compatível com C99, os threads podem ser desativados e a configuração pode ser carregada da memória.
Ouistiti é construído na biblioteca LibhttpServer. Esta biblioteca contém analisador HTTP, gerenciamento do soquete e alguns módulos genéricos.
O projeto está disponível no Github
LibhttpServer pode ser renomeado Libouistiti quando as fontes da biblioteca estão disponíveis dentro do projeto Ouistiti .
O projeto LIBB64 é obrigatório com alguns patches. A fonte está disponível no projeto Ouistiti-Project ou Inside Ouistiti .
O suporte ao SSL/TLS pode ser fornecido por várias bibliotecas:
Para diálogo de autenticação com o cliente, a senha pode ser criptografada com o algoritmo MD5 (este não é seguro, mas é obrigatório pelo menos para autenticação básica e digerida). Se o SSL/TLS não estiver disponível, uma biblioteca MD5 será obrigatória para módulos de autenticação:
Ouistiti não pode usar a biblioteca PTHread, isso depende da configuração. Mas algumas ferramentas podem usar a biblioteca PTHread como os WebSocket Servers.
Ouistiti usa a biblioteca libconfig, para definir os servidores e os diferentes módulos.
Documentação: mod_auth
A primeira versão foi executada no Linux e Windows. Atualmente, apenas a versão Linux é testada.
A primeira etapa Download da árvore de origem.
$ git clone https://github.com/ouistiti-project/ouistitiE o projeto LibhttpServer
$ git clone https://github.com/ouistiti-project/libhttpserverExistem 2 maneiras de construir:
O projeto usa Makemore para construir todos os binários.
Makemore contém um arquivo gnumake e um script de configuração . O script é usado para gravar um arquivo de configuração no arquivo default.config . Com a configuração, você pode selecionar os diretórios de instalação e as peças a serem construídas.
$ ./configure --prefix=/usr --libdir=/usr/lib/ouistiti --sysconfdir=/etc/ouistitiMakemore pode ser executado como Kbuild Makefile. É possível selecionar um arquivo de configuração diretamente com a marca.
Outras configurações são viáveis Inside Configs/ Diretório: * Fastmono_Defconfig para um servidor rápido, mas sem proteção contra falhas. * FullForked_DefConfig para um servidor que pode continuar a executar após uma falha de uma conexão.
$ make fastmono_defconfigou
$ make fullforked_defconfigou para uma configuração padrão:
$ make defconfigPara um dispositivo incorporado como um gateway ou uma caixa, é recomendável o FullForked_Defconfig .
A configuração é um arquivo de texto com campos e valores. O arquivo DEFCONFIG no diretório raiz não deve ser alterado. É possível modificar ou copiar um arquivo existente no Diretório Configs/ .
Os campos
File_config: use o arquivo ouistiti.conf para a configuração.
Vthread: Ative o multithreading no servidor.
Vthread_type: pegue um valor como [fork | pthread | windows] para especificar como gerenciar threads.
Estático: construa o aplicativo, as bibliotecas (libhttpServer, libouiutils ...) e módulos em um binário independente.
Compartilhado: Construa/Link as Bibliotecas Dinâmicas (LibhttpServer, ...) e o aplicativo com módulos integrados.
Módulos: Crie os módulos como bibliotecas dinâmicas, o aplicativo carregará no tempo de execução.
Max_servers: permita escolher o número de servidores e hosts virtuais para gerenciar.
A compilação é feita com o Gmake e aceita a configuração na linha de comando.
Ouistiti está disponível uma opção específica Debug para adicionar rastreios no código e no símbolo de depuração.
$ make DEBUG=y[Makemore] permite assistir à linha de compilação com a opção V :
$ make V=1Ouistiti pode ser construído para outro alvo além do host de construção. Para fazer isso, você precisa adicionar algumas configurações:
$ make CROSS_COMPILE=arm-linux-gnueabihfA instalação padrão copiará a biblioteca para /usr/local/libr/ diretório e binário em /usr/local/bin com a configuração padrão. Os caminhos podem ser alterados durante a configuração do projeto (veja abaixo)
> make installPara criar uma árvore de novos diretórios antes da instalação, a variável Destdir pode ser alterada.
> make DESTDIR= ~ /packages/ouistiti installOuistiti é distribuído com as receitas para construir o pacote de uma distribuição.
Ouistiti usa libconfig para a configuração. Encontre mais informações no capítulo de configuração.
Ouistiti permite selecionar cada recurso necessário durante a configuração de compilação. A configuração padrão permite usar todos os recursos no local mínimo.
Aqui alguns tamanhos para o braço depois de remover:
O uso da memória depende da configuração de compilação e do número de conexões simulturas.
Com a configuração padrão para a arquitetura do ARM, o uso é de cerca de 4,5Mo para o processo principal e cerca de 13,5mo para a conexão de cada cliente. Mas a pequena configuração precisa de apenas 5,5 meses .
Com apenas um processo em Ouistiti , o VMSize é de cerca de 26mo .
A página de desempenho fornece mais informações sobre o uso da memória.
Ouistiti não é um servidor da Web para uma grande rede, mas obtém bons resultados para a entrega do documento. As performances dependem da configuração de construção e você precisa.
Ouistiti pode ser mais rápido que o LightTPD 1.4, mas sem todos os recursos. Você pode encontrar alguns resultados de teste na página de desempenho.