Скрипт выборки

Вопросы по UTM 3.0 и UTM 4.0 (поддержка прекращена)
Закрыто
loki_
Сообщения: 46
Зарегистрирован: Вс фев 12, 2006 16:35

Скрипт выборки

Сообщение loki_ »

На маршрутизаторе (в него воткнуты сети) перед билингом хочется поставить скприпт который бы конектился к Мускул, делал выборку по балансу (к примеру -1 уе) и применял правило фаервола :)

ОС FreeBSD

Поделитесь пожалуйсто :(

Instruktor
Сообщения: 131
Зарегистрирован: Ср авг 10, 2005 21:32
Откуда: Москва

Сообщение Instruktor »

/bin/echo "ipfw add deny ip from ${ip} to any" | /usr/bin/ssh -T -o ConnectTimeout=20 host.router.ru

loki_
Сообщения: 46
Зарегистрирован: Вс фев 12, 2006 16:35

Сообщение loki_ »

:) спасибо конечно ... :)
но нужно чтоб маршрутизатор проверял на билинге (2 разные машины) баланс юзера :) если он "-1" то ему дропаем достп ко всему на самом маршрутизаторе кроме билинга

:) кто как у себя реализовывал ? (php, perl?)

думаю это будет полезно всем :)

loki_
Сообщения: 46
Зарегистрирован: Вс фев 12, 2006 16:35

Сообщение loki_ »

http://topola.unity.net/antd/

никто не пробовал ?

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

RFW? или я что-то в этой жизни упустил?..
автоблокировка по условию баланс+кредит меньше нуля. То есть пользователю выставить нужное значение кредита.

loki_
Сообщения: 46
Зарегистрирован: Вс фев 12, 2006 16:35

Сообщение loki_ »

нет,
1.(билингПК- > 2.(маршрутизаторПК(3.4.5 -ресурсы воткнуты) >192.168.0.0/16

вот если у кого то из 192.168.0.0/16
отрицательный баланс закрывать доступ к ресурсам которые в маршрутизатор воткнуты

Аватара пользователя
XoRe
Сообщения: 458
Зарегистрирован: Ср янв 10, 2007 16:04

Сообщение XoRe »

RFW
Поиск в документации к UTM по этим трем волшембным буквам.

Andrey Zentavr
Сообщения: 9
Зарегистрирован: Вт фев 28, 2006 02:21

Re: Скрипт выборки

Сообщение Andrey Zentavr »

loki_ писал(а):На маршрутизаторе (в него воткнуты сети) перед билингом хочется поставить скприпт который бы конектился к Мускул, делал выборку по балансу (к примеру -1 уе) и применял правило фаервола :)

ОС FreeBSD

Поделитесь пожалуйсто :(

Код: Выделить всё

#!/usr/bin/perl -w

## В самих настройках ipfw есть что-то типа таких правил
## .......
## ipfw add 200 deny ip from table(10) to any
## ipfw add 200 deny ip from any to table(10)
## .......
## ...... разрешаем локалку, читаем ман по УТМ ....
## ipfw add 15000 deny ip from any to any
## ipfw add 65534 allow ip from any to any

use DBI;

$sqlfirst="dbi:mysql:dbname=UTM5;host=some.utm5.host";
$sqllogin="admin";
$sqlpassw="admin";

$minsum= -30;
$tempfile = "/tmp/billingdata.dat";

open(TEMP, ">$tempfile");

$dbh=DBI->connect($sqlfirst,$sqllogin,$sqlpassw);


$sql = "
SELECT DISTINCT
    CONCAT((ip_groups.ip>>24)\&0xFF,'.',(ip_groups.ip>>16)\&0xFF,'.',(ip_groups.ip>>8)\&0xFF,'.',ip_groups.ip\&0xFF) AS myip,
    accounts.balance AS myballance
FROM users
    LEFT JOIN users_accounts ON users_accounts.uid=users.id AND users_accounts.is_deleted=users.is_deleted
    LEFT JOIN accounts ON accounts.id=users_accounts.account_id AND accounts.is_deleted=users.is_deleted
    LEFT JOIN account_tariff_link ON account_tariff_link.account_id=users_accounts.account_id AND account_tariff_link.is_deleted=users.is_deleted
    LEFT JOIN service_links ON service_links.account_id=users_accounts.account_id AND service_links.is_deleted=users.is_deleted
    LEFT JOIN services_data ON services_data.id=service_links.service_id AND services_data.is_deleted=users.is_deleted
    LEFT JOIN iptraffic_service_links ON iptraffic_service_links.id=service_links.id AND iptraffic_service_links.is_deleted=users.is_deleted
    LEFT JOIN ip_groups ON ip_groups.ip_group_id=iptraffic_service_links.ip_group_id AND ip_groups.is_deleted=users.is_deleted
WHERE
    users.is_deleted=0
    AND
    services_data.service_type=3
    AND
    accounts.balance<".$minsum;
## Тут услвие можно сменить... типа accounts.ballance < &#40;-1&#41;*accounts.credit

&#40;$sth=$dbh->prepare&#40;$sql&#41;&#41; or die&#40;$DBI&#58;&#58;errstr&#41;;
&#40;$sth->execute&#41; or die&#40;$DBI&#58;&#58;errstr&#41;;

# Очищаем бан-таблицу
system&#40;"/sbin/ipfw table 10 flush"&#41;;

# Заносим новых зверей
while&#40;&#40;$ip, $cash&#41;=$sth->fetchrow&#41; &#123;
 # Этт для лога дл себя в файло пишем
 print TEMP "$ip;$cash;".time."\n";
 # А здесь добавляем должника
 system&#40;"/sbin/ipfw table 10 add $ip"&#41;;
&#125;

close&#40;TEMP&#41;;

$dbh->disconnect;

ЗЫ: Если кто знает, как оптимизировать запрос, комменты в студию

Закрыто