OUISTITI (ˈwistiti) est le nom français de l'acquisition un petit singe du nouveau monde.
OUISTITI est un petit serveur Web à gérer et à configurer de petits appareils. Il permet de créer une interface Web unifiée pour la sécurité sur les documents , WebSocket , API REST et plus encore.
OUISTITI est dédié à être intégré sur l'appareil pour le contrôle à partir d'un serveur Web.
Avec ouistiti , toutes les pages, les websocket, les scripts sont protégés de la même manière. Il est inutile de gérer l'authentification par vous-même.
La connexion TLS / SSL est disponible sous forme de module avec MBEDTLS ou bibliothèque OpenSSL .
L' authentification est disponible sur toute la connexion du client . Le mot de passe des utilisateurs peut être chiffré pour le stockage. Le défi suivant est soutenu:
Un module construit un pont WebSocket entre le client de socket HTTP et la prise UNIX. Il est en mesure de gérer la poignée de main et le transfert de données à votre application. Vous développez un serveur Cammands sur une prise Unix, ouistiti le protège avec une connexion HTTPS et sa porte d'authentification. Vous pouvez trouver un exemple de serveurs:
Comme le WebSocket , ouistiti est en mesure de protéger le serveur de votre flux . Votre application ne doit envoyer des données que sur une prise UNIX, ouistiti fait le reste.
Comme tout serveur Web, ouistiti est en mesure d'envoyer des fichiers à votre client. Et en même temps, il peut les gérer sur votre serveur:
Les scripts CGI peuvent être appelés du client.
Certains URI doivent être redirigés sur un autre URI. Ce module le fait avec seulement un fichier de configuration.
Le serveur peut commencer par une liste noire et une liste blanche d'adresse IP.
Le serveur se stockait dans une base de données Les règles sur URI Access.A Règle est une combinaison de "rôles" de l'utilisateur, de type de demande et d'une expression sur l'URI. Chaque demande est vérifiée après l'authentification et avant l'accès à la Ressource.
Le module contient sa propre Restapi pour définir la base de données et utilise le module d'authentification pour la vérification des droits.
Ce module est capable de mettre à niveau une connexion et de transférer des données entre la prise ouverte et un serveur de socket UNIX.
Le serveur Unix peut envoyer et recevoir tout type de données sur la prise. Il permet de réutiliser un serveur non sécurisé et utilise les fonctionnalités HTTP comme l'authentification et la connexion TLS.
Il est fermé au module WebSocket, mais il peut être utile pour un protocole sur HTTP.
Ce module exécute l'interpréteur Python pour appeler les scripts. Actuellement, ce module est mis en scène et souhaite exécuter le site Django.
OUISTITI peut être créé pour gérer les connexions du client avec un seul processus, pour être le serveur Web le plus rapide . Ou il peut créer un processus indépendant pour chaque connexion client, pour créer un bac à sable autour de lui.
OUISTITI est écrit pour être construit sur un maximum de système. Le code est conforme C99, les threads peuvent être désactivés et la configuration peut être chargée à partir de la mémoire.
OUISTITI est construit sur la bibliothèque LibhttpServer. Cette bibliothèque contient un analyseur HTTP, la gestion de la prise et certains modules génériques.
Le projet est disponible sur github
LibhttpServer peut être renommé Libouistiti lorsque les sources de la bibliothèque sont disponibles à l'intérieur du projet d'ouistiti .
Le projet LIBB64 est obligatoire avec certains correctifs. La source est disponible dans le projet d'ouistiti ou à l'intérieur du projet d'ouistiti .
Le support SSL / TLS peut être fourni par plusieurs bibliothèques:
Pour la boîte de dialogue d'authentification avec le client, le mot de passe peut être crypté avec l'algorithme MD5 (celui-ci n'est pas sûr, mais il est obligatoire au moins pour l'authentification de base et de digestion). Si SSL / TLS n'est pas disponible, une bibliothèque MD5 est obligatoire pour les modules d'authentification:
OUISTITI peut ne pas utiliser la bibliothèque Pthread, cela dépend de la configuration. Mais certains outils peuvent utiliser la bibliothèque Pthread comme les serveurs WebSocket.
OUISTITI utilise la bibliothèque LibConfig, pour définir les serveurs et les différents modules.
Documentation: mod_auth
La première version s'est déroulée sur Linux et Windows. Actuellement, seule la version Linux est testée.
La première étape télécharge l'arbre source.
$ git clone https://github.com/ouistiti-project/ouistitiEt le projet LibhTTPServer
$ git clone https://github.com/ouistiti-project/libhttpserverIl y a 2 façons de construire:
Le projet utilise MakeMore pour construire tous les binaires.
MakeMore contient un fichier Gnumake et un script de configuration . Le script est utilisé pour écrire un fichier de configuration dans le fichier default.config . Avec Configure, vous pouvez sélectionner les répertoires d'installation et les pièces à construire.
$ ./configure --prefix=/usr --libdir=/usr/lib/ouistiti --sysconfdir=/etc/ouistitiMakeMore peut fonctionner comme KBuild Makefile. Il est possible de sélectionner un fichier de configuration directement avec Make.
Les autres configurations sont disponibles dans les configurations / répertoires: * Fastmono_defconfig pour un serveur rapide mais sans protection contre les accidents. * fullForked_defconfig pour un serveur qui peut continuer à s'exécuter après un crash d'une connexion.
$ make fastmono_defconfigou
$ make fullforked_defconfigou pour une configuration par défaut:
$ make defconfigPour un appareil intégré comme une passerelle ou une boîte, le FullForked_Defconfig est recommandé.
La configuration est un fichier texte avec champs et valeurs. Le fichier defconfig du répertoire racine ne doit pas être modifié. Il est possible de modifier ou de copier un fichier existant dans les configurations / répertoires.
Les champs
File_config: utilisez le fichier ouistiti.conf pour la configuration.
Vthread: activez le multithreading dans le serveur.
Vthread_type: prenez une valeur comme [Fork | Pthread | Windows] pour spécifier comment gérer les threads.
Statique: construire l'application, les bibliothèques (libhttpsserver, libouiutils ...) et les modules en binaire autonome.
Partagé: construire / lier les bibliothèques dynamiques (libhttpServer, ...) et l'application avec des modules intégrés.
Modules: créez les modules en tant que bibliothèques dynamiques, l'application se chargera au moment de l'exécution.
MAX_SERVERS: Autoriser à choisir le nombre de serveurs et d'hôtes virtuels à gérer.
La compilation se fait avec GMake et accepte la configuration dans la ligne de commande.
OUISTITI est disponible une option de débogage spécifique pour ajouter des traces dans le code et le symbole de débogage.
$ make DEBUG=y[Makemore] permet de regarder la ligne de compilation avec l'option V :
$ make V=1OUISTITI peut être construit pour une autre cible que l'hôte Build. Pour ce faire, vous devez ajouter des configurations:
$ make CROSS_COMPILE=arm-linux-gnueabihfL'installation par défaut copiera la bibliothèque dans / usr / local / lib / répertoire, et binaire dans / usr / local / bin avec la configuration par défaut. Les chemins peuvent être modifiés lors de la configuration du projet (voir ci-dessous)
> make installPour créer une nouvelle arborescence des répertoires avant l'installation, la variable destdir peut être modifiée.
> make DESTDIR= ~ /packages/ouistiti installOUISTITI est distribué avec les recettes pour construire le package d'une distribution.
Ouistiti utilise libconfig pour la configuration. Trouvez plus d'informations dans le chapitre de la configuration.
OUISTITI permet de sélectionner chaque fonctionnalité dont vous avez besoin lors de la configuration de construction. La configuration par défaut permet d'utiliser toutes les fonctionnalités à l'endroit minimum.
Ici quelques tailles pour le bras après le décapage:
L'utilisation de la mémoire dépend de la configuration de build et du nombre de connexions simultanées.
Avec la configuration par défaut pour l'architecture ARM, l'utilisation est d'environ 4,5mo pour le processus principal et environ 13,5mo pour la connexion de chaque client. Mais la petite configuration n'a besoin que de 5,5 mois .
Avec un seul processus à l'ouistiti, le VMSIZE est d'environ 26mo .
La page de performance donne plus d'informations sur l'utilisation de la mémoire.
OUISTITI n'est pas un serveur Web pour Big Network, mais il obtient de bons résultats pour la livraison de documents. Les performances dépendent de la configuration de build et vous en avez besoin.
OUISTITI peut être plus rapide que LightTPD 1.4, mais sans toutes les caractéristiques. Vous pouvez trouver des résultats de test dans la page de performance.