files
simple-httpd/readme.md
Doczom b32a38a071 Release first beta version server
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
2023-12-10 18:21:37 +05:00

3.9 KiB
Raw Blame History

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

  • В ходе тестов был обнаружена ошибка отправки "больших" файлов. Это баг сетевого стека.
  • При длительной работе сервер может начать "подзависать" или перестать отвечать на сообщения. Это баг сетевого стека.