`
01jiangwei01
  • 浏览: 535342 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

red5(二) 防止盗链

 
阅读更多

Red5 防止盗链可通过调用客户端方法得到主机URI,判断是否在允许范围内,如果不是则断开连接。

具体实现是:Application 必须实现IPendingServiceCallback 接口,通过如下方法调用客户端方法

public boolean appConnect(IConnection conn, Object[] params)
  {
    if (conn instanceof IServiceCapableConnection) {
    	//调用客户端代码
    	IServiceCapableConnection sc = (IServiceCapableConnection) conn;
    	sc.invoke("clientMethod", new Object[]{"One", 1},this);
    }
    return super.appConnect(conn, params);
  }

 其中的clientMethod是客户端方法名称,new Object[]{"One", 1}是任意参数,this为必选

并书写接收客户端返回参数的方法

public void resultReceived(IPendingServiceCall arg0) {
  String host = arg0.getResult().toString();
  String allowHost = “http://localhost:28080/redxserver”;
  boolean allow = false;
  if(host.indexOf( allowHost)>0){
		 allow = true; 
  }
  if(!allow ){
		//获取当前的链接
		IConnection current = Red5.getConnectionLocal();
		current.close();
		 System.out.println("关闭连接");
  }else {
			 System.out.println("不关闭连接");
  }
}

 在播放器as内书写方法

var client1:Object=new Object();
client1.clientMethod=this.clientMethod;
_connection.client =client1;

 

private function clientMethod(str:String,num:Number):String{ 
    var str:String = ExternalInterface.call("window.top.location.href");
   return str;
}

还要修改BaseRTMPHandler.java中的方法,防止as方法出错了,仍然可以播放。

具体如下 

protected void handlePendingCallResult(RTMPConnection conn, Notify invoke) {
		final IServiceCall call = invoke.getCall();
		final IPendingServiceCall pendingCall = conn.retrievePendingCall(invoke.getInvokeId());
		if (pendingCall != null) {
			// The client sent a response to a previously made call.
			Object[] args = call.getArguments();
			if ((args != null) && (args.length > 0)) {
				// TODO: can a client return multiple results?
				pendingCall.setResult(args[0]);
			}
			Set<IPendingServiceCallback> callbacks = pendingCall.getCallbacks();
			if (!callbacks.isEmpty()) {
				HashSet<IPendingServiceCallback> tmp = new HashSet<IPendingServiceCallback>();
				tmp.addAll(callbacks);
				for (IPendingServiceCallback callback : tmp) {
					try {
						callback.resultReceived(pendingCall);
					} catch (Exception e) {

						log.error("Error while executing callback {} {}", callback, e);
						//关闭连接,添加下面两行即可	
						conn.close();
						break;
					}
				}
			}
		}
	}

 

 

通过以上方法即可实现防止盗链

已经优化了,请看下一篇文章 red5(三) 防止盗链

 

分享到:
评论

相关推荐

    red5-0.9.1

    Red5_0.9.1 + MyEclipse10.7 中单步调试Demo Publisher : 编译通过Red_091 后,调试参数设置如下 。 右键项目 - Debug As -- Debug Configurations --Environment : 设置 RED5_HOME 环境变量 "Main class...

    red5 与 tomcat项目集成

    red5 与 tomcat项目集成

    red5服务器的windows安装配置与项目部署

    二、Red5 项目部署: 1. 创建一个 Java 后台服务项目,添加 Dynamic web project(Red5Test),并添加相关文件,包括 Red5Test.java、web.xml、red5-web.xml 和 red5-web.properties。 2. 在 Red5Test.java 中,...

    基于 Red5 的流媒体服务器的搭建和应用

    Red5 是一个采用 Java 开发的开源免费 Flash 流媒体服务器。Red5 基于 Java 和一些功能强大的开源框架,为企业级应用奠定了标准。它使用 RTMP,RTMPT,RTMPS 和 RTMPE 流媒体协议, 支持:将音频(MP3)和视频(FLV,...

    Red5-0.9.1

    Red5的0.9.1版本

    red5 免安装版 red5 1.00

    red5 免安装版 red5 1.00 自己试过了!可以正常运行和启动

    Red5 1.0 Final Web版

    red5 1.0 final 与 tomcat 整合 ,导入myeclipse可以直接使用。

    red5学习资料

    关于red5的一些学习文档,资料很齐全。 d5_demo 服务器端调用客户端as的方法 as3.0+red5 --- hello world FMS&Red5 RED5 – Project Roadmap Open Source Flash 等等文档

    将文件上传到Red5服务器的demo

    本资源是使用 Java servlets 将文件上传到 Red5 服务器的源代码。chapter2 是服务器 Red5 源文件,UploadToRed5Proj 是客户端 Flex3 源文件。 关于使用 Flex 和Java servlets 将文件上传到 RED5 服务器的步骤,请...

    red5 0.8 reference

    red5 0.8 reference Red5 - Reference Documentation Red5 Open Source Flash Server

    red5项目示例,简单配置使用RED5入门

    red5项目示例,简单配置使用RED5入门

    Red5_用户参考手册

    第一二部分 Red5 核心技术之 脚本实现 ........................ 第一三部分 Red5 核心技术之集群 .................................. 第一四部分 Red5 核心技术之管理 .................................. 第一五...

    red5入门,tomcat+red5+myeclipse集成,原创禁止转载

    red5入门,tomcat+red5+myeclipse集成,原创禁止转载,欢迎补充!

    Red5流媒体入门文档5篇

    《使用Red5入门》 《red5入门》 《red5入门教程》 《RED5安装与配置》 《red5流媒体服务器入门基础》

    red5-1.0.5 +oflaDemo 适用于win64,免安装

    red5-1.0.5免安装版,适用于window64位(需要先安装jdk1.7,注意是red5-1.0.5需要的是1.7,在这之前装了好几个最新的red5,比如1.0.8,需要的jdk是1.8),解压后,可以设置conf中的red5.properties,也可不设置。...

    red5 配置详解

    使用red5开发基于flex的视频会议系统, red5视频流的发布和使用。

    Red5的Web视频、音频系统开发

    Red5的Web视频、音频系统开发

    red5搭建流媒体直播系统

    1. 下载Red5:访问红5官方网站,下载最新版本的Red5安装包,可以选择ZIP或 TAR.GZ格式。 2. 解压Red5:将下载的安装包解压到指定的路径,例如D:\red5。 3. 运行Red5:在解压后的路径下,找到red5.bat文件,双击运行...

    red5配置.doc

    《red5配置.doc》,图文并茂,叙述详尽。讲述的是基于red5的0.7.0版本的安装、配置、使用、helloword。叙述比较简单,但仍可作为一入门教程作为初学者的参考。 内容预览: 最近要做一个流媒体服务器,在网上逗留了...

Global site tag (gtag.js) - Google Analytics