Hotspot: відмінності між версіями

Матеріал з NoDeny
Перейти до навігації Перейти до пошуку
Немає опису редагування
 
(Не показані 34 проміжні версії цього користувача)
Рядок 1: Рядок 1:
Модуль позволяет предоставлять доступ в интернет абонентам, не внесенным в базу данных биллинга. Авторизация осуществляется посредством карточки оплаты:
Модуль дает возможность давать доступ в интернет случайным клиентам, подсоединившимся к вашим wifi точкам. Авторизация осуществляется посредством посылки кода авторизации на телефон.


Случайный клиент подсоединяется к вашей wifi точке с открытым доступом. Открывает любой http сайт и вместо запрошенной страницы получает сообщение о необходимости купить карту пополнения счета и ввести ее на данной странице, после чего получит доступ в интернет на такой-то срок. Клиент покупает скретч-карту, вводит ее номер и получает доступ в интернет. Он может отсоединиться от wifi и вернуться позже, при этом он получит доступ в интернет, если срок тарифа не истек.
==Как это работает==


Особенности:
Случайный клиент подсоединяется к вашему wifi с открытым доступом. Открывает любой сайт и вместо запрошенной страницы получает сообщение о том, что доступ в интернет будет дан после ввода номера телефона и кода из смс, пришедшего на данный телефон. После осуществления этих действий, возможна выдача тестового доступа в интернет абоненту с телефоном, не используемым для авторизации ранее.
* В ваших публичных wifi точках должен быть отключен nat, т.е подключенным клиентам ip будет выдавать не wifi роутер, а сервер биллинга
* Сервер биллинга различает клиентов по ip
* При первом вводе карты пополнения счета, создается новая учетная со случаным именем, это просто техническая запись, которая хранит тариф и ip клиента
* Страницу запроса карточки пополнения счета можно полностью оформить под ваш дизайн, ввести рекламу и т.д


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


* Создаем группу hotspot. Это необязательно
==Настройка==
* Создаем тариф hotspot, в котором указываем срок тарифа - час, 5 или 24 часа (для тестов сделайте минут на 5-10), стоимость тарифа и параметр "автопродление" - нет. В настройках "группы, которые могут устанавливать услугу" ставим галку на группе hotspot
 
* создаем ip pool с:
* Создайте группу hotspot. В этой группе будут автоматически создаваться учетные записи клиентов hotspot. Поле «Персональный темплейт для личного кабинета клиентов этой группы» установите в значение «hotspot_cabinet» - этим вы сможете создать совершенно иной вид кабинета для hotspot-абонентов, не такой как для ваших обычных пользователей.
* Создайте услугу типа «Безлимитные тарифы» с названием «Hotspot demo» или «Hotspot первое подключение» - это будет тариф, который будет автоматически выдаваться всем новым пользователям, т.е. тем, телефоны которых еще ни разу не были зарегистрированы в биллинге. Если необходимо, чтобы несколько первых минут новый клиент мог пользоваться интернетом бесплатно - установите стоимость услуги в ноль, а срок действия, скажем, 10 минут. Параметр «автопродление» - нет. В параметре «группы, которые могут устанавливать услугу» не ставьте никаких галок.
* Создайте ip pool на несколько сотен ip:
** тип: статический
** тип: статический
** теги: hotspot
** теги: hotspot
* На тестовом wifi-роутере отключаем nat и переводим в режим бриджа (я думаю)
* На wifi-роутере отключите nat и переведите в режим бриджа, чтобы ip выдавал не роутер, а сервер NoDeny.
* Настраиваем dhcp так, чтобы выдавал ip в пуле hotspot. В будущем ваш админ должен настроить dhcp-конфиг так, чтоб он видел, что запрос пришел от wifi-точки. Либо же игнорировать это, если обычный dchp не используется в вашей сети.
* На сервере NoDeny настройте dhcp так, чтобы выдавал ip в пуле hotspot. В будущем ваш админ должен настроить dhcp-конфиг так, чтобы он видел, что запрос пришел от wifi-точки. Либо же игнорировать это, если обычный dchp не используется в вашей сети.
* В админке в настройках hostpot указываем id группы и id тарифа hotspot
* В админке в настройках hotspot укажите id группы hotspot и id тарифа «Hotspot demo»
* В админке в разделе "документы"
 
** создаем папку Templates (если не создана) и ставим ей теги: system
<br>
** в папке Templates создаем файл hotspot с такими тегами:
 
При первом запуске инсталляции (install.pl -x) автоматически в разделе «Документы» будет создана папка Hotspot, в которой будут html-шаблоны. Вы можете их менять как угодно - дизайн и файлы никак не связаны с NoDeny. Вы можете стилизировать под свой сайт или вообще создать уникальный дизайн чисто под hotspot.
 
