mirror of https://github.com/OpenVidu/openvidu.git
openvidu-server: remote address from websocket proxy support
parent
0136dfc3fe
commit
d52fdd3413
|
@ -32,6 +32,7 @@ import org.kurento.jsonrpc.message.Request;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.http.HttpHeaders;
|
||||||
|
|
||||||
import com.google.gson.JsonElement;
|
import com.google.gson.JsonElement;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
|
@ -546,8 +547,14 @@ public class RpcHandler extends DefaultJsonRpcHandler<JsonObject> {
|
||||||
public void afterConnectionEstablished(Session rpcSession) throws Exception {
|
public void afterConnectionEstablished(Session rpcSession) throws Exception {
|
||||||
log.info("After connection established for WebSocket session: {}", rpcSession.getSessionId());
|
log.info("After connection established for WebSocket session: {}", rpcSession.getSessionId());
|
||||||
if (rpcSession instanceof WebSocketServerSession) {
|
if (rpcSession instanceof WebSocketServerSession) {
|
||||||
rpcSession.getAttributes().put("remoteAddress",
|
InetAddress address;
|
||||||
((WebSocketServerSession) rpcSession).getWebSocketSession().getRemoteAddress().getAddress());
|
HttpHeaders headers = ((WebSocketServerSession) rpcSession).getWebSocketSession().getHandshakeHeaders();
|
||||||
|
if (headers.containsKey("x-real-ip")) {
|
||||||
|
address = InetAddress.getByName(headers.get("x-real-ip").get(0));
|
||||||
|
} else {
|
||||||
|
address = ((WebSocketServerSession) rpcSession).getWebSocketSession().getRemoteAddress().getAddress();
|
||||||
|
}
|
||||||
|
rpcSession.getAttributes().put("remoteAddress", address);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue