Version 0.1.0 has been released: - Added a feature for easily sending an http response - Minor bugs have been fixed - Updated API for server modules - Added a readme file
simple_http
Это небольшой http-сервер для Колибри ОС позволяющий хостить статичные сайты и создавать модули, для динамической генерации отправляемых клиенту данных.
Сервер отправляет содержимое файлов без сжатия в соответствии с заданной таблицей ассоциации MIME типа и расширения файла. Если запрос от клиента имеет uri путь который соответствует модулю сервера, то сервер передаёт управление коду в этом модуле с передачей всех необходимых для функционирования данных.
Configuration
Для настройки сервера применяется файл конфигурации в формате ini, где указываются следующие параметры:
В секции MAIN
ip
- ip адрес сервераport
- порт для подключения (по умолчанию 80)conn
- максимальное количество открытых соединений(по умолчанию 10)work_dir
- директория для размещения файлов, отправляемых серверомmime_file
- путь к файлу с таблицей сопоставлениея mime типов и расширений файлов (если не указан, то используется встроенная в сервер таблица сопоставления)unit_dir
- директория расположения модулей сервера
В секции UNITS
может находиться множество параметров, имеющих вид uri_path=file_name
где:
uri_path
- путь указываемый клиентом во время запросаfile_name
- название/путь до файла модуля относительноwork_dir
API for units
К серверу можно подключить дополнительные модули в виде библиотек со специальными экспортируемыми функциями:
uint32_t stdcall httpd_init(IMPORT_DATA* import)
Эта функция необходима для передачи модулю необходимых данных, таких как функции работы с сетью, рабочие директории и тд. Если инициализация модуля прошла успешно, функция возвращает 0.
void stdcall httpd_server(CONNECT_DATA* request_data)
Эта функция вызывается при получении запроса с uri путём указанном в файле конфигурации для этого модуля. Сервер передаёт в функцию структуру соединения, в которой находятся данные запроса(заголовки, параметры, http метод и версия). На основе этих данных функция может генерировать необходимый ответ.
Bugs
- В ходе тестов был обнаружена ошибка отправки "больших" файлов. Это баг сетевого стека.
- При длительной работе сервер может начать "подзависать" или перестать отвечать на сообщения. Это баг сетевого стека.