The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"авторизация через mysql в Centos"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Настройка Squid и других прокси серверов (Public)
Изначальное сообщение [ Отслеживать ]

"авторизация через mysql в Centos"  +/
Сообщение от aleksey email(??) on 28-Окт-09, 12:40 
Здравствуйте.
Поставил новый сервер с Centos 5.4 x86_64, на нём squid-2.6.STABLE21-3.
Пытаюсь в сквиде настроить авторизацию юзеров через базу mysql как у меня давным давно успешно работает на старом сервере (asplinux 9.2 squid-2.5.STABLE9-1.92.7asp). Но почему-то не работает :(

Вот часть конфига squid.conf:
auth_param basic program /usr/libexec/squid/sq_auth.pl
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours

acl inetusers proxy_auth REQUIRED
http_access allow inetusers

sq_auth.pl - простенький скрипт:

#!/usr/bin/perl -w

$|=1;
$mysqluser="login";
$mysqlpass="pass";
$mysqlhost="host.my";
$mysqlport="3306";
$mysqldbas="base";
$mysqltabl="table";

use DBI;

while(<>) {
if ($_ =~ m/^(\w+)(\@(\w+))*\s([^ ].+)$/) {
     $login=$1; $realm=$3; $Ppasswd=$4;
} else {
    $login=''; $realm=''; $Ppasswd='';
   }

$db=DBI->connect("DBI:mysql:database=$mysqldbas;host=$mysqlhost;port=$mysqlport",$mysqluser,$mysqlpass,{AutoCommit=>1,RaiseError=>0,PrintError=>1})|| die "Can't connect to database";
$statement="SELECT passwd FROM $mysqltabl WHERE login='$login";
if ($realm) { $statement=$statement."\@$realm'"; }
else        { $statement=$statement."'"; }
$stn=$db->prepare($statement);
$stn->execute;
$numrows=$stn->rows;
if(!$numrows) {
  print "ERR\n"
} else {
    @row=$stn->fetchrow;
    $Gpasswd=$row[0];
    if (crypt($Ppasswd, $Gpasswd) eq $Gpasswd) {
     print "OK\n";
    } else {
       print "ERR\n";
      }
   }
   $stn->finish;
   $db->disconnect;
};

При запуске сквида запускается, как положено, 5 процессов sq_auth.pl, попытка клиента авторизоваться не проходит, а в логе пишется:

DBI connect('base:host.my','login',...) failed: Can't connect to MySQL server on 'host.my' (13) at /usr/libexec/squid/sq_auth.pl line 38
Can't connect to database at /usr/libexec/squid/sq_auth.pl line 38, <> line 1.

Если tcpdump смотреть, то никаких пакетов в сторону host.my не уходит, т.е. он даже не пытается коннектиться к базе...
Поднял локально mysql, подправил в скрипте адрес хоста на localhost, но не помогло:

DBI connect('base:localhost','login',...) failed: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13) at /usr/libexec/squid/sq_auth.pl line 38
Can't connect to database at /usr/libexec/squid/sq_auth.pl line 38, <> line 1.

Если скрипт руками запустить, то он работает (и с локальным mysql, и с удаленным): логин, пароль принимает, OK или ERR выдаёт как надо. А под сквидом не хочет :(
Что может быть не так? В центосе как-то хитро сквид собран?
Пробовал сквид 3.0 вот отсюда: http://people.redhat.com/jskala/squid/squid-3.0.STABLE16-1.el5 всё тоже самое :(
Но в Fedora11 squid 3.0 замечательно работает!

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "авторизация через mysql в Centos"  +/
Сообщение от aleksey email(??) on 29-Окт-09, 17:43 
оказывается, selinux всё перекрывал :(
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру