HOTSPOT SMS HTTPS

Обсуждение ПО и его настройки
Ответить
Telecomd
Сообщения: 10
Зарегистрирован: 04 фев 2019, 17:33

Добрый день.
Вводные данные:
RB3011UiAs v6.44.3
Настроенный и рабочий CapsMan, настроенный и рабочий hotspot с смс авторизацией через USB Модем. По HTTP все работает.
Суть проблемы:
На хотспоте настроено время сессии (15 минут), после окончания времени, доступ к инету прекращается. При вводе любого адреса HTTP, клиент переадресовывается по адресу hotspota - http://hotspot/kdp8.ru.
Обратили внимание что при вводе HTTPS адреса, клиент никуда не переадресовывается.
Сделали самоподписанный сертификат (сначала на OPENSSL (не заработал), затем силами самого микротика)
Включили все необходимые настройки на Hotspote (включили галку https, выбрали сертификат, включили сервис ssl и тоже выбрали сертификат).
Страница HTTPS авторизации открывается - НО при вводе пароля из СМС микротик в логах пишет, что логин пароль неверный. Пароль вводится точно тот что пришел в смс и появился в USERS на хотспоте. Окно авторизации Hotspota обновляется и снова отправляется пароль, который снова не подходит.
Вопрос - что это может быть и как поправить.
Визуализация проблемы и скрипты:

Авторизация по HTTP:
https://youtu.be/jFH26rE9iI8

https://drive.google.com/file/d/1nhKsUO ... sp=sharing

Авторизация по HTTPS:
https://youtu.be/S_dZ0Og4758

https://drive.google.com/file/d/1LcefDL ... sp=sharing

Скрипт SMS авторизации:
#Search number in log hotspot

:foreach line in=[/log find buffer=hotspot message~"login failed"] do={
:do {:local content [/log get $line message];
:put $content;
:local pos1 [:find $content " (" 0];
:put $pos1;
:if ($pos1 != " ") do={
:local uname "";
:local uname7 "";
:local uname8 "";
:local uname9 "";
:local phone "";

:if ([:pick $content ($pos1-10)] = "9") do={
:set uname [:pick $content ($pos1-10) ($pos1-0)];
:set uname8 [:put ("8" . {$uname})]

#Password generation
:local date [/system clock get time];
:local hour [:pick $date 0 2];
:local min [:pick $date 3 5];
:local sec [:pick $date 6 8];
:local usernumber [:pick $content ($pos1-7) ($pos1-5)];
:put $usernumber;
:global pass 27394;
:set pass ($hour * $min * $sec - $usernumber);
:if ($pass < 100) do={
:set pass 6524;
}
:put $pass;

#Add user to hotspot / user-manager

do {/ip hotspot user add name=$uname} on-error={};
do {/ip hotspot user set password=$pass numbers=[find name=$uname]} on-error={};
do {/tool sms send port=usb2 channel=0 phone-number="$uname8" message="login $uname password $pass"} on-error={};

Hotspot User Profile

/ip hotspot user profile
set [ find default=yes ] add-mac-cookie=no address-pool=dhcp_pool_hotspot \
keepalive-timeout=1m on-login=":local a \$user\r\
\n:local nas [/system identity get name];\r\
\n:local today [/system clock get date];\r\
\n:local time1 [/system clock get time ];\r\
\n:local time2 [/system clock get time ];\r\
\n:local ipuser [/ip hotspot active get [find user=\$a] address];\r\
\n:local usermac [/ip hotspot active get [find user=\$a] mac-address]\r\
\n:local usermac2 [/ip hotspot active get [find user=\$a] mac-address]\r\
\n:put \$today\r\
\n:put \$time1\r\
\n:local hour [:pick \$time1 0 2];\r\
\n:local min [:pick \$time1 3 5];\r\
\n:local sec [:pick \$time1 6 8];\r\
\n:set \$time1 [:put ({hour} . {min} . {sec})]\r\
\n:local mac1 [:pick \$usermac 0 2];\r\
\n:local mac2 [:pick \$usermac 3 5];\r\
\n:local mac3 [:pick \$usermac 6 8];\r\
\n:local mac4 [:pick \$usermac 9 11];\r\
\n:local mac5 [:pick \$usermac 12 14];\r\
\n:local mac6 [:pick \$usermac 15 17];\r\
\n:set \$usermac [:put ({mac1} . {mac2} . {mac3} . {mac4} . {mac5} . {mac6\
})]\r\
\n:put \$time1\r\
\n/ip firewall address-list add list=\$today address=\"log-in.\$time1.\$a.\
\$usermac.\$ipuser\"\r\
\n/tool fetch url=\"http://IPSQL/hotspot/hotspot.php\\\?t=%22\$ti\
me2%22&l=\$a&m=%22\$usermac2%22&i=%22\$ipuser%22&s=1\"\r\
\n/file remove \"hotspot.php\\\?t=%22\$time2%22&l=\$a&m=%22\$usermac2%22&i\
=%22\$ipuser%22&s=1\"" on-logout=":local nas [/system identity get name];\
\r\
\n:local today [/system clock get date];\r\
\n:local time1 [/system clock get time ];\r\
\n:local time2 [/system clock get time ];\r\
\n:put \$today\r\
\n:put \$time1\r\
\n:local hour [:pick \$time1 0 2];\r\
\n:local min [:pick \$time1 3 5];\r\
\n:local sec [:pick \$time1 6 8];\r\
\n:set \$time1 [:put ({hour} . {min} . {sec})]\r\
\n:put \$time1\r\
\n/ip firewall address-list add list=\$today address=\"log-out.\$time1.\$u\
ser\"\r\
\n/tool fetch url=\"http://IPSQL/hotspot/hotspot.php\\\?t=%22\$ti\
me2%22&l=\$user&s=0\"\r\
\n/file remove \"hotspot.php\\\?t=%22\$time2%22&l=\$user&s=0\"\r\
\n" session-timeout=15m

Если что то еще нужно, я выложу.


Telecomd
Сообщения: 10
Зарегистрирован: 04 фев 2019, 17:33

Никто не знает? Даже предположений нет? Или никто не делал такое?


aleksandr.popkov
Сообщения: 1
Зарегистрирован: 01 июл 2019, 10:37

Доброго дня, нашли решение Вашего вопроса?


anatoliy
Сообщения: 4
Зарегистрирован: 28 янв 2019, 10:18

"Страница HTTPS авторизации открывается - НО при вводе пароля из СМС микротик в логах пишет, что логин пароль неверный"
Когда Вы нажимаете отправить > в лог пишется та самая "ошибка", благодаря которой скрипт отрабатывает и меняет пароль у пользователя. Почему? Непонятно. Возможно, причина в самой HTML форме. Остановите автоматическое выполнение скрипта, выполните его вручную один раз после ввода номера, чтобы он сгенерировал и отправил пароль - добавит ясности в решение проблемы.


Ответить