删除无效的hook api

This commit is contained in:
xiongziliang 2023-12-02 15:04:02 +08:00
parent 380887c5d3
commit 10663fd3b4
2 changed files with 17 additions and 173 deletions

View File

@ -151,43 +151,43 @@ fastRegister=0
#是否启用hook事件启用后推拉流都将进行鉴权 #是否启用hook事件启用后推拉流都将进行鉴权
enable=0 enable=0
#播放器或推流器使用流量事件,置空则关闭 #播放器或推流器使用流量事件,置空则关闭
on_flow_report=https://127.0.0.1/index/hook/on_flow_report on_flow_report=
#访问http文件鉴权事件置空则关闭鉴权 #访问http文件鉴权事件置空则关闭鉴权
on_http_access=https://127.0.0.1/index/hook/on_http_access on_http_access=
#播放鉴权事件,置空则关闭鉴权 #播放鉴权事件,置空则关闭鉴权
on_play=https://127.0.0.1/index/hook/on_play on_play=
#推流鉴权事件,置空则关闭鉴权 #推流鉴权事件,置空则关闭鉴权
on_publish=https://127.0.0.1/index/hook/on_publish on_publish=
#录制mp4切片完成事件 #录制mp4切片完成事件
on_record_mp4=https://127.0.0.1/index/hook/on_record_mp4 on_record_mp4=
# 录制 hls ts(或fmp4) 切片完成事件 # 录制 hls ts(或fmp4) 切片完成事件
on_record_ts=https://127.0.0.1/index/hook/on_record_ts on_record_ts=
#rtsp播放鉴权事件此事件中比对rtsp的用户名密码 #rtsp播放鉴权事件此事件中比对rtsp的用户名密码
on_rtsp_auth=https://127.0.0.1/index/hook/on_rtsp_auth on_rtsp_auth=
#rtsp播放是否开启专属鉴权事件置空则关闭rtsp鉴权。rtsp播放鉴权还支持url方式鉴权 #rtsp播放是否开启专属鉴权事件置空则关闭rtsp鉴权。rtsp播放鉴权还支持url方式鉴权
#建议开发者统一采用url参数方式鉴权rtsp用户名密码鉴权一般在设备上用的比较多 #建议开发者统一采用url参数方式鉴权rtsp用户名密码鉴权一般在设备上用的比较多
#开启rtsp专属鉴权后将不再触发on_play鉴权事件 #开启rtsp专属鉴权后将不再触发on_play鉴权事件
on_rtsp_realm=https://127.0.0.1/index/hook/on_rtsp_realm on_rtsp_realm=
#远程telnet调试鉴权事件 #远程telnet调试鉴权事件
on_shell_login=https://127.0.0.1/index/hook/on_shell_login on_shell_login=
#直播流注册或注销事件 #直播流注册或注销事件
on_stream_changed=https://127.0.0.1/index/hook/on_stream_changed on_stream_changed=
#过滤on_stream_changed hook的协议类型可以选择只监听某些感兴趣的协议置空则不过滤协议 #过滤on_stream_changed hook的协议类型可以选择只监听某些感兴趣的协议置空则不过滤协议
stream_changed_schemas=rtsp/rtmp/fmp4/ts/hls/hls.fmp4 stream_changed_schemas=rtsp/rtmp/fmp4/ts/hls/hls.fmp4
#无人观看流事件通过该事件可以选择是否关闭无人观看的流。配合general.streamNoneReaderDelayMS选项一起使用 #无人观看流事件通过该事件可以选择是否关闭无人观看的流。配合general.streamNoneReaderDelayMS选项一起使用
on_stream_none_reader=https://127.0.0.1/index/hook/on_stream_none_reader on_stream_none_reader=
#播放时未找到流事件通过配合hook.on_stream_none_reader事件可以完成按需拉流 #播放时未找到流事件通过配合hook.on_stream_none_reader事件可以完成按需拉流
on_stream_not_found=https://127.0.0.1/index/hook/on_stream_not_found on_stream_not_found=
#服务器启动报告,可以用于服务器的崩溃重启事件监听 #服务器启动报告,可以用于服务器的崩溃重启事件监听
on_server_started=https://127.0.0.1/index/hook/on_server_started on_server_started=
#服务器退出报告,当服务器正常退出时触发 #服务器退出报告,当服务器正常退出时触发
on_server_exited=https://127.0.0.1/index/hook/on_server_exited on_server_exited=
#server保活上报 #server保活上报
on_server_keepalive=https://127.0.0.1/index/hook/on_server_keepalive on_server_keepalive=
#发送rtp(startSendRtp)被动关闭时回调 #发送rtp(startSendRtp)被动关闭时回调
on_send_rtp_stopped=https://127.0.0.1/index/hook/on_send_rtp_stopped on_send_rtp_stopped=
#rtp server 超时未收到数据 #rtp server 超时未收到数据
on_rtp_server_timeout=https://127.0.0.1/index/hook/on_rtp_server_timeout on_rtp_server_timeout=
#hook api最大等待回复时间单位秒 #hook api最大等待回复时间单位秒
timeoutSec=10 timeoutSec=10

View File

