From 807d0524a6e965599f9cdbfc7bbf7504c4d9b917 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期二, 23 五月 2023 10:34:00 +0800
Subject: [PATCH] 修复推流鉴权
---
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java | 4 ++--
src/main/java/com/genersoft/iot/vmp/storager/dao/StreamPushMapper.java | 4 ++--
src/main/java/com/genersoft/iot/vmp/storager/dao/UserMapper.java | 10 +++++-----
src/main/java/com/genersoft/iot/vmp/service/impl/UserServiceImpl.java | 23 +++++++++++++++++------
4 files changed, 26 insertions(+), 15 deletions(-)
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 637f5ef..3a94f79 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
@@ -191,13 +191,13 @@
if (userSetting.getPushAuthority()) {
// 鎺ㄦ祦閴存潈
if (param.getParams() == null) {
- logger.info("鎺ㄦ祦閴存潈澶辫触锛� 缂哄皯涓嶈鍙傛暟锛歴ign=md5(user琛ㄧ殑pushKey)");
+ logger.info("鎺ㄦ祦閴存潈澶辫触锛� 缂哄皯蹇呰鍙傛暟锛歴ign=md5(user琛ㄧ殑pushKey)");
return new HookResultForOnPublish(401, "Unauthorized");
}
Map<String, String> paramMap = urlParamToMap(param.getParams());
String sign = paramMap.get("sign");
if (sign == null) {
- logger.info("鎺ㄦ祦閴存潈澶辫触锛� 缂哄皯涓嶈鍙傛暟锛歴ign=md5(user琛ㄧ殑pushKey)");
+ logger.info("鎺ㄦ祦閴存潈澶辫触锛� 缂哄皯蹇呰鍙傛暟锛歴ign=md5(user琛ㄧ殑pushKey)");
return new HookResultForOnPublish(401, "Unauthorized");
}
// 鎺ㄦ祦鑷畾涔夋挱鏀鹃壌鏉冪爜
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/UserServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/UserServiceImpl.java
index aeba9ed..efbb24d 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/UserServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/UserServiceImpl.java
@@ -7,8 +7,7 @@
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-import org.springframework.util.ObjectUtils;
-import org.springframework.util.StringUtils;
+import org.springframework.util.DigestUtils;
import java.util.List;
@@ -61,11 +60,23 @@
@Override
public boolean checkPushAuthority(String callId, String sign) {
- if (ObjectUtils.isEmpty(callId)) {
- return userMapper.checkPushAuthorityByCallId(sign).size() > 0;
- }else {
- return userMapper.checkPushAuthorityByCallIdAndSign(callId, sign).size() > 0;
+
+ List<User> users = userMapper.getUsers();
+ if (users.size() == 0) {
+ return false;
}
+ for (User user : users) {
+ if (user.getPushKey() == null) {
+ continue;
+ }
+ String checkStr = callId == null? user.getPushKey():(callId + "_" + user.getPushKey()) ;
+ System.out.println(checkStr);
+ String checkSign = DigestUtils.md5DigestAsHex(checkStr.getBytes());
+ if (checkSign.equals(sign)) {
+ return true;
+ }
+ }
+ return false;
}
@Override
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/StreamPushMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/StreamPushMapper.java
index 45ed4f8..4efc058 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/dao/StreamPushMapper.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/StreamPushMapper.java
@@ -13,9 +13,9 @@
public interface StreamPushMapper {
@Insert("INSERT INTO wvp_stream_push (app, stream, total_reader_count, origin_type, origin_type_str, " +
- "push_time, alive_second, media_server_id, server_id, update_time, create_time, push_ing, self) VALUES" +
+ "push_time, alive_second, media_server_id, update_time, create_time, push_ing, self) VALUES" +
"(#{app}, #{stream}, #{totalReaderCount}, #{originType}, #{originTypeStr}, " +
- "#{pushTime}, #{aliveSecond}, #{mediaServerId} , #{serverId} , #{updateTime} , #{createTime}, " +
+ "#{pushTime}, #{aliveSecond}, #{mediaServerId} , #{updateTime} , #{createTime}, " +
"#{pushIng}, #{self} )")
int add(StreamPushItem streamPushItem);
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/UserMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/UserMapper.java
index 89b9d86..67cdccd 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/dao/UserMapper.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/UserMapper.java
@@ -50,11 +50,11 @@
@ResultMap(value="roleMap")
List<User> selectAll();
- @Select("select * from (select user.*, concat(concat(#{call_id}, '_'), push_key) as str1 from wvp_user) as u where md5(u.str1) = #{sign}")
- List<User> checkPushAuthorityByCallIdAndSign(String callId, String sign);
-
- @Select("select * from wvp_user where md5(push_key) = #{sign}")
- List<User> checkPushAuthorityByCallId(String sign);
+// @Select("select * from (select user.*, concat(concat(#{call_id}, '_'), push_key) as str1 from wvp_user) as u where md5(u.str1) = #{sign}")
+// List<User> checkPushAuthorityByCallIdAndSign(String callId, String sign);
+//
+// @Select("select * from wvp_user where md5(push_key) = #{sign}")
+// List<User> checkPushAuthorityByCallId(String sign);
@Select("select u.id, u.username,u.push_key,u.role_id, r.id as role_id, r.name as role_name, r.authority as role_authority , r.create_time as role_create_time , r.update_time as role_update_time from wvp_user u join wvp_user_role r on u.role_id=r.id")
@ResultMap(value="roleMap")
--
Gitblit v1.8.0