Ouistiti (ˈwistiti) - французское имя Marmoset Маленькая обезьяна нового мира.
Ouistiti - это небольшой веб -сервер для управления и настройки небольших устройств. Он позволяет создавать унифицированный веб -интерфейс для безопасности на документах , WebSocket , REST API и многое другое.
Ouistiti посвящен встроению на устройство для управления веб -сервером.
С ouistiTI все страницы, веб -питания, сценарии защищены одинаковым способом. Бесполезно управлять аутентификацией по себе.
Соединение TLS/SSL доступно в виде модуля с MBedTLS или Library OpenSSL .
Аутентификация доступна во всех клиентских соединениях . Пароль пользователей может быть зашифрован для хранения. Поддерживается следующая задача:
Модуль строит мост WebSocket между клиентом HTTP Socket и Unix Socket. Он может управлять рукопожатием и передачей данных в ваше приложение. Вы разрабатываете сервер Cammands в сокете Unix, OuistiTi защищает его с помощью подключения HTTPS и его ворота аутентификации. Вы можете найти пример серверов:
Как и WebSocket , Ouistiti может защитить сервер вашего потока . Ваше приложение должно отправлять данные только в розетке Unix, OuistiTi делает все остальное.
Как и любой веб -сервер, Ouistiti может отправлять какие -либо виды файлов вашему клиенту. И в то же время он может управлять ими на вашем сервере:
Сценарии CGI могут быть вызваны клиентом.
Некоторые URI должны быть перенаправлены на другой URI. Этот модуль делает это только с только файлом конфигурации.
Сервер может начинаться с черного списка и белого списка IP -адреса.
Сервер хранит в базе данных правила доступа URI. Правило - это комбинация «ролей» пользователя, типа запроса и выражения на URI. Каждый запрос проверяется после аутентификации и до получения доступа к Ressource.
Модуль содержит свой собственный Restapi для установки базы данных и использует модуль аутентификации для проверки прав.
Этот модуль способен обновить соединение и передавать данные между открытым сокетом и сервером Unix Socket.
Сервер UNIX может отправлять и получать какие -либо данные в сокете. Он позволяет повторно использовать небезопасный сервер и использует функции HTTP, такие как аутентификация и соединение TLS.
Он закрыт для модуля WebSocket, но он может быть полезен для некоторого протокола через HTTP.
Этот модуль запускает интерпретатор Python для вызова сценариев. В настоящее время этот модуль поставляет и хочет запустить сайт Django.
Ouistiti может быть создан для управления клиентскими соединениями только с одним процессом, чтобы быть самым быстрым веб -сервером . Или это может создать процесс независимых для каждого клиентского соединения, чтобы создать песочницу вокруг него.
Ouistiti написан для построения на максимуме системы. Код соответствует C99, потоки могут быть отключены, а конфигурация может быть загружена из памяти.
Ouistiti строится над библиотекой Libhttpserver. Эта библиотека содержит анализатор HTTP, управление сокетом и некоторые общие модули.
Проект доступен на GitHub
Libhttpserver может быть переименован в Libouistiti , когда источники библиотеки доступны в проекте Oouisti .
Проект LIBB64 является обязательным с некоторыми участками. Источник доступен в проекте OouistiTi или внутри проекта OUISTI .
Поддержка SSL/TLS может быть предоставлена несколькими библиотеками:
Для диалогового окна аутентификации с клиентом пароль может быть зашифрован с помощью алгоритма MD5 (этот небезопасен, но он является обязательным, по крайней мере, для базовой аутентификации и аутентификации усваивания). Если SSL/TLS недоступен, одна библиотека MD5 является обязательной для модулей аутентификации:
Ouistiti не может использовать библиотеку Pthread, это зависит от конфигурации. Но некоторые инструменты могут использовать библиотеку Pthread, такие как серверы WebSocket.
Ouistiti использует библиотеку Libconfig, чтобы установить серверы и различные модули.
Документация: mod_auth
Первая версия работала на Linux и Windows. В настоящее время тестируется только версия Linux.
Первый шаг скачать исходное дерево.
$ git clone https://github.com/ouistiti-project/ouistitiИ проект Libhttpserver
$ git clone https://github.com/ouistiti-project/libhttpserverЕсть 2 способа построения:
Проект использует Makemore для построения всех двоичных файлов.
Makemore содержит файл Gnumake и сценарий настройки . Скрипт используется для написания файла конфигурации из файла default.config . С настройкой вы можете выбрать каталоги установки и детали для построения.
$ ./configure --prefix=/usr --libdir=/usr/lib/ouistiti --sysconfdir=/etc/ouistitiMakemore может бежать как kbuild Makefile. Возможно выбрать файл конфигурации напрямую с помощью Make.
Другие конфигурации доступны внутри конфигураций/ каталогов: * fastmono_defconfig для быстрого сервера, но без защиты от удара. * fullforked_defconfig для сервера, который может продолжать работать после сбоя соединения.
$ make fastmono_defconfigили
$ make fullforked_defconfigили для конфигурации по умолчанию:
$ make defconfigДля встроенного устройства, как шлюз или коробку, рекомендуется FullForked_DefConfig .
Конфигурация - это текстовый файл с полями и значениями. Файл DefConfig в корневом каталоге не должен быть изменен. Можно изменить или скопировать существующий файл в Configs/ Directory.
Поля
File_config: используйте файл ouistiti.conf для конфигурации.
Vthread: включите многопоточное чтение на сервер.
Vthread_type: возьмите значение, подобное [fork | pthread | Windows], чтобы указать, как управлять потоками.
Статический: построить приложение, библиотеки (Libhttpserver, Libouiutils ...) и модули в автономный бинарник.
Общий: Создайте/Свяжите динамические библиотеки (Libhttpserver, ...) и приложение с интегрированными модулями.
Модули: Создайте модули в качестве динамических библиотек, приложение будет загружаться во время выполнения.
MAX_SERVERS: Разрешить выбрать количество серверов и виртуальных хостов для управления.
Компиляция выполняется с помощью Gmake и принимает конфигурацию в командной строке.
Ouistiti доступен конкретный вариант отладки для добавления трассов в коде и символа отладки.
$ make DEBUG=y[Makemore] позволяет наблюдать за линией компиляции с опцией V :
$ make V=1OUISTITI может быть построен для другой цели, чем хост сборки. Для этого вам нужно добавить некоторые конфигурации:
$ make CROSS_COMPILE=arm-linux-gnueabihfУстановка по умолчанию скопирует библиотеку в /usr/local/lib/ каталог, а также бинарный в /usr/local/bin с конфигурацией по умолчанию. Пути могут быть изменены во время конфигурации проекта (см. Ниже)
> make installЧтобы создать дерево новых каталогов перед установкой, переменная Destdir может быть изменена.
> make DESTDIR= ~ /packages/ouistiti installOuistiti распространяется по рецептам для создания пакета дистрибуции.
Ouistiti использует Libconfig для конфигурации. Найдите больше информации в главе конфигурации.
Ouistiti позволяет выбрать каждую функцию, которая вам нужна во время конфигурации сборки. Конфигурация по умолчанию позволяет использовать все функции в минимальном месте.
Здесь несколько размеров для рук после счистки:
Использование памяти зависит от конфигурации сборки и количества одновременных соединений.
При конфигурации по умолчанию для архитектуры ARM использование составляет около 4,5 млн. Для основного процесса и около 13,5 МО для подключения каждого клиента. Но небольшая конфигурация требует всего 5,5 мес .
При только один процесс в Oouistiti VMSize составляет около 26 м .
Страница производительности дает больше информации об использовании памяти.
Ouistiti - это не веб -сервер для большой сети, но он получает хорошие результаты для доставки документа. Выступления зависят от конфигурации сборки, и вам нужно.
OUISTITI может быть быстрее, чем LightTPD 1.4, но без всех функций. Вы можете найти некоторые результаты тестирования на странице производительности.