mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2026-06-18 06:02:21 +08:00
合并代码
This commit is contained in:
@@ -9,8 +9,6 @@
|
||||
*/
|
||||
|
||||
#include <sstream>
|
||||
#include <unordered_map>
|
||||
#include <mutex>
|
||||
#include "jsoncpp/json.h"
|
||||
#include "Util/logger.h"
|
||||
#include "Util/util.h"
|
||||
@@ -67,22 +65,23 @@ const string kOnProxyPusherFailed = HOOK_FIELD"on_proxy_pusher_failed";
|
||||
onceToken token([](){
|
||||
mINI::Instance()[kEnable] = false;
|
||||
mINI::Instance()[kTimeoutSec] = 10;
|
||||
mINI::Instance()[kOnPublish] = "https://127.0.0.1/index/hook/on_publish";
|
||||
mINI::Instance()[kOnPlay] = "https://127.0.0.1/index/hook/on_play";
|
||||
mINI::Instance()[kOnFlowReport] = "https://127.0.0.1/index/hook/on_flow_report";
|
||||
mINI::Instance()[kOnRtspRealm] = "https://127.0.0.1/index/hook/on_rtsp_realm";
|
||||
mINI::Instance()[kOnRtspAuth] = "https://127.0.0.1/index/hook/on_rtsp_auth";
|
||||
mINI::Instance()[kOnStreamChanged] = "https://127.0.0.1/index/hook/on_stream_changed";
|
||||
mINI::Instance()[kOnStreamNotFound] = "https://127.0.0.1/index/hook/on_stream_not_found";
|
||||
mINI::Instance()[kOnRecordMp4] = "https://127.0.0.1/index/hook/on_record_mp4";
|
||||
mINI::Instance()[kOnRecordTs] = "https://127.0.0.1/index/hook/on_record_ts";
|
||||
mINI::Instance()[kOnShellLogin] = "https://127.0.0.1/index/hook/on_shell_login";
|
||||
mINI::Instance()[kOnStreamNoneReader] = "https://127.0.0.1/index/hook/on_stream_none_reader";
|
||||
mINI::Instance()[kOnHttpAccess] = "https://127.0.0.1/index/hook/on_http_access";
|
||||
mINI::Instance()[kOnServerStarted] = "https://127.0.0.1/index/hook/on_server_started";
|
||||
//默认hook地址设置为空,采用默认行为(例如不鉴权)
|
||||
mINI::Instance()[kOnPublish] = "";
|
||||
mINI::Instance()[kOnPlay] = "";
|
||||
mINI::Instance()[kOnFlowReport] = "";
|
||||
mINI::Instance()[kOnRtspRealm] = "";
|
||||
mINI::Instance()[kOnRtspAuth] = "";
|
||||
mINI::Instance()[kOnStreamChanged] = "";
|
||||
mINI::Instance()[kOnStreamNotFound] = "";
|
||||
mINI::Instance()[kOnRecordMp4] = "";
|
||||
mINI::Instance()[kOnRecordTs] = "";
|
||||
mINI::Instance()[kOnShellLogin] = "";
|
||||
mINI::Instance()[kOnStreamNoneReader] = "";
|
||||
mINI::Instance()[kOnHttpAccess] = "";
|
||||
mINI::Instance()[kOnServerStarted] = "";
|
||||
mINI::Instance()[kOnRecordHls] = "";
|
||||
mINI::Instance()[kOnProxyPusherFailed] = "";
|
||||
mINI::Instance()[kAdminParams] = "secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc";
|
||||
mINI::Instance()[kOnRecordHls] = "https://127.0.0.1/index/hook/on_record_hls";
|
||||
mINI::Instance()[kOnProxyPusherFailed] = "https://127.0.0.1/index/hook/on_proxy_pusher_failed";
|
||||
},nullptr);
|
||||
}//namespace Hook
|
||||
|
||||
@@ -191,24 +190,11 @@ static void reportServerStarted(){
|
||||
|
||||
void installWebHook(){
|
||||
GET_CONFIG(bool,hook_enable,Hook::kEnable);
|
||||
GET_CONFIG(string,hook_publish,Hook::kOnPublish);
|
||||
GET_CONFIG(string,hook_play,Hook::kOnPlay);
|
||||
GET_CONFIG(string,hook_flowreport,Hook::kOnFlowReport);
|
||||
GET_CONFIG(string,hook_adminparams,Hook::kAdminParams);
|
||||
GET_CONFIG(string,hook_rtsp_realm,Hook::kOnRtspRealm);
|
||||
GET_CONFIG(string,hook_rtsp_auth,Hook::kOnRtspAuth);
|
||||
GET_CONFIG(string,hook_stream_chaned,Hook::kOnStreamChanged);
|
||||
GET_CONFIG(string,hook_stream_not_found,Hook::kOnStreamNotFound);
|
||||
GET_CONFIG(string,hook_record_mp4,Hook::kOnRecordMp4);
|
||||
GET_CONFIG(string,hook_record_ts,Hook::kOnRecordTs);
|
||||
GET_CONFIG(string,hook_shell_login,Hook::kOnShellLogin);
|
||||
GET_CONFIG(string,hook_stream_none_reader,Hook::kOnStreamNoneReader);
|
||||
GET_CONFIG(string,hook_http_access,Hook::kOnHttpAccess);
|
||||
GET_CONFIG(string,hook_record_hls,Hook::kOnRecordHls);
|
||||
GET_CONFIG(string,hook_proxy_pusher_failed, Hook::kOnProxyPusherFailed);
|
||||
|
||||
//录制hls文件成功后广播
|
||||
NoticeCenter::Instance().addListener(nullptr,Broadcast::kBroadcastRecordHls,[](BroadcastRecordHlsArgs){
|
||||
GET_CONFIG(string,hook_record_hls,Hook::kOnRecordHls);
|
||||
if(!hook_enable || hook_record_hls.empty()){
|
||||
return;
|
||||
}
|
||||
@@ -225,6 +211,7 @@ void installWebHook(){
|
||||
|
||||
//转推流失败后广播
|
||||
NoticeCenter::Instance().addListener(nullptr,Broadcast::kBroadcaseProxyPusherFailed, [](BroadcaseProxyPusherFailedArgs){
|
||||
GET_CONFIG(string,hook_proxy_pusher_failed,Hook::kOnProxyPusherFailed);
|
||||
if(!hook_enable || hook_proxy_pusher_failed.empty()){
|
||||
return;
|
||||
}
|
||||
@@ -237,6 +224,7 @@ void installWebHook(){
|
||||
});
|
||||
|
||||
NoticeCenter::Instance().addListener(nullptr,Broadcast::kBroadcastMediaPublish,[](BroadcastMediaPublishArgs){
|
||||
GET_CONFIG(string,hook_publish,Hook::kOnPublish);
|
||||
GET_CONFIG(bool,toHls,General::kPublishToHls);
|
||||
GET_CONFIG(bool,toMP4,General::kPublishToMP4);
|
||||
if(!hook_enable || args._param_strs == hook_adminparams || hook_publish.empty() || sender.get_peer_ip() == "127.0.0.1"){
|
||||
@@ -272,6 +260,7 @@ void installWebHook(){
|
||||
});
|
||||
|
||||
NoticeCenter::Instance().addListener(nullptr,Broadcast::kBroadcastMediaPlayed,[](BroadcastMediaPlayedArgs){
|
||||
GET_CONFIG(string,hook_play,Hook::kOnPlay);
|
||||
if(!hook_enable || args._param_strs == hook_adminparams || hook_play.empty() || sender.get_peer_ip() == "127.0.0.1"){
|
||||
invoker("");
|
||||
return;
|
||||
@@ -287,6 +276,7 @@ void installWebHook(){
|
||||
});
|
||||
|
||||
NoticeCenter::Instance().addListener(nullptr,Broadcast::kBroadcastFlowReport,[](BroadcastFlowReportArgs){
|
||||
GET_CONFIG(string,hook_flowreport,Hook::kOnFlowReport);
|
||||
if(!hook_enable || args._param_strs == hook_adminparams || hook_flowreport.empty() || sender.get_peer_ip() == "127.0.0.1"){
|
||||
return;
|
||||
}
|
||||
@@ -306,6 +296,7 @@ void installWebHook(){
|
||||
|
||||
//监听kBroadcastOnGetRtspRealm事件决定rtsp链接是否需要鉴权(传统的rtsp鉴权方案)才能访问
|
||||
NoticeCenter::Instance().addListener(nullptr,Broadcast::kBroadcastOnGetRtspRealm,[](BroadcastOnGetRtspRealmArgs){
|
||||
GET_CONFIG(string,hook_rtsp_realm,Hook::kOnRtspRealm);
|
||||
if(!hook_enable || args._param_strs == hook_adminparams || hook_rtsp_realm.empty() || sender.get_peer_ip() == "127.0.0.1"){
|
||||
//无需认证
|
||||
invoker("");
|
||||
@@ -328,6 +319,7 @@ void installWebHook(){
|
||||
|
||||
//监听kBroadcastOnRtspAuth事件返回正确的rtsp鉴权用户密码
|
||||
NoticeCenter::Instance().addListener(nullptr,Broadcast::kBroadcastOnRtspAuth,[](BroadcastOnRtspAuthArgs){
|
||||
GET_CONFIG(string,hook_rtsp_auth,Hook::kOnRtspAuth);
|
||||
if(unAuthedRealm == realm || !hook_enable || hook_rtsp_auth.empty()){
|
||||
//认证失败
|
||||
invoker(false,makeRandStr(12));
|
||||
@@ -354,6 +346,7 @@ void installWebHook(){
|
||||
|
||||
//监听rtsp、rtmp源注册或注销事件
|
||||
NoticeCenter::Instance().addListener(nullptr,Broadcast::kBroadcastMediaChanged,[](BroadcastMediaChangedArgs){
|
||||
GET_CONFIG(string,hook_stream_chaned,Hook::kOnStreamChanged);
|
||||
if(!hook_enable || hook_stream_chaned.empty()){
|
||||
return;
|
||||
}
|
||||
@@ -369,8 +362,10 @@ void installWebHook(){
|
||||
|
||||
//监听播放失败(未找到特定的流)事件
|
||||
NoticeCenter::Instance().addListener(nullptr,Broadcast::kBroadcastNotFoundStream,[](BroadcastNotFoundStreamArgs){
|
||||
GET_CONFIG(string,hook_stream_not_found,Hook::kOnStreamNotFound);
|
||||
if(!hook_enable || hook_stream_not_found.empty()){
|
||||
// closePlayer();
|
||||
//如果确定这个流不存在,可以closePlayer()返回播放器流不存在
|
||||
//closePlayer();
|
||||
return;
|
||||
}
|
||||
auto body = make_json(args);
|
||||
@@ -399,6 +394,7 @@ void installWebHook(){
|
||||
#ifdef ENABLE_MP4
|
||||
//录制mp4文件成功后广播
|
||||
NoticeCenter::Instance().addListener(nullptr,Broadcast::kBroadcastRecordMP4,[](BroadcastRecordMP4Args){
|
||||
GET_CONFIG(string,hook_record_mp4,Hook::kOnRecordMp4);
|
||||
if (!hook_enable || hook_record_mp4.empty()) {
|
||||
return;
|
||||
}
|
||||
@@ -408,6 +404,7 @@ void installWebHook(){
|
||||
#endif //ENABLE_MP4
|
||||
|
||||
NoticeCenter::Instance().addListener(nullptr, Broadcast::kBroadcastRecordTs, [](BroadcastRecordTsArgs) {
|
||||
GET_CONFIG(string,hook_record_ts,Hook::kOnRecordTs);
|
||||
if (!hook_enable || hook_record_ts.empty()) {
|
||||
return;
|
||||
}
|
||||
@@ -416,6 +413,7 @@ void installWebHook(){
|
||||
});
|
||||
|
||||
NoticeCenter::Instance().addListener(nullptr,Broadcast::kBroadcastShellLogin,[](BroadcastShellLoginArgs){
|
||||
GET_CONFIG(string,hook_shell_login,Hook::kOnShellLogin);
|
||||
if(!hook_enable || hook_shell_login.empty() || sender.get_peer_ip() == "127.0.0.1"){
|
||||
invoker("");
|
||||
return;
|
||||
@@ -434,6 +432,7 @@ void installWebHook(){
|
||||
});
|
||||
|
||||
NoticeCenter::Instance().addListener(nullptr,Broadcast::kBroadcastStreamNoneReader,[](BroadcastStreamNoneReaderArgs){
|
||||
GET_CONFIG(string,hook_stream_none_reader,Hook::kOnStreamNoneReader);
|
||||
if(!hook_enable || hook_stream_none_reader.empty()){
|
||||
return;
|
||||
}
|
||||
@@ -471,6 +470,7 @@ void installWebHook(){
|
||||
//如果没有url参数,客户端又不支持cookie,那么会根据ip和端口追踪用户
|
||||
//追踪用户的目的是为了缓存上次鉴权结果,减少鉴权次数,提高性能
|
||||
NoticeCenter::Instance().addListener(nullptr,Broadcast::kBroadcastHttpAccess,[](BroadcastHttpAccessArgs){
|
||||
GET_CONFIG(string,hook_http_access,Hook::kOnHttpAccess);
|
||||
if(sender.get_peer_ip() == "127.0.0.1" || parser.Params() == hook_adminparams){
|
||||
//如果是本机或超级管理员访问,那么不做访问鉴权;权限有效期1个小时
|
||||
invoker("","",60 * 60);
|
||||
|
||||
Reference in New Issue
Block a user