Ouistiti (ˈWistiti) ist der französische Name von Marmoset, ein kleiner Affe der Neuen Welt.
Ouistiti ist ein kleiner Webserver zum Verwalten und Konfigurieren kleiner Geräte. Es ermöglicht das Erstellen einer einheitlichen Weboberfläche für Sicherheit in Dokumenten , Websocket , Rest -API und mehr.
Ouistiti ist für die Steuerung von einem Webserver auf dem Gerät eingebettet.
Bei Ouistiti werden alle Seiten, Websockets und Skripte auf die gleiche Weise geschützt. Es ist nutzlos, die Authentifizierung nach Ihrem Selbst zu verwalten.
Die TLS/SSL -Verbindung ist als Modul mit MbedTLS oder OpenSSL -Bibliothek erhältlich.
Die Authentifizierung ist in allen Kundenverbindungen verfügbar. Das Passwort der Benutzer kann für den Speicher verschlüsselt werden. Die folgende Herausforderung wird unterstützt:
Ein Modul erstellt eine Websocket -Brücke zwischen dem HTTP -Socket -Client und der UNIX -Socket. Es ist in der Lage, den Handschlag und die Datenübertragung in Ihre Anwendung zu verwalten. Sie entwickeln einen Cammands -Server auf einem Unix -Socket, Ouistiti schützt ihn mit einer HTTPS -Verbindung und seinem Authentifizierungstor. Sie können ein Beispiel für Server finden:
Wie das Websocket kann Ouistiti den Server Ihres Streams schützen. Ihre Anwendung sollte nur Daten in einem UNIX -Socket senden, Ouistiti macht den Rest.
Wie jeder Webserver kann Ouistiti alle Arten von Dateien an Ihren Client senden. Gleichzeitig kann es sie auf Ihrem Server verwalten:
CGI -Skripte können vom Client aufgerufen werden.
Einige URI müssen auf einem anderen URI umgeleitet werden. Dieses Modul erledigt dies nur mit einer Konfigurationsdatei.
Der Server kann mit einer schwarzen Liste und einer Whitelist der IP -Adresse beginnen.
Der Server speichert in eine Datenbank die Regeln für URI -Zugriff. Eine Regel ist eine Kombination aus "Rollen" der Benutzer, der Art der Anforderung und einem Ausdruck auf dem URI. Jede Anfrage wird nach der Authentifizierung und vor dem Zugriff auf die Ressource überprüft.
Das Modul enthält seine eigene Wiederherstellung , um die Datenbank festzulegen, und verwendet das Authentifizierungsmodul für die Rechteprüfung.
Dieses Modul kann eine Verbindung aufrüsten und Daten zwischen dem geöffneten Socket und einem UNIX -Socket -Server übertragen.
Der UNIX -Server kann alle Arten von Daten in den Socket senden und empfangen. Es ermöglicht die Wiederverwendung eines unsicheren Servers und verwendet die HTTP -Funktionen wie Authentifizierung und TLS -Verbindung.
Es ist für das WebSocket -Modul geschlossen, kann jedoch für ein Protokoll über HTTP nützlich sein.
In diesem Modul wird der Python -Interpretor ausgeführt, um Skripte aufzurufen. Derzeit ist dieses Modul in der Inszenierung und möchte die Django -Website ausführen.
Ouistiti kann erstellt werden, um Clientverbindungen mit nur einem Prozess zu verwalten, um der schnellste Webserver zu sein. Oder es kann für jede Client -Verbindung einen Unabhängigkeitsprozess erstellen, um eine Sandkiste um sie herum zu erstellen.
Ouistiti soll auf einem Maximum des Systems aufgebaut werden. Der Code ist C99 -konform, die Threads können deaktiviert und die Konfiguration aus dem Speicher geladen werden.
Ouistiti wird über die Bibliothek libhttpserver aufgebaut. Diese Bibliothek enthält HTTP -Parser, das Management des Sockets und einige generische Module.
Das Projekt ist auf GitHub erhältlich
libhttpServer kann in libouistiti umbenannt werden, wenn die Quellen der Bibliothek im Ouistiti -Projekt verfügbar sind.
Das Projekt LIBB64 ist mit einigen Patches obligatorisch. Die Quelle ist im Ouistiti-Project oder im Ouistiti- Projekt erhältlich.
Die Unterstützung von SSL/TLS kann von mehreren Bibliotheken bereitgestellt werden:
Für den Authentifizierungsdialog mit dem Client kann das Kennwort mit dem MD5 -Algorithmus verschlüsselt werden (dieser ist nicht sicher, ist jedoch zumindest für die Basis- und Verdauungsauthentifizierung obligatorisch). Wenn SSL/TLS nicht verfügbar ist, ist eine MD5 -Bibliothek für Authentifizierungsmodule obligatorisch:
Ouistiti verwendet möglicherweise nicht die PThread -Bibliothek, dies hängt von der Konfiguration ab. Einige Tools verwenden jedoch möglicherweise die PThread -Bibliothek wie WebSocket -Server.
Ouistiti verwendet die Bibliothek Libconfig, um die Server und die verschiedenen Module festzulegen.
Dokumentation: mod_auth
Die erste Version lief auf Linux und Windows. Derzeit wird nur die Linux -Version getestet.
Der erste Schritt laden Sie den Quellbaum herunter.
$ git clone https://github.com/ouistiti-project/ouistitiUnd das libhttpserver -Projekt
$ git clone https://github.com/ouistiti-project/libhttpserverEs gibt 2 Möglichkeiten zu bauen:
Das Projekt verwendet Makemore, um alle Binärdateien zu erstellen.
Makemore enthält eine Gnumake -Datei und ein Konfigurationsskript . Das Skript wird verwendet, um eine Konfigurationsdatei aus der Datei Standard.config zu schreiben. Mit Konfiguration können Sie die Installationsverzeichnisse und die zu erstellenden Teile auswählen.
$ ./configure --prefix=/usr --libdir=/usr/lib/ouistiti --sysconfdir=/etc/ouistitiMakemore kann als Kbuild Makefile laufen. Es ist möglich, eine Konfigurationsdatei direkt mit Made auszuwählen.
Weitere Konfigurationen sind in Konfigurationen/ Verzeichnissen verfügbar: * fastmono_defconfig für einen Fast Server, jedoch ohne Absturzschutz. * FILLFORKED_DEFCONFIG für einen Server, der nach einem Absturz einer Verbindung weiter laufen kann.
$ make fastmono_defconfigoder
$ make fullforked_defconfigoder für eine Standardkonfiguration:
$ make defconfigFür ein eingebettetes Gerät wie ein Gateway oder eine Schachtel wird die fullfiled_defconfig empfohlen.
Die Konfiguration ist eine Textdatei mit Feldern und Werten. Die Defconfig -Datei im Stammverzeichnis darf nicht geändert werden. Es ist möglich, eine vorhandene Datei in Konfigurationen/ Verzeichnis zu ändern oder zu kopieren.
Die Felder
Datei_Config: Verwenden Sie die Datei ouistiti.conf für die Konfiguration.
Vthread: Aktivieren Sie das Multithreading in den Server.
Vthread_type: Nehmen Sie einen Wert wie [Fork | pThread | Windows], um zu geben, wie man Threads verwaltet.
Statisch: Erstellen Sie die Anwendung, Bibliotheken (libhttpserver, libouiutils ...) und Module in eine eigenständige binäre.
Freigegeben: Erstellen/Verknüpfen Sie die dynamischen Bibliotheken (libhttpserver, ...) und die Anwendung mit integrierten Modulen.
Module: Erstellen Sie die Module als dynamische Bibliotheken. Die Anwendung lädt zur Laufzeit.
Max_Servers: Erlauben Sie, die Anzahl der Server und virtuellen Hosts auszuwählen.
Die Zusammenstellung erfolgt mit GMAKE und akzeptiert die Konfiguration in der Befehlszeile.
Ouistiti ist ein bestimmtes Optionsdebuggen, um Spuren im Code und im Debug -Symbol hinzuzufügen.
$ make DEBUG=y[Makemore] ermöglicht es, die Kompilierungslinie mit der V -Option zu beobachten:
$ make V=1Ouistiti kann für ein anderes Ziel als den Build -Host aufgebaut werden. Dazu müssen Sie einige Konfigurationen hinzufügen:
$ make CROSS_COMPILE=arm-linux-gnueabihfDie Standardinstallation kopiert die Bibliothek in /usr/local/lib/ verzeichnis und ist mit der Standardkonfiguration in /usr/local/bin . Die Pfade können während der Projektkonfiguration geändert werden (siehe unten)
> make installUm vor der Installation einen neuen Baumverzeichnisbaum zu erstellen, kann die Destdir -Variable geändert werden.
> make DESTDIR= ~ /packages/ouistiti installOuistiti wird mit den Rezepten verteilt, um ein Verteilungspaket zu erstellen.
Ouistiti verwendet libConfig für die Konfiguration. Weitere Informationen zum Konfigurationskapitel finden Sie.
Ouistiti ermöglicht die Auswahl jeder Funktion, die Sie während der Build -Konfiguration benötigen. Die Standardkonfiguration ermöglicht es, alle Funktionen an den minimalen Ort zu verwenden.
Hier einige Größen für Arm nach dem Strippen:
Die Speicherverwendung hängt von der Build -Konfiguration und der Anzahl der gleichzeitigen Verbindungen ab.
Mit der Standardkonfiguration für die ARM -Architektur beträgt die Verwendung für den Hauptprozess rund 4,5 Monate und etwa 13,5 Monate für die Verbindung jedes Kunden. Die kleine Konfiguration benötigt jedoch nur 5,5 Monate .
Mit nur einem Prozess in Ouistiti liegt das VMSIZE ungefähr 26 Monate .
Auf der Performance -Seite werden weitere Informationen über die Speichernutzung enthält.
Ouistiti ist kein Webserver für Big Network, aber es erzielt gute Ergebnisse für die Dokumentbereitstellung. Die Leistungen hängen von der Build -Konfiguration ab und Sie benötigen.
Ouistiti ist möglicherweise schneller als lightTPD 1.4, jedoch ohne alle Merkmale. Sie finden einige Testergebnisse auf der Auftrittsseite.