src/main/java/com/genersoft/iot/vmp/conf/ProxyServletConfig.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/genersoft/iot/vmp/conf/security/WebSecurityConfig.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
web_src/src/components/CloudRecordDetail.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/genersoft/iot/vmp/conf/ProxyServletConfig.java
@@ -2,6 +2,7 @@ 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 @@ } catch (IOException ioException) { if (ioException instanceof ConnectException) { logger.error("录像服务 连接失败"); }else if (ioException instanceof ClientAbortException) { /** * TODO 使用这个代理库实现代理在遇到代理视频文件时,如果是206结果,会遇到报错蛋市目前功能正常, * TODO 暂时去除异常处理。后续使用其他代理框架修改测试 */ }else { logger.error("录像服务 代理失败: ", e); } src/main/java/com/genersoft/iot/vmp/conf/security/WebSecurityConfig.java
@@ -84,6 +84,8 @@ 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 @@ .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() 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)){