[Twisted-Python] Get IP of connecting client in XMLRPC server
Hello, On 18 May 2004, the following message was posted to this mailinglist: Jp Calderone exarkun at divmod.com wrote:
Daniel Newton wrote:
I have a simple XML-PRC server similar to the example below:
from twisted.web import xmlrpc, server
class Example(xmlrpc.XMLRPC): """An example object to be published."""
def xmlrpc_add(self, a, b): """Return sum of arguments.""" return a + b
def xmlrpc_whatIsMyAddress(self): return self.transport.getPeer().host
if __name__ == '__main__': from twisted.internet import reactor r = Example() reactor.listenTCP(7080, server.Site(r)) reactor.run()
I want to be able to get the address of the client that calls the
xmlrpc
method can anyone help me with this?
This solution didn't work because 'transport' isn't a property of the Example class. I'm currently in the process of changing from a customized SimpleXMLRPCServer to a twisted XMLRPC server solution and I need to insert the client IP into the attributes passed to the called xmlrpc method. Anyone who knows the answer and is willing to share the info? Regards, Remy
On Fri, 2004-06-11 at 09:34, Remy C. Cool wrote:
I'm currently in the process of changing from a customized SimpleXMLRPCServer to a twisted XMLRPC server solution and I need to insert the client IP into the attributes passed to the called xmlrpc method. Anyone who knows the answer and is willing to share the info?
The render() method of the XMLRPC class has access to the request object, which may have request.getPeer() or request.transport.getPeer(). -- Itamar Shtull-Trauring http://itamarst.org
On Friday 11 June 2004 16:35, Itamar Shtull-Trauring wrote:
On Fri, 2004-06-11 at 09:34, Remy C. Cool wrote:
I'm currently in the process of changing from a customized SimpleXMLRPCServer to a twisted XMLRPC server solution and I need to insert the client IP into the attributes passed to the called xmlrpc method. Anyone who knows the answer and is willing to share the info?
The render() method of the XMLRPC class has access to the request object, which may have request.getPeer() or request.transport.getPeer().
Thanks for the answer. The following works, but is this a 'twisted' way to go? class Examle(xmlrpc.XMLRPC): """An example object to be published.""" def _getPeerAddress(self): return self.request.getClientIP() def render(self, request): self.request = request xmlrpc.XMLRPC.render(self, request) Remy
On 06/11/04 16:56, Remy C. Cool wrote:
On Friday 11 June 2004 16:35, Itamar Shtull-Trauring wrote:
On Fri, 2004-06-11 at 09:34, Remy C. Cool wrote:
I'm currently in the process of changing from a customized SimpleXMLRPCServer to a twisted XMLRPC server solution and I need to insert the client IP into the attributes passed to the called xmlrpc method. Anyone who knows the answer and is willing to share the info? The render() method of the XMLRPC class has access to the request object, which may have request.getPeer() or request.transport.getPeer(). Thanks for the answer.
The following works, but is this a 'twisted' way to go?
class Examle(xmlrpc.XMLRPC): """An example object to be published."""
def _getPeerAddress(self): return self.request.getClientIP()
def render(self, request): self.request = request xmlrpc.XMLRPC.render(self, request)
Just for the record, this is the way to go (guess it was implemented later): from twisted.web import xmlrpc class Examle(xmlrpc.XMLRPC): @xmlrpc.withRequest def xmlrpc_whatIsMyAddress(self,request): return request.transport.getPeer().host
participants (3)
-
Attila Nagy
-
Itamar Shtull-Trauring
-
Remy C. Cool