Обновление (функция принудительного отключения)
Ранее функция принудительного отключения в программе корректно работала только в случае, если клиенты подключались к интернету непосредственно через сам сервер хотспота (chillispot был запущен на том же самом компьютере, что и Easyhotspot). Если же система строилась по схеме: "отдельный сервер биллинга" + роутеры с chillispot внутри них" (как описано в заметке "
Организация нескольких хотспотов"), то в таком случае функция принудительного отключения не работала.
Тем же, у кого и chillispot и Easyhotspot запущены на одном компьютере, можно не обращать внимание на это обновление.
Получение работающей процедуры достигается настройкой трех составляющих – сервера RADUIS, прошивки DD-WRT и биллинга Easyhotspot.
Первым делом настраиваем сервер RADIUS. Нам нужно добиться того, чтобы в таблицу учета сеансов клиентов записывался реальный IP-адрес того NAS (роутера с прошивкой DD-WRT), через который подключен клиент хотспота. Для этого в консоли нужно выполнить команду (или от имени root-а, или через sudo):
Код: Выделить всё
sudo sed -i -e "s/NAS-IP-Address/Client-IP-Address/g" /etc/freeradius/sql/mysql/dialup.conf
Во вторых, в дополнительной подготовке нуждается сам роутер с прошивкой DD-WRT. В его настройках нужно указать программе Chillispot слушать команду принудительного отключения на порту 3799, и при этом не проверять IP-адрес приславшего ее сервера. Кроме этого, нужно добавить правило в файерволе роутера, открывающее этот порт. Как это сделать, описано у меня в блоге на странице
Прошивка роутера D’link DIR-320 «под хотспот»
Там этому вопросу посвящен подзаголовок "Дополнительные настройки для возможности приема команды принудительного отключения".
Также, если роутер с dd-wrt установлен после какого-нибудь дополнительного оборудования с NAT (например, ADSL-модем, настроенный роутером), то тогда в этом оборудовании нужно настраивать портфорвардинг порта 3799/udp на роутер с dd-wrt.
И третье - сама программа Easyhotspot.
В ней нужно первым делом отредактировать файл настроек. Вводите команду
Код: Выделить всё
sudo mcedit /var/www/easyhotspot/system/application/config/easyhotspot.php
В редактируемом файле находите строку
Код: Выделить всё
$config['radiusserver'] = '127.0.0.1:3799';
и меняете ее таким образом, чтобы она стала выглядеть следующим образом:
(то есть, из параметра нужно убрать жестко прописанный в нем IP-адрес 127.0.01. Но учтите, что при этом двоеточие должно остаться!!!)
Кроме этого изменения файла настроек нужно еще заменить три файла новыми, находящимися в пристегнутом к этому сообщению архиве.
Размещение старых файлов в файловой системе сервера хотспота следующее
/var/www/easyhotspot/system/application/controllers/onlineuser.php
/var/www/easyhotspot/system/application/models/onlineusermodel.php
и
/var/www/easyhotspot/system/application/views/onlineusers_view.php
После замены новым файлам назначить владельцем пользователя www-data
Важное замечание - для всех клиентов RADIUS-а (всех !!! chillispot-ов, и внешних, и локального на самом сервере) функция принудительного использует один и тот же пароль (radius secret), Поэтому, он должен быть одинаковым!!!
ЗЫ. Ну и напоследок - ВСЁ вышеописанное относится ТОЛЬКО к модифицированной версии программы Easyhotspot. Для исходной англоязычной версии 0.1 и для версии 0.2 - это АБСОЛЮТНО бесполезно!
(13.01.2012 - архив со скриптами удален, т.к. некорректно работал. Исправленные скрипты находятся в архиве, пристегнутом к следующему сообщению)