ども、カブセネタ大好きアラガです。 Red5熱再加熱中でゴザイマス!
Wowza Media ServerでSWFVerification(っぽいこと)をする方法 - blog.katsuma.tv
弊社のtypesterが、kamaitachでURL ベースでのアクセスコントロールをつけることができるようにしたってことですが、それならRed5でもできるよって話です。
それではさっそくコードです。
acl.AclApplication.java
package acl;
import java.util.List;
import org.red5.server.adapter.ApplicationAdapter;
import org.red5.server.api.IConnection;
import org.red5.server.api.IScope;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class AclApplication extends ApplicationAdapter {
protected static Logger log = LoggerFactory.getLogger(AclApplication.class);
private List<String> aclList;
public void setAclList(List<String> aclList) {
this.aclList = aclList;
}
@Override
public synchronized boolean connect(IConnection conn, IScope scope, Object[] params)
{
if (this.accessControlBySwfUrl(conn))
return super.connect(conn, scope, params);
return false;
}
protected boolean accessControlBySwfUrl(IConnection conn)
{
String swfUrl = (String) conn.getConnectParams().get("swfUrl");
for (int i = 0; i < aclList.size(); i++) {
String acceptUrl = (String) aclList.get(i);
if (swfUrl.equals(acceptUrl) || swfUrl.matches(acceptUrl)) return true;
}
return false;
}
}
red5-web.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:lang="http://www.springframework.org/schema/lang"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-2.0.xsd">
<bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="/WEB-INF/red5-web.properties" />
</bean>
<bean id="web.context" class="org.red5.server.Context" autowire="byType" />
<bean id="web.scope" class="org.red5.server.WebScope" init-method="register">
<property name="server" ref="red5.server" />
<property name="parent" ref="global.scope" />
<property name="context" ref="web.context" />
<property name="handler" ref="web.handler" />
<property name="contextPath" value="${webapp.contextPath}" />
<property name="virtualHosts" value="${webapp.virtualHosts}" />
</bean>
<!-- Red5 Handler -->
<bean id="web.handler" class="acl.AclApplication">
<property name="aclList">
<list>
<!-- ここに許可するSWFURL -->
<value>http://localhost:5080/demos/BallControl.swf</value>
<value>http://localhost:5080/demos/.*</value>
</list>
</property>
</bean>
</beans>
利用方法
上記のAclApplication.javaをコピペか継承してApplicationを作成
red5-web.xml
のweb.handlerの設定でaclListに許可するswfのURLを設定Red5再起動
これで設定したURL以外のアクセスをリジェクトします。
URLを追加するたびに再起動は必要ですが、xmlの編集のみでコンパイルは不要なので便利ですね。
Perlが得意な方には激しくkamaitachiがおすすめだし、WOWZAのFMS越えとも思える高機能にはビビりますが、まだまだRed5も出来る子です。
それでは良いストリーミングライフを!