| Index: third_party/twisted_8_1/twisted/plugins/cred_unix.py
|
| diff --git a/third_party/twisted_8_1/twisted/plugins/cred_unix.py b/third_party/twisted_8_1/twisted/plugins/cred_unix.py
|
| deleted file mode 100644
|
| index b67df8f62efaed3b304391b68b11b5ab69d9a6ed..0000000000000000000000000000000000000000
|
| --- a/third_party/twisted_8_1/twisted/plugins/cred_unix.py
|
| +++ /dev/null
|
| @@ -1,138 +0,0 @@
|
| -# -*- test-case-name: twisted.test.test_strcred -*-
|
| -#
|
| -# Copyright (c) 2007-2008 Twisted Matrix Laboratories.
|
| -# See LICENSE for details.
|
| -
|
| -"""
|
| -Cred plugin for UNIX user accounts.
|
| -"""
|
| -
|
| -from zope.interface import implements
|
| -
|
| -from twisted import plugin
|
| -from twisted.cred.strcred import ICheckerFactory
|
| -from twisted.cred.checkers import ICredentialsChecker
|
| -from twisted.cred.credentials import IUsernamePassword
|
| -from twisted.cred.error import UnauthorizedLogin
|
| -from twisted.internet import defer
|
| -
|
| -
|
| -
|
| -def verifyCryptedPassword(crypted, pw):
|
| - if crypted[0] == '$': # md5_crypt encrypted
|
| - salt = '$1$' + crypted.split('$')[2]
|
| - else:
|
| - salt = crypted[:2]
|
| - try:
|
| - import crypt
|
| - except ImportError:
|
| - crypt = None
|
| -
|
| - if crypt is None:
|
| - raise NotImplementedError("cred_unix not supported on this platform")
|
| - return crypt.crypt(pw, salt) == crypted
|
| -
|
| -
|
| -
|
| -class UNIXChecker(object):
|
| - """
|
| - A credentials checker for a UNIX server. This will check that
|
| - an authenticating username/password is a valid user on the system.
|
| -
|
| - Does not work on Windows.
|
| -
|
| - Right now this supports Python's pwd and spwd modules, if they are
|
| - installed. It does not support PAM.
|
| - """
|
| - implements(ICredentialsChecker)
|
| - credentialInterfaces = (IUsernamePassword,)
|
| -
|
| -
|
| - def checkPwd(self, pwd, username, password):
|
| - try:
|
| - cryptedPass = pwd.getpwnam(username)[1]
|
| - except KeyError:
|
| - return defer.fail(UnauthorizedLogin())
|
| - else:
|
| - if cryptedPass in ('*', 'x'):
|
| - # Allow checkSpwd to take over
|
| - return None
|
| - elif verifyCryptedPassword(cryptedPass, password):
|
| - return defer.succeed(username)
|
| -
|
| -
|
| - def checkSpwd(self, spwd, username, password):
|
| - try:
|
| - cryptedPass = spwd.getspnam(username)[1]
|
| - except KeyError:
|
| - return defer.fail(UnauthorizedLogin())
|
| - else:
|
| - if verifyCryptedPassword(cryptedPass, password):
|
| - return defer.succeed(username)
|
| -
|
| -
|
| - def requestAvatarId(self, credentials):
|
| - username, password = credentials.username, credentials.password
|
| -
|
| - try:
|
| - import pwd
|
| - except ImportError:
|
| - pwd = None
|
| -
|
| - if pwd is not None:
|
| - checked = self.checkPwd(pwd, username, password)
|
| - if checked is not None:
|
| - return checked
|
| -
|
| - try:
|
| - import spwd
|
| - except ImportError:
|
| - spwd = None
|
| -
|
| - if spwd is not None:
|
| - checked = self.checkSpwd(spwd, username, password)
|
| - if checked is not None:
|
| - return checked
|
| - # TODO: check_pam?
|
| - # TODO: check_shadow?
|
| - return defer.fail(UnauthorizedLogin())
|
| -
|
| -
|
| -
|
| -unixCheckerFactoryHelp = """
|
| -This checker will attempt to use every resource available to
|
| -authenticate against the list of users on the local UNIX system.
|
| -(This does not support Windows servers for very obvious reasons.)
|
| -
|
| -Right now, this includes support for:
|
| -
|
| - * Python's pwd module (which checks /etc/passwd)
|
| - * Python's spwd module (which checks /etc/shadow)
|
| -
|
| -Future versions may include support for PAM authentication.
|
| -"""
|
| -
|
| -
|
| -
|
| -class UNIXCheckerFactory(object):
|
| - """
|
| - A factory for L{UNIXChecker}.
|
| - """
|
| - implements(ICheckerFactory, plugin.IPlugin)
|
| - authType = 'unix'
|
| - authHelp = unixCheckerFactoryHelp
|
| - argStringFormat = 'No argstring required.'
|
| - credentialInterfaces = UNIXChecker.credentialInterfaces
|
| -
|
| - def generateChecker(self, argstring):
|
| - """
|
| - This checker factory ignores the argument string. Everything
|
| - needed to generate a user database is pulled out of the local
|
| - UNIX environment.
|
| - """
|
| - return UNIXChecker()
|
| -
|
| -
|
| -
|
| -theUnixCheckerFactory = UNIXCheckerFactory()
|
| -
|
|
|