diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/auth/DigestServerAuthenticationHelper.java b/src/main/java/com/genersoft/iot/vmp/gb28181/auth/DigestServerAuthenticationHelper.java index e6d8d54a..234920e0 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/auth/DigestServerAuthenticationHelper.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/auth/DigestServerAuthenticationHelper.java @@ -239,58 +239,58 @@ public class DigestServerAuthenticationHelper { } - public static void main(String[] args) throws NoSuchAlgorithmException { - String realm = "3402000000"; - String username = "44010000001180008012"; +// public static void main(String[] args) throws NoSuchAlgorithmException { +// String realm = "3402000000"; +// String username = "44010000001180008012"; - String nonce = "07cab60999fbf643264ace27d3b7de8b"; - String uri = "sip:34020000002000000001@3402000000"; - // qop 保护质量 包含auth(默认的)和auth-int(增加了报文完整性检测)两种策略 - String qop = "auth"; +// String nonce = "07cab60999fbf643264ace27d3b7de8b"; +// String uri = "sip:34020000002000000001@3402000000"; +// // qop 保护质量 包含auth(默认的)和auth-int(增加了报文完整性检测)两种策略 +// String qop = "auth"; - // 客户端随机数,这是一个不透明的字符串值,由客户端提供,并且客户端和服务器都会使用,以避免用明文文本。 - // 这使得双方都可以查验对方的身份,并对消息的完整性提供一些保护 - //String cNonce = authHeader.getCNonce(); +// // 客户端随机数,这是一个不透明的字符串值,由客户端提供,并且客户端和服务器都会使用,以避免用明文文本。 +// // 这使得双方都可以查验对方的身份,并对消息的完整性提供一些保护 +// //String cNonce = authHeader.getCNonce(); - // nonce计数器,是一个16进制的数值,表示同一nonce下客户端发送出请求的数量 - int nc = 1; - String ncStr = new DecimalFormat("00000000").format(nc); -// String ncStr = new DecimalFormat("00000000").format(Integer.parseInt(nc + "", 16)); - MessageDigest messageDigest = MessageDigest.getInstance(DEFAULT_ALGORITHM); - String A1 = username + ":" + realm + ":" + "12345678"; - String A2 = "REGISTER" + ":" + uri; - byte mdbytes[] = messageDigest.digest(A1.getBytes()); - String HA1 = toHexString(mdbytes); - System.out.println("A1: " + A1); - System.out.println("A2: " + A2); +// // nonce计数器,是一个16进制的数值,表示同一nonce下客户端发送出请求的数量 +// int nc = 1; +// String ncStr = new DecimalFormat("00000000").format(nc); +// // String ncStr = new DecimalFormat("00000000").format(Integer.parseInt(nc + "", 16)); +// MessageDigest messageDigest = MessageDigest.getInstance(DEFAULT_ALGORITHM); +// String A1 = username + ":" + realm + ":" + "12345678"; +// String A2 = "REGISTER" + ":" + uri; +// byte mdbytes[] = messageDigest.digest(A1.getBytes()); +// String HA1 = toHexString(mdbytes); +// System.out.println("A1: " + A1); +// System.out.println("A2: " + A2); - mdbytes = messageDigest.digest(A2.getBytes()); - String HA2 = toHexString(mdbytes); - System.out.println("HA1: " + HA1); - System.out.println("HA2: " + HA2); - String cnonce = "0a4f113b"; - System.out.println("nonce: " + nonce); - System.out.println("nc: " + ncStr); - System.out.println("cnonce: " + cnonce); - System.out.println("qop: " + qop); - String KD = HA1 + ":" + nonce; +// mdbytes = messageDigest.digest(A2.getBytes()); +// String HA2 = toHexString(mdbytes); +// System.out.println("HA1: " + HA1); +// System.out.println("HA2: " + HA2); +// String cnonce = "0a4f113b"; +// System.out.println("nonce: " + nonce); +// System.out.println("nc: " + ncStr); +// System.out.println("cnonce: " + cnonce); +// System.out.println("qop: " + qop); +// String KD = HA1 + ":" + nonce; - if (qop != null && qop.equals("auth") ) { - if (nc != -1) { - KD += ":" + ncStr; - } - if (cnonce != null) { - KD += ":" + cnonce; - } - KD += ":" + qop; - } - KD += ":" + HA2; - System.out.println("KD: " + KD); - mdbytes = messageDigest.digest(KD.getBytes()); - String mdString = toHexString(mdbytes); - System.out.println("mdString: " + mdString); - String response = "4f0507d4b87cdecff04bdaf4c96348f0"; - System.out.println("response: " + response); - } +// if (qop != null && qop.equals("auth") ) { +// if (nc != -1) { +// KD += ":" + ncStr; +// } +// if (cnonce != null) { +// KD += ":" + cnonce; +// } +// KD += ":" + qop; +// } +// KD += ":" + HA2; +// System.out.println("KD: " + KD); +// mdbytes = messageDigest.digest(KD.getBytes()); +// String mdString = toHexString(mdbytes); +// System.out.println("mdString: " + mdString); +// String response = "4f0507d4b87cdecff04bdaf4c96348f0"; +// System.out.println("response: " + response); +// } } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java index 1842efe2..9d282c68 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java @@ -2,7 +2,6 @@ package com.genersoft.iot.vmp.gb28181.transmit.request.impl; import java.io.ByteArrayInputStream; import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.*; import javax.sip.address.SipURI; diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java index 77add282..ed407d29 100644 --- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java +++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java @@ -17,6 +17,7 @@ import org.springframework.stereotype.Component; import java.util.*; +@SuppressWarnings("unchecked") @Component public class ZLMMediaListManager { diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java index d0c88b08..8425d039 100644 --- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java +++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java @@ -4,12 +4,10 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.genersoft.iot.vmp.conf.MediaConfig; import okhttp3.*; -import org.checkerframework.checker.units.qual.A; import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.io.*; diff --git a/src/main/java/com/genersoft/iot/vmp/onvif/impl/ONVIFServerIMpl.java b/src/main/java/com/genersoft/iot/vmp/onvif/impl/ONVIFServerIMpl.java index afeee1cd..d952cc8f 100644 --- a/src/main/java/com/genersoft/iot/vmp/onvif/impl/ONVIFServerIMpl.java +++ b/src/main/java/com/genersoft/iot/vmp/onvif/impl/ONVIFServerIMpl.java @@ -17,6 +17,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +@SuppressWarnings("rawtypes") /** * 处理onvif的各种操作 */ diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java index 6d0bbf1c..535c7900 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java @@ -96,15 +96,16 @@ public class PlayServiceImpl implements IPlayService { try { String classPath = ResourceUtils.getURL("classpath:").getPath(); // System.out.println(classPath); - String path = classPath + "static/static/snap/"; + // 兼容打包为jar的class路径 if(classPath.contains("jar")) { classPath = classPath.substring(0, classPath.lastIndexOf(".")); - classPath = classPath.substring(0, classPath.lastIndexOf("/")); - path = classPath + "/snap/"; + classPath = classPath.substring(0, classPath.lastIndexOf("/") + 1); } - if (path.startsWith("file:")) { - path = path.substring(path.indexOf(":") + 1, path.length()); + if (classPath.startsWith("file:")) { + classPath = classPath.substring(classPath.indexOf(":") + 1, classPath.length()); } + String path = classPath + "static/static/snap/"; + // 兼容Windows系统路径(去除前面的“/”) if(System.getProperty("os.name").contains("indows")) { path = path.substring(1, path.length()); } @@ -116,7 +117,7 @@ public class PlayServiceImpl implements IPlayService { StreamInfo streamInfoForSuccess = (StreamInfo)wvpResult.getData(); String streamUrl = streamInfoForSuccess.getFmp4(); // 请求截图 - zlmresTfulUtils.getSnap(streamUrl, 5, 1, path, fileName); + zlmresTfulUtils.getSnap(streamUrl, 15, 1, path, fileName); } } System.out.println(path); diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java index 776acbf2..02894cc3 100644 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java @@ -132,15 +132,14 @@ public class DeviceQuery { */ @ApiOperation("同步设备通道") @ApiImplicitParams({ - @ApiImplicitParam(name="deviceId", value = "设备id", required = true ,dataTypeClass = String.class), + @ApiImplicitParam(name="deviceId", value = "设备id", required = true, dataTypeClass = String.class), }) @PostMapping("/devices/{deviceId}/sync") public DeferredResult> devicesSync(@PathVariable String deviceId){ if (logger.isDebugEnabled()) { - } logger.debug("设备通道信息同步API调用,deviceId:" + deviceId); - + } Device device = storager.queryVideoDevice(deviceId); cmder.catalogQuery(device, event -> { Response response = event.getResponse(); @@ -264,7 +263,7 @@ public class DeviceQuery { @ApiImplicitParams({ @ApiImplicitParam(name = "deviceId", value = "设备id", required = true, dataTypeClass = String.class), @ApiImplicitParam(name = "streamMode", value = "数据流传输模式, 取值:" + - "UDP(udp传输),TCP-ACTIVE(tcp主动模式,暂不支持),TCP-PASSIVE(tcp被动模式)"), + "UDP(udp传输),TCP-ACTIVE(tcp主动模式,暂不支持),TCP-PASSIVE(tcp被动模式)", dataTypeClass = String.class), }) @PostMapping("/transport/{deviceId}/{streamMode}") public ResponseEntity updateTransport(@PathVariable String deviceId, @PathVariable String streamMode){ diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/gbStream/GbStreamController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/gbStream/GbStreamController.java index 36535a36..fcfc8471 100644 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/gbStream/GbStreamController.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/gbStream/GbStreamController.java @@ -56,7 +56,7 @@ public class GbStreamController { */ @ApiOperation("移除国标关联") @ApiImplicitParams({ - @ApiImplicitParam(name = "gbStreamParam", value = "GbStreamParam", required = true , + @ApiImplicitParam(name = "gbStreamParam", value = "GbStreamParam", required = true, dataTypeClass = GbStreamParam.class), }) @DeleteMapping(value = "/del") @@ -77,7 +77,7 @@ public class GbStreamController { */ @ApiOperation("保存国标关联") @ApiImplicitParams({ - @ApiImplicitParam(name = "gbStreamParam", value = "GbStreamParam", required = true , dataTypeClass = GbStreamParam.class), + @ApiImplicitParam(name = "gbStreamParam", value = "GbStreamParam", required = true, dataTypeClass = GbStreamParam.class), }) @PostMapping(value = "/add") @ResponseBody diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/record/RecoderProxyController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/record/RecoderProxyController.java index a0df19b9..734f62f2 100644 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/record/RecoderProxyController.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/record/RecoderProxyController.java @@ -14,6 +14,8 @@ import org.springframework.web.client.RestTemplate; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; + +import java.io.UnsupportedEncodingException; import java.net.URLDecoder; @RestController @@ -31,7 +33,7 @@ public class RecoderProxyController { @ResponseBody @RequestMapping(value = "/**/**/**", produces = "application/json;charset=UTF-8") - public Object proxy(HttpServletRequest request, HttpServletResponse response){ + public Object proxy(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException{ String baseRequestURI = request.getRequestURI(); @@ -51,7 +53,7 @@ public class RecoderProxyController { mediaInfo.getSdpIp(), mediaConfig.getRecordAssistPort(), baseRequestURI.substring(baseRequestURI.indexOf(mediaId) + mediaId.length()), - URLDecoder.decode(request.getQueryString()) + URLDecoder.decode(request.getQueryString(), "UTF-8") ); // 发送请求 RestTemplate restTemplate = new RestTemplate();