Исправлена ошибка в модуле счетчика срока годности ваучера
Ошибка проявилась при попытке создания ваучеров, у которых срок годности выставлялся меньше номинала. То есть, например, номинал ваучера - 60 минут, а срок годности - 30 минут. При авторизации такого ваучера клиент получал не меньший из двух возможных лимит (30 минут срока годности), а именно лимит номинала (60 минут). Если же потом клиент отключался от интернета и подключался к нему повторно, то уже при повторной авторизации он получал "как надо" - именно тот лимит, который был меньше (срока годности). Проверка показала, что при активации ваучера (самом первом подключении с парой логин/пароль) проверка срока годности не срабатывала.
"Лечение" состоит из двух процедур. Первая проверяет наличие двух описаний модуля счетчика "срока годности" и "устранения влияния" одного из них. Вторая - в замене файла счетчиков на новый, с исправленным запросом.
1. Для проверки наличия двух описаний запустить команду:
Код: Выделить всё
grep -r "expire_on_login" /etc/freeradius/*
пример ответа:
Код: Выделить всё
/etc/freeradius/modules/sqlcounter_expire_on_login:sqlcounter expire_on_login {
/etc/freeradius/sites-available/default: expire_on_login
/etc/freeradius/sites-enabled/default: expire_on_login
/etc/freeradius/sql/mysql/counter.conf:sqlcounter expire_on_login {
В данной проверке интересуют строки
/etc/freeradius/modules/sqlcounter_expire_on_login:sqlcounter expire_on_login {
и
/etc/freeradius/sql/mysql/counter.conf:sqlcounter expire_on_login {
даже важнее - наличие первой из них. Она показывает, что в конфигах радиус-а модуль счетчика
expire_on_login присутствует и в файле
/etc/freeradius/modules/sqlcounter_expire_on_login.
Нужно сделать так, чтобы "устранить влияние" одного из модулей. Простейший способ сделать это - заменить имя модуля. Для этого
2. Введите команду:
Код: Выделить всё
sed -i -e "s/expire_on_login/expire___on___login/g" /etc/freeradius/modules/sqlcounter_expire_on_login
В результате, модуль счетчика
expire_on_login в файле
/etc/freeradius/modules/sqlcounter_expire_on_login будет просто переименован, и в дальнейшем не будет влиять на работу системы.
Теперь второе действие. В пристегнутом к сообщению архиве находится новый файл
counter.conf. Его нужно распаковать, заменить им старый файл
/etc/freeradius/sql/mysql/counter.conf, после чего нужно перезапустить или сервер RADIUS, или весь сервер хотспота.