Гостевой доступ

Вопросы, касающиеся установки и настройки всех программ сервера хотспота
Ответить
Аватара пользователя
belikoviv
Сообщения: 8
Зарегистрирован: 21 май 2013, 12:44
Откуда: г.Северодонецк, Украина
Контактная информация:

Гостевой доступ

Сообщение belikoviv »

Вынесу в отдельный топик, чтобы легче было искать.

Существующая схема реализации гостевого доступа имеет один недостаток: скрипт "убивания" использованных гостевых ваучеров запускается раз в минуту на границе минуты. Если у "гостя" ваучер заканчивается, например, на 20-й секунде минуты - его использованный ваучер будет удален только через 40 секунд. На протяжении этих 40 секунд на попытки подключиться человек будет получать отлуп со словами, что его лимит исчерпан.

Для тех случаев, когда перерыв между повторными использованиями гостевого логина вводится специально - эта зедржка несущественна.

Мы же хотели сделать так, чтобы "гость" мог перелогиниться сразу.

Путем ряда экспериментов и общения в аське с Дмитрием был получен нужный результат. Для этого необходимо проделать следующую последовательность действий:

1. Создаем (через web-интерфейс) гостевой тарифный план (как это сделать - есть в инструкции). Выбираем "учет по времени" и задаем нужный номинал в минутах. Цена роли не играет, т.к. не используется. Ограничения по скорости выставляем по желанию. Таймаут можно выставить, хотя я не вижу особого смысла. ID хотспота и график обслуживания - тоже по желанию (работоспособность метода при непустом графике обслуживания я не проверял!). Срок годности задаем любой - он тоже не будет использоваться.

2. Любым инструментом работы с БД заходим в БД в таблицу easyhotspot. Выполняем следующую последовательность команд:

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

select value from radgroupcheck where groupname = "Free_Demo_Voucher" and attribute = "Max-All-Session" into @to;
delete from radgroupcheck where groupname = "Free_Demo_Voucher" and attribute in ( "Max-All-Session", "Expire-After" );
insert radgroupreply set groupname = "Free_Demo_Voucher", attribute = "Session-Timeout", op = ":=", value = @to;
(1-я строка - запоминаем номинал в переменной to, 2-я строка - убираем "лишние" атрибуты, 3-я строка - восстанавливаем запомненный номинал в другом атрибуте)

При таком описании тарифного плана выполняется только отслеживание времени сессии гостевого ваучера. Время закрытых сессий для этого же ваучера не учитывается.

Я просил Дмитрия реализовать этот механизм в программе (чтобы не нужно было лезть руками в БД) - он ответил, что никому, кроме меня, это не нужно. Но все равно попросил отписаться на форуме :)

P.S.1. Надеюсь, вы понимаете, что после любого редактирования гостевого тарифного плана через web-интерфейс необходимо снова выполнить всю последовательность действий через админку БД.

P.S.2. Если вы изменили название гостевого тарифного плана в файле /usr/lib/cgi-bin/conf.txt - нужно это же имя тарифного плана указывать и в вышеприведенном коде.
Аватара пользователя
belikoviv
Сообщения: 8
Зарегистрирован: 21 май 2013, 12:44
Откуда: г.Северодонецк, Украина
Контактная информация:

Re: Гостевой доступ

Сообщение belikoviv »

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

Для того, чобы скрипт "знал" и старый атрибут, и новый - нужно в файл hotspotlogin.cgi внести следующие изменения:

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

--- ./hotspotlogin.cgi.original>2013-05-28 11:35:18.000000000 +0300
+++ ./hotspotlogin.cgi<>2013-05-28 16:42:03.000000000 +0300
@@ -514,6 +514,9 @@
 while (@reply_val_row = $output_mac->fetchrow_array){
     $attribute = $reply_val_row[2];
     $value = $reply_val_row[4];
+if ($attribute =~ "Session-Timeout"){
+    $time_lim = $value / 60;
+    }
 if ($attribute =~ "WISPr-Bandwidth-Max-Up"){
     $speed_up = $value / 1024;
     }
Для тех, кто не понимает, что означает вышеприведенный код, напишу по-русски :)
между строками 516 и 517 файла hotspotlogin.cgi вставить следующие 3 строки:

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

if ($attribute =~ "Session-Timeout"){
    $time_lim = $value / 60;
    }
После внесения указанных изменений на экране гостевого логина будет правильно отображаться ограничени по времени на "гостевую" сессию.
imitat
Сообщения: 3
Зарегистрирован: 07 ноя 2014, 14:30
Контактная информация:

Re: Гостевой доступ

Сообщение imitat »

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

Re: Гостевой доступ

Сообщение Dmitry »

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

Re: Гостевой доступ

Сообщение Dmitry »

imitat писал(а):это избавит от ошибок при гостевом подключении, когда выдает сообщения о том что превышен лимит подключений
от этого избавит настройка параметра $config['voucher_simul'] (увеличение с 1 до 2...3, описано в "толстой" инструкции).
Ответить

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

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