Не буду писать насколько это важно, сами для себя определяйте.
Я выбрал способ, при котором баннер будет заменяться на рисунок размером 1х1, находящимся на веб-сервере в локальной сети (шлюз то у нас на Linux подразумевается).
Итак настройки в squid.conf
acl media urlpath_regex -i "/usr/local/squid/media.lst"
acl banners dstdom_regex -i "/usr/local/squid/banners.lst"
Далее ниже в соответствующем разделе
http_access deny media
http_access deny banners
Еще ниже в соответствующем разделе
deny_info http://192.168.1.1/empty/empty.gif banners
Это для того чтоб вместо баннера показывался прозрачный рисунок
Сами файлы имеют следующий формат
media.lst
(\.3gp$)
(\.3pm$)
(\.asf$)
(\.au$)
(\.avi$)
(\.mid$)
(\.mmf$)
(\.mp.$)
(\.mov$)
(\.mpeg$)
(\.qt$)
(\.ra$)
(\.rm$)
(\.r.m$)
(\.rv$)
(\.wax$)
(\.wav$)
(\.wm$)
(\.wm.$)
(\.wvx$)
banners.lst
(.*bannerbank\.ru.*)
(.*bannercity\.ru.*)
(.*lbn\.ru.*)
(.*adnet\.ru.*)
(.*tbn\.ru.*)
(.*banner\..*)
(.*smi\.ru.*)
(.*sj3\.ru.*)
(.*bannerhouse\.ru.*)
(.*banners\.rambler\.ru.*)
(.*linkexchange\.ru.*)
(.*reklama\.ru.*)
(.*bizlink\.ru.*)
(.*rb\.rfn\.ru.*)
(.*gnezdo\.ru.*)
(.*rotabanner\.dni\.ru.*)
(.*bs\.yandex\.ru.*)
(.*r\.mail\.ru.*)
(.*business\.lbn\.ru.*)
(.*a\.gismeteo\.ru.*)
(.*banner\.rbc\.ru.*)
(.*pics\.rbc\.ru.*)
(.*pics\.utro\.ru.*)
(.*autocontext\.begun\.ru.*)
(.*banner\.job\.ru.*)
(.*ad\.bannerhost\.ru.*)
(.*ad.\.rambler\.ru.*)
* означает повторение элемента любое количество раз, включая ноль
. означает любой символ
© Ramzaj
суббота, 27 января 2007 г.
понедельник, 22 января 2007 г.
Система аутентификации пользователей Squid
Данная система призвана обеспечить аутентификацию пользователей Squid через базу данных. В моем случае СУБД Firebird, но т.к. используется DBI, то можно использовать любую СУБД, для которой есть соответствующие драйверы.
В базе данных есть только одна таблица USERS.
Почитав комментарии в конфигурационном файле Squid, можно узнать что в принципе внешняя программа для аутентификации должна на выходе выдавать OK в случае успеха или ERR в случае неудачи процесса аутентификации.
Пароли в базе данных в поле PASSWD хранятся в шифрованном виде и их можно только поменять на новые. Добавление и редактирование пользователей осуществляются через веб-интерфейс (выложено будет позже).
А пока вот программа аутентификации, написана на Perl.
#!/usr/bin/perl
use DBI;
$_=<>;
chomp;
($login, $passwd) = split / +/;
$dbh = DBI->connect(
'dbi:InterBase:' .
'dbname=/home/data/squid.gdb;' .
'host=localhost;' .
'ib_charset=win1251;' ,
'SYSDBA',
'masterkey', { RaiseError => 1, AutoCommit => 0 });
$sql = "select passwd from users where login='$login'";
$sth = $dbh->prepare( $sql );
$sth->execute();
@res = $sth->fetchrow_array;
$pass=$res [ 0 ];
$sth->finish();
$dbh->commit();
$dbh->disconnect();
unless($pass) {
print "ERR\n";
} else {
if ($pass eq crypt($passwd, $passwd)) {
print "OK\n";
} else {
print "ERR\n";
}
}
© Ramzaj
В базе данных есть только одна таблица USERS.

Пароли в базе данных в поле PASSWD хранятся в шифрованном виде и их можно только поменять на новые. Добавление и редактирование пользователей осуществляются через веб-интерфейс (выложено будет позже).
А пока вот программа аутентификации, написана на Perl.
#!/usr/bin/perl
use DBI;
$_=<>;
chomp;
($login, $passwd) = split / +/;
$dbh = DBI->connect(
'dbi:InterBase:' .
'dbname=/home/data/squid.gdb;' .
'host=localhost;' .
'ib_charset=win1251;' ,
'SYSDBA',
'masterkey', { RaiseError => 1, AutoCommit => 0 });
$sql = "select passwd from users where login='$login'";
$sth = $dbh->prepare( $sql );
$sth->execute();
@res = $sth->fetchrow_array;
$pass=$res [ 0 ];
$sth->finish();
$dbh->commit();
$dbh->disconnect();
unless($pass) {
print "ERR\n";
} else {
if ($pass eq crypt($passwd, $passwd)) {
print "OK\n";
} else {
print "ERR\n";
}
}
© Ramzaj
Подписаться на:
Сообщения (Atom)