def query(self, *args): if hasattr(xmlrpc, "_QueryFactory"): # twisted-2.5 factory = xmlrpc._QueryFactory('/RPC2', '127.0.0.1:' + str(self.port), 'handlePacket', None, None, False, args) elif hasattr(factory, "path"): # twisted-2.4 factory = xmlrpc.QueryFactory('/RPC2', '127.0.0.1:' + str(self.port), 'handlePacket', None, None, *args) else: # twisted-2.3 factory = xmlrpc.QueryFactory('/RPC2', '127.0.0.1:' + str(self.port), 'handlePacket', *args) factory.protocol = QueryProtocol factory.cookie = self.cookie reactor.connectTCP('127.0.0.1', self.port, factory) return factory.deferred
def callRemote(self, method, *args): # I'm sorry that there design is poor and doesn't support # certs. I don't want to use their private methods, but there # isn't really a choice factory = xmlrpc._QueryFactory(self.path, self.host, method, self.user, self.password, self.allowNone, args) if self.secure: from twisted.internet import ssl reactor.connectSSL(self.host, self.port or 443, factory, CertClientContextFactory(self.user)) else: reactor.connectTCP(self.host, self.port or 80, factory) return factory.deferred
def setUp(self): # The _QueryFactory that we are testing. We don't care about any # of the constructor parameters. self.queryFactory = _QueryFactory( path=None, host=None, method='POST', user=None, password=None, allowNone=False, args=()) # An XML-RPC response that will parse without raising an error. self.goodContents = xmlrpclib.dumps(('',)) # An 'XML-RPC response' that will raise a parsing error. self.badContents = 'invalid xml' # A dummy 'reason' to pass to clientConnectionLost. We don't care # what it is. self.reason = failure.Failure(ConnectionDone())
def callRemote(self, method, *args): factory = xmlrpc._QueryFactory(self.path, self.host, method, self.user, self.password, self.allowNone, args) if self.secure: from twisted.internet import ssl try: self.SSLClientContext except NameError: print "Must Set a SSL Context" print "use self.setSSLClientContext() first" # Its very bad to connect to ssl without some kind of # verfication of who your talking to # Using the default sslcontext without verification # Can lead to man in the middle attacks reactor.connectSSL(self.host, self.port or 443, factory, self.SSLClientContext) else: reactor.connectTCP(self.host, self.port or 80, factory) return factory.deferred
def queryFactory(self, *args, **kwargs): factory = xmlrpc._QueryFactory(*args, **kwargs) self.factories.append(factory) return factory