From 46c77302a112d46e73c5ced659bcabb01981f01c Mon Sep 17 00:00:00 2001
From: mk1990 <37614016+mk1990@users.noreply.github.com>
Date: 星期一, 23 五月 2022 13:02:50 +0800
Subject: [PATCH] Merge branch '648540858:wvp-28181-2.0' into wvp-28181-2.0
---
src/main/java/com/genersoft/iot/vmp/conf/security/LoginSuccessHandler.java | 3 +
src/main/java/com/genersoft/iot/vmp/conf/security/WebSecurityConfig.java | 19 ++++++---
src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java | 11 ++---
web_src/src/components/dialog/devicePlayer.vue | 12 +++---
src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java | 24 +++++++++++
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/RecordInfoResponseMessageHandler.java | 10 ++++
web_src/package.json | 2
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java | 18 +--------
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/KeepaliveNotifyMessageHandler.java | 6 +--
9 files changed, 62 insertions(+), 43 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java b/src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java
index 85f4684..c24e0ca 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java
@@ -6,6 +6,10 @@
import org.springframework.context.annotation.Configuration;
import org.springframework.util.StringUtils;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.regex.Pattern;
+
@Configuration("mediaConfig")
public class MediaConfig{
@@ -161,7 +165,18 @@
if (StringUtils.isEmpty(sdpIp)){
return ip;
}else {
- return sdpIp;
+ if (isValidIPAddress(sdpIp)) {
+ return sdpIp;
+ }else {
+ // 鎸夌収鍩熷悕瑙f瀽
+ String hostAddress = null;
+ try {
+ hostAddress = InetAddress.getByName(sdpIp).getHostAddress();
+ } catch (UnknownHostException e) {
+ throw new RuntimeException(e);
+ }
+ return hostAddress;
+ }
}
}
@@ -211,4 +226,11 @@
return mediaServerItem;
}
+ private boolean isValidIPAddress(String ipAddress) {
+ if ((ipAddress != null) && (!ipAddress.isEmpty())) {
+ return Pattern.matches("^([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}$", ipAddress);
+ }
+ return false;
+ }
+
}
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/security/LoginSuccessHandler.java b/src/main/java/com/genersoft/iot/vmp/conf/security/LoginSuccessHandler.java
index 9690c6d..2d7e8a1 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/security/LoginSuccessHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/security/LoginSuccessHandler.java
@@ -11,6 +11,9 @@
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
+/**
+ * @author lin
+ */
@Component
public class LoginSuccessHandler implements AuthenticationSuccessHandler {
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/security/WebSecurityConfig.java b/src/main/java/com/genersoft/iot/vmp/conf/security/WebSecurityConfig.java
index 47cfdab..a4bbdba 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/security/WebSecurityConfig.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/security/WebSecurityConfig.java
@@ -20,6 +20,7 @@
/**
* 閰嶇疆Spring Security
+ * @author lin
*/
@Configuration
@EnableWebSecurity
@@ -132,15 +133,19 @@
.anyRequest().authenticated()
// 寮傚父澶勭悊(鏉冮檺鎷掔粷銆佺櫥褰曞け鏁堢瓑)
.and().exceptionHandling()
- .authenticationEntryPoint(anonymousAuthenticationEntryPoint)//鍖垮悕鐢ㄦ埛璁块棶鏃犳潈闄愯祫婧愭椂鐨勫紓甯稿鐞�
+ //鍖垮悕鐢ㄦ埛璁块棶鏃犳潈闄愯祫婧愭椂鐨勫紓甯稿鐞�
+ .authenticationEntryPoint(anonymousAuthenticationEntryPoint)
// .accessDeniedHandler(accessDeniedHandler)//鐧诲綍鐢ㄦ埛娌℃湁鏉冮檺璁块棶璧勬簮
- // 鐧诲叆
- .and().formLogin().permitAll()//鍏佽鎵�鏈夌敤鎴�
- .successHandler(loginSuccessHandler)//鐧诲綍鎴愬姛澶勭悊閫昏緫
- .failureHandler(loginFailureHandler)//鐧诲綍澶辫触澶勭悊閫昏緫
+ // 鐧诲叆 鍏佽鎵�鏈夌敤鎴�
+ .and().formLogin().permitAll()
+ //鐧诲綍鎴愬姛澶勭悊閫昏緫
+ .successHandler(loginSuccessHandler)
+ //鐧诲綍澶辫触澶勭悊閫昏緫
+ .failureHandler(loginFailureHandler)
// 鐧诲嚭
- .and().logout().logoutUrl("/api/user/logout").permitAll()//鍏佽鎵�鏈夌敤鎴�
- .logoutSuccessHandler(logoutHandler)//鐧诲嚭鎴愬姛澶勭悊閫昏緫
+ .and().logout().logoutUrl("/api/user/logout").permitAll()
+ //鐧诲嚭鎴愬姛澶勭悊閫昏緫
+ .logoutSuccessHandler(logoutHandler)
.deleteCookies("JSESSIONID")
// 浼氳瘽绠$悊
// .and().sessionManagement().invalidSessionStrategy(invalidSessionHandler) // 瓒呮椂澶勭悊
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java
index 47a4e00..cebc2ed 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java
@@ -1,17 +1,13 @@
package com.genersoft.iot.vmp.gb28181.transmit.event.request.impl;
-import com.genersoft.iot.vmp.common.VideoManagerConstants;
import com.genersoft.iot.vmp.conf.SipConfig;
-import com.genersoft.iot.vmp.gb28181.auth.DigestServerAuthenticationHelper;
import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.gb28181.bean.WvpSipDate;
-import com.genersoft.iot.vmp.gb28181.event.EventPublisher;
import com.genersoft.iot.vmp.gb28181.transmit.SIPProcessorObserver;
import com.genersoft.iot.vmp.gb28181.transmit.event.request.ISIPRequestProcessor;
import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent;
+import com.genersoft.iot.vmp.gb28181.auth.DigestServerAuthenticationHelper;
import com.genersoft.iot.vmp.service.IDeviceService;
-import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
-import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
import com.genersoft.iot.vmp.utils.DateUtil;
import gov.nist.javax.sip.RequestEventExt;
import gov.nist.javax.sip.address.AddressImpl;
@@ -51,15 +47,6 @@
private SipConfig sipConfig;
@Autowired
- private IRedisCatchStorage redisCatchStorage;
-
- @Autowired
- private IVideoManagerStorage storager;
-
- @Autowired
- private EventPublisher publisher;
-
- @Autowired
private SIPProcessorObserver sipProcessorObserver;
@Autowired
@@ -86,7 +73,7 @@
ExpiresHeader expiresHeader = (ExpiresHeader) request.getHeader(Expires.NAME);
Response response = null;
boolean passwordCorrect = false;
- // 娉ㄥ唽鏍囧織 0锛氭湭鎼哄甫鎺堟潈澶存垨鑰呭瘑鐮侀敊璇� 1锛氭敞鍐屾垚鍔� 2锛氭敞閿�鎴愬姛
+ // 娉ㄥ唽鏍囧織
boolean registerFlag = false;
FromHeader fromHeader = (FromHeader) request.getHeader(FromHeader.NAME);
AddressImpl address = (AddressImpl) fromHeader.getAddress();
@@ -105,7 +92,6 @@
// 鏍¢獙瀵嗙爜鏄惁姝g‘
passwordCorrect = StringUtils.isEmpty(sipConfig.getPassword()) ||
new DigestServerAuthenticationHelper().doAuthenticatePlainTextPassword(request, sipConfig.getPassword());
- // 鏈惡甯︽巿鏉冨ご鎴栬�呭瘑鐮侀敊璇� 鍥炲401
if (!passwordCorrect) {
// 娉ㄥ唽澶辫触
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/KeepaliveNotifyMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/KeepaliveNotifyMessageHandler.java
index cf07250..c429457 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/KeepaliveNotifyMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/KeepaliveNotifyMessageHandler.java
@@ -64,16 +64,14 @@
device.setHostAddress(received.concat(":").concat(String.valueOf(rPort)));
}
device.setKeepaliveTime(DateUtil.getNow());
+ // 鍥炲200 OK
+ responseAck(evt, Response.OK);
if (device.getOnline() == 1) {
- // 鍥炲200 OK
- responseAck(evt, Response.OK);
deviceService.updateDevice(device);
}else {
// 瀵逛簬宸茬粡绂荤嚎鐨勮澶囧垽鏂粬鐨勬敞鍐屾槸鍚﹀凡缁忚繃鏈�
if (!deviceService.expire(device)){
deviceService.online(device);
- // 鍥炲200 OK
- responseAck(evt, Response.OK);
}
}
} catch (SipException e) {
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/RecordInfoResponseMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/RecordInfoResponseMessageHandler.java
index 4509e42..1f70171 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/RecordInfoResponseMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/RecordInfoResponseMessageHandler.java
@@ -70,15 +70,20 @@
rootElement = getRootElement(evt, device.getCharset());
String sn = getText(rootElement, "SN");
-
+ RecordInfo recordInfo = new RecordInfo();
+ recordInfo.setDeviceId(device.getDeviceId());
+ recordInfo.setSn(sn);
+ recordInfo.setName(getText(rootElement, "Name"));
String sumNumStr = getText(rootElement, "SumNum");
int sumNum = 0;
if (!StringUtils.isEmpty(sumNumStr)) {
sumNum = Integer.parseInt(sumNumStr);
}
+ recordInfo.setSumNum(sumNum);
Element recordListElement = rootElement.element("RecordList");
if (recordListElement == null || sumNum == 0) {
logger.info("鏃犲綍鍍忔暟鎹�");
+ eventPublisher.recordEndEventPush(recordInfo);
recordDataCatch.put(device.getDeviceId(), sn, sumNum, new ArrayList<>());
releaseRequest(device.getDeviceId(), sn);
} else {
@@ -112,6 +117,9 @@
record.setRecorderId(getText(itemRecord, "RecorderID"));
recordList.add(record);
}
+ recordInfo.setRecordList(recordList);
+ // 鍙戦�佹秷鎭紝濡傛灉鏄笂绾ф煡璇㈡褰曞儚锛屽垯浼氶�氳繃杩欓噷閫氱煡缁欎笂绾�
+ eventPublisher.recordEndEventPush(recordInfo);
int count = recordDataCatch.put(device.getDeviceId(), sn, sumNum, recordList);
logger.info("[鍥芥爣褰曞儚]锛� {}->{}: {}/{}", device.getDeviceId(), sn, count, sumNum);
}
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 be66b0e..2521a06 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
@@ -19,17 +19,16 @@
import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils;
import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
import com.genersoft.iot.vmp.service.IMediaServerService;
+import com.genersoft.iot.vmp.service.IMediaService;
+import com.genersoft.iot.vmp.service.IPlayService;
import com.genersoft.iot.vmp.service.bean.InviteTimeOutCallback;
import com.genersoft.iot.vmp.service.bean.PlayBackCallback;
import com.genersoft.iot.vmp.service.bean.PlayBackResult;
import com.genersoft.iot.vmp.service.bean.SSRCInfo;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
-import com.genersoft.iot.vmp.utils.redis.RedisUtil;
import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
import com.genersoft.iot.vmp.vmanager.gb28181.play.bean.PlayResult;
-import com.genersoft.iot.vmp.service.IMediaService;
-import com.genersoft.iot.vmp.service.IPlayService;
import gov.nist.javax.sip.stack.SIPDialog;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -43,6 +42,7 @@
import javax.sip.ResponseEvent;
import java.io.FileNotFoundException;
import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.util.*;
@SuppressWarnings(value = {"rawtypes", "unchecked"})
@@ -62,9 +62,6 @@
@Autowired
private IRedisCatchStorage redisCatchStorage;
-
- @Autowired
- private RedisUtil redis;
@Autowired
private DeferredResultHolder resultHolder;
@@ -591,7 +588,7 @@
BigDecimal currentCount = new BigDecimal(duration/1000);
BigDecimal totalCount = new BigDecimal(end-start);
- BigDecimal divide = currentCount.divide(totalCount,2, BigDecimal.ROUND_HALF_UP);
+ BigDecimal divide = currentCount.divide(totalCount,2, RoundingMode.HALF_UP);
double process = divide.doubleValue();
streamInfo.setProgress(process);
}
diff --git a/web_src/package.json b/web_src/package.json
index 1e7f043..b825f84 100644
--- a/web_src/package.json
+++ b/web_src/package.json
@@ -52,7 +52,7 @@
"postcss-url": "^7.2.1",
"rimraf": "^2.6.0",
"semver": "^5.3.0",
- "shelljs": "^0.7.6",
+ "shelljs": "^0.8.5",
"uglifyjs-webpack-plugin": "^1.1.1",
"url-loader": "^0.5.8",
"vue-loader": "^13.3.0",
diff --git a/web_src/src/components/dialog/devicePlayer.vue b/web_src/src/components/dialog/devicePlayer.vue
index aba35dd..9c254c9 100644
--- a/web_src/src/components/dialog/devicePlayer.vue
+++ b/web_src/src/components/dialog/devicePlayer.vue
@@ -605,12 +605,12 @@
url: '/api/playback/start/' + this.deviceId + '/' + this.channelId + '?startTime=' + row.startTime + '&endTime=' +
row.endTime
}).then(function (res) {
- var streamInfo = res.data;
- that.app = streamInfo.app;
- that.streamId = streamInfo.stream;
- that.mediaServerId = streamInfo.mediaServerId;
- that.ssrc = streamInfo.ssrc;
- that.videoUrl = that.getUrlByStreamInfo(streamInfo);
+ that.streamInfo = res.data;
+ that.app = that.streamInfo.app;
+ that.streamId = that.streamInfo.stream;
+ that.mediaServerId = that.streamInfo.mediaServerId;
+ that.ssrc = that.streamInfo.ssrc;
+ that.videoUrl = that.getUrlByStreamInfo();
that.recordPlay = true;
});
}
--
Gitblit v1.8.0