您的位置:首页 > 其它

srs之防盗链配置及使用

2016-03-04 07:29 218 查看


防盗链

防盗链的功能基本使用HTTPCallback来实现

那httpcallback是咋回事呢,就是在srs中某个事件发生的时候,srs会回调相应的url,并且将相关的信息post上去,然后你根据post上来的信息做出相应的动作,就是返回不同的值

都有哪些事件呢
<code class="hljs  has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">on_connect      当客户端连接到指定的vhost和app时
on_close        当客户端关闭连接,或者SRS主动关闭连接时
on_publish      当客户端发布流时
on_unpublish    当客户端停止发布流时
on_play         当客户端开始播放流时
on_stop         当客户端停止播放时</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li></ul>


httpcallback配置
<code class="hljs ruby has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">vhost test.com {
http_hooks {
enabled         on;
on_connect      <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">http:</span>/<span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/127.0.0.1:8085/api</span><span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/v1/clients</span>;
}
}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li></ul>


那到底怎样实现防盗链呢,举个栗子吧,srs配置就上面那样,假如我们有一个流rtmp://test.com/live/livestream

我要加上防盗链,此时访问的url会变成rtmp://test.com/live/livestream?key=91D4929E1810F90B&time=1442567098

防盗链的信息就放在query中key和time中,当客户端来访问的时候,就会触发on_connect事件,继而srs回调
http://127.0.0.1:8085/api/v1/clients
这个地址,并且将请求的url等信息post上来,我们只要验证key和time是否正确就可以了

如果正确返回200状态码内容为0,srs则继续服务此客户端

如果不正确返回200状态码内容为-1,srs则会断开此客户端
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: