From 3fd3ac5a118cce3cc1255730c8ef367ad778d438 Mon Sep 17 00:00:00 2001 From: winlin Date: Sun, 8 Dec 2013 12:48:03 +0800 Subject: [PATCH] support http hooks: on_connect/close/publish/unpublish/play/stop. --- trunk/conf/srs.conf | 6 +++++- trunk/src/core/srs_core_config.cpp | 30 ++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/trunk/conf/srs.conf b/trunk/conf/srs.conf index 2eb077665..436fbc104 100755 --- a/trunk/conf/srs.conf +++ b/trunk/conf/srs.conf @@ -88,7 +88,8 @@ vhost dev { #forward 127.0.0.1:19350; #forward 127.0.0.1:1936; http_hooks { - on_connect http://127.0.0.1:8085/api/v1/clients http://localhost:8085/api/v1/clients; + enabled on; + on_connect http://127.0.0.1:8085/api/v1/clients; on_close http://127.0.0.1:8085/api/v1/clients; on_publish http://127.0.0.1:8085/api/v1/streams; on_unpublish http://127.0.0.1:8085/api/v1/streams; @@ -136,6 +137,9 @@ vhost dev { # the http hook callback vhost, srs will invoke the hooks for specified events. vhost hooks.callback.vhost.com { http_hooks { + # whether the http hooks enalbe. + # default off. + enabled on; # when client connect to vhost/app, call the hook, # the request in the POST data string is a object encode by json: # { diff --git a/trunk/src/core/srs_core_config.cpp b/trunk/src/core/srs_core_config.cpp index 242e15438..96bdad2fe 100644 --- a/trunk/src/core/srs_core_config.cpp +++ b/trunk/src/core/srs_core_config.cpp @@ -575,6 +575,11 @@ SrsConfDirective* SrsConfig::get_vhost_on_connect(std::string vhost) return NULL; } + SrsConfDirective* enabled = conf->get("enabled"); + if (!enabled || enabled->arg0() != "on") { + return NULL; + } + return conf->get("on_connect"); } @@ -591,6 +596,11 @@ SrsConfDirective* SrsConfig::get_vhost_on_close(std::string vhost) return NULL; } + SrsConfDirective* enabled = conf->get("enabled"); + if (!enabled || enabled->arg0() != "on") { + return NULL; + } + return conf->get("on_close"); } @@ -607,6 +617,11 @@ SrsConfDirective* SrsConfig::get_vhost_on_publish(std::string vhost) return NULL; } + SrsConfDirective* enabled = conf->get("enabled"); + if (!enabled || enabled->arg0() != "on") { + return NULL; + } + return conf->get("on_publish"); } @@ -623,6 +638,11 @@ SrsConfDirective* SrsConfig::get_vhost_on_unpublish(std::string vhost) return NULL; } + SrsConfDirective* enabled = conf->get("enabled"); + if (!enabled || enabled->arg0() != "on") { + return NULL; + } + return conf->get("on_unpublish"); } @@ -639,6 +659,11 @@ SrsConfDirective* SrsConfig::get_vhost_on_play(std::string vhost) return NULL; } + SrsConfDirective* enabled = conf->get("enabled"); + if (!enabled || enabled->arg0() != "on") { + return NULL; + } + return conf->get("on_play"); } @@ -655,6 +680,11 @@ SrsConfDirective* SrsConfig::get_vhost_on_stop(std::string vhost) return NULL; } + SrsConfDirective* enabled = conf->get("enabled"); + if (!enabled || enabled->arg0() != "on") { + return NULL; + } + return conf->get("on_stop"); }