|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Konstantin Voznjuk 2:5020/400 09 Mar 2004 20:50:21 To : All Subject : Вопрос по auth in squid --------------------------------------------------------------------------------
Хелп плиз а то мозги вскипят....
Пытаюсь сделать идентификацию пользователей в сквиде через mysql.
Hаваял перловый скриптец...
#!/usr/bin/perl
#
#
use DBI;
use CGI qw(:standard);
$db_name = "ххххх";
$db_host = "ххх.ххх.ххх.ххх";
$db_user = "хххх";
$db_user_passwd = "хххх";
authentication();
sub authentication {
while (<STDIN>) {
$dbh = DBI->connect("DBI:mysql:database=$db_name;host=$db_host", $db_user,
$db_user_passwd, {'RaiseError' => 1});
$chk = $dbh->prepare("SELECT UserID FROM z_Users WHERE Login= ? AND Passwd=
? AND ActivFlag='1'");
$del = "update z_Users set ActivFlag=\'0\' where CountD > LimitD or CountW >
LimitW or CountM > LimitM";
chomp;
my @login = split(/ /);
$login[0] = &checkcaseinsensitiv($login[0]);
$login[1] = &checkcaseinsensitiv($login[1]);
$dbh->do( $del );
$chk->execute( $login[0], $login[1]);
$rez = $chk->fetchall_arrayref;
$count_actusers = scalar @{ $rez };
open ( DEBUG, '>>/tmp/squidauth.log' ) or die "Can't open file: $!";
print DEBUG " $login[0] , $login[1] , $count_actusers \n";
close (DEBUG);
print $count_actusers > 0 ? "OK\n" : "ERR\n";
$dbh->disconnect();
}
}
sub checkcaseinsensitiv() {
if ($caseinsensitiv eq "true") {
if ($_[0] ne lc($_[0])) {
$filechanged = 1;
$_[0] = lc($_[0]);
}
}
return $_[0];
}
В конфиге сквида соответственно...
auth_param basic program /usr/local/sbin/kot_squidauth.pl
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
Так вот.... Если запускать скрипт в ручную (из шела) все работает... А вот
если на клиенте запускаеться броузер то:
1. Появляется желаемый запрос логина и пароля
2. После ввода заведомо корректной комбинации окно броузера просто входит в
штопор (шарик крутится, белый фон, никакой активности даже сообщений об
ошибке)
3. В логах mysql запись о нормальной отработке запросов есть (всех)
4. В дебагфайле ничего не появляеться (в ручном режиме все в порядке)...
5. В логах сквида только сообщение о запросе пароля у клиента...
Если изменить строку
print $count_actusers > 0 ? "OK\n" : "ERR\n";
на print "OK\n"; то естественно все работает нормально....
Соответственно вопрос...
В чем грабли?
Отзовитесь плиз кто решал подобную задачю?
Как заставить сквид написать хоть что нибуть по поводу того что происходит?
--- ifmail v.2.15dev5.3
* Origin: Adamant ISP news server (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/12034b1ce8bc9.html, оценка из 5, голосов 10
|