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 повинен мати доступ до БД біллінгу, щоб отримувати відомості про швикдості користувачів на різних тарифах в поточний інтервал часу.
//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, нічого більше для успішної роботи динамічного шейпера не потрібно. Якщо це не так, перевірте, що в них існують наступні секції:
/bin/echo $SPEED:`expr $ID + 18101` > /etc/stargazer/dn/$LOGIN /bin/chmod 777 /etc/stargazer/dn/$LOGIN
/bin/rm /etc/stargazer/dn/$LOGIN
Власне, це потрібно для того, щоб dnswitch знав хто з абонентів наразі онлайн (зрозуміло, що змінювати швикість неактивним абонентам безперспективно) та які пайпи dummynet їм відповідають.
Починаючи з Ubilling 0.4.7 динамичічний шейпер вмикаєтся опцією DSHAPER_ENABLED.