Макросы

На главную  Назад  Вперед

Макросы можно использовать в любых логических выражениях, но каждый макрос должен быть определен перед использованием. Макросы определяются в секции Определения раздела Фильтрация. Объявление макросов должно предваряться строкой [def].

Синтаксис определения макроса:

macro_name = { BOOL_EXPR }

Где BOOL_EXPRлогическое выражение.

Все макросы возвращают логическое значение, аргументы не поддерживаются. По сути, макрос – это просто сокращенная запись логического выражения.

Пример:

Определяем макросы is_localhost и local_ip: данные макросы будут иметь значение true, если запрос пришел с одного из указанных IP-адресов или с одного из IP-адресов, перечисленных в файле.

[def]
is_localhost = { request_ip <<= "127.0.0.0/8" }
 
local_ip = {
 request_ip <<= "127.0.0.0/8"
 || request_ip <<= "192.168.0.0/16"
 || request_ip <<= "172.16.0.0/12"
 || request_ip <<= file:"/tmp/icapd/other_local_ips.txt"
}

Определяем макрос worktime(): он будет иметь значение true, если текущее системное время попало в промежуток от 9:30 до 13:00 и от 14:00 до 18:15.

[def]
worktime = {
(system_time>="9:30" && system_time<="13:00")
||
(system_time>="14:00" && system_time<"18:15")
}