先にも書いた通りTwistdはコマンドであってやっぱTwistedでいいということに気がつきタイトル変更しました。
そういえば、先日書いたコードに加えて外部サーバーで動かす場合には
AdobeさんのFlash Playerで動くタイプのコンテンツの場合、Adobeさんの決めたソケットポリシーサーバーも置いておく必要があるんだけども、そのコードもこちらにペーストしておきます。起動方法は前回のtwistdのと同じです。デリミタがくせ者でござったよ。作ったのは多分1年くらい前なので今うごくかどうかはわからない。
#!/usr/bin/python
# coding: utf-8
from twisted.protocols import basic
from twisted.internet import protocol
from twisted.application import service, internet
port = 843
class PolicyServer(basic.LineReceiver):
# this is not only for sending data but receiving data
# if you are not sure what you do, do not remove this line.
delimiter = '\0'
def connectionMade(self):
print "new a client"
#self.factory.clients.append(self)
def connectionLost(self, reason):
print "lost a client"
#self.factory.clients.remove(self)
def lineReceived(self, line):
print "received ", line
if(line == '<policy-file-request/>'):
self.sendPolicy()
def sendPolicy(self):
print "sendPolicy"
message = """
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="testtesttesttesttest.jp" to-ports="50000" />
<allow-access-from domain="*" to-ports="10000" />
</cross-domain-policy>
"""
self.transport.write(message + self.delimiter)
factory = protocol.ServerFactory()
factory.protocol = PolicyServer
factory.clients = []
application = service.Application("chatserver")
internet.TCPServer(port, factory).setServiceParent(application)
コメント