本文整理汇总了Python中twisted.cred.portal.Portal方法的典型用法代码示例。如果您正苦于以下问题:Python portal.Portal方法的具体用法?Python portal.Portal怎么用?Python portal.Portal使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类twisted.cred.portal
的用法示例。
在下文中一共展示了portal.Portal方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: setUp
# 需要导入模块: from twisted.cred import portal [as 别名]
# 或者: from twisted.cred.portal import Portal [as 别名]
def setUp(self):
"""
Create a realm, portal, and L{HTTPAuthSessionWrapper} to use in the tests.
"""
self.username = b'foo bar'
self.password = b'bar baz'
self.avatarContent = b"contents of the avatar resource itself"
self.childName = b"foo-child"
self.childContent = b"contents of the foo child of the avatar"
self.checker = InMemoryUsernamePasswordDatabaseDontUse()
self.checker.addUser(self.username, self.password)
self.avatar = Data(self.avatarContent, 'text/plain')
self.avatar.putChild(
self.childName, Data(self.childContent, 'text/plain'))
self.avatars = {self.username: self.avatar}
self.realm = Realm(self.avatars.get)
self.portal = portal.Portal(self.realm, [self.checker])
self.credentialFactories = []
self.wrapper = HTTPAuthSessionWrapper(
self.portal, self.credentialFactories)
示例2: test_unexpectedLoginError
# 需要导入模块: from twisted.cred import portal [as 别名]
# 或者: from twisted.cred.portal import Portal [as 别名]
def test_unexpectedLoginError(self):
"""
Any unexpected failure from L{Portal.login} results in a 500 response
code and causes the failure to be logged.
"""
class UnexpectedException(Exception):
pass
class BrokenChecker(object):
credentialInterfaces = (IUsernamePassword,)
def requestAvatarId(self, credentials):
raise UnexpectedException()
self.portal.registerChecker(BrokenChecker())
self.credentialFactories.append(BasicCredentialFactory('example.com'))
request = self.makeRequest([self.childName])
child = self._authorizedBasicLogin(request)
request.render(child)
self.assertEqual(request.responseCode, 500)
self.assertEqual(len(self.flushLoggedErrors(UnexpectedException)), 1)
示例3: test_anonymousAccess
# 需要导入模块: from twisted.cred import portal [as 别名]
# 或者: from twisted.cred.portal import Portal [as 别名]
def test_anonymousAccess(self):
"""
Anonymous requests are allowed if a L{Portal} has an anonymous checker
registered.
"""
unprotectedContents = b"contents of the unprotected child resource"
self.avatars[ANONYMOUS] = Resource()
self.avatars[ANONYMOUS].putChild(
self.childName, Data(unprotectedContents, 'text/plain'))
self.portal.registerChecker(AllowAnonymousAccess())
self.credentialFactories.append(BasicCredentialFactory('example.com'))
request = self.makeRequest([self.childName])
child = getChildForRequest(self.wrapper, request)
d = request.notifyFinish()
def cbFinished(ignored):
self.assertEqual(request.written, [unprotectedContents])
d.addCallback(cbFinished)
request.render(child)
return d
示例4: makeService
# 需要导入模块: from twisted.cred import portal [as 别名]
# 或者: from twisted.cred.portal import Portal [as 别名]
def makeService(config):
credCheckers = config.get('credCheckers', [])
wordsRealm = service.InMemoryWordsRealm(config['hostname'])
wordsPortal = portal.Portal(wordsRealm, credCheckers)
msvc = MultiService()
# XXX Attribute lookup on config is kind of bad - hrm.
for plgName in config.interfacePlugins:
port = config.get(plgName + '-port')
if port is not None:
factory = config.interfacePlugins[plgName].getFactory(wordsRealm, wordsPortal)
svc = strports.service(port, factory)
svc.setServiceParent(msvc)
# This is bogus. createGroup is async. makeService must be
# allowed to return a Deferred or some crap.
for g in config['groups']:
wordsRealm.createGroup(g)
return msvc
示例5: addDomain
# 需要导入模块: from twisted.cred import portal [as 别名]
# 或者: from twisted.cred.portal import Portal [as 别名]
def addDomain(self, name, domain):
"""
Add a domain for which the service will accept email.
@type name: L{bytes}
@param name: A domain name.
@type domain: L{IDomain} provider
@param domain: A domain object.
"""
portal = Portal(domain)
map(portal.registerChecker, domain.getCredentialsCheckers())
self.domains[name] = domain
self.portals[name] = portal
if self.aliases and IAliasableDomain.providedBy(domain):
domain.setAliasGroup(self.aliases)
示例6: makeService
# 需要导入模块: from twisted.cred import portal [as 别名]
# 或者: from twisted.cred.portal import Portal [as 别名]
def makeService(config):
f = ftp.FTPFactory()
r = ftp.FTPRealm(config['root'])
p = portal.Portal(r, config.get('credCheckers', []))
f.tld = config['root']
f.userAnonymous = config['userAnonymous']
f.portal = p
f.protocol = ftp.FTP
try:
portno = int(config['port'])
except KeyError:
portno = 2121
return internet.TCPServer(portno, f)
示例7: makeService
# 需要导入模块: from twisted.cred import portal [as 别名]
# 或者: from twisted.cred.portal import Portal [as 别名]
def makeService(config):
"""
Construct a service for operating a SSH server.
@param config: An L{Options} instance specifying server options, including
where server keys are stored and what authentication methods to use.
@return: A L{twisted.application.service.IService} provider which contains
the requested SSH server.
"""
t = factory.OpenSSHFactory()
r = unix.UnixSSHRealm()
t.portal = portal.Portal(r, config.get('credCheckers', []))
t.dataRoot = config['data']
t.moduliRoot = config['moduli'] or config['data']
port = config['port']
if config['interface']:
# Add warning here
port += ':interface=' + config['interface']
return strports.service(port, t)
示例8: setUp
# 需要导入模块: from twisted.cred import portal [as 别名]
# 或者: from twisted.cred.portal import Portal [as 别名]
def setUp(self):
self.hostname = b"ssh.example.com"
self.port = 42022
self.user = b"user"
self.password = b"password"
self.reactor = MemoryReactorClock()
self.realm = TrivialRealm()
self.portal = Portal(self.realm)
self.passwdDB = InMemoryUsernamePasswordDatabaseDontUse()
self.passwdDB.addUser(self.user, self.password)
self.portal.registerChecker(self.passwdDB)
self.factory = CommandFactory()
self.factory.reactor = self.reactor
self.factory.portal = self.portal
self.factory.doStart()
self.addCleanup(self.factory.doStop)
self.clientAddress = IPv4Address("TCP", "10.0.0.1", 12345)
self.serverAddress = IPv4Address("TCP", "192.168.100.200", 54321)
示例9: setupKeyChecker
# 需要导入模块: from twisted.cred import portal [as 别名]
# 或者: from twisted.cred.portal import Portal [as 别名]
def setupKeyChecker(self, portal, users):
"""
Create an L{ISSHPrivateKey} checker which recognizes C{users} and add it
to C{portal}.
@param portal: A L{Portal} to which to add the checker.
@type portal: L{Portal}
@param users: The users and their keys the checker will recognize. Keys
are byte strings giving user names. Values are byte strings giving
OpenSSH-formatted private keys.
@type users: L{dict}
"""
mapping = dict([(k,[Key.fromString(v).public()])
for k, v in iteritems(users)])
checker = SSHPublicKeyChecker(InMemorySSHKeyDB(mapping))
portal.registerChecker(checker)
示例10: setUp
# 需要导入模块: from twisted.cred import portal [as 别名]
# 或者: from twisted.cred.portal import Portal [as 别名]
def setUp(self):
"""
Create a portal and add an in memory checker to it.
Then set up a protectedResource that will be wrapped in each test.
"""
self.portal = portal.Portal(TestAuthRealm())
c = checkers.InMemoryUsernamePasswordDatabaseDontUse()
c.addUser('username', 'password')
self.portal.registerChecker(c)
self.credFactory = basic.BasicCredentialFactory('test realm')
self.protectedResource = ProtectedResource()
self.protectedResource.responseText = "You shouldn't see me."
示例11: setUp
# 需要导入模块: from twisted.cred import portal [as 别名]
# 或者: from twisted.cred.portal import Portal [as 别名]
def setUp(self):
"""
Create a realm, portal, and L{HTTPAuthSessionWrapper} to use in the tests.
"""
self.username = 'foo bar'
self.password = 'bar baz'
self.avatarContent = "contents of the avatar resource itself"
self.childName = "foo-child"
self.childContent = "contents of the foo child of the avatar"
self.checker = InMemoryUsernamePasswordDatabaseDontUse()
self.checker.addUser(self.username, self.password)
self.avatar = Data(self.avatarContent, 'text/plain')
self.avatar.putChild(
self.childName, Data(self.childContent, 'text/plain'))
self.avatars = {self.username: self.avatar}
self.realm = Realm(self.avatars.get)
self.portal = portal.Portal(self.realm, [self.checker])
self.credentialFactories = []
self.wrapper = HTTPAuthSessionWrapper(
self.portal, self.credentialFactories)
示例12: test_anonymousAccess
# 需要导入模块: from twisted.cred import portal [as 别名]
# 或者: from twisted.cred.portal import Portal [as 别名]
def test_anonymousAccess(self):
"""
Anonymous requests are allowed if a L{Portal} has an anonymous checker
registered.
"""
unprotectedContents = "contents of the unprotected child resource"
self.avatars[ANONYMOUS] = Resource()
self.avatars[ANONYMOUS].putChild(
self.childName, Data(unprotectedContents, 'text/plain'))
self.portal.registerChecker(AllowAnonymousAccess())
self.credentialFactories.append(BasicCredentialFactory('example.com'))
request = self.makeRequest([self.childName])
child = getChildForRequest(self.wrapper, request)
d = request.notifyFinish()
def cbFinished(ignored):
self.assertEquals(request.written, [unprotectedContents])
d.addCallback(cbFinished)
request.render(child)
return d
示例13: makeService
# 需要导入模块: from twisted.cred import portal [as 别名]
# 或者: from twisted.cred.portal import Portal [as 别名]
def makeService(config):
f = ftp.FTPFactory()
r = ftp.FTPRealm(config['root'])
p = portal.Portal(r)
p.registerChecker(checkers.AllowAnonymousAccess(), credentials.IAnonymous)
if config['password-file'] is not None:
p.registerChecker(checkers.FilePasswordDB(config['password-file'], cache=True))
f.tld = config['root']
f.userAnonymous = config['userAnonymous']
f.portal = p
f.protocol = ftp.FTP
try:
portno = int(config['port'])
except KeyError:
portno = 2121
return internet.TCPServer(portno, f)
示例14: test_ignoreUnknownCredInterfaces
# 需要导入模块: from twisted.cred import portal [as 别名]
# 或者: from twisted.cred.portal import Portal [as 别名]
def test_ignoreUnknownCredInterfaces(self):
"""
L{SSHUserAuthServer} sets up
C{SSHUserAuthServer.supportedAuthentications} by checking the portal's
credentials interfaces and mapping them to SSH authentication method
strings. If the Portal advertises an interface that
L{SSHUserAuthServer} can't map, it should be ignored. This is a white
box test.
"""
server = userauth.SSHUserAuthServer()
server.transport = FakeTransport(self.portal)
self.portal.registerChecker(AnonymousChecker())
server.serviceStarted()
server.serviceStopped()
server.supportedAuthentications.sort() # give a consistent order
self.assertEquals(server.supportedAuthentications,
['keyboard-interactive', 'password', 'publickey'])
示例15: connectedServerAndClient
# 需要导入模块: from twisted.cred import portal [as 别名]
# 或者: from twisted.cred.portal import Portal [as 别名]
def connectedServerAndClient():
"""
Returns a 3-tuple: (client, server, pump).
"""
clientBroker = pb.Broker()
checker = checkers.InMemoryUsernamePasswordDatabaseDontUse(guest='guest')
factory = pb.PBServerFactory(portal.Portal(DummyRealm(), [checker]))
serverBroker = factory.buildProtocol(('127.0.0.1',))
clientTransport = StringIO()
serverTransport = StringIO()
clientBroker.makeConnection(protocol.FileWrapper(clientTransport))
serverBroker.makeConnection(protocol.FileWrapper(serverTransport))
pump = IOPump(clientBroker, serverBroker, clientTransport, serverTransport)
# Challenge-response authentication:
pump.flush()
return clientBroker, serverBroker, pump