|
Мобильная платформа 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). Буду пытаться решить вопрос с тех.отделом... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |