404

[ Avaa Bypassed ]




Upload:

Command:

botdev@18.191.200.36: ~ $
# Copyright (c) Twisted Matrix Laboratories.
# See LICENSE for details.

"""
Tests for L{twisted.conch.manhole_tap}.
"""

try:
    import cryptography
except ImportError:
    cryptography = None

try:
    import pyasn1
except ImportError:
    pyasn1 = None

if cryptography and pyasn1:
    from twisted.conch import manhole_tap, manhole_ssh

from twisted.application.internet import StreamServerEndpointService
from twisted.application.service import MultiService

from twisted.cred import error
from twisted.cred.credentials import UsernamePassword

from twisted.conch import telnet

from twisted.python import usage

from twisted.trial.unittest import TestCase



class MakeServiceTests(TestCase):
    """
    Tests for L{manhole_tap.makeService}.
    """

    if not cryptography:
        skip = "can't run without cryptography"

    if not pyasn1:
        skip = "Cannot run without PyASN1"

    usernamePassword = (b'iamuser', b'thisispassword')

    def setUp(self):
        """
        Create a passwd-like file with a user.
        """
        self.filename = self.mktemp()
        with open(self.filename, 'wb') as f:
            f.write(b':'.join(self.usernamePassword))
        self.options = manhole_tap.Options()


    def test_requiresPort(self):
        """
        L{manhole_tap.makeService} requires either 'telnetPort' or 'sshPort' to
        be given.
        """
        with self.assertRaises(usage.UsageError) as e:
            manhole_tap.Options().parseOptions([])

        self.assertEqual(e.exception.args[0], ("At least one of --telnetPort "
                         "and --sshPort must be specified"))


    def test_telnetPort(self):
        """
        L{manhole_tap.makeService} will make a telnet service on the port
        defined by C{--telnetPort}. It will not make a SSH service.
        """
        self.options.parseOptions(["--telnetPort", "tcp:222"])
        service = manhole_tap.makeService(self.options)
        self.assertIsInstance(service, MultiService)
        self.assertEqual(len(service.services), 1)
        self.assertIsInstance(service.services[0], StreamServerEndpointService)
        self.assertIsInstance(service.services[0].factory.protocol,
                              manhole_tap.makeTelnetProtocol)
        self.assertEqual(service.services[0].endpoint._port, 222)


    def test_sshPort(self):
        """
        L{manhole_tap.makeService} will make a SSH service on the port
        defined by C{--sshPort}. It will not make a telnet service.
        """
        # Why the sshKeyDir and sshKeySize params? To prevent it stomping over
        # (or using!) the user's private key, we just make a super small one
        # which will never be used in a temp directory.
        self.options.parseOptions(["--sshKeyDir", self.mktemp(),
                                   "--sshKeySize", "512",
                                   "--sshPort", "tcp:223"])
        service = manhole_tap.makeService(self.options)
        self.assertIsInstance(service, MultiService)
        self.assertEqual(len(service.services), 1)
        self.assertIsInstance(service.services[0], StreamServerEndpointService)
        self.assertIsInstance(service.services[0].factory,
                              manhole_ssh.ConchFactory)
        self.assertEqual(service.services[0].endpoint._port, 223)


    def test_passwd(self):
        """
        The C{--passwd} command-line option will load a passwd-like file.
        """
        self.options.parseOptions(['--telnetPort', 'tcp:22',
                                   '--passwd', self.filename])
        service = manhole_tap.makeService(self.options)
        portal = service.services[0].factory.protocol.portal

        self.assertEqual(len(portal.checkers.keys()), 2)

        # Ensure it's the passwd file we wanted by trying to authenticate
        self.assertTrue(self.successResultOf(
            portal.login(UsernamePassword(*self.usernamePassword),
                         None, telnet.ITelnetProtocol)))
        self.assertIsInstance(self.failureResultOf(
            portal.login(UsernamePassword(b"wrong", b"user"),
                         None, telnet.ITelnetProtocol)).value,
                         error.UnauthorizedLogin)

Filemanager

Name Type Size Permission Actions
__pycache__ Folder 0755
__init__.py File 14 B 0644
keydata.py File 17.06 KB 0644
loopback.py File 757 B 0644
test_address.py File 1.59 KB 0644
test_agent.py File 12.78 KB 0644
test_cftp.py File 49.7 KB 0644
test_channel.py File 11.82 KB 0644
test_checkers.py File 30.76 KB 0644
test_ckeygen.py File 19.8 KB 0644
test_conch.py File 24.55 KB 0644
test_connection.py File 27.49 KB 0644
test_default.py File 11.31 KB 0644
test_endpoints.py File 51.96 KB 0644
test_filetransfer.py File 26.65 KB 0644
test_forwarding.py File 2.16 KB 0644
test_helper.py File 20.01 KB 0644
test_insults.py File 32.79 KB 0644
test_keys.py File 53.57 KB 0644
test_knownhosts.py File 48.26 KB 0644
test_manhole.py File 12.52 KB 0644
test_manhole_tap.py File 4.14 KB 0644
test_mixin.py File 1.03 KB 0644
test_openssh_compat.py File 4.52 KB 0644
test_recvline.py File 24.81 KB 0644
test_scripts.py File 1.84 KB 0644
test_session.py File 38.54 KB 0644
test_ssh.py File 31.62 KB 0644
test_tap.py File 4.83 KB 0644
test_telnet.py File 25.9 KB 0644
test_text.py File 3.85 KB 0644
test_transport.py File 89.71 KB 0644
test_unix.py File 2.47 KB 0644
test_userauth.py File 31.84 KB 0644
test_window.py File 2.07 KB 0644