FlexでSocketを使いたくて。
これを置くだけで5時間位かかった…。
flashpolicyd_v0.6で用意されてる3つすべて試して、やっと。
Perl_xinetdを試して動かず。
Python_xinetdを試して動かず。
Python_initを試して起動せず。
Standaloneでは動くのに。
ログを出力してやっと解った。
File "/usr/local/sbin/flashpolicyd.py", line 38 with open(path, 'rb') as f: ^ SyntaxError: invalid syntax
スクリプトの1行目、 "#!/usr/bin/env python" が原因だった。
rootでは、Python2.6で実行してた。
serviceでは、Python2.4で実行してた。
Pythonのwithステートメントは2.6で標準機能に追加されたらしい。
それが原因だった。
1行目を "#!/usr/local/bin/python2.6" に修正。
Flash Playerはこんなログを出力してたのに、見当違いだった。
警告 : [strict] 構文が正しくないため、xmlsocket://example.com:843 のポリシーファイルは無視されます。この問題の解決方法については、http://www.adobe.com/go/strict_policy_files_jp を参照してください。
インストール。
echo "flashpolicy\t843/tcp" >> /etc/services wget http://download.macromedia.com/pub/developer/flashpolicyd_v0.6.zip unzip flashpolicyd_v0.6 cd flashpolicyd_v0.6/Python_init/ sed -i 's@^.*env python.*$@#!/usr/local/bin/python2.6@' flashpolicyd.py sh install.sh service flashpolicyd start # /usr/local/etc/flashpolicy.xml を好きなように書き換える # iptables設定 TCPの843ポートを開く
スタンドアロンで起動。
./flashpolicyd.pl --file=../policyfile.xml --port=843 ./flashpolicyd.py --file=../policyfile.xml --port=843
動作検証。
python -c 'print "<policy-file-request/>%c" % 0' | nc 127.0.0.1 843 perl -e 'printf "<policy-file-request/>%c",0' | nc 127.0.0.1 843
ソケットポリシーファイルサーバの設定 | デベロッパーセンター
http://www.adobe.com/jp/devnet/flashplayer/articles/socket_policy_files.html