Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: third_party/twisted_8_1/twisted/conch/manhole_tap.py

Issue 12261012: Remove third_party/twisted_8_1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 # Copyright (c) 2001-2004 Twisted Matrix Laboratories.
2 # See LICENSE for details.
3
4 """
5 TAP plugin for creating telnet- and ssh-accessible manhole servers.
6
7 @author: U{Jp Calderone<mailto:exarkun@twistedmatrix.com>}
8 """
9
10 from zope.interface import implements
11
12 from twisted.internet import protocol
13 from twisted.application import service, strports
14 from twisted.conch.ssh import session
15 from twisted.conch import interfaces as iconch
16 from twisted.cred import portal, checkers
17 from twisted.python import usage
18
19 from twisted.conch.insults import insults
20 from twisted.conch import manhole, manhole_ssh, telnet
21
22 class makeTelnetProtocol:
23 def __init__(self, portal):
24 self.portal = portal
25
26 def __call__(self):
27 auth = telnet.AuthenticatingTelnetProtocol
28 args = (self.portal,)
29 return telnet.TelnetTransport(auth, *args)
30
31 class chainedProtocolFactory:
32 def __init__(self, namespace):
33 self.namespace = namespace
34
35 def __call__(self):
36 return insults.ServerProtocol(manhole.ColoredManhole, self.namespace)
37
38 class _StupidRealm:
39 implements(portal.IRealm)
40
41 def __init__(self, proto, *a, **kw):
42 self.protocolFactory = proto
43 self.protocolArgs = a
44 self.protocolKwArgs = kw
45
46 def requestAvatar(self, avatarId, *interfaces):
47 if telnet.ITelnetProtocol in interfaces:
48 return (telnet.ITelnetProtocol,
49 self.protocolFactory(*self.protocolArgs, **self.protocolKwAr gs),
50 lambda: None)
51 raise NotImplementedError()
52
53 class Options(usage.Options):
54 optParameters = [
55 ["telnetPort", "t", None, "strports description of the address on which to listen for telnet connections"],
56 ["sshPort", "s", None, "strports description of the address on which to listen for ssh connections"],
57 ["passwd", "p", "/etc/passwd", "name of a passwd(5)-format username/pass word file"]]
58
59 def __init__(self):
60 usage.Options.__init__(self)
61 self.users = []
62 self['namespace'] = None
63
64 def opt_user(self, name):
65 self.users.append(name)
66
67 def postOptions(self):
68 if self['telnetPort'] is None and self['sshPort'] is None:
69 raise usage.UsageError("At least one of --telnetPort and --sshPort m ust be specified")
70
71 def makeService(options):
72 """Create a manhole server service.
73
74 @type options: C{dict}
75 @param options: A mapping describing the configuration of
76 the desired service. Recognized key/value pairs are::
77
78 "telnetPort": strports description of the address on which
79 to listen for telnet connections. If None,
80 no telnet service will be started.
81
82 "sshPort": strports description of the address on which to
83 listen for ssh connections. If None, no ssh
84 service will be started.
85
86 "namespace": dictionary containing desired initial locals
87 for manhole connections. If None, an empty
88 dictionary will be used.
89
90 "passwd": Name of a passwd(5)-format username/password file.
91
92 @rtype: L{twisted.application.service.IService}
93 @return: A manhole service.
94 """
95
96 svc = service.MultiService()
97
98 namespace = options['namespace']
99 if namespace is None:
100 namespace = {}
101
102 checker = checkers.FilePasswordDB(options['passwd'])
103
104 if options['telnetPort']:
105 telnetRealm = _StupidRealm(telnet.TelnetBootstrapProtocol,
106 insults.ServerProtocol,
107 manhole.ColoredManhole,
108 namespace)
109
110 telnetPortal = portal.Portal(telnetRealm, [checker])
111
112 telnetFactory = protocol.ServerFactory()
113 telnetFactory.protocol = makeTelnetProtocol(telnetPortal)
114 telnetService = strports.service(options['telnetPort'],
115 telnetFactory)
116 telnetService.setServiceParent(svc)
117
118 if options['sshPort']:
119 sshRealm = manhole_ssh.TerminalRealm()
120 sshRealm.chainedProtocolFactory = chainedProtocolFactory(namespace)
121
122 sshPortal = portal.Portal(sshRealm, [checker])
123 sshFactory = manhole_ssh.ConchFactory(sshPortal)
124 sshService = strports.service(options['sshPort'],
125 sshFactory)
126 sshService.setServiceParent(svc)
127
128 return svc
OLDNEW
« no previous file with comments | « third_party/twisted_8_1/twisted/conch/manhole_ssh.py ('k') | third_party/twisted_8_1/twisted/conch/mixin.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698