UHW aka Unknown HardWare helper

В Ubilling начиная с версии 0.3.1 появился сервис позволяющий, значительно упростить жизнь, при использовании авторизации IP+MAC и раздаче адресов абонентам при помощи DHCP. Сам сервис находиться в дистрибутиве Ubilling в каталоге /docs/uhw. Суть «упрощения жизни» сводиться к тому, что пользователь купивший себе роутер, поменявший сетевуху, притащивший домой ноутбук - при попытке зайти на любой сайт, вместо любимого Вконтактика будет лицезреть следующую картину:


Установка и настройка

Неизвестным MAC DHCP должен выдавать адреса из служебной подсети не имеющей доступа к интернету и для которой должен производиться заворот на домен нашего сервиса.

1. Добавляем сеть неизвестных устройств в шаблон главного конфига dhcpd в Ubilling /config/dhcp/global.template после секции {SUBNETS}:

global.template
  ###### Unknown users network
  subnet 172.31.0.0 netmask 255.255.240.0 {
  default-lease-time 3600;
  option domain-name "isp";
  option subnet-mask 255.255.240.0;
  option domain-name-servers 172.31.0.1;
  option routers 172.31.0.1;
  range 172.31.0.100 172.31.0.254;
  }

2. Убеждаемся, что на интерфейсе смотрящем на абонентов назначен соответствующий alias в /etc/rc.conf:

rc.conf
ifconfig_em0_alias0="inet 172.31.0.1 netmask 255.255.240.0"

3. Добавляем заворот на себя, для этой подсети в /etc/firewall.conf:

firewall.conf
#unknown users redirect
${FwCMD} add 5 fwd 127.0.0.1,80 ip from 172.31.0.0/20 to not me dst-port 80

4. Устанавливаем JavaScript редирект с умолчательного VirtualHost на URL где расположен UHW в /usr/local/www/apache24/data/index.php:

index.php
<script type="text/javascript">
<!--
window.location = "http://172.31.0.1/uhw/"
//-->
</script>

(А никто кстати не запрещает поднять себе отдельный VirtualHost для этого сервиса, скажем uhw.isp и прописать его себе в локальную зону).

5. Для того, чтобы заворот работал для отличных от »/» ссылок по которым ходит пользователь, следует добавить следующую вещь в /usr/local/www/apache24/data/.htaccess:

.htaccess
ErrorDocument 404 /index.php

6. Уносим uhw из дистрибутива Ubilling в соответствующее место:

# cp -R docs/uhw /usr/local/www/apache24/data/

7. Прописываем соответствующие настройки в /usr/local/www/apache24/data/uhw/config/mysql.ini:

mysql.ini
;Сервер БД
server = "localhost"
;Порт БД
port = "3306"
;Пользователь
username = "mylogin"
;Пароль пользователя
password = "newpassword"
;БД Ubilling
db = "stg"
character = "UTF8"
prefix = "billing"

8. Редактируем в соответствии с нашими реалиями конфиг /usr/local/www/apache24/data/uhw/config/uhw.ini:

uhw.ini
;
; Настройки ISP и сетевые опции
;
 
;Спрашивать ли у пользователя логин, или ориентироваться только по паролю? 
USE_LOGIN=0
 
; Название ISP
ISP_NAME="Рога&Копыта"
 
; URL сайта ISP 
ISP_URL="http://ubilling.net.ua"
 
; Логотип ISP (может быть путем либо URL)
ISP_LOGO="images/logo.png"
 
; Маска IP подсети неизвестных пользователей 
UNKNOWN_MASK="172.31."
UNKNOWN_LEASE="DHCPACK on "
 
; Прятать точки в MAC
HIDE_DOTS=1
; Показывать столько-то последних символов MAC пользователю (0 - без обрезки)
SHOW_MAC_SIZE=4
 
; Пути к необходимому ПО
SUDO_PATH="/usr/local/bin/sudo"
CAT_PATH="/bin/cat"
GREP_PATH="/usr/bin/grep"
TAIL_PATH="/usr/bin/tail"
LOG_PATH="/var/log/dhcpd.log"
 
 
;
; Настройки локализации и уведомлений, надеемся здесь все понятно
;
 
; Заголовок страницы
TITLE="Неизвестное оборудование"
; Подзаголовок страницы
SUB_TITLE="Извините, вы используете неизвестное нам оборудование";
 
SUP_PHONES="12345 или 54321"
SUP_DESC="Время работы службы техподдержки"
SUP_DAYS="понедельник-суббота"
SUP_TIME="с 09:00 до 18:00"
 
CALL_US="Пожалуйста позвоните нам по номеру"
SUP_ACTIVATE="для того, чтобы активировать ваше текущее оборудование для работы в сети."
SUP_REQUIRE="Вам необходимо будет продиктовать службе техподдержки адрес проживания, ваши Ф.И.О. и следующий набор букв или цифр выделенных красным цветом:"
SUP_SELFACT="Самостоятельная активация"
SUP_PASS="Пароль пользователя"
SUP_PASSNOTICE="Пароль пользователя НЕ является красными буквами и цифрами которые вы видите на этой странице, узнать его вы можете из своего договора. Он является конфиденциальной информацией, не доверяйте его никому. Не забудьте перезагрузить ваше оборудование после активации, для получения новых настроек."
SUP_ACTIVATE_QUERY="Активировать мое текущее оборудование"
SUP_MACEXISTS="...Ой, ваше оборудование кажется уже активировано, перезагрузите его."
SUP_ERROR="Ошибка"
SUP_NOMAC="Случилась странная ошибка, перезагрузите ваше оборудование и попробуйте еще раз."
SUP_WRONGPASS="Вы ввели неверный пароль, у вас кстати не так много попыток. Обратите внимание на регистр букв."
SUP_STRANGE="Странная ошибка, ее вообще не могло произойти. Обратитесь к администратору."
SUP_BRUTEERROR="К сожелению вы исчерпали количество попыток. Самостоятельная активация невозможна."
SUP_SELFACTDONE="Активация вашего нового оборудования завершена. Не забудьте перезагрузить ваше устройство, для получения новых настроек."
 
;
; Опции самоактивации оборудования
;
 
;Включена ли самоактивация вообще?
SELFACT_ENABLED=1
 
;Тип поля в которое пользователь должен вводить свой пароль (text или password)
SELFACT_FIELDTYPE="text"
 
;Максимальное количество неверных попыток ввода пароля перед блокированием самоактивации
SELFACT_BRUTE=3
 
;Ссылка на работающий Ubilling для вызова функций удаленного API (Опция REMOTEAPI_ENABLED=1 в alter.ini)
UBILLING_REMOTE="http://127.0.0.1/billing/"
 
;Серийный номер вашего Uilling (можно найти в модуле "Состояние системы")
UBILLING_SERIAL="серийный номер вашего Ubilling"

Как видно из конфига, функционал «Самоактивации» включаем и отключаем. Его использование требует наличия включенной опции allow_url_fopen в php.ini, а также очень тщательного тестирования.

uhw.txt · Последние изменения: 2017/11/01 00:31 — pautina
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki