Имя: Пароль:
1C
1С v8
Мобильная платформа 1С. Как определить, что устройство в локальной сети?
0 Nikifforoff96
 
24.12.19
09:45
Ситуация следующая.
Есть корпоративное мобильное приложение, которое подключается к опубликованной базе 1С через веб-сервис по статическому адресу.
Этот адрес для глобальной сети и в локальной не доступен (не знаю, можно ли это всё нормально настроить, чтобы можно было по одному адресу подключаться к веб-сервису из локальной и глобальной сетей).
Но многие сотрудники работают в приложении через локальную wi-fi сеть, приложение выдаёт ошибку при подключении, и сотрудники идут ко мне (разработчику) выяснять проблему.
Меня это достало.
Как можно в приложении определить, к какой сети подключено устройство. Может быть, SSID/BSSID узнать как-то. Может быть, ip-адрес устройства узнать через какой-нибудь внешний API или веб-сервис.
Я могу определить, что сейчас устройство подключено к WI-FI, но не обязательно это локальный WI-FI в офисе, может быть, он домашний.
Искал подходящий интент типа android.net.wifi.WifiManager (но это broadcast событие, срабатывает при изменении состояния сети, 1С не отлавливает его) или WIFI IP SETTINGS (открывает настройки wifi). В общем, ничего не нашёл.
Возможно, я договорюсь с тех.отделом, и они предоставят локальный адрес публикации и глобальный. Тогда мне нужно будет подключаться к первому или второму в зависимости от того, к какой сети подключен сотрудник.

Есть ли какие-нибудь решение этого вопроса?
1 Cyberhawk
 
24.12.19
09:46
Решение этого вопроса - чтоб все работало без костылей
2 almar
 
24.12.19
09:49
Нужно, чтобы офисная wi-fi сеть давала бы доступ в интернет. А иначе зачем она?
3 Nikifforoff96
 
24.12.19
09:50
(1) Да можно и с костылями, как угодно. Тех.отдел сказал, что адрес для глобального доступа один, для локального - другой. Исхожу из этого
4 Nikifforoff96
 
24.12.19
09:51
(2) Она даёт доступ в интернет. Просто невозможно получить доступ по публичному адресу к локальному ресурсу. Что-то вроде этого
5 Алексей_Р
 
24.12.19
09:57
ИнформацияОбИнтернетСоединении (InternetConnectionInformation)
ПолучитьТипСоединения (GetConnectionType)
Синтаксис:
ПолучитьТипСоединения()
Возвращаемое значение:
Тип: ТипИнтернетСоединения.
Описание:
Возвращает информацию о текущем используемом типе соединения.
Доступность:
Мобильный клиент, мобильное приложение (клиент), мобильное приложение (сервер).
Использование в версии:
Доступен, начиная с версии 8.3.9.
6 Nikifforoff96
 
24.12.19
09:57
Примерно так:
Публичный адрес публикации https://MyApp.MyCompany.ru:8888/MyApp/ws/MobileAppExchange
Локальный адрес публикации http://192.168.3.73/MyApp/ws/MobileAppExchange

Находясь в локальной сети невозможно подключиться к публикации по публичному адресу, только по второму локальному.
Такие особенности
7 Nikifforoff96
 
24.12.19
09:58
(5) Оно возвращает тип соединения WI-FI или Сотовые данные.
Я написал, что этого мало. Допустим, человек открыл приложение у себя дома через свой WI-FI, в этом случае нужен глобальный адрес публикации, а не локальный, как из офисного WI-FI
8 Nikifforoff96
 
24.12.19
09:59
(5) Локальную сеть оно не возвращает
9 Garykom
 
гуру
24.12.19
10:00
(4) У вас админы накосячили, из локальной сети к локальному ресурсу по внешнему ip прекрасно получается доступ
10 Алексей_Р
 
24.12.19
10:01
(8) да бросьте

ТипИнтернетСоединения (InternetConnectionType)
Значения
WiFi (WiFi)
ЛокальнаяСеть (LAN)
НетСоединения (NoConnection)
СотовыеДанные (CellularData)
Описание:
Типы интернет-соединений.
11 Garykom
 
гуру
24.12.19
10:02
(6) Все правильно, на роутере настроена подмена порта, локальный 80 а внешний 8888.
Уберите подмену порта (редирект - порт маппинг извне), сделайте чтобы локальный тоже был 8888 и на него с внешнего и посылайте чтобы было одинаково

Публичный адрес публикации https://MyApp.MyCompany.ru:8888/MyApp/ws/MobileAppExchange
Локальный адрес публикации http://192.168.3.73:8888/MyApp/ws/MobileAppExchange
12 Garykom
 
гуру
24.12.19
10:04
(11)+ Грубо говоря из локалки трафик идет не через внешний роутер а напрямую и пытается стучаться на 8888 порт а тот не отвечает же!
Можно или опубликованную базу править или внутри на сервере 192.168.3.73 поднять на 8888 порту nginx и настроить проброс на 80 на этот же 192.168.3.73
13 Cyberhawk
 
24.12.19
10:05
(3) Ну если с костылями - проверяй доступность глобального адреса в коде, если недостуен - пробуй через локальный.
14 Garykom
 
гуру
24.12.19
10:06
Для проверки из wifi сетки сделайте
tracert MyApp.MyCompany.ru
15 Nikifforoff96
 
24.12.19
10:07
(10) Возвращает WI-FI, и что мне с этим делать?
16 Nikifforoff96
 
24.12.19
10:07
(13) Ну, это в последнюю очередь...
17 Nikifforoff96
 
24.12.19
10:08
(12) С тех.отделом работать очень тяжело... Слишком ЧСВшные. Если начать им что-то объяснять на их языке - загнобят.
Хотелось бы решить это на своей стороне, без изменения настроек сети
18 Nikifforoff96
 
24.12.19
10:10
(14) Трассировка маршрута к MyApp.MyCompany.ru [193.242.149.149]
с максимальным числом прыжков 30:

  1    <1 мс    <1 мс    <1 мс  149-149-static.b2b-telecom.ru [193.242.149.149]

Трассировка завершена.

Что это значит?
19 Garykom
 
гуру
24.12.19
10:14
(18) как и думал см (12)
из другого инета не вашего wifi будет сильно дольше типа
https://i.paste.pics/db69145d0159058599239b8cfbca3f71.png
20 Йохохо
 
24.12.19
10:15
(19) у него не вифи в (18) =)
21 Garykom
 
гуру
24.12.19
10:17
(19)+ Т.е. он дальше вашего шлюза не лезет и проброска с 8888 на 192.168.3.73:80 не проходит

Короче из локалки по wifi вполне будет работать адрес
http://MyApp.MyCompany.ru:80/MyApp/ws/MobileAppExchange

Обрати внимание httpS походу тоже снаружи добавляется сервера
22 Garykom
 
гуру
24.12.19
10:17
(20) Пофиг с самого сервера трасернул
23 Nikifforoff96
 
24.12.19
10:18
(20) Да, разница невелика
  1     7 ms     1 ms     2 ms  149-149-static.b2b-telecom.ru [193.242.149.149]
(это с wi-fi)
24 Nikifforoff96
 
24.12.19
10:22
(21) Нет, по этому адресу ошибка 404
Если через https, то ошибка ERR_SSL_PROTOCOL_ERROR
25 Garykom
 
гуру
24.12.19
10:29
(24) Значит все интереснее (дальше роутера не проходит до сервера) и трясите чтобы на роутере для home интерфейса тоже маппинг с 8888 на 192.168.3.73:80 сделали.
А не только для входящего интерфейса
26 tabarigen
 
24.12.19
11:19
была аналогичная проблема, решил  настройкой сети на миркотике
27 Nikifforoff96
 
24.12.19
11:32
На стороне 1С пока что определяю текущий IP адрес get запросом к "ru.smart-ip.net/myip". Работает очень быстро. Если внешний ip-адрес = статический внешний ip-адрес нашего сервера, то выдаю сообщение, чтобы сотрудник переключился на сотовые данные.
Но в идеале надо, конечно настроить так (25). Буду пытаться решить вопрос с тех.отделом...