Jeremy Monnet wrote: > Tips I've found were : > - use the requestHandler and its method address_string(), but I didn't > an easy to understand example > - http://mail.python.org/pipermail/python-list/2006-May/340266.html > but this thread seems not to have been finished :-(
maybe the explanation in that message was good enough for the poster ? Your handler object should be getting set up with the client_address property. If not you need to show us some small subset of your app that demonstrates the issue. You can also inherit from SimpleXMLRPCServer and override verify_request, from BaseServer, if you want the option of blocking requests based on source address. the second alternative should be straightforward enough: class MyXMLRPCServer(SimpleXMLRPCServer.SimpleXMLRPCServer): def verify_request(self, request, client_address): return CheckPerms(client_address) server = MyXMLRPCServer(...) ... if you need more control, you need to subclass SimpleXMLRPCHandler instead. > Furthermore, I think I should be able to access the socket object from > where I am (at starting of isOpen() ), but I don't know how. you cannot. the isOpen() function is your RPC handler, and it only sees things provided by the client. > "self" and "parent" are not defined, I can access the "server" object, but it > says the other end s not connected ("transport endpoint"). I think > this SimpleXMLRPCServer was not threaded (because it says in the API : > "answer all requests one at a time"), so I don't understand why in the > middle of my function the server.socket.getpeername() says it's not > connected. because the server socket isn't the same thing as the client socket -- the server socket is only used to listen for incoming connections; it creates a new client socket for each incoming request. </F> -- http://mail.python.org/mailman/listinfo/python-list