openmedialibrary_platform/Linux/lib/python2.7/site-packages/twisted/tap/manhole.py
2014-05-16 01:20:41 +02:00

54 lines
1.7 KiB
Python

# 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"]))