The OpenNET Project / Index page

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

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

"Редиректор тормозит"
Сообщение от shsa Искать по авторуВ закладки on 10-Дек-03, 15:10  (MSK)
Написал следующий редиректор для squid'а:

#!/usr/bin/perl
use DBI; # вызов модуля для обращения к базам
        $driver = "mysql";      # определение символьных переменных для
                                # подключения базы
        $database="ipacct";     # в данном случае - имя базы
        $hostname="localhost";  # имя сервера - адрес комьютера где
                                # запущены серверы
        $user="---";            # имя пользователя  (по умолчанию)
        $password="---";        # пароль (по умолчанию)
# Подлючение к серверу MySQL
$dbh = DBI->connect("DBI:$driver:$database", $user) || die print "Can't connect";

$| = 1;
while (<>) {
        chop;
        ($URL1, $SrcAddr, $Ident, $Method) = split;
        $URL2 = CheckReq ($URL1, $SrcAddr, $Ident, $Method);
        print "$URL2\n";
}

sub CheckReq {
        my ($URL, $SrcAddr, $Ident, $Method) = @_;
        ($SrcIP, $SrcFQDN) = split (/\//, $SrcAddr);
        ($domain, $Ident) = split (/\\/, $Ident);
        $Ident = $domain if ($Ident eq '');
        $sql = "SELECT Bytes FROM traf_auth WHERE Ident='$Ident'";
        $sth = $dbh->prepare($sql);
        $sth->execute;
        @rv = $sth->fetchrow_array;
        $sth -> finish;

        $limit = 20000000;
        $limit = 0 if (!(check ($Ident, 'Inet')));
        $limit = 30000000 if (check ($Ident, '_Inet30'));
        $limit = 40000000 if (check ($Ident, '_Inet40'));
        $limit = 999999999 if (check ($Ident, '_InetAllow_All'));
#print "$rv[0]\t$limit\n";
        if ($rv[0] >= $limit) {
                return "http://---/ERR_ACCESS_LIMIT.htm" }
        else {
                return $URL }
}

sub check {
        local($user, $group) = @_;
        $groupSID = `wbinfo -n "$group"`;
        chop  $groupSID;
        $groupGID = `wbinfo -Y $groupSID`;
        chop $groupGID;
        return 1 if(`wbinfo -r \Q$user\E` =~ /^$groupGID$/m);
        return 0;
}


Если используем его, то странички грузятся значительно медленнее.
Думал компиляция (perlcc) поможет, но при запуске откомпилированной
копии выдает ошибку:
Can't locate object method "connect" via package "DBI".
Может кто наставит на путь истинный?
Заранее благодарен за ответы.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

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

1. "Редиректор тормозит"
Сообщение от forfreeuse emailИскать по авторуВ закладки on 10-Дек-03, 22:10  (MSK)
http://www.rejik.ru
  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Редиректор тормозит"
Сообщение от shsa Искать по авторуВ закладки on 11-Дек-03, 08:11  (MSK)
>http://www.rejik.ru
спасибо, конечно, но редиректор нужен для ограничения трафика некоторым пользователям, а не для резки рекламы/порно.

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




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

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