Zope2 Sprint
»
TwistedZopeIntegrationCode
import os import sys import string here = os.path.abspath(os.path.dirname(__file__)) sys.path.insert(0, os.path.join(here, 'lib', 'python')) from ZPublisher.Publish import publish_module def setupzope(): import os import sys here = os.path.dirname(__file__) sys.path.insert(0, os.path.join(here, 'lib', 'python')) import Zope Zope.configure(os.path.join(here, 'etc', 'zope.conf')) Zope.startup() __version__ = 1 setupzope() from twisted.internet import reactor from twisted.web import static, server, twcgi, resource #from twisted.python import filepath from twisted.python import log log.startLogging(file('twisted.log', 'w')) from cStringIO import StringIO #docroot = '/home/chrism/' #cgibin = docroot + '/cgibin' #root = static.File(docroot) #root.putChild("cgi-bin", twcgi.CGIDirectory(cgibin)) class ZopeResource(resource.Resource): isLeaf = 1 def __init__(self, data): self.data = data def render(self, request): return self.data class ZopeRoot(resource.Resource): def getChild(self, path, request): stdout = StringIO() script_name = "/"+string.join(request.prepath, '/') python_path = string.join(sys.path, os.pathsep) serverName = string.split(request.getRequestHostname(), ':')[0] env = { "SERVER_SOFTWARE": 'ZTwisted' , # server.version, "SERVER_NAME": serverName, "GATEWAY_INTERFACE": "CGI/1.1", "SERVER_PROTOCOL": request.clientproto, "SERVER_PORT": str(request.getHost()[2]), "REQUEST_METHOD": request.method, "SCRIPT_NAME": script_name, # XXX "REQUEST_URI": request.uri, "PATH_INFO": path, } publish_module('Zope', stdout=stdout, environ=env) stdout.seek(0) data = stdout.read() return ZopeResource(data) class ZopeSite(server.Site): pass root = ZopeRoot() reactor.listenTCP(6969, ZopeSite(root)) reactor.run()