Биллинговая система Nodeny

Главная категория => Общий раздел => Тема начата: denis.my.life от 20 Марта 2012, 13:59:59



Название: Заблокировать пиринговый трафик для одного тарифа
Отправлено: denis.my.life от 20 Марта 2012, 13:59:59
Подскажите как реализовать. было бы отлично как-то получить в одну таблицу ipfw с всеми ипами одного тарифа. Но у меня что-то нет идей... возможно sql запрос? Может есть какой-то способ попроще?


Название: Re: Заблокировать пиринговый трафик для одного тарифа
Отправлено: stix от 20 Марта 2012, 14:13:53
здесь ключевой момент, как определить пиринговый трафик от например скайпа?
хотя по сути скайп пиринговый трафик, но "полезный"

Код:
SELECT ip FROM users WHERE paket = 4;
тип такого


Название: Re: Заблокировать пиринговый трафик для одного тарифа
Отправлено: denis.my.life от 20 Марта 2012, 22:26:01
Спасибо! В точку!) Я всегда удивлялся такому мощному сапорту На этом форуме!) особенно прочувствовал контраст пытаясь что-то спрашивать на форуме d-link.
Я думаю что дальше смогу разобраться сам(ест мысли сперва сохранять ип в фаил а потом скармливать его ipfw всунув такой код в nofire) но если подскажете как проще буду также очень блогодарен.


Название: Re: Заблокировать пиринговый трафик для одного тарифа
Отправлено: Cell от 21 Марта 2012, 07:59:08
лучше nomake доработать до нужного функционала


Название: Re: Заблокировать пиринговый трафик для одного тарифа
Отправлено: stix от 21 Марта 2012, 09:11:14
у меня пачка nomake скриптов нехило процессор пожирает.
надо будет оптимизировать выборку из бд штоле


Название: Re: Заблокировать пиринговый трафик для одного тарифа
Отправлено: Cell от 21 Марта 2012, 11:58:43
Дык под каждую задачу можно свой оптимизированный запросик сделать.


Название: Re: Заблокировать пиринговый трафик для одного тарифа
Отправлено: denis.my.life от 21 Марта 2012, 15:11:03
Пока получился такой скрипт в кроне
ipfw table 100 flush && (echo SELECT ip FROM users WHERE paket = 33 | /usr/local/bin/mysql -u root --password=passmysql bill) | grep -E '^([0-9]+\.){3}[0-9]+$' | while read ip;do ipfw table 100 add $ip; done
Было бы неплохо прицепить его к nomake. Только я в перле 0, разве что всунуть в скрипт рестарт dhcp и выполнят его из конфига nomake(первая строчка) но както немного коряво...


Название: Re: Заблокировать пиринговый трафик для одного тарифа
Отправлено: stix от 21 Марта 2012, 15:31:33
в такой конструкции лучше по крону


Название: Re: Заблокировать пиринговый трафик для одного тарифа
Отправлено: denis.my.life от 21 Марта 2012, 15:45:41
Небольшое дополнение чтобы срабатывало из крона
Создадим следующий скрипт.
Код:
#!/bin/sh
/sbin/ipfw table 100 flush && (echo SELECT ip FROM users WHERE paket = 33 | /usr/local/bin/mysql -u root --password=passmysql bill) | grep -E '^([0-9]+\.){3}[0-9]+$' | while read ip;do /sbin/ipfw table 100 add $ip; done
Но все таки меня не покидает мысль что выполнят его нужно из nomake ) чтобы выполнялся только когда нужно.


Название: Re: Заблокировать пиринговый трафик для одного тарифа
Отправлено: stix от 21 Марта 2012, 16:02:50
тоже самое ты можешь делать по крону.

добавить разве что логику обновления новых ip, чтобы каждый раз не делать flush таблиц.