Модуль Quotas

    О модуле

    Модуль Quotas позволяет реализовать ограничение доступа пользователей на основе превышения ими квот трафика.

    Возможности

    • Ограничение доступа пользователей к сети Интернет.

    Использование

    В модуле предусмотрено три статуса квоты:

    № п/п Значение статуса Описание статуса
    1 0 Нет превышения квоты. Строка окрашена в белый цвет.
    2 1 Превышение дневной квоты. Строка окрашена в желтый цвет.

    Для того, чтобы начать использовать модуль, зайдите в "Менеджер модулей", найдите Quotas и нажмите на ссылку "Установить".

    Добавление квоты

    После установки перейдите в модуль, нажав на его название. Чтобы добавить новую квоту вам необходимо нажать ссылку "Добавить квоту".

    Необходимые поля:

    № п/п Поле Описание
    1 Дневная квота (МБ) Квота которая будет предоставлятся пользователю ежедневно. Допустим, дневная квота равна 100 мегабайтам. Если пользователь сегодня выбрал 100 мегабайт, то доступ ему будет ограничен. Однако на следующие сутки, ему вновь предоставится 100 мегабайт автоматически. Чтобы предоставить безлимитную квоту, необходимо задать значение -1.
    2 Актив Активирование квоты. Если флаг установлен, то квота будет обрабатываться скриптом. Если флаг снят, то принудительно устанавливается статус "Нет превышения квоты" (0).
    3 Исключить используемые алиасы Если флаг установлен, то из списка алиасов доступных к выбору, исключаются те, которым уже назначена квота. Если флаг не установлен, отображаются все алиасы.
    4 Значение Алиас к которому будет применена квота.

    Установив все параметры, нажмите кнопку "Добавить" и квота будет добавлена в список.

    Редактирование квоты

    Для редактирования квоты зайдите в модуль Quotas и нажмите на имя алиаса.

    В открывшейся форме, будут доступны те же поля, что при добавлении и дополнительно ещё одно поле.

    № п/п Поле Описание
    1 Тек. днев. квота (МБ) Это поле по умолчанию равно дневной квоте. Допустим дневная квота равна 100 мегабайтам. Следовательно, текущая дневная квота также равна 100 мегабайтам. Если пользователь превысил дневную квоту, то доступ ему будет ограничен. Однако, можно увеличить его лимит "на сегодня". Для этого установите поле "Тек. днев. квота" в нужное значение, например 150 мегабайт. Это означает, что пользователю будет открыт доступ на дополнительные 50 мегабайт на этот день. На следующие сутки, текущая дневная квота снова станет равна дневной квоте - 100 мегабайтам. Чтобы предоставить безлимитную квоту "на сегодня", необходимо задать значение -1.

    Удаление квоты

    Чтобы удалить квоту, нажмите на ссылку DELETE в последнем столбце нужной квоты. Или зайдите в режим редактирования и там нажмите кнопку удалить.

    Ограничение доступа

    Для реализации ограничения доступа, в каталоге модуля размещено несколько скриптов на perl

    № п/п Имя файла Назначение
    1 quotaupdate.pl Скрипт обновления статуса квот. Необходимо поместить его в cron. Имеет смысл запускать его после запуска fetch.pl.
    2 quotablock.pl Хэлпер для ограничения доступа пользователей по превышению квоты.
    3 quotaspeed.pl Хэлпер для ограничения скорости доступа пользователей по превышению квоты.

    Можно использовать как оба хэлпера, так и по одному.

    Для того, чтобы хэлпер заработал его необходимо добавить в squid.conf.

    Для всех перечисленных выше скриптов как и в других perl скриптах Screen Squid вам необходимо сконфигурировать подключение к базе данных.

    Дополнительный параметр "typeid", есть только у хэлперов, необходимо выставить согласно того, как вы привязали алиасы.

    • Если алиасы привязаны к логину, то вам необходимо установить значение 0 (по умолчанию).
    • Если алиасы привязаны к IP адресу, то вам необходимо установить значение 1

    Далее необходимо внести изменения в squid.conf.

    Если вы используете хэлпер ограничения скорости (quotaspeed.pl)

    № п/п Значение typeid Инструкции для squid.conf
    1 0 #acl section
    external_acl_type e_speed ttl=10 negative_ttl=10 %LOGIN /var/www/html/freetime/modules/Quotas/quotaspeed.pl
    acl a_speed external e_speed
    2 1 #acl section
    external_acl_type e_speed ttl=10 negative_ttl=10 %SRC /var/www/html/freetime/modules/Quotas/quotaspeed.pl
    acl a_speed external e_speed

    Независимо от значения typeid, добавьте правила:

    #http rules section
    http_access allow a_speed
    
    #delay pools section
    
    delay_pools 2
    delay_class 1 5
    delay_class 2 5
    
    #acl some_group external -m=' ' tag slowspeed
    #slowspeed and fastspeed это условные сигналы которые мы подаём squid, а он уже ограничивает пользователей. 
    
    acl slowclient note tag slowspeed
    
    acl fastclient note tag1 fastspeed
    
    # Fast clients in a first pool.
    delay_access 1 allow fastclient
    delay_access 1 deny all
    
    # Slow clients in a second pool
    delay_access 2 allow slowclient
    delay_access 2 deny all
    
    #Limit speed to delay pools
    
    #First unlimited
    delay_parameters 1 -1/16000
    
    #Second set 64 kbit/s
    
    delay_parameters 2 8000/8000
    

    Если вы используете хэлпер ограничения доступа (quotablock.pl)

    № п/п Значение typeid Инструкции для squid.conf
    1 0 #acl section
    external_acl_type e_block ttl=10 negative_ttl=10 %LOGIN /path/to/script/quotablock.pl
    acl a_block external e_block
    2 1 #acl section
    external_acl_type e_block ttl=10 negative_ttl=10 %SRC /path/to/script/quotablock.pl
    acl a_block external e_block

    Не забудьте указать корректный /path/to/script.

    Для обоих значений typeid, добавьте правило:

    #http rules section
    http_access allow a_block
    

    Перезагрузите Squid.

    Для того, чтобы прекратить использовать Quotas, необходимо зайти в "Менеджер модулей" и нажать ссылку "Удалить" для модуля Quotas.

    Важное замечание:

    После включения ограничения доступа, по умолчанию, доступ закрыт. Это означает, если алиаса нет в списке квот, то доступ ему будет закрыт.

    Идеи, баги, вопросы?

    Сообщи нам t.me/screensquid