From a42dda2bd3cc1cf8c20cc61e7ad9211eadecbaf3 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期四, 24 二月 2022 16:55:06 +0800
Subject: [PATCH] 规范数据库,添加必要约束,优化通道批量导入功能

---
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorParent.java |   33 ++++++++++++++++++++++++++++++++-
 1 files changed, 32 insertions(+), 1 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
index d4de725..390565c 100644
--- 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
@@ -4,6 +4,7 @@
 import gov.nist.javax.sip.SipStackImpl;
 import gov.nist.javax.sip.message.SIPRequest;
 import gov.nist.javax.sip.stack.SIPServerTransaction;
+import org.apache.commons.lang3.ArrayUtils;
 import org.dom4j.Document;
 import org.dom4j.DocumentException;
 import org.dom4j.Element;
@@ -25,7 +26,12 @@
 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;
+import java.util.List;
 
 /**    
  * @description:澶勭悊鎺ユ敹IPCamera鍙戞潵鐨凷IP鍗忚璇锋眰娑堟伅
@@ -202,7 +208,32 @@
 		Request request = evt.getRequest();
 		SAXReader reader = new SAXReader();
 		reader.setEncoding(charset);
-		Document xml = reader.read(new ByteArrayInputStream(request.getRawContent()));
+		// 瀵规捣搴峰嚭鐜扮殑鏈浆涔夊瓧绗﹀仛澶勭悊銆�
+		String[] destStrArray = new String[]{"&lt;","&gt;","&amp;","&apos;","&quot;"};
+		char despChar = '&'; // 鎴栬鍙墿灞曞吋瀹瑰叾浠栧瓧绗�
+		byte destBye = (byte) despChar;
+		List<Byte> result = new ArrayList<>();
+		byte[] rawContent = request.getRawContent();
+		for (int i = 0; i < rawContent.length; i++) {
+			if (rawContent[i] == destBye) {
+				boolean resul = false;
+				for (String destStr : destStrArray) {
+					if (i + destStr.length() <= rawContent.length) {
+						byte[] bytes = Arrays.copyOfRange(rawContent, i, i + destStr.length());
+						resul = resul || (Arrays.equals(bytes,destStr.getBytes()));
+					}
+				}
+				if (resul) {
+					result.add(rawContent[i]);
+				}
+			}else {
+				result.add(rawContent[i]);
+			}
+		}
+		Byte[] bytes = new Byte[0];
+		byte[] bytesResult = ArrayUtils.toPrimitive(result.toArray(bytes));
+
+		Document xml = reader.read(new ByteArrayInputStream(bytesResult));
 		return xml.getRootElement();
 	}
 

--
Gitblit v1.8.0