commit
442e171d06
@ -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);
|
||||
// }
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -17,6 +17,7 @@ import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Component
|
||||
public class ZLMMediaListManager {
|
||||
|
||||
|
@ -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.*;
|
||||
|
@ -17,6 +17,7 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
/**
|
||||
* 处理onvif的各种操作
|
||||
*/
|
||||
|
@ -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);
|
||||
|
@ -138,9 +138,8 @@ public class DeviceQuery {
|
||||
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 = "数据流传输模式, 取值:" +
|
||||
"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<PageInfo> updateTransport(@PathVariable String deviceId, @PathVariable String streamMode){
|
||||
|
@ -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();
|
||||
|
Loading…
Reference in New Issue
Block a user