Доброго времени суток! Захотелось написать свой редиректор на 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. Хотя (может это глюк) иногда один раз пропускает по нормальному, а при попытке пойти дальше происходит редирект на страницу запрещения доступа... Буду рад, если укажете, в чем моя ошибка и выскажете прежложения по улучшению.
|