URLベースでのACLをkamaitachiにもつけた

Wowza Media ServerでSWFVerification(っぽいこと)をする方法 - blog.katsuma.tv

それなら kamaitachi でもできるよ。ってことで使いやすいようにサービス化。

AutoConnect の代わりに、AutoConnectACL というサービスを使うと URL ベースでのアクセスコントロールをつけることができるようにしてみた。

echo サンプルの例なら、

package Service::Echo;
use Moose;

extends 'Kamaitachi::Service';

with 'Kamaitachi::Service::AutoConnectACL';

sub allow_pages {
    'http://www.unknownplace.org/*',
    'http://unknownplace.org/*',
}

sub allow_swfs { 'http://unknownplace.org/*' }

sub on_invoke_echo {
    my ($self, $session, $req) = @_;
    $req->response(@{ $req->args });
}

のような感じで、AutoConnectACLwith して allow_pagesallow_swfs を定義すればそこに書かれたURLにマッチするアクセスだけを許可することが出来る。

いちおう Flash の流儀にあわせてなんか glob マッチ方式にしてるんだけど、使いにくいので正規表現でもいけるようにしてある。

sub allow_pages { qr{^https?://(www\.)?unknownplace\.org} }

とか Regexp リファレンスつかえばおk。

allow_pages が swf の貼り付けてあるページの URL、allow_swfsが swf 自体の URL にマッチする感じ。