Commit 807d0524a6e965599f9cdbfc7bbf7504c4d9b917

Authored by 648540858
1 parent 06174954

修复推流鉴权

src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
... ... @@ -191,13 +191,13 @@ public class ZLMHttpHookListener {
191 191 if (userSetting.getPushAuthority()) {
192 192 // 推流鉴权
193 193 if (param.getParams() == null) {
194   - logger.info("推流鉴权失败: 缺少要参数:sign=md5(user表的pushKey)");
  194 + logger.info("推流鉴权失败: 缺少要参数:sign=md5(user表的pushKey)");
195 195 return new HookResultForOnPublish(401, "Unauthorized");
196 196 }
197 197 Map<String, String> paramMap = urlParamToMap(param.getParams());
198 198 String sign = paramMap.get("sign");
199 199 if (sign == null) {
200   - logger.info("推流鉴权失败: 缺少要参数:sign=md5(user表的pushKey)");
  200 + logger.info("推流鉴权失败: 缺少要参数:sign=md5(user表的pushKey)");
201 201 return new HookResultForOnPublish(401, "Unauthorized");
202 202 }
203 203 // 推流自定义播放鉴权码
... ...
src/main/java/com/genersoft/iot/vmp/service/impl/UserServiceImpl.java
... ... @@ -7,8 +7,7 @@ import com.github.pagehelper.PageHelper;
7 7 import com.github.pagehelper.PageInfo;
8 8 import org.springframework.beans.factory.annotation.Autowired;
9 9 import org.springframework.stereotype.Service;
10   -import org.springframework.util.ObjectUtils;
11   -import org.springframework.util.StringUtils;
  10 +import org.springframework.util.DigestUtils;
12 11  
13 12 import java.util.List;
14 13  
... ... @@ -61,11 +60,23 @@ public class UserServiceImpl implements IUserService {
61 60  
62 61 @Override
63 62 public boolean checkPushAuthority(String callId, String sign) {
64   - if (ObjectUtils.isEmpty(callId)) {
65   - return userMapper.checkPushAuthorityByCallId(sign).size() > 0;
66   - }else {
67   - return userMapper.checkPushAuthorityByCallIdAndSign(callId, sign).size() > 0;
  63 +
  64 + List<User> users = userMapper.getUsers();
  65 + if (users.size() == 0) {
  66 + return false;
  67 + }
  68 + for (User user : users) {
  69 + if (user.getPushKey() == null) {
  70 + continue;
  71 + }
  72 + String checkStr = callId == null? user.getPushKey():(callId + "_" + user.getPushKey()) ;
  73 + System.out.println(checkStr);
  74 + String checkSign = DigestUtils.md5DigestAsHex(checkStr.getBytes());
  75 + if (checkSign.equals(sign)) {
  76 + return true;
  77 + }
68 78 }
  79 + return false;
69 80 }
70 81  
71 82 @Override
... ...
src/main/java/com/genersoft/iot/vmp/storager/dao/StreamPushMapper.java
... ... @@ -13,9 +13,9 @@ import java.util.List;
13 13 public interface StreamPushMapper {
14 14  
15 15 @Insert("INSERT INTO wvp_stream_push (app, stream, total_reader_count, origin_type, origin_type_str, " +
16   - "push_time, alive_second, media_server_id, server_id, update_time, create_time, push_ing, self) VALUES" +
  16 + "push_time, alive_second, media_server_id, update_time, create_time, push_ing, self) VALUES" +
17 17 "(#{app}, #{stream}, #{totalReaderCount}, #{originType}, #{originTypeStr}, " +
18   - "#{pushTime}, #{aliveSecond}, #{mediaServerId} , #{serverId} , #{updateTime} , #{createTime}, " +
  18 + "#{pushTime}, #{aliveSecond}, #{mediaServerId} , #{updateTime} , #{createTime}, " +
19 19 "#{pushIng}, #{self} )")
20 20 int add(StreamPushItem streamPushItem);
21 21  
... ...
src/main/java/com/genersoft/iot/vmp/storager/dao/UserMapper.java
... ... @@ -50,11 +50,11 @@ public interface UserMapper {
50 50 @ResultMap(value="roleMap")
51 51 List<User> selectAll();
52 52  
53   - @Select("select * from (select user.*, concat(concat(#{call_id}, '_'), push_key) as str1 from wvp_user) as u where md5(u.str1) = #{sign}")
54   - List<User> checkPushAuthorityByCallIdAndSign(String callId, String sign);
55   -
56   - @Select("select * from wvp_user where md5(push_key) = #{sign}")
57   - List<User> checkPushAuthorityByCallId(String sign);
  53 +// @Select("select * from (select user.*, concat(concat(#{call_id}, '_'), push_key) as str1 from wvp_user) as u where md5(u.str1) = #{sign}")
  54 +// List<User> checkPushAuthorityByCallIdAndSign(String callId, String sign);
  55 +//
  56 +// @Select("select * from wvp_user where md5(push_key) = #{sign}")
  57 +// List<User> checkPushAuthorityByCallId(String sign);
58 58  
59 59 @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")
60 60 @ResultMap(value="roleMap")
... ...