From cc4c4ac144600d08d53dcbb97d24fc2186c34a50 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期二, 08 十一月 2022 20:29:27 +0800
Subject: [PATCH] 支持配置是否开去推流鉴权
---
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java | 74 +++++++++++++++++++------------------
src/main/java/com/genersoft/iot/vmp/conf/UserSetting.java | 10 +++++
src/main/resources/all-application.yml | 2 +
3 files changed, 50 insertions(+), 36 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/UserSetting.java b/src/main/java/com/genersoft/iot/vmp/conf/UserSetting.java
index ea2655e..48dd85b 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/UserSetting.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/UserSetting.java
@@ -35,6 +35,8 @@
private Boolean streamOnDemand = Boolean.TRUE;
+ private Boolean pushAuthority = Boolean.TRUE;
+
private String serverId = "000000";
private String thirdPartyGBIdReg = "[\\s\\S]*";
@@ -156,4 +158,12 @@
public void setStreamOnDemand(Boolean streamOnDemand) {
this.streamOnDemand = streamOnDemand;
}
+
+ public Boolean getPushAuthority() {
+ return pushAuthority;
+ }
+
+ public void setPushAuthority(Boolean pushAuthority) {
+ this.pushAuthority = pushAuthority;
+ }
}
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
index 6392ada..d925e4b 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
@@ -183,42 +183,45 @@
JSONObject ret = new JSONObject();
String mediaServerId = json.getString("mediaServerId");
MediaServerItem mediaInfo = mediaServerService.getOne(mediaServerId);
+
if (!"rtp".equals(param.getApp())) {
- // 鎺ㄦ祦閴存潈
- if (param.getParams() == null) {
- logger.info("鎺ㄦ祦閴存潈澶辫触锛� 缂哄皯涓嶈鍙傛暟锛歴ign=md5(user琛ㄧ殑pushKey)");
- ret.put("code", 401);
- ret.put("msg", "Unauthorized");
- return ret;
- }
- Map<String, String> paramMap = urlParamToMap(param.getParams());
- String sign = paramMap.get("sign");
- if (sign == null) {
- logger.info("鎺ㄦ祦閴存潈澶辫触锛� 缂哄皯涓嶈鍙傛暟锛歴ign=md5(user琛ㄧ殑pushKey)");
- ret.put("code", 401);
- ret.put("msg", "Unauthorized");
- return ret;
- }
- // 鎺ㄦ祦鑷畾涔夋挱鏀鹃壌鏉冪爜
- String callId = paramMap.get("callId");
- // 閴存潈閰嶇疆
- boolean hasAuthority = userService.checkPushAuthority(callId, sign);
- if (!hasAuthority) {
- logger.info("鎺ㄦ祦閴存潈澶辫触锛� sign 鏃犳潈闄�: callId={}. sign={}", callId, sign);
- ret.put("code", 401);
- ret.put("msg", "Unauthorized");
- return ret;
- }
- StreamAuthorityInfo streamAuthorityInfo = StreamAuthorityInfo.getInstanceByHook(param);
- streamAuthorityInfo.setCallId(callId);
- streamAuthorityInfo.setSign(sign);
- // 閴存潈閫氳繃
- redisCatchStorage.updateStreamAuthorityInfo(param.getApp(), param.getStream(), streamAuthorityInfo);
- // 閫氱煡assist鏂扮殑callId
- if (mediaInfo != null && mediaInfo.getRecordAssistPort() > 0) {
- taskExecutor.execute(()->{
- assistRESTfulUtils.addStreamCallInfo(mediaInfo, param.getApp(), param.getStream(), callId, null);
- });
+ if (userSetting.getPushAuthority()) {
+// 鎺ㄦ祦閴存潈
+ if (param.getParams() == null) {
+ logger.info("鎺ㄦ祦閴存潈澶辫触锛� 缂哄皯涓嶈鍙傛暟锛歴ign=md5(user琛ㄧ殑pushKey)");
+ ret.put("code", 401);
+ ret.put("msg", "Unauthorized");
+ return ret;
+ }
+ Map<String, String> paramMap = urlParamToMap(param.getParams());
+ String sign = paramMap.get("sign");
+ if (sign == null) {
+ logger.info("鎺ㄦ祦閴存潈澶辫触锛� 缂哄皯涓嶈鍙傛暟锛歴ign=md5(user琛ㄧ殑pushKey)");
+ ret.put("code", 401);
+ ret.put("msg", "Unauthorized");
+ return ret;
+ }
+ // 鎺ㄦ祦鑷畾涔夋挱鏀鹃壌鏉冪爜
+ String callId = paramMap.get("callId");
+ // 閴存潈閰嶇疆
+ boolean hasAuthority = userService.checkPushAuthority(callId, sign);
+ if (!hasAuthority) {
+ logger.info("鎺ㄦ祦閴存潈澶辫触锛� sign 鏃犳潈闄�: callId={}. sign={}", callId, sign);
+ ret.put("code", 401);
+ ret.put("msg", "Unauthorized");
+ return ret;
+ }
+ StreamAuthorityInfo streamAuthorityInfo = StreamAuthorityInfo.getInstanceByHook(param);
+ streamAuthorityInfo.setCallId(callId);
+ streamAuthorityInfo.setSign(sign);
+ // 閴存潈閫氳繃
+ redisCatchStorage.updateStreamAuthorityInfo(param.getApp(), param.getStream(), streamAuthorityInfo);
+ // 閫氱煡assist鏂扮殑callId
+ if (mediaInfo != null && mediaInfo.getRecordAssistPort() > 0) {
+ taskExecutor.execute(()->{
+ assistRESTfulUtils.addStreamCallInfo(mediaInfo, param.getApp(), param.getStream(), callId, null);
+ });
+ }
}
}else {
zlmMediaListManager.sendStreamEvent(param.getApp(),param.getStream(), param.getMediaServerId());
@@ -226,7 +229,6 @@
ret.put("code", 0);
ret.put("msg", "success");
- ret.put("enable_hls", false);
if (!"rtp".equals(param.getApp())) {
ret.put("enable_audio", true);
diff --git a/src/main/resources/all-application.yml b/src/main/resources/all-application.yml
index 49d5aca..e4006bf 100644
--- a/src/main/resources/all-application.yml
+++ b/src/main/resources/all-application.yml
@@ -190,6 +190,8 @@
use-pushing-as-status: true
# 鎸夐渶鎷夋祦, true锛氭湁浜鸿鐪嬫媺娴侊紝鏃犱汉瑙傜湅閲婃斁锛� false锛氭媺璧峰悗涓嶈嚜鍔ㄩ噴鏀�
stream-on-demand: true
+ # 鎺ㄦ祦閴存潈锛� 榛樿寮�鍚�
+ push-authority: true
# 鍏抽棴鍦ㄧ嚎鏂囨。锛堢敓浜х幆澧冨缓璁叧闂級
springdoc:
--
Gitblit v1.8.0