Обратите внимание на такие моменты:
 
* все шаблоны и сама папка Hotspot должна иметь тег system.
* тег template указывает на имя шаблона для модуля hotspot. Имя документа в дереве с папками и файлами не имеет значения - вы его можете именовать как угодно, а вот имя в теге template должно быть:
** hotspot_base - базовая структура документа. По сути в этом файле весь дизайн и основные элементы.
** hotspot_login - базовая структура окна логина.
** hotspot - окно ввода номера телефона.
** hotspot_sms - окно ввода кода из смс, пришедшей на телефон.
** hotspot_error - окно отображения ошибки.
** hotspot_cabinet - базовая структура окна, когда клиент уже авторизован.
 
Поначалу, не меняйте структуру шаблонов ибо ошибки будут трудноотлавливаемыми. В будущем можете изменить шаблоны под свою структуру и дизайн.
 
В разделе «Настройки» → «Кабинет клиента» в поле «Список плагинов» добавьте следующее:
 
<pre>
  grp:14
fondy
srv_select
srv_add
</pre>
 
Где 14 - id группы hotspot. Данным фрагментом мы для абонентов группы hotspot разрешили пополнять счет через систему fondy, выбирать и подключать тариф интернет. [[Настройка меню кабинета абонента|Объяснение]] того, что мы сделали. Обратите внимание, что в начале «Списка плагинов» могут идти плагины, которые доступны для всех групп, например:
 
<pre>
плагин1
плагин2
....
  grp:14
fondy
srv_select
srv_add
</pre>
 
Этот вариант нам не подходит т.к плагин1 и плагин2 будет доступен группе hotspot. Измените так (допустим в группе id=1 обычные абоненты):
<pre>
  grp:1
плагин1
плагин2
....
  grp:14
fondy
srv_select
srv_add
</pre>
 
 
Ранее мы создали услугу, которая подключается по умолчанию при первой авторизации. Ее выбрать клиент не сможет т.к не стоит галка доступности услуги группе hotspot. Создайте платную услугу с тегом hotspot.
 
==Краткая информация по шаблонам==
 
В шаблонах, инсталируемых по умолчанию, предусмотрено наследование, а если быть точнее - расширение. Это означает, что общие фрагменты вынесены в отдельные шаблоны и итоговый шаблон - это комбинация нескольких. Например, когда биллинг выводит окно ввода телефона, он запускает шаблон hotspot, данные из которого вставляются в шаблон hotspot_login, данные из которого вставляются в шаблон hotspot_base. Кроме того в шаблон hotspot_base подгружается шаблон hotspot_css, содержащий стили документа.
 
<pre>
<pre>
system
hotspot → hotspot_login → hotspot_base
template=hotspot
                              ↑
                          hotspot_css
</pre>
</pre>
* содержимое файла hotspot:
Вы не обязаны сохранять текущую структуру, просто она удобна. Например, в hotspot_login можно выводить вводную информацию по самой услуге wifi и не показывать ее когда пользователь уже зарегистрировался и ему уже можно выводить информацию о том как пополнить интернет, например. В этом случае цепочка такая:
<pre>
<pre>
<!doctype html>
hotspot_cabinet → hotspot_base
<html>
                      ↑
<head>
                  hotspot_css
  <title>{{ cfg::net_title }} hotspot</title>
</pre>
  <meta http-equiv='Cache-Control' content='no-cache'>
 
  <meta http-equiv='Pragma' content='no-cache'>
Также, обратите внимание на то, что у некоторых шаблонов есть альтернативные имена, указанные в теге template1. Обычно они содержат тоже самое имя как и в теге template, но с префиксом «user/». Это связано с тем, что NoDeny может использовать разные пути к шаблонам в зависимости  от того, авторизован ли клиент, авторизован как админ или юзер. Когда авторизовался не админ, а клиент, в путь к шаблонам добавляется «user/». Поэтому файл с css имеет теги:
  <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
 
  <style>
<pre>
#main_block {
system
    margin: 20% auto auto auto;
template=hotspot_css
    display: table;
template1=user/hotspot_css
}
#intro_block, #input_block {
  margin: 20pt 0;
}
  </style>
</head>
<body>
  <form action='stat.pl' method='post'>
    <input type='hidden' name='_mod' value='hotspot'>
    <div id='main_block'>
        <div id='intro_block'>
            Для получения доступа в интернет, введите номер карты пополнения счета
        </div>
        <div id='input_block'>
            <input autocomplete='off' value='' name='_card' type='text'>
            <input type='submit' value='{{lang::btn_enter}}'>
        </div>
    </div>
  </form>
