mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2026-07-06 19:58:10 +08:00
支持全局的禁用虚拟主机
This commit is contained in:
@@ -61,7 +61,7 @@ void MediaSource::findAsync(const MediaInfo &info,
|
||||
NoticeCenter::Instance().emitEvent(Broadcast::kBroadcastNotFoundStream,info,*session);
|
||||
|
||||
//最多等待一定时间,如果这个时间内,流未注册上,那么返回未找到流
|
||||
GET_CONFIG_AND_REGISTER(int,maxWaitMS,Broadcast::kMaxStreamWaitTimeMS);
|
||||
GET_CONFIG(int,maxWaitMS,General::kMaxStreamWaitTimeMS);
|
||||
|
||||
//若干秒后执行等待媒体注册超时回调
|
||||
auto onRegistTimeout = session->getPoller()->doDelayTask(maxWaitMS,[cb,listener_tag](){
|
||||
@@ -112,6 +112,12 @@ MediaSource::Ptr MediaSource::find(
|
||||
if(vhost.empty()){
|
||||
vhost = DEFAULT_VHOST;
|
||||
}
|
||||
|
||||
GET_CONFIG(bool,enableVhost,General::kEnableVhost);
|
||||
if(!enableVhost){
|
||||
vhost = DEFAULT_VHOST;
|
||||
}
|
||||
|
||||
lock_guard<recursive_mutex> lock(g_mtxMediaSrc);
|
||||
MediaSource::Ptr ret;
|
||||
searchMedia(schema, vhost, app, id,
|
||||
@@ -135,6 +141,10 @@ MediaSource::Ptr MediaSource::find(
|
||||
return ret;
|
||||
}
|
||||
void MediaSource::regist() {
|
||||
GET_CONFIG(bool,enableVhost,General::kEnableVhost);
|
||||
if(!enableVhost){
|
||||
_strVhost = DEFAULT_VHOST;
|
||||
}
|
||||
//注册该源,注册后服务器才能找到该源
|
||||
{
|
||||
lock_guard<recursive_mutex> lock(g_mtxMediaSrc);
|
||||
@@ -229,6 +239,10 @@ void MediaInfo::parse(const string &url){
|
||||
_vhost = DEFAULT_VHOST;
|
||||
}
|
||||
}
|
||||
GET_CONFIG(bool,enableVhost,General::kEnableVhost);
|
||||
if(!enableVhost){
|
||||
_vhost = DEFAULT_VHOST;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -66,17 +66,23 @@ const char kBroadcastReloadConfig[] = "kBroadcastReloadConfig";
|
||||
const char kBroadcastShellLogin[] = "kBroadcastShellLogin";
|
||||
const char kBroadcastNotFoundStream[] = "kBroadcastNotFoundStream";
|
||||
const char kBroadcastStreamNoneReader[] = "kBroadcastStreamNoneReader";
|
||||
} //namespace Broadcast
|
||||
|
||||
const char kFlowThreshold[] = "broadcast.flowThreshold";
|
||||
const char kStreamNoneReaderDelayMS[] = "broadcast.streamNoneReaderDelayMS";
|
||||
const char kMaxStreamWaitTimeMS[] = "kMaxStreamWaitTimeMS";
|
||||
|
||||
//通用配置项目
|
||||
namespace General{
|
||||
#define GENERAL_FIELD "general."
|
||||
const char kFlowThreshold[] = GENERAL_FIELD"flowThreshold";
|
||||
const char kStreamNoneReaderDelayMS[] = GENERAL_FIELD"streamNoneReaderDelayMS";
|
||||
const char kMaxStreamWaitTimeMS[] = GENERAL_FIELD"maxStreamWaitMS";
|
||||
const char kEnableVhost[] = GENERAL_FIELD"enableVhost";
|
||||
onceToken token([](){
|
||||
mINI::Instance()[kFlowThreshold] = 1024;
|
||||
mINI::Instance()[kStreamNoneReaderDelayMS] = 5 * 1000;
|
||||
mINI::Instance()[kMaxStreamWaitTimeMS] = 5 * 1000;
|
||||
mINI::Instance()[kEnableVhost] = 1;
|
||||
},nullptr);
|
||||
} //namespace Broadcast
|
||||
|
||||
}//namespace General
|
||||
|
||||
////////////HTTP配置///////////
|
||||
namespace Http {
|
||||
@@ -98,9 +104,6 @@ const char kKeepAliveSecond[] = HTTP_FIELD"keepAliveSecond";
|
||||
#define HTTP_MAX_REQ_CNT 100
|
||||
const char kMaxReqCount[] = HTTP_FIELD"maxReqCount";
|
||||
|
||||
//文件服务器是否启动虚拟主机
|
||||
const char kEnableVhost[] = HTTP_FIELD"enableVhost";
|
||||
|
||||
|
||||
//http 字符编码
|
||||
#if defined(_WIN32)
|
||||
@@ -135,7 +138,6 @@ onceToken token([](){
|
||||
mINI::Instance()[kCharSet] = HTTP_CHAR_SET;
|
||||
mINI::Instance()[kRootPath] = HTTP_ROOT_PATH;
|
||||
mINI::Instance()[kNotFound] = HTTP_NOT_FOUND;
|
||||
mINI::Instance()[kEnableVhost] = 1;
|
||||
},nullptr);
|
||||
|
||||
}//namespace Http
|
||||
|
||||
@@ -96,10 +96,6 @@ typedef std::function<void(const string &errMessage)> AuthInvoker;
|
||||
extern const char kBroadcastMediaPublish[];
|
||||
#define BroadcastMediaPublishArgs const MediaInfo &args,const Broadcast::AuthInvoker &invoker,TcpSession &sender
|
||||
|
||||
//兼容旧代码的宏
|
||||
#define BroadcastRtmpPublishArgs BroadcastMediaPublishArgs
|
||||
#define kBroadcastRtmpPublish kBroadcastMediaPublish
|
||||
|
||||
//播放rtsp/rtmp/http-flv事件广播,通过该事件控制播放鉴权
|
||||
extern const char kBroadcastMediaPlayed[];
|
||||
#define BroadcastMediaPlayedArgs const MediaInfo &args,const Broadcast::AuthInvoker &invoker,TcpSession &sender
|
||||
@@ -120,24 +116,11 @@ extern const char kBroadcastNotFoundStream[];
|
||||
extern const char kBroadcastStreamNoneReader[];
|
||||
#define BroadcastStreamNoneReaderArgs MediaSource &sender
|
||||
|
||||
//流量汇报事件流量阈值,单位KB,默认1MB
|
||||
extern const char kFlowThreshold[];
|
||||
|
||||
//流无人观看并且超过若干时间后才触发kBroadcastStreamNoneReader事件
|
||||
//默认连续5秒无人观看然后触发kBroadcastStreamNoneReader事件
|
||||
extern const char kStreamNoneReaderDelayMS[];
|
||||
|
||||
//等待流注册超时时间,收到播放器后请求后,如果未找到相关流,服务器会等待一定时间,
|
||||
//如果在这个时间内,相关流注册上了,那么服务器会立即响应播放器播放成功,
|
||||
//否则会最多等待kMaxStreamWaitTimeMS毫秒,然后响应播放器播放失败
|
||||
extern const char kMaxStreamWaitTimeMS[];
|
||||
|
||||
//更新配置文件事件广播,执行loadIniConfig函数加载配置文件成功后会触发该广播
|
||||
extern const char kBroadcastReloadConfig[];
|
||||
|
||||
#define BroadcastReloadConfigArgs void
|
||||
#define ReloadConfigTag ((void *)(0xFF))
|
||||
|
||||
#define ReloadConfigTag ((void *)(0xFF))
|
||||
#define RELOAD_KEY(arg,key) \
|
||||
do{ \
|
||||
decltype(arg) arg##tmp = mINI::Instance()[key]; \
|
||||
@@ -148,7 +131,7 @@ extern const char kBroadcastReloadConfig[];
|
||||
}while(0);
|
||||
|
||||
//监听某个配置发送变更
|
||||
#define RELOAD_KEY_REGISTER(arg,key) \
|
||||
#define LISTEN_RELOAD_KEY(arg,key) \
|
||||
do{ \
|
||||
static onceToken s_token([](){ \
|
||||
NoticeCenter::Instance().addListener(ReloadConfigTag,Broadcast::kBroadcastReloadConfig,[](BroadcastReloadConfigArgs){ \
|
||||
@@ -157,12 +140,33 @@ extern const char kBroadcastReloadConfig[];
|
||||
}); \
|
||||
}while(0);
|
||||
|
||||
#define GET_CONFIG_AND_REGISTER(type,arg,key) \
|
||||
#define GET_CONFIG(type,arg,key) \
|
||||
static type arg = mINI::Instance()[key]; \
|
||||
RELOAD_KEY_REGISTER(arg,key);
|
||||
LISTEN_RELOAD_KEY(arg,key);
|
||||
|
||||
|
||||
//兼容老代码
|
||||
#define GET_CONFIG_AND_REGISTER GET_CONFIG
|
||||
#define BroadcastRtmpPublishArgs BroadcastMediaPublishArgs
|
||||
#define kBroadcastRtmpPublish kBroadcastMediaPublish
|
||||
} //namespace Broadcast
|
||||
|
||||
////////////通用配置///////////
|
||||
namespace General{
|
||||
//流量汇报事件流量阈值,单位KB,默认1MB
|
||||
extern const char kFlowThreshold[];
|
||||
//流无人观看并且超过若干时间后才触发kBroadcastStreamNoneReader事件
|
||||
//默认连续5秒无人观看然后触发kBroadcastStreamNoneReader事件
|
||||
extern const char kStreamNoneReaderDelayMS[];
|
||||
//等待流注册超时时间,收到播放器后请求后,如果未找到相关流,服务器会等待一定时间,
|
||||
//如果在这个时间内,相关流注册上了,那么服务器会立即响应播放器播放成功,
|
||||
//否则会最多等待kMaxStreamWaitTimeMS毫秒,然后响应播放器播放失败
|
||||
extern const char kMaxStreamWaitTimeMS[];
|
||||
//是否启动虚拟主机
|
||||
extern const char kEnableVhost[];
|
||||
}//namespace General
|
||||
|
||||
|
||||
////////////HTTP配置///////////
|
||||
namespace Http {
|
||||
//http 文件发送缓存大小
|
||||
@@ -179,9 +183,6 @@ extern const char kCharSet[];
|
||||
extern const char kRootPath[];
|
||||
//http 404错误提示内容
|
||||
extern const char kNotFound[];
|
||||
//文件服务器是否启动虚拟主机
|
||||
extern const char kEnableVhost[];
|
||||
|
||||
}//namespace Http
|
||||
|
||||
////////////SHELL配置///////////
|
||||
|
||||
Reference in New Issue
Block a user