| Index: third_party/twisted_8_1/twisted/cred/strcred.py
|
| diff --git a/third_party/twisted_8_1/twisted/cred/strcred.py b/third_party/twisted_8_1/twisted/cred/strcred.py
|
| deleted file mode 100644
|
| index a436edcbd99a6d346f1f7c6a9a01a5c968c35b1e..0000000000000000000000000000000000000000
|
| --- a/third_party/twisted_8_1/twisted/cred/strcred.py
|
| +++ /dev/null
|
| @@ -1,270 +0,0 @@
|
| -# -*- test-case-name: twisted.test.test_strcred -*-
|
| -#
|
| -# Copyright (c) 2007-2008 Twisted Matrix Laboratories.
|
| -# See LICENSE for details.
|
| -#
|
| -
|
| -"""
|
| -Support for resolving command-line strings that represent different
|
| -checkers available to cred.
|
| -
|
| -Examples:
|
| - - passwd:/etc/passwd
|
| - - memory:admin:asdf:user:lkj
|
| - - unix
|
| -"""
|
| -
|
| -import sys
|
| -
|
| -from zope.interface import Interface, Attribute
|
| -
|
| -from twisted.plugin import getPlugins
|
| -from twisted.python import usage
|
| -
|
| -
|
| -
|
| -class ICheckerFactory(Interface):
|
| - """
|
| - A factory for objects which provide
|
| - L{twisted.cred.checkers.ICredentialsChecker}.
|
| -
|
| - It's implemented by twistd plugins creating checkers.
|
| - """
|
| -
|
| - authType = Attribute(
|
| - 'A tag that identifies the authentication method.')
|
| -
|
| -
|
| - authHelp = Attribute(
|
| - 'A detailed (potentially multi-line) description of precisely '
|
| - 'what functionality this CheckerFactory provides.')
|
| -
|
| -
|
| - argStringFormat = Attribute(
|
| - 'A short (one-line) description of the argument string format.')
|
| -
|
| -
|
| - credentialInterfaces = Attribute(
|
| - 'A list of credentials interfaces that this factory will support.')
|
| -
|
| -
|
| - def generateChecker(argstring):
|
| - """
|
| - Return an L{ICredentialChecker} provider using the supplied
|
| - argument string.
|
| - """
|
| -
|
| -
|
| -
|
| -class StrcredException(Exception):
|
| - """
|
| - Base exception class for strcred.
|
| - """
|
| -
|
| -
|
| -
|
| -class InvalidAuthType(StrcredException):
|
| - """
|
| - Raised when a user provides an invalid identifier for the
|
| - authentication plugin (known as the authType).
|
| - """
|
| -
|
| -
|
| -
|
| -class InvalidAuthArgumentString(StrcredException):
|
| - """
|
| - Raised by an authentication plugin when the argument string
|
| - provided is formatted incorrectly.
|
| - """
|
| -
|
| -
|
| -
|
| -class UnsupportedInterfaces(StrcredException):
|
| - """
|
| - Raised when an application is given a checker to use that does not
|
| - provide any of the application's supported credentials interfaces.
|
| - """
|
| -
|
| -
|
| -
|
| -# This will be used to warn the users whenever they view help for an
|
| -# authType that is not supported by the application.
|
| -notSupportedWarning = ("WARNING: This authType is not supported by "
|
| - "this application.")
|
| -
|
| -
|
| -
|
| -def findCheckerFactories():
|
| - """
|
| - Find all objects that implement L{ICheckerFactory}.
|
| - """
|
| - return getPlugins(ICheckerFactory)
|
| -
|
| -
|
| -
|
| -def findCheckerFactory(authType):
|
| - """
|
| - Find the first checker factory that supports the given authType.
|
| - """
|
| - for factory in findCheckerFactories():
|
| - if factory.authType == authType:
|
| - return factory
|
| - raise InvalidAuthType(authType)
|
| -
|
| -
|
| -
|
| -def makeChecker(description):
|
| - """
|
| - Returns an L{twisted.cred.checkers.ICredentialsChecker} based on the
|
| - contents of a descriptive string. Similar to
|
| - L{twisted.application.strports}.
|
| - """
|
| - if ':' in description:
|
| - authType, argstring = description.split(':', 1)
|
| - else:
|
| - authType = description
|
| - argstring = ''
|
| - return findCheckerFactory(authType).generateChecker(argstring)
|
| -
|
| -
|
| -
|
| -class AuthOptionMixin:
|
| - """
|
| - Defines helper methods that can be added on to any
|
| - L{usage.Options} subclass that needs authentication.
|
| -
|
| - This mixin implements three new options methods:
|
| -
|
| - The opt_auth method (--auth) will write two new values to the
|
| - 'self' dictionary: C{credInterfaces} (a dict of lists) and
|
| - C{credCheckers} (a list).
|
| -
|
| - The opt_help_auth method (--help-auth) will search for all
|
| - available checker plugins and list them for the user; it will exit
|
| - when finished.
|
| -
|
| - The opt_help_auth_type method (--help-auth-type) will display
|
| - detailed help for a particular checker plugin.
|
| -
|
| - @cvar supportedInterfaces: An iterable object that returns
|
| - credential interfaces which this application is able to support.
|
| -
|
| - @cvar authOutput: A writeable object to which this options class
|
| - will send all help-related output. Default: L{sys.stdout}
|
| - """
|
| -
|
| - supportedInterfaces = None
|
| - authOutput = sys.stdout
|
| -
|
| -
|
| - def supportsInterface(self, interface):
|
| - """
|
| - Returns whether a particular credentials interface is supported.
|
| - """
|
| - return (self.supportedInterfaces is None
|
| - or interface in self.supportedInterfaces)
|
| -
|
| -
|
| - def supportsCheckerFactory(self, factory):
|
| - """
|
| - Returns whether a checker factory will provide at least one of
|
| - the credentials interfaces that we care about.
|
| - """
|
| - for interface in factory.credentialInterfaces:
|
| - if self.supportsInterface(interface):
|
| - return True
|
| - return False
|
| -
|
| -
|
| - def addChecker(self, checker):
|
| - """
|
| - Supply a supplied credentials checker to the Options class.
|
| - """
|
| - # First figure out which interfaces we're willing to support.
|
| - supported = []
|
| - if self.supportedInterfaces is None:
|
| - supported = checker.credentialInterfaces
|
| - else:
|
| - for interface in checker.credentialInterfaces:
|
| - if self.supportsInterface(interface):
|
| - supported.append(interface)
|
| - if not supported:
|
| - raise UnsupportedInterfaces(checker.credentialInterfaces)
|
| - # If we get this far, then we know we can use this checker.
|
| - if 'credInterfaces' not in self:
|
| - self['credInterfaces'] = {}
|
| - if 'credCheckers' not in self:
|
| - self['credCheckers'] = []
|
| - self['credCheckers'].append(checker)
|
| - for interface in supported:
|
| - self['credInterfaces'].setdefault(interface, []).append(checker)
|
| -
|
| -
|
| - def opt_auth(self, description):
|
| - """
|
| - Specify an authentication method for the server.
|
| - """
|
| - try:
|
| - self.addChecker(makeChecker(description))
|
| - except UnsupportedInterfaces, e:
|
| - raise usage.UsageError(
|
| - 'Auth plugin not supported: %s' % e.args[0])
|
| - except InvalidAuthType, e:
|
| - raise usage.UsageError(
|
| - 'Auth plugin not recognized: %s' % e.args[0])
|
| - except Exception, e:
|
| - raise usage.UsageError('Unexpected error: %s' % e)
|
| -
|
| -
|
| - def _checkerFactoriesForOptHelpAuth(self):
|
| - """
|
| - Return a list of which authTypes will be displayed by --help-auth.
|
| - This makes it a lot easier to test this module.
|
| - """
|
| - for factory in findCheckerFactories():
|
| - for interface in factory.credentialInterfaces:
|
| - if self.supportsInterface(interface):
|
| - yield factory
|
| - break
|
| -
|
| -
|
| - def opt_help_auth(self):
|
| - """
|
| - Show all authentication methods available.
|
| - """
|
| - self.authOutput.write("Usage: --auth AuthType[:ArgString]\n")
|
| - self.authOutput.write("For detailed help: --help-auth-type AuthType\n")
|
| - self.authOutput.write('\n')
|
| - # Figure out the right width for our columns
|
| - firstLength = 0
|
| - for factory in self._checkerFactoriesForOptHelpAuth():
|
| - if len(factory.authType) > firstLength:
|
| - firstLength = len(factory.authType)
|
| - formatString = ' %%-%is\t%%s\n' % firstLength
|
| - self.authOutput.write(formatString % ('AuthType', 'ArgString format'))
|
| - self.authOutput.write(formatString % ('========', '================'))
|
| - for factory in self._checkerFactoriesForOptHelpAuth():
|
| - self.authOutput.write(
|
| - formatString % (factory.authType, factory.argStringFormat))
|
| - self.authOutput.write('\n')
|
| - raise SystemExit(0)
|
| -
|
| -
|
| - def opt_help_auth_type(self, authType):
|
| - """
|
| - Show help for a particular authentication type.
|
| - """
|
| - try:
|
| - cf = findCheckerFactory(authType)
|
| - except InvalidAuthType:
|
| - raise usage.UsageError("Invalid auth type: %s" % authType)
|
| - self.authOutput.write("Usage: --auth %s[:ArgString]\n" % authType)
|
| - self.authOutput.write("ArgString format: %s\n" % cf.argStringFormat)
|
| - self.authOutput.write('\n')
|
| - for line in cf.authHelp.strip().splitlines():
|
| - self.authOutput.write(' %s\n' % line.rstrip())
|
| - self.authOutput.write('\n')
|
| - if not self.supportsCheckerFactory(cf):
|
| - self.authOutput.write(' %s\n' % notSupportedWarning)
|
| - self.authOutput.write('\n')
|
| - raise SystemExit(0)
|
|
|