пятница, 19 октября 2007 г.

SquidGuard — правила перенаправления



(оригинал - http://www.squidguard.org/Doc/redirect.html)

1. Основы

Чтобы все работало корректно, вы должны указать SquidGuard, какие URL будут возвращены squid в случае, если запрашиваемый сайт должен блокироваться. Правило redirect должно быть размещено в директивах acl. Возможны несколько правил перенаправлений внутри одной и той же политики (т.е. определения исходных правил). Пример правила перенаправления в конфигурации:

acl {
default {
pass !porn all
redirect http://www.foo.bar/blocked.html
}
}

Этот пример предполагает, что одна и та же самая политика применяется для всех пользователей прокси. Пример для множественных правил перенаправления в конфигурации:

acl {
group1 within workhours {
pass !tracker !adv !spyware !hacking !porn all
redirect http://www.foo.bar/allblocked.html
}


default {
pass !porn all
redirect http://www.foo.bar/defaultblocked.html
}
}


В этом примере определяются 2 политики: последнее — это то же самое, что и пример выше, он действует на всех пользователей прокси, которые не попадают под действие политики, определенной как «group1». Если вы как пользователь распознаны как часть «group1» (по аутентификации, IP-адресу или временному определению), будет показана страница http://www.foo.bar/allblocked.html , если запрашиваемая страница является часть политики блокирования (в нашем примере — tracker, adv, spyware, hacking и porn).

Пожалуйста, помните:

  • Политика, называемая «default», необходима!
  • Если вы не определите конкретное правило перенаправления, блокирование или журналирование откликов не будет работать.
  • Внутри описания политики должно быть только одно правило перенаправления .

2. Дополнительно

Вместо отображения статичного сообщения «You have been blocked», вы можете запрограммировать скрипт, который делает то же, а также показывает пользователю некоторую дополнительную информацию о блокировании. SquidGuard допускает следующие переменные, интерпретируемые скриптом:

— переменная, которая содержит IP-адрес клиента
%i - переменная, которая содержит идентификатор пользователя (UID) (см. RFC 931 или LDAP) или «unknown», если UID не доступен.
%n - переменная, которая содержит доменное имя клиента или «unknown», если оно не доступно
%p - переменная, которая содержит REQUEST_URI, т.е. путь и, опционально, запрос переменной %u, но помните, что для удобства без промежуточных «/»
%s - переменная, которая содержит соответствующую исходную группу (source group) или «unknown», если нет соответствующих групп.
%t - переменная, которая содержит соответствующую группу назначения(target group) или «unknown», если нет соответствующих групп.
%u - переменная, которая содержит запрошенный URL.

Эта дополнительная информация в вашем перенаправляющем правиле вашего скрипта должна выглядеть примерно следующим образом:

redirect
http://www.foo.bar/blocked.cgi?caddr=%a&cname=%n&user=
%i&group=%s&url=%u&target=%t

В вашем скрипте вы должны установить значение передаваемой переменной $QUERY_STRING. Эта переменная содержит все данные параметры. SquidGuard заменяет переменную (с «%») с ее соответствующими значениями до отправки URL скрипту, таким образом, переменная $QUERY_STRING содержит всю информацию о пользователе, IP-адресе, группе и запрашиваемом URL.