Авторизуется клиент с минусовым балансом времени

Обнаруженные вами ошибки в работе программы, предложения по ее улучшению
Ответить
kirill
Сообщения: 3
Зарегистрирован: 25 май 2011, 12:39
Контактная информация:

Авторизуется клиент с минусовым балансом времени

Сообщение kirill »

Подскажите - есть ваучер тарифного пакета "Unlim 1 sutki – 128 ". Программа показывает что у клиента осталось доступного времени "минус 59 минут", а клиент как ни в чем ни бывало авторизуется в хотспоте и попадает в интернет. В чем проблема?
Аватара пользователя
Dmitry
Администратор
Сообщения: 1073
Зарегистрирован: 25 май 2011, 09:14
Откуда: г. Запорожье, Украина
Контактная информация:

Re: Авторизуется клиент с минусовым балансом времени

Сообщение Dmitry »

В консоль вход дать можешь? Попробуем поискать причину твоей проблемы...
Аватара пользователя
Dmitry
Администратор
Сообщения: 1073
Зарегистрирован: 25 май 2011, 09:14
Откуда: г. Запорожье, Украина
Контактная информация:

Re: Авторизуется клиент с минусовым балансом времени

Сообщение Dmitry »

Попробуй проверить. Я там у твоего тарифного пакета имя подправил - вместо пробелов поставил подчеркивания "_".

Просто алгоритм работы Easyhotspot с ваучерами таков, что имя тарифного пакета используется как имя группы, а атрибуты лимитов времени, трафика и пр. - прописываются именно для группы. При этом в качестве имени группы используется как раз название тарифного пакета. Именно по этому в программе я везде где можно понаписывал, что не используйте тут кирилицу в именах тарифных пакетов. Похоже, что и пробелы там тоже не приветствуются...
kirill
Сообщения: 3
Зарегистрирован: 25 май 2011, 12:39
Контактная информация:

Re: Авторизуется клиент с минусовым балансом времени

Сообщение kirill »

Все то же самое - клиент спокойно авторизуется. :(
Аватара пользователя
Dmitry
Администратор
Сообщения: 1073
Зарегистрирован: 25 май 2011, 09:14
Откуда: г. Запорожье, Украина
Контактная информация:

Re: Авторизуется клиент с минусовым балансом времени

Сообщение Dmitry »

Пришлось запускать Freeradius в консольном режиме (freeradius -X) и смотреть в консоли весь его лог.

По большому счету, ошибка была связана как раз именно с тем, что я и говорил в своем прошлом посте - ряд символов RADIUS-ом просто не воспринимается (вместо них он "пургу гонит"). По этому, использование их в именах Тарифных пакетов в программе Easyhotspot не приветствуется, не рекомендуется, и т.д. и т.п.

Вот кусок лога по авторизации клиента RADIUS-ом:

Код: Выделить всё

[sql] sql_set_user escaped user --> 'vutvev15'
rlm_sql (sql): Reserving sql socket id: 3
        expand: SELECT id, username, attribute, value, op           FROM radcheck           WHERE username = '%{SQL-User-Name}'           ORDER BY id -> SELECT id, username, attribute, value, op           FROM radcheck           WHERE username = 'vutvev15'           ORDER BY id
[sql] User found in radcheck table
        expand: SELECT id, username, attribute, value, op           FROM radreply           WHERE username = '%{SQL-User-Name}'           ORDER BY id -> SELECT id, username, attribute, value, op           FROM radreply           WHERE username = 'vutvev15'           ORDER BY id
        expand: SELECT groupname           FROM usergroup           WHERE username = '%{SQL-User-Name}'           ORDER BY priority -> SELECT groupname           FROM usergroup           WHERE username = 'vutvev15'           ORDER BY priority
        expand: SELECT id, groupname, attribute,           Value, op           FROM radgroupcheck           WHERE groupname = '%{Sql-Group}'           ORDER BY id -> SELECT id, groupname, attribute,           Value, op           FROM radgroupcheck           WHERE groupname = 'Unlim_1_sutki=96128'           ORDER BY id
[sql] User found in group Unlim_1_sutki?128
Если посмотреть, что программа находит в качестве имени группы, то в одной строке это Unlim_1_sutki=96128, в другой Unlim_1_sutki=?128, а в итоге в логе дальше идет следующее:

Код: Выделить всё

rlm_sqlcounter: Entering module authorize code
rlm_sqlcounter: Could not find Check item value pair
++[noresetcounter] returns noop
rlm_sqlcounter: Entering module authorize code
rlm_sqlcounter: Could not find Check item value pair
++[octetslimit] returns noop
rlm_sqlcounter: Entering module authorize code
То есть, из-за этих "непонятных для RADIUS-а" имен модули счетчиков RADIUS-а, которые подсчитывают лимиты пользователя, вообще никаких данных не получили, и в итоге - у пользователя ограничений нет никаких - "гуляй конем!!!".

Сначала я все никак не мог понять причину, вроде как все уже написано латинскими буквами, никакой кирилицы. Пробелы убрал с перепугу в прошлый раз! Должно вроде как все быть отлично... И только потом заметил (в базе, тут не видно) - у тебя в имени Тарифного пакета стоит не обычный дефис (который на клавиатуре рядом с "0"), а какой-то удлиненный (движок этого форума даже не позволяет его показать). Короче - как показала твоя практика, этот удлиненный дефис тоже относится к тем символам, которые RADIUS нормально воспринимать не хочет.

Короче, как говорится, пал ты "жертвой красоты". Для тарифного пакета, указанного в самом первом сообщении темы я твою базу порулил, и исправил там "длинный" дефис на "стандартный". Но у тебя в базе еще несколько тарифов с именами, где ты также использовал этот "длинный" дефис. Так что, их тоже придется тебе или удалять и создавать по новой, или же исправлять "ручками", например, через phpmyadmin...
Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя