Функции - секции [def]

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

Синтаксис определения функции:

func_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")
}