Ouistiti (ˈwistiti) es el nombre francés de Marmoset A Little Monkey of the New World.
Ouistiti es un pequeño servidor web para administrar y configurar pequeños dispositivos. Permite crear una interfaz web unificada para la seguridad en documentos , WebSocket , REST API y más.
Ouistiti se dedica a estar integrado en el dispositivo para el control de un servidor web.
Con Ouistiti , todas las páginas, WebSockets, los scripts están protegidos de la misma manera. Es inútil administrar la autenticación por su solda.
La conexión TLS/SSL está disponible como módulo con MBedTLS u Biblioteca OpenSSL .
La autenticación está disponible en toda la conexión del cliente . La contraseña de los usuarios puede estar encriptada para el almacenamiento. Se admiten el siguiente desafío:
Un módulo crea un puente WebSocket entre el cliente HTTP Socket y Unix Socket. Es capaz de administrar el apretón de manos y la transferencia de datos a su aplicación. Desarrolla un servidor de Cammands en un socket Unix, Ouistiti lo protege con una conexión HTTPS y su puerta de autenticación. Puede encontrar un ejemplo de servidores:
Al igual que WebSocket , Ouistiti puede proteger el servidor de su transmisión . Su aplicación solo debe enviar datos en un socket Unix, Ouistiti hace el resto.
Como cualquier servidor web, Ouistiti puede enviar cualquier tipo de archivos a su cliente. Y al mismo tiempo puede administrarlos en su servidor:
Los scripts CGI pueden ser llamados del cliente.
Algunos URI deben ser redirigidos en otro URI. Este módulo lo hace solo con un archivo de configuración.
El servidor puede comenzar con una lista negra y una lista blanca de la dirección IP.
El servidor almacena en una base de datos las reglas sobre el acceso a URI. Una regla es una combinación de los "roles" del usuario, el tipo de solicitud y una expresión en el URI. Cada solicitud se verifica después de la autenticación y antes de acceder al resource.
El módulo contiene su propio RaTapi para establecer la base de datos y utiliza el módulo de autenticación para la verificación de los derechos.
Este módulo puede actualizar una conexión y transferir datos entre el socket abierto y un servidor de socket Unix.
El servidor Unix puede enviar y recibir cualquier tipo de datos en el socket. Permite reutilizar un servidor no seguro y utiliza las funciones HTTP como autenticación y conexión TLS.
Está cerrado al módulo WebSocket, pero puede ser útil para algún protocolo a través de HTTP.
Este módulo ejecuta el interpretador de Python para llamar a los scripts. Actualmente, este módulo está en escena y quiere ejecutar el sitio Django.
OUISTITI se puede construir para administrar las conexiones del cliente con un solo proceso, para ser el servidor web más rápido . O puede crear un proceso de independientes para cada conexión de cliente, para crear una caja de arena a su alrededor.
Ouistiti está escrito para ser construido en un máximo de sistema. El código cumple con C99, los subprocesos pueden deshabilitarse y la configuración puede cargarse desde la memoria.
Ouistiti se construye sobre la biblioteca Libhttpserver. Esta biblioteca contiene un analizador HTTP, la gestión del socket y algunos módulos genéricos.
El proyecto está disponible en GitHub
Libhttpserver puede renombrarse Libouistiti cuando las fuentes de la biblioteca están disponibles dentro del proyecto Ouistiti .
El proyecto libb64 es obligatorio con algunos parches. La fuente está disponible en el proyecto Ouistiti-Project o dentro del proyecto Ouistiti .
El soporte SSL/TLS puede ser proporcionado por varias bibliotecas:
Para el cuadro de diálogo de autenticación con el cliente, la contraseña puede estar encriptada con el algoritmo MD5 (este no es seguro, pero es obligatorio al menos para la autenticación básica y digerida). Si SSL/TLS no está disponible, una biblioteca MD5 es obligatoria para los módulos de autenticación:
Ouistiti no puede usar la biblioteca PTHREAD, esto depende de la configuración. Pero algunas herramientas pueden usar la biblioteca pthread como los servidores WebSocket.
Ouistiti usa la biblioteca LibConfig, para establecer los servidores y los diferentes módulos.
Documentación: mod_auth
La primera versión se ejecutó en Linux y Windows. Actualmente solo se prueba la versión de Linux.
El primer paso descargue el árbol de origen.
$ git clone https://github.com/ouistiti-project/ouistitiY el proyecto libhttpserver
$ git clone https://github.com/ouistiti-project/libhttpserverHay 2 formas de construir:
El proyecto utiliza Makemore para construir todos los binarios.
Makemore contiene un archivo Gnumake y un script de configuración . El script se usa para escribir un archivo de configuración en el archivo predeterminado.config . Con Configure, puede seleccionar los directorios de instalación y las piezas para construir.
$ ./configure --prefix=/usr --libdir=/usr/lib/ouistiti --sysconfdir=/etc/ouistitiMakemore puede funcionar como Kbuild Makfile. Es posible seleccionar un archivo de configuración directamente con Make.
Otras configuraciones están disponibles dentro de las configuraciones/ directorio: * fastMono_defconfig para un servidor rápido pero sin protección de bloqueo. * FullForked_defConfig para un servidor que puede continuar ejecutándose después de un bloqueo de una conexión.
$ make fastmono_defconfigo
$ make fullforked_defconfigo para una configuración predeterminada:
$ make defconfigPara un dispositivo incrustado como una puerta de enlace o una caja, se recomienda FullForked_defConfig .
La configuración es un archivo de texto con campos y valores. El archivo defconfig en el directorio raíz no debe cambiarse. Es posible modificar o copiar un archivo existente en Configs/ Directory.
Los campos
FILE_CONFIG: use el archivo ouistiti.conf para la configuración.
VThread: habilite el múltiplo en el servidor.
Vthread_type: tome un valor como [bifurcación | pthread | windows] para especificar cómo administrar hilos.
Estática: construya la aplicación, bibliotecas (libhttpserver, libuiutils ...) y módulos en un binario independiente.
Compartir: Build/Enlace las bibliotecas dinámicas (libhttpserver, ...) y la aplicación con módulos integrados.
Módulos: construya los módulos como bibliotecas dinámicas, la aplicación se cargará en el momento de ejecución.
Max_Servers: permita que elija el número de servidores y hosts virtuales para administrar.
La compilación se realiza con GMake y acepta la configuración en la línea de comando.
Ouistiti está disponible una opción específica de depuración para agregar trazas en el código y el símbolo de depuración.
$ make DEBUG=y[Makemore] permite ver la línea de compilación con la opción V :
$ make V=1Ouistiti se puede construir para otro objetivo que el host de construcción. Para hacerlo, necesita agregar algunas configuraciones:
$ make CROSS_COMPILE=arm-linux-gnueabihfLa instalación predeterminada copiará la biblioteca en /usr/local/lib/ directorio, y binary en /usr/local/bin con la configuración predeterminada. Las rutas se pueden cambiar durante la configuración del proyecto (ver más abajo)
> make installPara crear un nuevo árbol de directorios antes de la instalación, se puede cambiar la variable DestDir .
> make DESTDIR= ~ /packages/ouistiti installOuistiti se distribuye con las recetas para construir un paquete de distribución.
Ouistiti usa libconfig para la configuración. Encuentre más información en el capítulo de configuración.
Ouistiti permite seleccionar cada característica que necesita durante la configuración de compilación. La configuración predeterminada permite usar todas las características en el lugar mínimo.
Aquí algunos tamaños para el brazo después de desnudar:
El uso de la memoria depende de la configuración de compilación y el número de conexiones simultáneas.
Con la configuración predeterminada para la arquitectura ARM, el uso es de alrededor de 4.5mo para el proceso principal y alrededor de 13.5mo para la conexión de cada cliente. Pero la configuración pequeña necesita solo 5.5 meses .
Con solo un proceso en Ouistiti , el VMSize es de alrededor de 26mo .
La página de rendimiento ofrece más información sobre el uso de la memoria.
Ouistiti no es un servidor web para una red grande, pero obtiene buenos resultados para la entrega de documentos. Las actuaciones dependen de la configuración de compilación y necesita.
Ouistiti puede ser más rápido que LightTPD 1.4, pero sin todas las características. Puede encontrar algunos resultados de prueba en la página de rendimiento.