LINUX.ORG.RU

squid и ограничение по сумме мб


0

0

Всем здрям, возможно ли ограничить траффик на пользователя не по ширине канала а по сумарному колличеству скаченных мегабайт? Что бы пользователю запрещался доступ если он исчерпал свой лимит за месяц, к примеру скачал 200 Мб. Кстати также крутится самописный биллинг на apache+mysql+php, его смысл в том что он забирает инфу с логов squid запихивает их в мускл, может это как то можно использовать?

★★★★★

Можно. 
Дёргаем юзеров запросом (не факт, что он оптимален, но должен работать)

SELECT traf.authuser FROM 
(SELECT authuser, SUM(bytes) AS megs FROM traffic GROUP BY authuser) AS traf 
WHERE traf.megs > 209715200;

Выхлоп mysql направляем в какой-нибудь файл типа /etc/squid/previshency.conf

В squid.conf пишем

acl previs proxy_auth "/etc/squid/previshency.conf"
http_access deny previs

bakagaijin
()

Напиши редиректор который будет при каждом запросе смотреть базу - не превышен ли лимит этого юзера и если превышен перенаправляй на пустую страничку. С исходниками squid вроде есть пример простейшего редиректора, помоему при вызове один из параметров идентификатор юзера, они вроде через stdin передаются. Я делал но очень давно - уже не помню нифига. Правда я делал похитрому - писал патч для squid который суммировал трафик юзеров и скидывал в файл его - так намного быстрей чем в базу лазить. У каждого юзера был одноименный файл где лежали два значения - лимит и текущее значение - из редиректора проверял их и если что перенаправлял на пустую страничку. В принципе если в базе лежит готовое значения текущего трафика то можно и в базу лазить.

koTuk
()
Ответ на: комментарий от splinter

Придётся поменять колонку в базе (использовать какой-нибудь ipaddr вместо authuser) и тип acl в сквиде

bakagaijin
()
Ответ на: комментарий от splinter

Кстати - в редиректор помоему как раз ip передается - я точно не помню, у меня юзеры были к ip-м привязаны.

koTuk
()

sams. Вроде считается не сильно стабильным, но у меня крутится уже полгода без нареканий, глюков и зависаний.

UserUnknown ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.