Мило: получить IP клиента
Есть ли способ получить IP-адрес клиента в контексте записи? Я хочу получить IP-адрес клиента, который пишет на мой Milo-OPCUA-сервер, поэтому я могу обрабатывать эти записи по-разному в зависимости от IP-адреса клиентов (локальные клиенты должны иметь возможность писать непосредственно на сервере, в то время как другие записи должны перенаправляться на другой сервер)
1 ответ
Решение
Хорошо, сейчас это не является частью какого-либо официального API, так что в будущем оно почти наверняка сломается, но:
С OperationContext
вы получаете при реализации AttributeManager#write(WriteContext, List<WriteValue>)
:
context.getSession().ifPresent(session -> {
UaStackServer stackServer = context.getServer().getServer();
if (stackServer instanceof UaTcpStackServer) {
ServerSecureChannel secureChannel = ((UaTcpStackServer) stackServer)
.getSecureChannel(session.getSecureChannelId());
Channel channel = secureChannel.attr(UaTcpStackServer.BoundChannelKey).get();
SocketAddress remoteAddress = channel.remoteAddress();
}
});
Для этого мне нужно добавить официальный API, возможно, что-то Session
объект.