Merge pull request #115 from lawrencehj/wvp-28181-2.0

修正部分错误,优化参数
This commit is contained in:
648540858 2021-06-24 13:19:30 +08:00 committed by GitHub
commit 442e171d06
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 66 additions and 65 deletions

View File

@ -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);
// }
}

View File

@ -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;

View File

@ -17,6 +17,7 @@ import org.springframework.stereotype.Component;
import java.util.*;
@SuppressWarnings("unchecked")
@Component
public class ZLMMediaListManager {

View File

@ -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.*;

View File

@ -17,6 +17,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
@SuppressWarnings("rawtypes")
/**
* 处理onvif的各种操作
*/

View File

@ -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);

View File

@ -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<ResponseEntity<Device>> 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 = "数据流传输模式, 取值:" +
"UDPudp传输TCP-ACTIVEtcp主动模式,暂不支持TCP-PASSIVEtcp被动模式"),
"UDPudp传输TCP-ACTIVEtcp主动模式,暂不支持TCP-PASSIVEtcp被动模式", dataTypeClass = String.class),
})
@PostMapping("/transport/{deviceId}/{streamMode}")
public ResponseEntity<PageInfo> updateTransport(@PathVariable String deviceId, @PathVariable String streamMode){

View File

@ -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

View File

@ -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();