Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M Новый топик    Ответить
 Вычислить IP клиента  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2035
Доброго всем дня !

Возник такой вопрос.
Как вычислить IP удаленного клиента при работе с сокетом ?
Как это делается в Cache 5.0 ?

В GT.M всю информацию можно извлечь из $KEY

GT.M
When WRITE /WAIT selects a socket with data available for reading, $KEY contains:
"READ|<socket_handle>|<address>"
For TCP sockets, <address> is the numeric IP address for the remote end of the connection. For LOCAL sockets it is the path to the socket.


The ZSHOW "D" command reports available information on both the local and remote sides of a TCP socket including local and remove addresses and ports.

0 OPEN SOCKET TOTAL=1 CURRENT=0
SOCKET[0]=h11135182870 DESC=0 CONNECTED ACTIVE NOTRAP
REMOTE=10.1.2.3@53731 LOCAL=10.2.3.4@7777
ZDELAY ZIBFSIZE=1024 ZIBFSIZE=0


Спасибо.
25 май 18, 08:38    [21438826]     Ответить | Цитировать Сообщить модератору
 Re: Вычислить IP клиента  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2035
В документацию нашел вот это: $ZIO
25 май 18, 10:28    [21439180]     Ответить | Цитировать Сообщить модератору
 Re: Вычислить IP клиента  [new]
AlexKB
Member

Откуда: Запорожье
Сообщений: 806
Valeriu,
Попробуйте так
s tcp=$zu(111,0),tcp=$a($e(tcp,1,1))_"."_$a($e(tcp,2,2))_"."_$a($e(tcp,3,3))_"."_$a($e(tcp,4,4))
25 май 18, 10:36    [21439212]     Ответить | Цитировать Сообщить модератору
 Re: Вычислить IP клиента  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2035
AlexKB,
Показывает locallhost 127.0.0.1
25 май 18, 10:53    [21439318]     Ответить | Цитировать Сообщить модератору
 Re: Вычислить IP клиента  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2035
AlexKB,
Все он правильно показывает, ведь я перенаправляю
ввод с самого сервера (использую nginx)

location ~^/cache/ {
fastcgi_pass 127.0.0.1:9998;

А в $ZIO он просто мне показывает, что я подсоеденился
через експлорер, терминал и тд с моей машины, а никак как
ВЕБ клиент ...
Как сессию организовать я понятия не имею, то что есть не работает.
Я ниже поднял тему про сокет.
Значит еще не все в порядке у меня с ним.
25 май 18, 11:13    [21439426]     Ответить | Цитировать Сообщить модератору
 Re: Вычислить IP клиента  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2035
Вроде получилось получить ID сессии...
Не знаю на сколько это стабильно будет работать.
На всякий случай надыбал функцию на Java Script
которая вычисляет IP клиента.
25 май 18, 16:26    [21441013]     Ответить | Цитировать Сообщить модератору
 Re: Вычислить IP клиента  [new]
eduard93
Member

Откуда:
Сообщений: 163
В более новых версиях продуктов InterSystems можно получать IP так:

#dim %request As %CSP.Request
If ($d(%request)) {
    Return %request.CgiEnvs("REMOTE_ADDR")
}
Return $system.Process.ClientIPAddress()
27 май 18, 13:24    [21443944]     Ответить | Цитировать Сообщить модератору
 Re: Вычислить IP клиента  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2035
Добрый день .

А насколько резонно, отправлять серверу в заголовок
IP адрес клиента и отказаться от сессии ID ?
Кто-то пользуется таким способом ?
8 июн 18, 14:17    [21479226]     Ответить | Цитировать Сообщить модератору
 Re: Вычислить IP клиента  [new]
Блок А.Н.
Member

Откуда: Новосибирск
Сообщений: 3776
Valeriu,

Во-первых, сессия - системная вещь, как я понимаю, она будет создаваться в любом случае.
Идентифицировать клиента по его IP (использовать вместо $username) плохо по разным причинам:
1. Клиент не знает своего IP адреса
2. У клиента может быть несколько IP адресов
3. Адрес может может меняться при разных подключениях
4. Разные способы скрытия IP - адреса (NAT, прокси и т.п.)
4. Адрес легко подделать.

Если клиент в локальной сети, где все это не грозит, можно использовать IP как имя пользователя. Учтите, что начиная с какой-то версии при выполнении %session.Login Каше автоматически добавит к логину IP адрес.
8 июн 18, 14:57    [21479390]     Ответить | Цитировать Сообщить модератору
 Re: Вычислить IP клиента  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2035
Блок А.Н.
Если клиент в локальной сети, где все это не грозит, можно использовать IP как имя пользователя.

Именно в локальной сети для WEB клиентских приложениях.
8 июн 18, 15:00    [21479405]     Ответить | Цитировать Сообщить модератору
 Re: Вычислить IP клиента  [new]
drakut
Member

Откуда: Москва
Сообщений: 87
Valeriu,

https://www.sql.ru/forum/1224002/tekushhiy-ip-cherez-cos?hl=vpn
сегодня, 01:42    [21759716]     Ответить | Цитировать Сообщить модератору
Все форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M Ответить