Browse Source

/*增加rport*/

master
htjcAdmin 1 month ago
parent
commit
7833c87303
4 changed files with 21 additions and 7 deletions
  1. +17
    -4
      src/main/java/com/inspect/tcpserver/sip/service/SipClientService.java
  2. +1
    -0
      src/main/java/com/inspect/tcpserver/sip/service/SipVideoClient.java
  3. +1
    -1
      src/main/resources/application-dev.yml
  4. +2
    -2
      src/main/resources/application.yml

+ 17
- 4
src/main/java/com/inspect/tcpserver/sip/service/SipClientService.java View File

@ -211,6 +211,11 @@ public class SipClientService implements SipListener {
Properties properties = new Properties();
properties.setProperty("javax.sip.STACK_NAME", "spring-boot-sip-stack");
properties.setProperty("gov.nist.javax.sip.IP_ADDRESS", localIp);
// 新增这些JAIN-SIP RI 支持的 NAT 参数
properties.setProperty("gov.nist.javax.sip.OUTBOUND_PROXY", domain + ":" + port + ";" + transport); // 可选强制出站代理
properties.setProperty("gov.nist.javax.sip.AUTOMATIC_NAT_SUPPORT", "true"); // 如果版本支持
properties.setProperty("gov.nist.javax.sip.USE_RPORT_AS_OUTBOUND", "true"); // 使用 rport 作为出站
properties.setProperty("gov.nist.javax.sip.FIX_CONTACT_HEADER", "true"); // 修复 Contact
properties.setProperty("gov.nist.javax.sip.DEBUG_LOG", "sipdebug.txt");
properties.setProperty("gov.nist.javax.sip.SERVER_LOG", "sipserverlog.txt");
@ -267,7 +272,7 @@ public class SipClientService implements SipListener {
public void sendRegister(AuthorizationHeader authHeader) throws Exception {
SipURI requestUri = addressFactory.createSipURI(null, domain);
// requestUri.setTransportParam(transport.toUpperCase());
requestUri.setTransportParam(transport.toUpperCase());
requestUri.setPort(port);
Address fromAddress = addressFactory.createAddress(username, addressFactory.createSipURI(username, domain));
@ -279,11 +284,18 @@ public class SipClientService implements SipListener {
CSeqHeader cSeq = headerFactory.createCSeqHeader(1L, Request.REGISTER);
MaxForwardsHeader maxForwards = headerFactory.createMaxForwardsHeader(70);
//String natIp = "172.19.1.1"; // 避免硬编码用环境变量注入
//int natPort = localPort; // 通常保持本地端口或映射后端口
String natIp = System.getenv("SIP_NAT_IP") != null ? System.getenv("SIP_NAT_IP") : localIp;
int natPort = System.getenv("SIP_NAT_PORT") != null ? Integer.parseInt(System.getenv("SIP_NAT_PORT")) : localPort;
log.info("SEND_REGISTER NAT_IP: {}, NAT_PORT: {}", natIp, natPort);
// 创建带自定义deviceid参数的Contact URI
SipURI contactUri = addressFactory.createSipURI(username, localIp);
contactUri.setPort(localPort);
//SipURI contactUri = addressFactory.createSipURI(username, localIp);
SipURI contactUri = addressFactory.createSipURI(username, natIp);
//contactUri.setPort(localPort);
contactUri.setPort(natPort);
contactUri.setTransportParam(transport.toUpperCase());
// contactUri.setParameter("deviceid", "123456");
contactUri.setParameter("deviceid", "123456");
Address contactAddress = addressFactory.createAddress(contactUri);
ContactHeader contactHeader = headerFactory.createContactHeader(contactAddress);
@ -291,6 +303,7 @@ public class SipClientService implements SipListener {
List<ViaHeader> viaHeaders = new ArrayList<>();
ViaHeader viaHeader = headerFactory.createViaHeader(localIp, localPort, transport.toUpperCase(), null);
viaHeader.setRPort();
viaHeaders.add(viaHeader);
Request request = messageFactory.createRequest(


+ 1
- 0
src/main/java/com/inspect/tcpserver/sip/service/SipVideoClient.java View File

@ -66,6 +66,7 @@ public class SipVideoClient implements SipListener {
sipStack = sipFactory.createSipStack(properties);
ListeningPoint lp = sipStack.createListeningPoint(localIp, localPort, transport);
//ListeningPoint lp = sipStack.createListeningPoint("0.0.0.0", localPort, transport);
sipProvider = sipStack.createSipProvider(lp);
sipProvider.addSipListener(this);
}


+ 1
- 1
src/main/resources/application-dev.yml View File

@ -52,7 +52,7 @@ sip:
domain: 192.168.1.116 # 平台SIP服务IP或域名
port: 5060
transport: tcp # 也可以为udp
local-ip: 192.168.1.11 # 本服务的外网或可达IP
local-ip: 192.168.1.8 # 本服务的外网或可达IP
local-port: 5061
expires: 3600

+ 2
- 2
src/main/resources/application.yml View File

@ -47,13 +47,13 @@ minio:
bucket-name: mybucket
sip:
enable: false
enable: true
username: 290010021201070000
password: 123456
domain: 192.168.1.116 # 平台SIP服务IP或域名
port: 5060
transport: tcp # 也可以为udp
local-ip: 192.168.1.11 # 本服务的外网或可达IP
local-ip: 192.168.1.8 # 本服务的外网或可达IP
local-port: 5061
expires: 3600


Loading…
Cancel
Save