====== Динамічний шейпер ======
Ubilling починаючи з версії 0.1.7 підтримує нативную механіку зміни користувацьких швидкостей в обхід тарифних, в залежності від часу доби. Для керування динамічними шейперами в довільних часових проміжках існує відповідний модуль.\\
Швидоксті в ньому задаются у вигляді інтервалів часу в форматі ГГ:ХХ:СС "від та до". Логіка тарифа "5 мегабіт вдень / 10 вночі" легко відстежуется по скріншоту наведенному нижче.\\
{{ :dshaper.png?500 |}}
Будьте уважні при заповненні часових відрізків - для кожного тарифу необхідні мінімум дву умови, щоб швидкість повернулась "на місце". Кількість правил динамічного шейпера практично не обмежено (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.