读书人

red5(2) 防止盗链

发布时间: 2013-02-24 17:58:56 作者: rapoo

red5(二) 防止盗链
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(三) 防止盗链

?

读书人网 >软件架构设计

热点推荐