Aler

Программы
Файлы
Ссылки
Гостевая

к списку программ

Squidlog3 [скачать]

Программа для подсчёта трафика пользователей прокси-сервера Squid с функцией отключения при достижении определённого лимита (необходимо, что бы пользователи авторизировались по имени и паролю). Подобных программ куча, но моя кроме самого прокси и perl ничего не требует дополнительного, проста в установке. Минус - нет возможности "администрирования" через веб-интерфейс. Программа у меня работает под FreeBSD, проверялась под OpenBSD.

Немного о том как это работает:
есть проски-сервер SQUID, который пускает пользователей в инет по имени и паролю (которые хранятся в файле passwd). Скрипт, запускается раз в минуту (настраиваемый параметр), обрабатывает лог файл прокси, делает подсчёт трафика, сверяет его с лимитом и если трафик превышает либо равен лимиту, то строка c логином пользователя в файле passwd комментируется. Когда же период, на который выдаётся лимит (у меня в примере месяц), истекает, трафик обнуляется, т.е. трафик снова становится меньше лимита - комментарий со строки с логином убирается.

Описание, установка

1) data - данные программы
2) logs - лог программы
3) prog - "главный" скрипт и файл конфигурации
4) utils - дополнительные утилиты
5) www - веб директория

подробнее:
===================================
1)data
1.1)admins.txt - список "адмнистраторов", т.е. тех, кто может смотреть всю статистику 
(так же используется в веб-интерфейсе)

формат:
#список, через запятую, администраторов
login1,login2,login3

1.2)limits.txt - файл с лимитами (так же используется в веб-интерфейсе)

формат:
#логин пользователя, лимит в МБайтах
login	123

1.3)limitsp.txt - добавочный лимит (бывает ситуация, когда тому или иному пользователю необходимо 
добавить лимит, но только на один период, по его истечению добавочный лимит уберётся, останется 
только основной) (так же используется в веб-интерфейсе)

1.4)passwd-stats - файл с именем и паролем для просмотра статистики 
(этот файл может быть копией файла с паролями для squid-а)

1.5)traffik.txt - файл с трафиком пользователей (так же используется в веб-интерфейсе)

формат:
#логин, трафик в байтах

1.6)traffik.txt.bu - архив трафика

1.7)users.txt - файл с описаниями пользователей (для веб-интерфейса)
===================================
2)logs:
2.1)squidlog3.log - лог работы скрипта, т.е. когда кого включили/отключили 
(так же используется в веб-интерфейсе)
2.2)userlog.log - лог просмотра статистики пользователями 
(так же используется в веб-интерфейсе)
===================================
3)prog
3.1)_sl3.pl - основной скрипт. Запускается из планировщика.
3.2)squidlog3.conf - настройки переменных для скрипта, пути к файлам и т.п.
===================================
4)utils
4.1)bu_traffik.pl - скрипт, который выполняется по окончанию "периода". При этом обнуляется трафик 
и добавочный лимит. Запускается из планировщика. Пути к файлам нужно просать самому.
4.2)byte_in_mbyte.pl - скрипт для перевода байт и мегабайты (необязателен)
===================================
5)www - веб-интерфейс
здесь подробно расписывать не буду, только про cgi-bin\stats
#ls 
-rw-r--r--	1 root	wheel	admin.inc
-rw-r--r--	1 root	wheel	begin.inc
-rw-r--r--	1 root	wheel	end.inc
-rw-r--r--	1 root	wheel	main.inc
-rw-r--r--	1 root	wheel	prov.inc
-rwxr-xr-x	1 squid	squid	stats.pl
-rw-r--r--  1 root   wheel  1803  5 дек 10:54 var.inc

admin.inc - часть доступная только для пользователей из списка admins.txt
begin.inc - 
end.inc -
main.inc - 
prov.inc - проверка ip-адреса клиента, если нужно, то задайте шаблоны в переменных $sh='';$sh1='';
например $sh='192.168';$sh1='10.10.10'
stats.pl - вызываемый скрипт
var.inc - загрузка переменных, нужно указать путь к файлу конфигурации

===================================
Добавьте или измените в squid.conf строки

auth_param basic credentialsttl 1 minute 
что бы прокси проверял имя и пароль раз в минуту

пропишем задание для планировщика (cron)
#crontab -e
*/1 * * * * perl /usr/local/squidlog3/prog/_sl3.pl #каждую минуты запускать основной скрипт
1 0 1 * * perl /usr/local/squidlog3/utils/bu_traffik.pl # в начале каждого месяца завершить "период"

если вам требуется другой период, во второй строке сделайте изменения
===================================

P.S.:
зачем нужен файл 1.4)passwd-stats
он нужен, что бы даже отключенный пользователь мог посмотреть свою статистику через веб. 
У меня, почему-то, не получилось написать свою программу для авторизации на прокси сервере, 
чтобы избежать потребность в этом файле (когда я эксперементировал с базами данных, 
то такая программка у меня работала, а вот с текстовыми файла неполучается)

там где стоит пометка (так же используется в веб-интерфейсе) - если вы будет настраивать веб,
то обратите внимание что бы было право на чтение этого файла от имени веб сервера, у меня 
просто стоит право на чтение всем

подробной расшифровки кто куда ходил нет

Hosted by uCoz