</body>
</html>
</pre>
</pre>


template=hotspot_css используется в момент логина (ввод телефона или кода из смс),  template1=user/hotspot_css для просмотра баланса, оплаты и т.д. Вы можете сделать разные css для этих ситуаций, если хотите. Тогда template1, естественно, использовать не нужно.


Тестирование:
==Тестирование==
* Тестовым компьютером подключаемся к вашему wifi
* Тестовым компьютером подключитесь к вашему wifi
* Убеждаемся, что выданный ip есть в биллинге в пуле ip и у него стоит тег hotspot
* Убедитесь, что выданный ip есть в биллинге в пуле ip и у него стоит тег hotspot
* Открываем в браузере например http://beer.com
* Откройте в браузере, например, http://beer.com
* Данный запрос должен перехватиться модулем заглушки и должен произойти редирект на http://ван_сайт/cgi-bin/cap.pl
* Данный запрос должен перехватиться модулем заглушки и должен произойти редирект на http://ваш_сайт/cgi-bin/cap.pl
* Должна отобразиться страница с предложением ввода карты пополнения счета
* Должна отобразиться страница с предложением ввода номера телефона. Если нет - проверяйте шаблоны в разделе «Документы». Вы можете убрать тег system у папки Hotspot и запустить install.pl - будет создана еще одна папка Hotspot с корректной структурой.
* После ввода корректного  кода, должен быть предоставлен доступ в интернет
* Введите некорректный номер телефона чтобы проверить дизайн окна с ошибкой
* Укажите корректный номер телефона
* Введите иной код, чем тот, который пришел в смс
* Должно предложить либо переслать на новый телефон либо попробовать ввести еще раз
* Попробуйте ввести несколько раз, после чего система должна предложить только вариант с новой отсылкой смс
* Ведите корректный код из смс


При этом:
При этом:
* В группе hotspot должна создастся учетка со случайным именем
* В группе hotspot должна быть создана учетка с логином, равным номеру телефона
* У нее должна быть подключена услуга hotspot
* У нее должна быть подключена услуга hotspot

Поточна версія на 18:54, 19 лютого 2019

Модуль дает возможность давать доступ в интернет случайным клиентам, подсоединившимся к вашим wifi точкам. Авторизация осуществляется посредством посылки кода авторизации на телефон.

Как это работает

Случайный клиент подсоединяется к вашему wifi с открытым доступом. Открывает любой сайт и вместо запрошенной страницы получает сообщение о том, что доступ в интернет будет дан после ввода номера телефона и кода из смс, пришедшего на данный телефон. После осуществления этих действий, возможна выдача тестового доступа в интернет абоненту с телефоном, не используемым для авторизации ранее.

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

Настройка

  • Создайте группу hotspot. В этой группе будут автоматически создаваться учетные записи клиентов hotspot. Поле «Персональный темплейт для личного кабинета клиентов этой группы» установите в значение «hotspot_cabinet» - этим вы сможете создать совершенно иной вид кабинета для hotspot-абонентов, не такой как для ваших обычных пользователей.
  • Создайте услугу типа «Безлимитные тарифы» с названием «Hotspot demo» или «Hotspot первое подключение» - это будет тариф, который будет автоматически выдаваться всем новым пользователям, т.е. тем, телефоны которых еще ни разу не были зарегистрированы в биллинге. Если необходимо, чтобы несколько первых минут новый клиент мог пользоваться интернетом бесплатно - установите стоимость услуги в ноль, а срок действия, скажем, 10 минут. Параметр «автопродление» - нет. В параметре «группы, которые могут устанавливать услугу» не ставьте никаких галок.
  • Создайте ip pool на несколько сотен ip:
    • тип: статический
    • теги: hotspot
  • На wifi-роутере отключите nat и переведите в режим бриджа, чтобы ip выдавал не роутер, а сервер NoDeny.
  • На сервере NoDeny настройте dhcp так, чтобы выдавал ip в пуле hotspot. В будущем ваш админ должен настроить dhcp-конфиг так, чтобы он видел, что запрос пришел от wifi-точки. Либо же игнорировать это, если обычный dchp не используется в вашей сети.
  • В админке в настройках hotspot укажите id группы hotspot и id тарифа «Hotspot demo»


При первом запуске инсталляции (install.pl -x) автоматически в разделе «Документы» будет создана папка Hotspot, в которой будут html-шаблоны. Вы можете их менять как угодно - дизайн и файлы никак не связаны с NoDeny. Вы можете стилизировать под свой сайт или вообще создать уникальный дизайн чисто под hotspot.

