优化red5(二) 防止盗链,只修改一个地方就可以了
package first; import java.util.Map; import org.apache.commons.lang.StringUtils; import org.red5.server.adapter.ApplicationAdapter; import org.red5.server.api.IConnection; import org.red5.server.api.IScope; import org.red5.server.api.stream.IServerStream; import com.cqa.platform.util.SystemGlobals; public class Application extends ApplicationAdapter{ private IScope appScope; private IServerStream serverStream; public Application() { System.out.println("Application构造函数 "); } //appStart将在链接开始时自动触发 public boolean appStart(IScope app) { return true; } //链接时触发的函数 public boolean appConnect(IConnection conn, Object[] params) { Map<String, Object> hm = conn.getConnectParams(); String host = (String) hm.get("pageUrl"); String allowHost = "http://localhost:18082/red5/"; boolean ret = false; if(allowHost == null || StringUtils.isBlank(allowHost )){ ret = true; }else { String[] args = allowHost.split(","); ret = false; if(host != null && StringUtils.isNotBlank(host) ){ for(int i=0;i<args.length;++i){ if(host.indexOf( args[i])>=0){ ret = true; break; } } } } if(ret){ return super.appConnect(conn, params); }else { return false; } } public void appDisconnect(IConnection conn) { if ((this.appScope == conn.getScope()) && (this.serverStream != null)) { this.serverStream.close(); } super.appDisconnect(conn); } }