From: <ba...@us...> - 2007-12-17 22:58:37
|
Revision: 422 http://pywbem.svn.sourceforge.net/pywbem/?rev=422&view=rev Author: bartw Date: 2007-12-17 14:58:38 -0800 (Mon, 17 Dec 2007) Log Message: ----------- refactored to be more generally useful. Builds CIMInstances from the indications, and passes them to a callback. Modified Paths: -------------- pywbem/trunk/irecv/irecv.py Modified: pywbem/trunk/irecv/irecv.py =================================================================== --- pywbem/trunk/irecv/irecv.py 2007-12-16 03:05:11 UTC (rev 421) +++ pywbem/trunk/irecv/irecv.py 2007-12-17 22:58:38 UTC (rev 422) @@ -9,35 +9,76 @@ import sys from twisted.internet import reactor from twisted.web import server, resource +import pywbem +import threading -class CIMOM(resource.Resource): +from twisted.internet import ssl, reactor +from twisted.python import log +from time import sleep + +class CIMListener(resource.Resource): + """ CIM Listener + """ + isLeaf = 1 - def render_POST(self, request): + class ServerContextFactory(object): + def __init__(self, cert, key): + self.cert = cert + self.key = key - for line in request.content.readlines(): - print line + def getContext(self): + """Create an SSL context with a dodgy certificate.""" + from OpenSSL import SSL + ctx = SSL.Context(SSL.SSLv23_METHOD) + ctx.use_certificate_file(self.cert) + ctx.use_privatekey_file(self.key) + return ctx + + def __init__(self, callback, + http_port=5988, https_port=5989, + ssl_key=None, ssl_cert=None): + self.callback = callback + self.http_port = http_port + self.https_port = https_port + self.ssl_key = ssl_key + self.ssl_cert = ssl_cert + + site = server.Site(self) + + if self.http_port and self.http_port > 0: + reactor.listenTCP(self.http_port, site) + if self.https_port and self.https_port > 0: + reactor.listenSSL(self.https_port, site, + self.ServerContextFactory(cert=ssl_cert, key=ssl_key)) + + def start(self): + ''' doesn't work''' + thread = threading.Thread(target=reactor.run) + thread.start() + + def stop(self): + reactor.stop() + + def run(self): + reactor.run() + + def render_POST(self, request): + tt = pywbem.parse_cim(pywbem.xml_to_tupletree(request.content.read())) + insts = [x[1] for x in tt[2][2][0][2][2]] + for inst in insts: + self.callback(inst) return '' -from OpenSSL import SSL -class ServerContextFactory: - def getContext(self): - """Create an SSL context with a dodgy certificate.""" - ctx = SSL.Context(SSL.SSLv23_METHOD) - ctx.use_certificate_file('server.pem') - ctx.use_privatekey_file('server.pem') - return ctx +#log.startLogging(sys.stdout) -from twisted.internet import ssl, reactor -from twisted.python import log +if __name__ == '__main__': + def cb(inst): + print inst['IndicationTime'], inst['Description'] + cl = CIMListener(cb, https_port=None) + cl.run() -log.startLogging(sys.stdout) -site = server.Site(CIMOM()) - -reactor.listenTCP(5988, site) -reactor.listenSSL(5989, site, ServerContextFactory()) -reactor.run() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |