From 131ea7766924113f6d0b8d8d4c288084ae635a31 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期二, 06 十二月 2022 10:33:43 +0800 Subject: [PATCH] 接口使用旧的stream信息,支持使用远程ip端口做为回复的地址而不是使用sip中的地址 --- src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java | 23 +++++++++++++++++++++++ 1 files changed, 23 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java b/src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java index 26c8e4e..5c31f90 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java @@ -1,9 +1,11 @@ package com.genersoft.iot.vmp.gb28181.utils; +import com.genersoft.iot.vmp.gb28181.bean.RemoteAddressInfo; import com.genersoft.iot.vmp.utils.GitUtil; import gov.nist.javax.sip.address.AddressImpl; import gov.nist.javax.sip.address.SipUri; import gov.nist.javax.sip.header.Subject; +import gov.nist.javax.sip.message.SIPRequest; import org.springframework.util.ObjectUtils; import javax.sip.PeerUnavailableException; @@ -119,4 +121,25 @@ return builder.toString(); } + public static RemoteAddressInfo getRemoteAddressFromRequest(SIPRequest request, boolean sipUseSourceIpAsRemoteAddress) { + + String remoteAddress; + int remotePort; + if (sipUseSourceIpAsRemoteAddress) { + remoteAddress = request.getRemoteAddress().getHostAddress(); + remotePort = request.getRemotePort(); + }else { + // 鍒ゆ柇RPort鏄惁鏀瑰彉锛屾敼鍙樺垯璇存槑璺敱nat淇℃伅鍙樺寲锛屼慨鏀硅澶囦俊鎭� + // 鑾峰彇鍒伴�氫俊鍦板潃绛変俊鎭� + remoteAddress = request.getTopmostViaHeader().getReceived(); + remotePort = request.getTopmostViaHeader().getPort(); + // 瑙f瀽鏈湴鍦板潃鏇夸唬 + if (ObjectUtils.isEmpty(remoteAddress) || remotePort == -1) { + remoteAddress = request.getViaHost(); + remotePort = request.getViaPort(); + } + } + + return new RemoteAddressInfo(remoteAddress, remotePort); + } } -- Gitblit v1.8.0