2 Punjab - multiple http interfaces to jabber.
5 from twisted.python import log
6 from twisted.application import service
10 def uriCheck(elem, uri):
12 This is a hack for older versions of twisted words, we need to get rid of it.
14 if str(elem.toXml()).find('xmlns') == -1:
18 class PunjabService(service.MultiService):
19 """Punjab parent service"""
23 def startService(self):
24 return service.MultiService.startService(self)
26 def stopService(self):
28 return service.MultiService.stopService(self)
30 d = self.httpb.stopService()
31 d.addCallback(cb).addErrback(log.err)
34 class Service(service.Service):
36 Punjab generice service
38 def error(self, failure, body = None):
40 A Punjab error has occurred
42 # need a better way to trap this
43 if failure.getErrorMessage() != 'remote-stream-error':
44 log.msg('Punjab Error: ')
45 log.msg(failure.printBriefTraceback())
47 failure.raiseException()
50 def success(self, result, body = None):
52 If success we log it and return result
59 def makeService(config):
61 Create a punjab service to run
63 from twisted.web import server, resource, static
64 from twisted.application import service, internet
69 serviceCollection = PunjabService()
71 if config['html_dir']:
72 r = static.File(config['html_dir'])
74 print "The html directory is needed."
77 if config['white_list']:
78 httpb.HttpbService.white_list = config['white_list'].split(',')
80 if config['black_list']:
81 httpb.HttpbService.black_list = config['black_list'].split(',')
84 b = httpb.HttpbService(config['verbose'], config['polling'])
85 if config['httpb'] == '':
86 r.putChild('http-bind', resource.IResource(b))
88 r.putChild(config['httpb'], resource.IResource(b))
94 from twisted.internet import ssl
95 from OpenSSL import SSL
96 ssl_context = ssl.DefaultOpenSSLContextFactory(config['ssl_privkey'],
99 sm = internet.SSLServer(int(config['port']),
102 backlog = int(config['verbose']))
103 sm.setServiceParent(serviceCollection)
105 sm = internet.TCPServer(int(config['port']), site)
107 sm.setServiceParent(serviceCollection)
109 serviceCollection.httpb = b
111 return serviceCollection