Динамічний шейпер

Ubilling починаючи з версії 0.1.7 підтримує нативную механіку зміни користувацьких швидкостей в обхід тарифних, в залежності від часу доби. Для керування динамічними шейперами в довільних часових проміжках існує відповідний модуль.
Швидоксті в ньому задаются у вигляді інтервалів часу в форматі ГГ:ХХ:СС “від та до”. Логіка тарифа “5 мегабіт вдень / 10 вночі” легко відстежуется по скріншоту наведенному нижче.

Будьте уважні при заповненні часових відрізків - для кожного тарифу необхідні мінімум дву умови, щоб швидкість повернулась “на місце”. Кількість правил динамічного шейпера практично не обмежено (1440 правил на кожен тариф достатньо?). В результаті отримаємо “день” від 08:11:00 ранку та до 23:59:59, після чого починаєтся “нічь”, яка буде тривати до 08:10:59.
Для того, щоб ця вся радість працювала передбаченим чином буде потрібно запустити скрипт dnswitch (в дистрибутиві він знаходится в docs/dshaper/) в потрібні інтервали часу.

В нормі передбачено, що скрипт dnswitch повинен знаходитись в директорії /etc/stargazer поруч з директорією dn:

# cp docs/dshaper/dnswitch.php /etc/stargazer/

Також dnswitch повинен мати доступ до БД біллінгу, щоб отримувати відомості про швикдості користувачів на різних тарифах в поточний інтервал часу.

dnswitch.php
//mysql settings
$db_host='localhost';
$db_database='stg';
$db_login='mylogin';
$db_password='newpassword';

В crontab це повинно виглядати наступним чином:

02 0  * * *     /usr/local/bin/php /etc/stargazer/dnswitch.php >> /var/log/dn.log
12 8  * * *     /usr/local/bin/php /etc/stargazer/dnswitch.php >> /var/log/dn.log


У випадку, якщо Ви викорситовуєте початкові заготівлі скриптів OnConnect/OnDisconnect, нічого більше для успішної роботи динамічного шейпера не потрібно. Якщо це не так, перевірте, що в них існують наступні секції:

OnConnect
/bin/echo $SPEED:`expr $ID + 18101` > /etc/stargazer/dn/$LOGIN
/bin/chmod 777 /etc/stargazer/dn/$LOGIN
OnDisconnect
/bin/rm /etc/stargazer/dn/$LOGIN

Власне, це потрібно для того, щоб dnswitch знав хто з абонентів наразі онлайн (зрозуміло, що змінювати швикість неактивним абонентам безперспективно) та які пайпи dummynet їм відповідають.

Починаючи з Ubilling 0.4.7 динамичічний шейпер вмикаєтся опцією DSHAPER_ENABLED.