| Index: third_party/twisted_8_1/twisted/conch/ssh/factory.py
|
| diff --git a/third_party/twisted_8_1/twisted/conch/ssh/factory.py b/third_party/twisted_8_1/twisted/conch/ssh/factory.py
|
| deleted file mode 100644
|
| index 0e49735eb8c5e4c18e0faef05ca3ad305561019a..0000000000000000000000000000000000000000
|
| --- a/third_party/twisted_8_1/twisted/conch/ssh/factory.py
|
| +++ /dev/null
|
| @@ -1,129 +0,0 @@
|
| -# Copyright (c) 2001-2008 Twisted Matrix Laboratories.
|
| -# See LICENSE for details.
|
| -
|
| -"""
|
| -A Factory for SSH servers, along with an OpenSSHFactory to use the same
|
| -data sources as OpenSSH.
|
| -
|
| -Maintainer: U{Paul Swartz<mailto:z3p@twistedmatrix.com>}
|
| -"""
|
| -
|
| -try:
|
| - import resource
|
| -except ImportError:
|
| - resource = None
|
| -
|
| -from twisted.internet import protocol
|
| -from twisted.python import log
|
| -from twisted.python.reflect import qual
|
| -
|
| -from twisted.conch import error
|
| -from twisted.conch.ssh import keys
|
| -import transport, userauth, connection
|
| -
|
| -import random
|
| -import warnings
|
| -
|
| -class SSHFactory(protocol.Factory):
|
| - services = {
|
| - 'ssh-userauth':userauth.SSHUserAuthServer,
|
| - 'ssh-connection':connection.SSHConnection
|
| - }
|
| - def startFactory(self):
|
| - # disable coredumps
|
| - if resource:
|
| - resource.setrlimit(resource.RLIMIT_CORE, (0,0))
|
| - else:
|
| - log.msg('INSECURE: unable to disable core dumps.')
|
| - if not hasattr(self,'publicKeys'):
|
| - self.publicKeys = self.getPublicKeys()
|
| - for keyType, value in self.publicKeys.items():
|
| - if isinstance(value, str):
|
| - warnings.warn("Returning a mapping from strings to "
|
| - "strings from getPublicKeys()/publicKeys (in %s) "
|
| - "is deprecated. Return a mapping from "
|
| - "strings to Key objects instead." %
|
| - (qual(self.__class__)),
|
| - DeprecationWarning, stacklevel=1)
|
| - self.publicKeys[keyType] = keys.Key.fromString(value)
|
| - if not hasattr(self,'privateKeys'):
|
| - self.privateKeys = self.getPrivateKeys()
|
| - for keyType, value in self.privateKeys.items():
|
| - if not isinstance(value, keys.Key):
|
| - warnings.warn("Returning a mapping from strings to "
|
| - "PyCrypto key objects from "
|
| - "getPrivateKeys()/privateKeys (in %s) "
|
| - "is deprecated. Return a mapping from "
|
| - "strings to Key objects instead." %
|
| - (qual(self.__class__),),
|
| - DeprecationWarning, stacklevel=1)
|
| - self.privateKeys[keyType] = keys.Key(value)
|
| - if not self.publicKeys or not self.privateKeys:
|
| - raise error.ConchError('no host keys, failing')
|
| - if not hasattr(self,'primes'):
|
| - self.primes = self.getPrimes()
|
| -
|
| - def buildProtocol(self, addr):
|
| - t = transport.SSHServerTransport()
|
| - t.supportedPublicKeys = self.privateKeys.keys()
|
| - if not self.primes:
|
| - log.msg('disabling diffie-hellman-group-exchange because we '
|
| - 'cannot find moduli file')
|
| - ske = t.supportedKeyExchanges[:]
|
| - ske.remove('diffie-hellman-group-exchange-sha1')
|
| - t.supportedKeyExchanges = ske
|
| - t.factory = self
|
| - return t
|
| -
|
| - def getPublicKeys(self):
|
| - """
|
| - Called when the factory is started to get the public portions of the
|
| - servers host keys. Returns a dictionary mapping SSH key types to
|
| - public key strings.
|
| -
|
| - @rtype: C{dict}
|
| - """
|
| - raise NotImplementedError('getPublicKeys unimplemented')
|
| -
|
| - def getPrivateKeys(self):
|
| - """
|
| - Called when the factory is started to get the private portions of the
|
| - servers host keys. Returns a dictionary mapping SSH key types to
|
| - C{Crypto.PublicKey.pubkey.pubkey} objects.
|
| -
|
| - @rtype: C{dict}
|
| - """
|
| - raise NotImplementedError('getPrivateKeys unimplemented')
|
| -
|
| - def getPrimes(self):
|
| - """
|
| - Called when the factory is started to get Diffie-Hellman generators and
|
| - primes to use. Returns a dictionary mapping number of bits to lists
|
| - of tuple of (generator, prime).
|
| -
|
| - @rtype: C{dict}
|
| - """
|
| -
|
| - def getDHPrime(self, bits):
|
| - """
|
| - Return a tuple of (g, p) for a Diffe-Hellman process, with p being as
|
| - close to bits bits as possible.
|
| -
|
| - @type bits: C{int}
|
| - @rtype: C{tuple}
|
| - """
|
| - primesKeys = self.primes.keys()
|
| - primesKeys.sort(lambda x, y: cmp(abs(x - bits), abs(y - bits)))
|
| - realBits = primesKeys[0]
|
| - return random.choice(self.primes[realBits])
|
| -
|
| - def getService(self, transport, service):
|
| - """
|
| - Return a class to use as a service for the given transport.
|
| -
|
| - @type transport: L{transport.SSHServerTransport}
|
| - @type service: C{str}
|
| - @rtype: subclass of L{service.SSHService}
|
| - """
|
| - if service == 'ssh-userauth' or hasattr(transport, 'avatar'):
|
| - return self.services[service]
|
|
|