Краткая версия моего вопроса: как ограничить отдельные пользовательские сеансы 24 часами, даже если у каждого сеанса одно и то же имя пользователя.
У меня есть настройка радиуса сервера с CoovaChilli для аутентификации пользователей беспроводной сети для доступа к сети. Все, что нужно сделать пользователям, - это согласиться с «Условиями обслуживания», поэтому у меня есть одна учетная запись, которая бесплатна для всех:
| 22 | freeuser | Одновременное использование | : = | 99 | | 21 | freeuser | Пароль пользователя | : = | freepass |
Я хотел бы ограничить сеанс каждого отдельного пользователя 24 часами. Но счетчик Max-All-Session:
query = "ВЫБРАТЬ СУММ (AcctSessionTime) \ FROM radacct WHERE UserName = '% {% k}'"
Поэтому, если я укажу Max-All-Session, то время входа каждого бесплатного пользователя будет учитываться в этом 24-часовом лимите, и каждый сеанс истечет слишком рано. Можно ли использовать два ключа для этого счетчика sql, чтобы я мог проверить UserName и CalledStationId? Это должно позволить мне ограничить время отдельного сеанса MAC-адресом, а также именем пользователя.
Или есть другой / лучший способ решить эту проблему? Спасибо!
Просто измените ключ в определении на:
called-station-id
и измените запрос на:
SELECT SUM(AcctSessionTime) \ FROM radacct WHERE calledstationid='%{%k}
Однако с этим запросом есть проблема в том, что при первом подключении пользователя ему не будет предоставлено время ожидания, так как этот запрос вернет NULL, а не 0