From 42a2772d1aa7493bcc4fac3e24ee8eda4eebc23d Mon Sep 17 00:00:00 2001 From: xubinbin <1323875150@qq.com> Date: 星期二, 12 十二月 2023 17:09:04 +0800 Subject: [PATCH] bugfix:请求头带token, SecurityUtils 获取用户id 一直为0 #1195 --- src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorParent.java | 92 ++++++++++++--------------------------------- 1 files changed, 25 insertions(+), 67 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorParent.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorParent.java old mode 100644 new mode 100755 index 53efdd9..d983d41 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorParent.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorParent.java @@ -3,7 +3,7 @@ import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; import com.genersoft.iot.vmp.gb28181.transmit.SIPSender; import com.genersoft.iot.vmp.gb28181.utils.SipUtils; -import gov.nist.javax.sip.SipProviderImpl; +import com.google.common.primitives.Bytes; import gov.nist.javax.sip.message.SIPRequest; import gov.nist.javax.sip.message.SIPResponse; import org.apache.commons.lang3.ArrayUtils; @@ -14,19 +14,17 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; import javax.sip.*; import javax.sip.address.Address; -import javax.sip.address.AddressFactory; import javax.sip.address.SipURI; -import javax.sip.header.*; +import javax.sip.header.ContentTypeHeader; +import javax.sip.header.ExpiresHeader; +import javax.sip.header.HeaderFactory; import javax.sip.message.MessageFactory; import javax.sip.message.Request; import javax.sip.message.Response; import java.io.ByteArrayInputStream; -import java.nio.ByteBuffer; -import java.nio.charset.StandardCharsets; import java.text.ParseException; import java.util.ArrayList; import java.util.Arrays; @@ -44,20 +42,11 @@ @Autowired private SIPSender sipSender; - public AddressFactory getAddressFactory() { - try { - return SipFactory.getInstance().createAddressFactory(); - } catch (PeerUnavailableException e) { - e.printStackTrace(); - } - return null; - } - public HeaderFactory getHeaderFactory() { try { return SipFactory.getInstance().createHeaderFactory(); } catch (PeerUnavailableException e) { - e.printStackTrace(); + logger.error("鏈鐞嗙殑寮傚父 ", e); } return null; } @@ -66,7 +55,7 @@ try { return SipFactory.getInstance().createMessageFactory(); } catch (PeerUnavailableException e) { - e.printStackTrace(); + logger.error("鏈鐞嗙殑寮傚父 ", e); } return null; } @@ -92,53 +81,6 @@ public SIPResponse responseAck(SIPRequest sipRequest, int statusCode, String msg) throws SipException, InvalidArgumentException, ParseException { return responseAck(sipRequest, statusCode, msg, null); } - -// public SIPResponse responseAck(ServerTransaction serverTransaction, int statusCode, String msg, ResponseAckExtraParam responseAckExtraParam) throws SipException, InvalidArgumentException, ParseException { -// if (serverTransaction == null) { -// logger.warn("[鍥炲娑堟伅] ServerTransaction 涓簄ull"); -// return null; -// } -// ToHeader toHeader = (ToHeader) serverTransaction.getRequest().getHeader(ToHeader.NAME); -// if (toHeader.getTag() == null) { -// toHeader.setTag(SipUtils.getNewTag()); -// } -// SIPResponse response = (SIPResponse)getMessageFactory().createResponse(statusCode, serverTransaction.getRequest()); -// if (msg != null) { -// response.setReasonPhrase(msg); -// } -// if (responseAckExtraParam != null) { -// if (responseAckExtraParam.sipURI != null && serverTransaction.getRequest().getMethod().equals(Request.INVITE)) { -// logger.debug("responseSdpAck SipURI: {}:{}", responseAckExtraParam.sipURI.getHost(), responseAckExtraParam.sipURI.getPort()); -// Address concatAddress = SipFactory.getInstance().createAddressFactory().createAddress( -// SipFactory.getInstance().createAddressFactory().createSipURI(responseAckExtraParam.sipURI.getUser(), responseAckExtraParam.sipURI.getHost()+":"+responseAckExtraParam.sipURI.getPort() -// )); -// response.addHeader(SipFactory.getInstance().createHeaderFactory().createContactHeader(concatAddress)); -// } -// if (responseAckExtraParam.contentTypeHeader != null) { -// response.setContent(responseAckExtraParam.content, responseAckExtraParam.contentTypeHeader); -// } -// -// if (serverTransaction.getRequest().getMethod().equals(Request.SUBSCRIBE)) { -// if (responseAckExtraParam.expires == -1) { -// logger.error("[鍙傛暟涓嶅叏] 2xx鐨凷UBSCRIBE鍥炲锛屽繀椤昏缃瓻xpires header"); -// }else { -// ExpiresHeader expiresHeader = SipFactory.getInstance().createHeaderFactory().createExpiresHeader(responseAckExtraParam.expires); -// response.addHeader(expiresHeader); -// } -// } -// }else { -// if (serverTransaction.getRequest().getMethod().equals(Request.SUBSCRIBE)) { -// logger.error("[鍙傛暟涓嶅叏] 2xx鐨凷UBSCRIBE鍥炲锛屽繀椤昏缃瓻xpires header"); -// } -// } -// serverTransaction.sendResponse(response); -// if (statusCode >= 200 && !"NOTIFY".equalsIgnoreCase(serverTransaction.getRequest().getMethod())) { -// if (serverTransaction.getDialog() != null) { -// serverTransaction.getDialog().delete(); -// } -// } -// return response; -// } public SIPResponse responseAck(SIPRequest sipRequest, int statusCode, String msg, ResponseAckExtraParam responseAckExtraParam) throws SipException, InvalidArgumentException, ParseException { if (sipRequest.getToHeader().getTag() == null) { @@ -255,10 +197,26 @@ result.add(rawContent[i]); } } - Byte[] bytes = new Byte[0]; - byte[] bytesResult = ArrayUtils.toPrimitive(result.toArray(bytes)); + byte[] bytesResult = Bytes.toArray(result); - Document xml = reader.read(new ByteArrayInputStream(bytesResult)); + Document xml; + try { + xml = reader.read(new ByteArrayInputStream(bytesResult)); + }catch (DocumentException e) { + logger.warn("[xml瑙f瀽寮傚父]锛� 鍘熸枃濡備笅锛� \r\n{}", new String(bytesResult)); + logger.warn("[xml瑙f瀽寮傚父]锛� 鍘熸枃濡備笅锛� 灏濊瘯鍏煎鎬у鐞�"); + String[] xmlLineArray = new String(bytesResult).split("\\r?\\n"); + + // 鍏煎娴峰悍鐨刟ddress瀛楁甯︽湁<鐮存崲xml缁撴瀯瀵艰嚧鏃犳硶瑙f瀽xml鐨勯棶棰� + StringBuilder stringBuilder = new StringBuilder(); + for (String s : xmlLineArray) { + if (s.startsWith("<Address")) { + continue; + } + stringBuilder.append(s); + } + xml = reader.read(new ByteArrayInputStream(stringBuilder.toString().getBytes())); + } return xml.getRootElement(); } -- Gitblit v1.8.0