@ -1808,162 +1808,6 @@ void installWebApi() {
// sample_ms设置为0从配置文件加载file_repeat可以指定如果配置文件也指定循环解复用那么强制开启 // sample_ms设置为0从配置文件加载file_repeat可以指定如果配置文件也指定循环解复用那么强制开启
reader->startReadMP4(0, true, allArgs["file_repeat"]); reader->startReadMP4(0, true, allArgs["file_repeat"]);
}); });
////////////以下是注册的Hook API////////////
api_regist("/index/hook/on_publish",[](API_ARGS_JSON){
//开始推流事件
//转换hls
val["enable_hls"] = true;
//不录制mp4
val["enable_mp4"] = false;
});
api_regist("/index/hook/on_play",[](API_ARGS_JSON){
//开始播放事件
});
api_regist("/index/hook/on_flow_report",[](API_ARGS_JSON){
//流量统计hook api
});
api_regist("/index/hook/on_rtsp_realm",[](API_ARGS_JSON){
//rtsp是否需要鉴权默认需要鉴权
val["code"] = API::Success;
val["realm"] = "zlmediakit_reaml";
});
api_regist("/index/hook/on_rtsp_auth",[](API_ARGS_JSON){
//rtsp鉴权密码密码等于用户名
//rtsp可以有双重鉴权后面还会触发on_play事件
CHECK_ARGS("user_name");
val["code"] = API::Success;
val["encrypted"] = false;
val["passwd"] = allArgs["user_name"].data();
});
api_regist("/index/hook/on_stream_changed",[](API_ARGS_JSON){
//媒体注册或反注册事件
});
#if !defined(_WIN32)
api_regist("/index/hook/on_stream_not_found_ffmpeg",[](API_ARGS_MAP_ASYNC){
//媒体未找到事件,我们都及时拉流hks作为替代品目的是为了测试按需拉流
CHECK_SECRET();
CHECK_ARGS("vhost","app","stream");
//通过FFmpeg按需拉流
GET_CONFIG(int,rtmp_port,Rtmp::kPort);
GET_CONFIG(int,timeout_sec,Hook::kTimeoutSec);
string dst_url = StrPrinter
<< "rtmp://127.0.0.1:"
<< rtmp_port << "/"
<< allArgs["app"] << "/"
<< allArgs["stream"] << "?vhost="
<< allArgs["vhost"];
addFFmpegSource("", "http://hls-ott-zhibo.wasu.tv/live/272/index.m3u8",/** ffmpeg拉流支持任意编码格式任意协议 **/
dst_url,
(1000 * timeout_sec) - 500,
false,
false,
[invoker,val,headerOut](const SockException &ex,const string &key) mutable{
if(ex){
val["code"] = API::OtherFailed;
val["msg"] = ex.what();
}else{
val["data"]["key"] = key;
}
invoker(200, headerOut, val.toStyledString());
});
});
#endif//!defined(_WIN32)
api_regist("/index/hook/on_stream_not_found",[](API_ARGS_MAP_ASYNC){
//媒体未找到事件,我们都及时拉流hks作为替代品目的是为了测试按需拉流
CHECK_SECRET();
CHECK_ARGS("vhost","app","stream", "schema");
ProtocolOption option;
option.enable_hls = allArgs["schema"] == HLS_SCHEMA;
option.enable_mp4 = false;
//通过内置支持的rtsp/rtmp按需拉流
addStreamProxy(allArgs["vhost"],
allArgs["app"],
allArgs["stream"],
/** 支持rtsp和rtmp方式拉流 rtsp支持h265/h264/aac,rtmp仅支持h264/aac **/
"rtsp://184.72.239.149/vod/mp4:BigBuckBunny_115k.mov",
-1,/*无限重试*/
option,
0,//rtp over tcp方式拉流
10,//10秒超时
mINI{},
[invoker,val,headerOut](const SockException &ex,const string &key) mutable{
if(ex){
val["code"] = API::OtherFailed;
val["msg"] = ex.what();
}else{
val["data"]["key"] = key;
}
invoker(200, headerOut, val.toStyledString());
});
});
api_regist("/index/hook/on_record_mp4",[](API_ARGS_JSON){
//录制mp4分片完毕事件
});
api_regist("/index/hook/on_shell_login",[](API_ARGS_JSON){
//shell登录调试事件
});
api_regist("/index/hook/on_stream_none_reader",[](API_ARGS_JSON){
//无人观看流默认关闭
val["close"] = true;
});
api_regist("/index/hook/on_send_rtp_stopped",[](API_ARGS_JSON){
//发送rtp(startSendRtp)被动关闭时回调
});
static auto checkAccess = [](const string &params){
//我们假定大家都要权限访问
return true;
};
api_regist("/index/hook/on_http_access",[](API_ARGS_MAP){
//在这里根据allArgs["params"](url参数)来判断该http客户端是否有权限访问该文件
if(!checkAccess(allArgs["params"])){
//无访问权限
val["err"] = "无访问权限";
//仅限制访问当前目录
val["path"] = "";
//标记该客户端无权限1分钟
val["second"] = 60;
return;
}
//可以访问
val["err"] = "";
//只能访问当前目录
val["path"] = "";
//该http客户端用户被授予10分钟的访问权限该权限仅限访问当前目录
val["second"] = 10 * 60;
});
api_regist("/index/hook/on_server_started",[](API_ARGS_JSON){
//服务器重启报告
});
api_regist("/index/hook/on_server_keepalive",[](API_ARGS_JSON){
//心跳hook
});
api_regist("/index/hook/on_rtp_server_timeout",[](API_ARGS_JSON){
//rtp server 超时
TraceL <<allArgs.getArgs().toStyledString();
});
} }
void unInstallWebApi(){ void unInstallWebApi(){