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