Правила доступа

На главную  Назад  Вперед

Правила доступа определяются в секции Правила раздела Фильтрация. Объявление правил должно предваряться строкой [match].

При задании правил используются специальные операторы if.

Синтаксис оператора if:

if BOOL_EXPR {
 блок_конфигурации
}

Где BOOL_EXPRлогическое выражение, а блок_конфигурации – список параметров, которым присвоены новые значения, отличные от глобальных значений, указанных на странице Фильтрация (раздел Содержание).

Примеры

Если требуется заблокировать доступ к интернет-ресурсам из списков Adult и Email в рабочее время для пользователей из локальной сети, а также для пользователей с определенного IP-адреса, то можно использовать следующее правило:

[match]
if (local_ip() ||
   request_ip <<= "87.249.57.20") &&
   worktime()
{
 BlockAdult = yes
 BlockEmail = yes
}

Если требуется заблокировать доступ к интернет-ресурсам из списка Terrorism в ночное время (с 23:00 до 8:00) для пользователей с определенных IP-адресов, то можно задать следующее правило:

[match]
if (request_ip <<= "93.185.182.46" ||
   request_ip <<= "195.98.93.66") &&
   (system_time>="23:00" ||
   system_time<="8:00")
{
 BlockTerrorism = yes
}

Чтобы запретить пользователю "edx" доступ к сети Интернет в нерабочее время:

[match]
if request_username=="edx" && !worktime()
{
 BlockAll = yes
}

Обратите внимание, что макросы local_ip() и worktime(), используемые в примерах, должны быть предварительно определены.

Чтобы запретить доступ к конкретному интернет-ресурсу всем пользователям, чьи имена удовлетворяют регулярному выражению "vasya.*", либо удовлетворяют любому из регулярных выражений, перечисленных в файле, либо совпадают с одной из строк в файле, используйте следующее правило:

[match]
if (request_username ~ "vasya.*" ||
request_username ~ file:"/tmp/icapd/users_re_block.txt"
|| request_username == file:"/tmp/icapd/users_block.txt")
&& (request_url == "http://example.com/mega_music.mp3")
{
 BlockAll = yes
}

Обратите внимание, что установка в правиле BlockAll в No не означает, что в результате срабатывания условия будет обеспечен беспрепятственный доступ к запрошенному ресурсу. В этом случае доступ к ресурсу разрешается, если он попадает в пользовательский белый разрешающий список или не попадает в активные черные списки (как в блокируемые категории, так и в пользовательский черный список). Управление блокировкой категорий, а также пользовательскими черными и белыми списками производится на странице Фильтрация.

В случае если в обычном режиме доступ к ресурсам из некоторых тематических списков запрещен, но нужно разрешить доступ к некоторому ресурсу, следует создать соответствующее разрешающее правило.

Например, пусть требуется разрешить посещать ресурс socialnetwork.com пользователям, IP-адреса которых принадлежат подсети 192.168.1.1/32, не смотря на то, что он относится к блокируемым тематическим спискам SocialNetworks и Chats:

if (request_ip <<= "192.168.1.1/32") && (request_url ~ "socialnetwork.com")
{
 BlockSocialNetwork = no
 BlockChats = no
}

Данное правило разрешает доступ к ресурсам, находящимся в тематических списках SocialNetworks и Chats, только в том случае, если:

IP-адрес запросившего доступ клиента относится к подсети 192.168.1.1/32;

URL, запрошенный клиентом, содержит подстроку socialnetwork.com.

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