Проект

Общее

Профиль

Squid external acl type Директивы(TAG)

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

link: http://break-people.ru/cmsmade/?page=translate_squid_reference