Viewing file: manhole.py (1.7 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
# Copyright (c) Twisted Matrix Laboratories. # See LICENSE for details.
""" I am the support module for making a manhole server with twistd. """
from twisted.manhole import service from twisted.spread import pb from twisted.python import usage, util from twisted.cred import portal, checkers from twisted.application import strports
class Options(usage.Options): synopsis = "[options]" optParameters = [ ["user", "u", "admin", "Name of user to allow to log in"], ["port", "p", str(pb.portno), "Port to listen on"], ]
optFlags = [ ["tracebacks", "T", "Allow tracebacks to be sent over the network"], ]
compData = usage.Completions( optActions={"user": usage.CompleteUsernames()} )
def opt_password(self, password): """Required. '-' will prompt or read a password from stdin. """ # If standard input is a terminal, I prompt for a password and # confirm it. Otherwise, I use the first line from standard # input, stripping off a trailing newline if there is one. if password in ('', '-'): self['password'] = util.getPassword(confirm=1) else: self['password'] = password opt_w = opt_password
def postOptions(self): if not self.has_key('password'): self.opt_password('-')
def makeService(config): port, user, password = config['port'], config['user'], config['password'] p = portal.Portal( service.Realm(service.Service(config["tracebacks"], config.get('namespace'))), [checkers.InMemoryUsernamePasswordDatabaseDontUse(**{user: password})] ) return strports.service(port, pb.PBServerFactory(p, config["tracebacks"]))
|