Подскажите как в нибсе существующими средствами организовать предоплаченные мегабайты?
слышал про наличие такого патча, но найти его не удалось!
>Подскажите как в нибсе существующими средствами организовать предоплаченные мегабайты?
>слышал про наличие такого патча, но найти его не удалось!Это по моему в 3.Х ветке...
Вообще можно организовать 2-мя скриптами:
один по крону смотрит когда происходи превышение, и если такое происходит - кикает человека+блокирует.
второй смотрит что человек кикнут - переводит его в другой пакет и активирует...
ЗЫ:
У самого на php написано :)
>Это по моему в 3.Х ветке...
>Вообще можно организовать 2-мя скриптами:
>один по крону смотрит когда происходи превышение, и если такое происходит -
>кикает человека+блокирует.
>второй смотрит что человек кикнут - переводит его в другой пакет и
>активирует...
>ЗЫ:
>У самого на php написано :)Это криво! Я имел ввиду, когда юзверь сидит на предоплаченном трафике, предоплаченные мегабайты считаются по 0 коп, а при привышении - по расценкам тарифа.
Да, но по такому методу, как у вас - я представляю нагрузку на базу. У вас в кроне стоит проверка по секундно?:)
>Это криво! Я имел ввиду, когда юзверь сидит на предоплаченном трафике, предоплаченные
>мегабайты считаются по 0 коп, а при привышении - по расценкам
>тарифа.
>
>Да, но по такому методу, как у вас - я представляю нагрузку
>на базу. У вас в кроне стоит проверка по секундно?:)Чего-же???
Нагрузка не большая...
Первый скрипт:Кикаем:
SELECT `user`,`gid` FROM `users` WHERE gid in ".$gid_in." AND `blocked`='0'
SELECT sum(in_bytes+out_bytes)/".MBYTE." AS `traff` FROM `actions` WHERE `gid` in ".$gid_in." AND `user`='".$user."' AND `start_time` BETWEEN '".$start."' AND '".$stop."';....
if($row['traff']-$predel>0)
{
$q="INSERT INTO `prev` (`user` ) VALUES ('".$user."');";
$result=mysql_query($q,$LINK);
$q="UPDATE `users` SET `blocked` = '1' WHERE `user`='".$user."' ;";
$result=mysql_query($q,$LINK);}
Второй скрипт:
SELECT `user` FROM ".NIBS_ACCT_TABLE." WHERE terminate_cause not in ('Online') and `user` in (SELECT `user` FROM `prev`);
.....Проверка раз в 5-ть минут...
Мы разрешаем превышать .... :)
Но это всё костыли на костылях - пока сервак тянет Я туда даже не полезу :)
Я прост особираюсь спрыгнуть с нибса... :)
>Но это всё костыли на костылях - пока сервак тянет Я туда
>даже не полезу :)
>Я прост особираюсь спрыгнуть с нибса... :)костыли на костылях - вот именно! Меня итересует реализация на нибсе, с скриптами это не дело! А если юзер сидит на 1-2 мбит/сек и знает о такой дырке, то сколько он натянет за 5 мин?
Есть реальное решение этой проблемы.p.s. помегабайтное ограничение в проф режиме не предлогать :(
>>Но это всё костыли на костылях - пока сервак тянет Я туда
>>даже не полезу :)
>>Я прост особираюсь спрыгнуть с нибса... :)
>
>костыли на костылях - вот именно! Меня итересует реализация на нибсе, с
>скриптами это не дело! А если юзер сидит на 1-2 мбит/сек
>и знает о такой дырке, то сколько он натянет за 5
>мин?Кикающая программа запускается раз в минута, а переводящая из пакета в покет раз в 5-ть...
ЗЫ:
20Мбит, ну не больше чем на ...
Скрипт же пересчитывает еще и записывает - то что переседел пользователь по новому тарифу :)
>Есть реальное решение этой проблемы.
>
>p.s. помегабайтное ограничение в проф режиме не предлогать :(
Спасибо Shiva!Ссылки:
полные версии
http://forum.kuzn.com/freenibs/freenibs-1.1.9-ep.tar.bz2
http://forum.kuzn.com/freenibs/freenibs-2.2.1-ep.tar.bz2
патчи
http://forum.kuzn.com/freenibs/freenibs-1.1.9-ippool_gigawor...
http://forum.kuzn.com/freenibs/freenibs-2.2.1_EXT_PRICE_TYPE...Теперь о патче:
в `prices`, поля `inputX` и `outputX` задаётся коэфф. стоимости трафика.
`prices`.`base_cost` - базовая стоимость трафика,
`prices`.`min_cost` - минимальная стоимость трафика,
`prices`.`included` - количество предоплаченных мегабайт,
`prices`.`grade` - градация трафика,
`prices`.`delta_cost` - изменение стоимости трафика за градацию.
поле `prices`.`type` должно быть установлено в 2.
поле `tos` - в 5.
`users`.`pay_traffic` - пользовательскиц счётчик тарифицированных мегабайт. в начале каждого месяца необходимо внешнийм скриптом по крону збрасывать в 0.к примеру, если задать `prices`.`included`=50, `prices`.`grade`=100, `prices`.`delta_cost`=0.1 -- тарифицироваться трафик у пользователя начнёт только после 100-го мегабайта с учётом текущих коэфф. если он будет качать только во время коэфф. 0.1, то соотв. выкачает 1000 МБ. когда он выкачает свыше 100МБ, каждые 50МБ стоимость трафика будет уменьшаться на 0,1, при этом `prices`.`min_cost` ограничит стоимость трафика снизу.
если `prices`.`grade` и/или `prices`.`delta_cost` равны 0, то эти поля игнорируються.ссылка на статью http://www.nibs.com.ua/forum/viewtopic.php?t=151