И снова о редиректорах..., 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, 17:37 , 29-Янв-08 (1)
>Захотелось написать свой редиректор на perl'е. Вкратце суть такова: >Есть в mysql базе табличка, в которой указаны ip-адреса, c которых можно >использвоать инет. Сквид в числе параметров передает редиректору ip-адрес клиента, откоторого >пришел запрос. Хочу, чтобы редиректор проверял если есть адрес клиента в >базе, то ходи в нет, иначе ходи на другой адрес, где >написано типа доступ запрещен. А в .../squid/errors/Russian-koi8-r/ERR_ACCESS_DENIED или около того текст или редирект написать, а адрес проверять "acl ... src"+http_access ? >По итогу не могу понять где что неправильно... Вставь отладочные print-ы во временный файл и отлаживай.
- И снова о редиректорах..., forfreeuse, 18:30 , 29-Янв-08 (2)
>Доброго времени суток! >Захотелось написать свой редиректор на perl'е. Вкратце суть такова: >Есть в mysql базе табличка, в которой указаны ip-адреса, c которых можно >использвоать инет. Сквид в числе параметров передает редиректору ip-адрес клиента, откоторого >пришел запрос. Хочу, чтобы редиректор проверял если есть адрес клиента в Если ip вбил после запуска редиректора, то все правильно. Редиректор при запуске зачитал список ip и по этому, один раз зачитанному списку и работает. >[оверквотинг удален] >$dbh->disconnect; > > >По итогу не могу понять где что неправильно... Реально добавил руками в >табличку свой ip_адрес и при попытке пойти на какую-нибудь страницу почему-то >срабатывает ветка в условии, которая идёт по else. Хотя (может это >глюк) иногда один раз пропускает по нормальному, а при попытке пойти >дальше происходит редирект на страницу запрещения доступа... >Буду рад, если укажете, в чем моя ошибка и выскажете прежложения по >улучшению.
- И снова о редиректорах..., BaldyMan, 02:43 , 30-Янв-08 (3)
Вот кусок из squid.conf.... acl privnet src 172.16.22.0/255.255.255.0 ..... http_access allow privnet А страница, на которую делается редирект - на самом шлюзе лежит. про отладочные print'ы сегодня попробую... посмотрю, что пишет...
- И снова о редиректорах..., Senya88, 16:54 , 30-Май-12 (4)
> Вот кусок из squid.conf > .... > acl privnet src 172.16.22.0/255.255.255.0 > ..... > http_access allow privnet > А страница, на которую делается редирект - на самом шлюзе лежит. > про отладочные print'ы сегодня попробую... посмотрю, что пишет...Интересно узнать, получилось у вас допилить скрипт до работоспособного или нет?
|