external_acl_type
TAG: external_acl_type
Этот тэг позволяет определить внешние ACL. Внешние ACL это такие ACL, которые не входят в набор стандартных типов ACL. Например, это могут быть самописные(или откуда-нибудь взятые) скрипты(вспомогательные программы), которые используя переменные Squid осуществляют некоторое действие. Такие скрипты запускаются вместе со Squid отдельным процессом.
external_acl_type name [options] FORMAT.. /path/to/helper [helper arguments..]
============ Опции(Options) ============================
ttl=n
TTL(Time-To-Live, время жизни) в секундах для хранения результатов отработки внешнего ACL.(По умолчанию установлено в 3600 т.е. 1 час).
negative_ttl=n
TTL в секундах для хранения отрицательных результатов отработки внешнего ACL. (По умолчанию, установлено значение такое же как ttl)
children=n
Количество процессов, которое может быть задействовано под внешние ACL(под скрипты, т.е.). (По умолчанию 5).
concurrency=n
Уровень параллельности для процесса. Используется, только со скриптами, которые умеют обрабатывать более одного запроса одновременно.
Примечание: Читайте ниже о совместимости
cache=n
Размер кэша результатов. 0(цифра ноль) - неограничено (По умолчанию, неограничено)
grace=
Процент, от TTL. То есть это значение нужно устанавливать как процент от значения TTL. Но без знака процента. Например, grace=90. Эта опция означает количество времени, по истечению которого, произойдет обновление кэшированных записей. Это так называемое время отсрочки.(По умолчанию установлено 0, для отсутствия отсрочки)
protocol=2.5
Режим совместимости для внешних ACL со Squid-2.5
Формат, т.е. переменные которые можно использовать в своей вспомогательной программе(FORMAT). Слева, название переменной, справа - то, что в ней находится.
%LOGIN Логин аутентифицированного пользователя
%EXT_USER Имя пользователя из внешнего acl
%IDENT Ident имя пользователя
%SRC IP-адрес клиента
%SRCPORT Порт клиента
%DST Запрошенный хост
%PROTO Протокол по которому сделан запрос
%PORT Запрошенный порт
%METHOD Метод, которым осуществлен запрос
%MYADDR IP адрес прокси сервера Squid
%MYPORT Порт прокси сервера Squid
%PATH URL путь(все символы после имени хоста) в запросе
%USER_CERT SSL пользовательский сертификат в формате PEM
%USER_CERTCHAIN SSL пользовательский сертификат сети в формате PEM
%USER_CERT_xx Имя SSL пользовательского сертификата xx
%USER_CA_xx Кем выдан SSL пользовательский сертификат xx
%{Header} Полностью HTTP заголовок запроса
%{Hdr:member} HTTP заголовок запроса содержащий list member
%{Hdr:;member} HTTP заголовок запроса содержащий list member разделяя знаком ";" элементы списка. Разделителем можт быть любой символ псевдографики.
%ACL Имя ACL
%DATA Аргументы ACL. Если не использовать эту переменную, то все аргументы автоматически добавляются в конец строки.
В дополнение к вышесказанному - каждая строка определяющая ACL, должна быть включена в строку запроса вспомогательной программы(скрипта) (смотри директиву acl тип external).
Скрипт получает строки с данными согласно формата(FORMAT) и возвращается строки содержащие OK или ERR, определящие пройдена аутентификация или нет соответственно. Опционально строка может содержать дополнительные ключевые слова(keywords).
Синтаксис ответной строки скрипта:
OK/ERR keyword=value ...
Доступные ключевые слова(keywords):
user= Пользовательские имена (логины также можно вводить)
password= Пароли пользователей (для PROXYPASS login= cache_peer)
message= Сообщение об ошибке. Оно запишется в переменную %o
log= Строка которая будет записана в access.log. Доступна специкация %ea формата журналов.
Если установлено protocol=3.0 (по умолчанию), тогда URL будет использоватся для передачи значений и для запросов и для ответов.
Если установлено protocol=2.5, тогда все значения должны быть оформлены в кавычки, если они содержат пробелы. Кроме того, кавычки или знак \, которые находятся в содержимом ключевого слова, должны предварятся знаком \. То есть если имя пользователя joe "blade" smith, то запись такого имени в ключевом слове user должна выглядеть так - user = "joe \"blade\" smith".
Примечание: Опция children= названа concurrency= в версии Squid-2.5.STABLE3 и более ранних. В Squid-3 опция concurrency= более не работает. Используйте children=.
По умолчанию:
none