[Twisted-Python] twisted daemonize problem

Marco Giusti marco.giusti at gmail.com
Tue Nov 9 05:53:26 MST 2010


On Tue, Nov 09, 2010 at 06:58:05AM -0500, Neal Becker wrote:
> Thanks for the suggestions.
> 
> I'd also like to add authentication, but it seems rather daunting.

You should not. Add basic or digest authentication is really easy. Take
a look at Calderone's Twisted Web in 60 seconds: HTTP authentication[1],
I read the series time ago and I don't remember exactly the content but
the serie is really well written, the best 60 seconds (per episode)
spent to learn the bases of twisted web.

> Maybe I could just restrict the xmlrpc to listen only on connection from the 
> local host?

yes, you could and twisted tap plugin system helps you on this. Just
create a tap plugin with the options you need. An simple example:


	from twisted.python import usage
	from twisted.plugin import IPlugin
    from twisted.application import strports, service

	class Options(usage.Options):

		optParameters = [
				['port', 'p', '80', 'Listen port.', int],
				['interface', 'i', None, 'Interface to which to bind.'],
				]


	class ProcessXMLRPCServiceMaker(object):
		implements(service.IServiceMaker, IPlugin)
		tapname = "processxmlrpc"
		description = "Remote process control in xmlrpc"
		options = Options

		def makeService(self, options):
			factory = ... # XXX
			description = 'tcp:' + str(config['port'])
			if config['interface']:
				description += ':interface=' + config['interface']
			return strports.service(description, factory)


You can setup the server to listen to localhost and prepare a reverse
proxy that require authentication and that accept connections from all
interfaces, as example.

m.

-- 
Dalle virtù che si esigono in un domestico, l'Eccellenza Vostra conosce molti
padroni degni d'esser servitori?
		-- Pierre Augustin Caron de Beaumarchais




More information about the Twisted-Python mailing list