URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID12
Нить номер: 5364
[ Назад ]

Исходное сообщение
"И снова о редиректорах..."

Отправлено BaldyMan , 29-Янв-08 16:37 
Доброго времени суток!
Захотелось написать свой редиректор на perl'е. Вкратце суть такова:
Есть в mysql базе табличка, в которой указаны ip-адреса, c которых можно использвоать инет. Сквид в числе параметров передает редиректору ip-адрес клиента, откоторого пришел запрос. Хочу, чтобы редиректор проверял если есть адрес клиента в базе, то ходи в нет, иначе ходи на другой адрес, где написано типа доступ запрещен.
Строго прошу не судить, т.к. с перлом до этого работать не приодилось, а с редиректорами темболее. Вот код:

#!/usr/bin/perl
use DBI;
use DBI::DBD;
require "/etc/squid/logger.cfg";
$dbh = DBI->connect("DBI:mysql:$dbname:$dbhost:$dbport", $dbuser, $dbpass) or die "Cannot connect to DataBase";
my $ips = $dbh->selectall_hashref("SELECT cl_ip FROM auth;",1);
$|=1;
while (<>) {
($url, $cl_ip, $ident, $method) = split;
if (exists $ips->{$cl_ip})
{
  print "$url $cl_ip $ident $method\n" ;
}
else
{
  print "$red_url $cl_ip $ident $method\n" ;
}
}
$dbh->disconnect;


По итогу не могу понять где что неправильно... Реально добавил руками в табличку свой ip_адрес и при попытке пойти на какую-нибудь страницу почему-то срабатывает ветка в условии, которая идёт по else. Хотя (может это глюк) иногда один раз пропускает по нормальному, а при попытке пойти дальше происходит редирект на страницу запрещения доступа...
Буду рад, если укажете, в чем моя ошибка и выскажете прежложения по улучшению.


Содержание

Сообщения в этом обсуждении
"И снова о редиректорах..."
Отправлено Andrey Mitrofanov , 29-Янв-08 17:37 
>Захотелось написать свой редиректор на perl'е. Вкратце суть такова:
>Есть в mysql базе табличка, в которой указаны ip-адреса, c которых можно
>использвоать инет. Сквид в числе параметров передает редиректору ip-адрес клиента, откоторого
>пришел запрос. Хочу, чтобы редиректор проверял если есть адрес клиента в
>базе, то ходи в нет, иначе ходи на другой адрес, где
>написано типа доступ запрещен.

А в .../squid/errors/Russian-koi8-r/ERR_ACCESS_DENIED или около того текст или редирект написать, а адрес проверять "acl ... src"+http_access ?

>По итогу не могу понять где что неправильно...

Вставь отладочные print-ы во временный файл и отлаживай.


"И снова о редиректорах..."
Отправлено forfreeuse , 29-Янв-08 18:30 
>Доброго времени суток!
>Захотелось написать свой редиректор на perl'е. Вкратце суть такова:
>Есть в mysql базе табличка, в которой указаны ip-адреса, c которых можно
>использвоать инет. Сквид в числе параметров передает редиректору ip-адрес клиента, откоторого
>пришел запрос. Хочу, чтобы редиректор проверял если есть адрес клиента в

Если ip вбил после запуска редиректора, то все правильно.
Редиректор при запуске зачитал список ip и по этому, один раз зачитанному списку и работает.

>[оверквотинг удален]
>$dbh->disconnect;
>
>
>По итогу не могу понять где что неправильно... Реально добавил руками в
>табличку свой ip_адрес и при попытке пойти на какую-нибудь страницу почему-то
>срабатывает ветка в условии, которая идёт по else. Хотя (может это
>глюк) иногда один раз пропускает по нормальному, а при попытке пойти
>дальше происходит редирект на страницу запрещения доступа...
>Буду рад, если укажете, в чем моя ошибка и выскажете прежложения по
>улучшению.


"И снова о редиректорах..."
Отправлено BaldyMan , 30-Янв-08 02:43 
Вот кусок из squid.conf

....
acl privnet src 172.16.22.0/255.255.255.0
.....
http_access allow privnet

А страница, на которую делается редирект - на самом шлюзе лежит.

про отладочные print'ы сегодня попробую... посмотрю, что пишет...


"И снова о редиректорах..."
Отправлено Senya88 , 30-Май-12 16:54 
> Вот кусок из squid.conf
> ....
> acl privnet src 172.16.22.0/255.255.255.0
> .....
> http_access allow privnet
> А страница, на которую делается редирект - на самом шлюзе лежит.
> про отладочные print'ы сегодня попробую... посмотрю, что пишет...

Интересно узнать, получилось у вас допилить скрипт до работоспособного или нет?