Обратите внимание на такие моменты:

  • все шаблоны и сама папка Hotspot должна иметь тег system.
  • тег template указывает на имя шаблона для модуля hotspot. Имя документа в дереве с папками и файлами не имеет значения - вы его можете именовать как угодно, а вот имя в теге template должно быть:
    • hotspot_base - базовая структура документа. По сути в этом файле весь дизайн и основные элементы.
    • hotspot_login - базовая структура окна логина.
    • hotspot - окно ввода номера телефона.
    • hotspot_sms - окно ввода кода из смс, пришедшей на телефон.
    • hotspot_error - окно отображения ошибки.
    • hotspot_cabinet - базовая структура окна, когда клиент уже авторизован.

Поначалу, не меняйте структуру шаблонов ибо ошибки будут трудноотлавливаемыми. В будущем можете изменить шаблоны под свою структуру и дизайн.

В разделе «Настройки» → «Кабинет клиента» в поле «Список плагинов» добавьте следующее:

  grp:14
fondy
srv_select
srv_add

Где 14 - id группы hotspot. Данным фрагментом мы для абонентов группы hotspot разрешили пополнять счет через систему fondy, выбирать и подключать тариф интернет. Объяснение того, что мы сделали. Обратите внимание, что в начале «Списка плагинов» могут идти плагины, которые доступны для всех групп, например:

плагин1
плагин2
....
  grp:14
fondy
srv_select
srv_add

Этот вариант нам не подходит т.к плагин1 и плагин2 будет доступен группе hotspot. Измените так (допустим в группе id=1 обычные абоненты):

  grp:1
плагин1
плагин2
....
  grp:14
fondy
srv_select
srv_add


Ранее мы создали услугу, которая подключается по умолчанию при первой авторизации. Ее выбрать клиент не сможет т.к не стоит галка доступности услуги группе hotspot. Создайте платную услугу с тегом hotspot.

Краткая информация по шаблонам

В шаблонах, инсталируемых по умолчанию, предусмотрено наследование, а если быть точнее - расширение. Это означает, что общие фрагменты вынесены в отдельные шаблоны и итоговый шаблон - это комбинация нескольких. Например, когда биллинг выводит окно ввода телефона, он запускает шаблон hotspot, данные из которого вставляются в шаблон hotspot_login, данные из которого вставляются в шаблон hotspot_base. Кроме того в шаблон hotspot_base подгружается шаблон hotspot_css, содержащий стили документа.

hotspot → hotspot_login → hotspot_base
                               ↑
                          hotspot_css

Вы не обязаны сохранять текущую структуру, просто она удобна. Например, в hotspot_login можно выводить вводную информацию по самой услуге wifi и не показывать ее когда пользователь уже зарегистрировался и ему уже можно выводить информацию о том как пополнить интернет, например. В этом случае цепочка такая:

hotspot_cabinet → hotspot_base
                       ↑
                  hotspot_css

Также, обратите внимание на то, что у некоторых шаблонов есть альтернативные имена, указанные в теге template1. Обычно они содержат тоже самое имя как и в теге template, но с префиксом «user/». Это связано с тем, что NoDeny может использовать разные пути к шаблонам в зависимости от того, авторизован ли клиент, авторизован как админ или юзер. Когда авторизовался не админ, а клиент, в путь к шаблонам добавляется «user/». Поэтому файл с css имеет теги:

system
template=hotspot_css
template1=user/hotspot_css

template=hotspot_css используется в момент логина (ввод телефона или кода из смс), template1=user/hotspot_css для просмотра баланса, оплаты и т.д. Вы можете сделать разные css для этих ситуаций, если хотите. Тогда template1, естественно, использовать не нужно.

Тестирование

  • Тестовым компьютером подключитесь к вашему wifi
  • Убедитесь, что выданный ip есть в биллинге в пуле ip и у него стоит тег hotspot
  • Откройте в браузере, например, http://beer.com
  • Данный запрос должен перехватиться модулем заглушки и должен произойти редирект на http://ваш_сайт/cgi-bin/cap.pl
  • Должна отобразиться страница с предложением ввода номера телефона. Если нет - проверяйте шаблоны в разделе «Документы». Вы можете убрать тег system у папки Hotspot и запустить install.pl - будет создана еще одна папка Hotspot с корректной структурой.
  • Введите некорректный номер телефона чтобы проверить дизайн окна с ошибкой
  • Укажите корректный номер телефона
  • Введите иной код, чем тот, который пришел в смс
  • Должно предложить либо переслать на новый телефон либо попробовать ввести еще раз
  • Попробуйте ввести несколько раз, после чего система должна предложить только вариант с новой отсылкой смс
  • Ведите корректный код из смс

При этом:

  • В группе hotspot должна быть создана учетка с логином, равным номеру телефона
  • У нее должна быть подключена услуга hotspot