The OpenNET Project / Index page

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

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

"Блокировка на Squid в зависимости от параметров запроса GET"  
Сообщение от vs_nn (ok) on 15-Июл-08, 12:10 
Мне необходимо выборочно блокировать работу скриптов, параметры которым передаются при помощи метода GET. В логах Squid не отображаются передаваемые скрипту параметры, только имя скрипта, далее знак вопроса, указывается метод GET. Параметров не видно, в результате не получается заблокировать работу скрипта при передаче ему определенных параметров.
Подскажите, как это можно сделать?
Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

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


1. "Блокировка на Squid в зависимости от параметров запроса GET"  
Сообщение от baldyman email on 16-Июл-08, 16:18 
В логах не отображается, попробуй посмотреть в сторону ACL и url-regex.
Если вдруг будет времяразбираться, то в сторону редиректоров.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Блокировка на Squid в зависимости от параметров запроса GET"  
Сообщение от vs_nn (??) on 16-Июл-08, 18:35 
>В логах не отображается, попробуй посмотреть в сторону ACL и url-regex.
>Если вдруг будет времяразбираться, то в сторону редиректоров.

Я как раз сейчас с редиректорами пытаюсь разобраться, но не отрабатывает программа.
Как я понял, эта программа принимает от Squid несколько параметров, разделенных пробелами, первый из который - URL.
Работает цикл, который считывает все строчки из STDIN и может заменять URL, который потом возвращает через STDOUT. Для начала я пытаюсь выводить ту же строчку, которую прочитал в STDIN, потом немного пытался усложнить программу, заменив URL, но при этом создается ощущение, что программа зацикливается. Может есть какие-нибудь нюансы?
Может кто сможет привести простейший пример подобной программы?
Есть кучка типовых редиректоров, но у меня все осложняется тем, что все это приходится делать под Windows, а здесь многое работает через филейную часть.

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

3. "Блокировка на Squid в зависимости от параметров запроса GET"  
Сообщение от baldyman email on 17-Июл-08, 01:23 
Вот пример на perl'е. Я его использую немного для другой цели, чтобы трафик лимитировать, но в твоем случае впринципе легко модернизируется:
[root@gw /]# cat /etc/squid/r.pl
#!/usr/bin/perl

use DBI;
use DBI::DBD;

require "/etc/squid/logger.cfg";

$| = 1;
if ($LOG) {
open LOG, ">> $red_log";
unless ($LAZY_WRITE) { select LOG; $| = 1; select STDOUT; }
}

while (<>) {
($url, $cl_ip, $ident, $method) = split;
$dbh = DBI->connect("DBI:mysql:$dbname:$dbhost:$dbport", $dbuser, $dbpass) or die "Cannot connect to DataBase";
    $sth = $dbh->prepare('SELECT max_traff FROM t_dnload WHERE username=?;');
    $sth->execute($ident);
    $max_traff = $sth->fetchrow_array;
    $sth->finish;

    $sth = $dbh->prepare('SELECT total_traff FROM t_dnload WHERE username=?;');
    $sth->execute($ident);
    $total_traff = $sth->fetchrow_array;
    $sth->finish;

        if ($max_traff < $total_traff) { $url = $path_nl; }

print "$url $cl_ip $ident $method\n";
print LOG "$url $cl_ip $ident $method \n";

$dbh->disconnect;
}
close LOG if $red_log;
___________________________________________

[root@gw /]# cat /etc/squid/logger.cfg
#!/usr/bin/perl
# Base Script Variables
$my_host        = "http://my.host.ru/";
$my_webpath     = "sq_stat/red_page/no_limit.html";
$path_nl        = $my_host.$my_webpath;

# Logger path variables
$log_path       = "/var/log/squid/";
$log_file       = "access.log.0";
$input_file     = $log_path.$log_file;

# Redirector path variables
$red_log = $log_path."redirector.log";
$LAZY_WRITE = 1;

# MySQL configuration
$dbname         = 'squidlogs';
$dbhost         = 'localhost';
$dbport         = '3306';
$dbuser         = 'sqstat';
$dbpass         = 'sqstat';

# SQL Commands for update table t_dnload.
$sel_username = "SELECT username FROM t_dnload;";
$get_traffics = "SELECT SUM(size) FROM logs WHERE username=?;";
$upd_tot_traf = "UPDATE t_dnload SET total_traff=? WHERE username=?;";
_____________________________

mysql> describe t_dnload;
+-------------+-------------+------+-----+---------+-------+
| Field       | Type        | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| username    | varchar(20) | NO   |     |         |       |
| max_traff   | bigint(20)  | NO   |     | 0       |       |
| total_traff | bigint(20)  | NO   |     | 0       |       |
+-------------+-------------+------+-----+---------+-------+

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

4. "Блокировка на Squid в зависимости от параметров запроса GET"  
Сообщение от vs_nn (??) on 17-Июл-08, 15:01 
Спасибо за поддержку, разобрался я почему подвисал Squid, когда я пытался поставить редиректор, который сам написал. После обработки URL необходимо в STDOUT вывести какой-нибудь URL. Но в конце строки я забывал поставить обратный слеш n, чтобы оправить строчку в STDOUT. Сейчас все работает, скрипт докрутить дальше - дело техники :o)
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




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

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