From 58d1f0ea16d95638d50d691a7a0169c83c8550af Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: Mon, 27 Mar 2023 15:47:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=91=E7=AB=AF=E5=BD=95?= =?UTF-8?q?=E5=83=8F=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/genersoft/iot/vmp/conf/ProxyServletConfig.java | 7 +++++++ .../genersoft/iot/vmp/conf/security/WebSecurityConfig.java | 4 +++- web_src/src/components/CloudRecordDetail.vue | 7 ++++++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/conf/ProxyServletConfig.java b/src/main/java/com/genersoft/iot/vmp/conf/ProxyServletConfig.java index ee4d850a..6cc3b415 100644 --- a/src/main/java/com/genersoft/iot/vmp/conf/ProxyServletConfig.java +++ b/src/main/java/com/genersoft/iot/vmp/conf/ProxyServletConfig.java @@ -2,6 +2,7 @@ package com.genersoft.iot.vmp.conf; import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem; import com.genersoft.iot.vmp.service.IMediaServerService; +import org.apache.catalina.connector.ClientAbortException; import org.apache.http.HttpHost; import org.apache.http.HttpRequest; import org.apache.http.HttpResponse; @@ -193,6 +194,12 @@ public class ProxyServletConfig { } catch (IOException ioException) { if (ioException instanceof ConnectException) { logger.error("录像服务 连接失败"); + }else if (ioException instanceof ClientAbortException) { + /** + * TODO 使用这个代理库实现代理在遇到代理视频文件时,如果是206结果,会遇到报错蛋市目前功能正常, + * TODO 暂时去除异常处理。后续使用其他代理框架修改测试 + */ + }else { logger.error("录像服务 代理失败: ", e); } 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 c9a1233b..0f75984b 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 @@ -84,6 +84,8 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { matchers.add("/v3/api-docs/**"); matchers.add("/js/**"); matchers.add("/api/device/query/snap/**"); + matchers.add("/record_proxy/*/**"); + matchers.add("/zlm_Proxy/FhTuMYqB2HeCuNOb/record/t/1/2023-03-25/16:35:07-16:35:16-9353.mp4"); matchers.addAll(userSetting.getInterfaceAuthenticationExcludes()); // 可以直接访问的静态数据 web.ignoring().antMatchers(matchers.toArray(new String[0])); @@ -119,7 +121,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { .authorizeRequests() .requestMatchers(CorsUtils::isPreFlightRequest).permitAll() .antMatchers(userSetting.getInterfaceAuthenticationExcludes().toArray(new String[0])).permitAll() - .antMatchers("/api/user/login","/index/hook/**").permitAll() + .antMatchers("/api/user/login","/index/hook/**","/zlm_Proxy/FhTuMYqB2HeCuNOb/record/t/1/2023-03-25/16:35:07-16:35:16-9353.mp4").permitAll() .anyRequest().authenticated() // 异常处理器 .and() diff --git a/web_src/src/components/CloudRecordDetail.vue b/web_src/src/components/CloudRecordDetail.vue index bacd96fd..6983b543 100644 --- a/web_src/src/components/CloudRecordDetail.vue +++ b/web_src/src/components/CloudRecordDetail.vue @@ -220,14 +220,18 @@ } this.queryRecordDetails(()=>{ if (this.detailFiles.length > 0){ + console.log(this.detailFiles) let timeForFile = this.getTimeForFile(this.detailFiles[0]); let lastTimeForFile = this.getTimeForFile(this.detailFiles[this.detailFiles.length - 1]); let timeNum = timeForFile[0].getTime() - new Date(this.chooseDate + " " + this.timeFormat).getTime() + console.log(timeNum) let lastTimeNum = lastTimeForFile[1].getTime() - new Date(this.chooseDate + " " + this.timeFormat).getTime() this.playTime = parseInt(timeNum/1000) this.sliderMIn = parseInt(timeNum/1000 - timeNum/1000%(60*60)) + console.log(this.sliderMIn ) this.sliderMax = parseInt(lastTimeNum/1000 - lastTimeNum/1000%(60*60)) + 60*60 + console.log(this.sliderMax ) } }); }, @@ -311,11 +315,12 @@ } }, getTimeForFile(file){ + console.log(file) let timeStr = file.substring(0,17); if(timeStr.indexOf("~") > 0){ timeStr = timeStr.replaceAll("-",":") } - let timeArr = timeStr.split("~"); + let timeArr = timeStr.split("-"); let starTime = new Date(this.chooseDate + " " + timeArr[0]); let endTime = new Date(this.chooseDate + " " + timeArr[1]); if(this.checkIsOver24h(starTime,endTime)){