Плагин http предназначен для проверки разнообразных сервисов работающих по принципу Запрос-Ответ поверх протокола TCP. Плагин посылает запрос, ожидает ответ и затем сравнивает пришедший ответ с заранее заданным регулярным выражением. В отличие от например плагина smtp данный плагин не поддерживает последовательностей Запрос-Ответ. Зато он может послать произвольный запрос на произвольный порт сервера и сравнить полученный ответ с произвольным заранее заданым регулярным выражением.
Для операций с регулярными выражениями используется библиотека < regex.h >. Компиляция регулярных выражений во внутренний формат библиотеки происходит при запуске плагина и больше не отнимает времени в процессе работы плагина. Скомпилированные при старте плагина регулярные выражения хранятся в виде односвязного списка. Такой способ хранения регулярных выражений очень удобен, т.к. для каждого запущенного плагином ребенка переменная reg_next указывает на соответсвующую проверяемому ребенком сервису структуру списка регулярных выражений.
Буфер для принимаемой от сервера информации ограничен. Он определяется параметром плагина MaxReceiveSize, который по умолчанию равен 10000 байт. Такого буфера вполне хватит для полной загрузки в него большинства HTML страниц. Плагин не поддерживает сдвиг буфера относительно начала принимаемой информации (например для пропуска HTTP заголовков). Зато он предоставляет возможность для их анализа, что невозможно в случае использования браузера. Поскольку браузер самостоятельно интерпретирует заголовки и, обычно за исключением кода ошибки, не показывает их пользователю.
Ниже приведена карточка объекта не в типичной для нее форме просмотра, а в процессе изменения данных. Это сделано для того, чтобы показать, что параметры сервиса в карточке объекта могут быть достаточно сложными и включать в себя даже заголовки HTTP.
Параметров плагина довольно много. Включая в себя уже ранее упомянутый MaxReceiveSize это:
Кроме общих параметров в карточке объекта находятся следующие:
Подразумевая что используется протокол HTTP, можно отметить, что набор полей Host, Port и первой строки поля Запрос образует URI.
eye=# select * from parametrs where nameofcfg = 'http';
nameofcfg | parametr | value
-----------+----------------+-----------------------
http | StartCounter | 700
http | ChaildNumber | 5
http | MaxReceiveSize | 5000
http | LogFile | /var/log/eye/http.err
http | SendTime | 50
(5 rows)
eye=#
В силу схожих принципов обработки запросов сервисов, разумный выбор взаимосвязанных параметров плагина StartCounter, ChaildNumber и SendTime производится из тех же соображений, что и выбор аналогичных параметров для плагина smtp. Влияние параметра MaxReceiveSize на работу плагина было объяснени выше. Остается только добавить что при сколь либо значительном количестве проверяемых серверов, достаточно малом для оперативного обновления параметре SendTime и буфере (параметр MaxReceiveSize) достаточном чтобы вместить большинство ответов серверов файл определяемый параметром LogFile растет с ужасающей быстротой.
Up | [_] | Среди пришедшей от сервера информации найдена подстрока соответсвующаяя искомому регулярному выражению. |
Regexp not matched | [_] | Пришедший от сервера ответ не совпадает с регулярным выражением. |
Not stated | [_] | Не используется. |
Not stated | [_] | Не используется. |
Error in resolve | [_] | Невозможно определить IP адрес сервера. При последующих запросах попытки определить IP адрес сервера не повторятся! |
Error in regular expression | [_] | Ошибка при компиляции регулярного выражения при запуске плагина. Естественно, сервис соответствующий данной карточке объекта в дальнейшем не проверяется. |
Cannot connect to port oe host | [_] | IP адрес сервера удалось получить но данный порт или сервер целиком не отвечает |