From 83f44878eaacce5ee2bab0aa7f03a36743fea044 Mon Sep 17 00:00:00 2001 From: Jeff Forcier Date: Fri, 27 Sep 2013 21:29:18 -0700 Subject: Fixed a typo in the license header of most files Conflicts: paramiko/proxy.py --- demos/interactive.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'demos/interactive.py') diff --git a/demos/interactive.py b/demos/interactive.py index 4cbc6171..f3be74d2 100644 --- a/demos/interactive.py +++ b/demos/interactive.py @@ -7,7 +7,7 @@ # Software Foundation; either version 2.1 of the License, or (at your option) # any later version. # -# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR # A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more # details. -- cgit v1.2.3 From f73d5f73e512ffe2a7a4eccce262dc4acd5c4307 Mon Sep 17 00:00:00 2001 From: Scott Maxwell Date: Wed, 30 Oct 2013 16:05:47 -0700 Subject: Fix print statements --- demos/demo.py | 35 ++++++++++++++++++----------------- demos/interactive.py | 2 +- 2 files changed, 19 insertions(+), 18 deletions(-) (limited to 'demos/interactive.py') diff --git a/demos/demo.py b/demos/demo.py index aa4bdaa5..cbd7730e 100755 --- a/demos/demo.py +++ b/demos/demo.py @@ -45,13 +45,13 @@ def agent_auth(transport, username): return for key in agent_keys: - print 'Trying ssh-agent key %s' % hexlify(key.get_fingerprint()), + print('Trying ssh-agent key %s' % hexlify(key.get_fingerprint())) try: transport.auth_publickey(username, key) - print '... success!' + print('... success!') return except paramiko.SSHException: - print '... nope.' + print('... nope.') def manual_auth(username, hostname): @@ -98,7 +98,7 @@ if len(sys.argv) > 1: else: hostname = raw_input('Hostname: ') if len(hostname) == 0: - print '*** Hostname required.' + print('*** Hostname required.') sys.exit(1) port = 22 if hostname.find(':') >= 0: @@ -111,6 +111,7 @@ try: sock.connect((hostname, port)) except Exception, e: print '*** Connect failed: ' + str(e) + print('*** Connect failed: ' + str(e)) traceback.print_exc() sys.exit(1) @@ -119,7 +120,7 @@ try: try: t.start_client() except paramiko.SSHException: - print '*** SSH negotiation failed.' + print('*** SSH negotiation failed.') sys.exit(1) try: @@ -128,20 +129,20 @@ try: try: keys = paramiko.util.load_host_keys(os.path.expanduser('~/ssh/known_hosts')) except IOError: - print '*** Unable to open host keys file' + print('*** Unable to open host keys file') keys = {} # check server's host key -- this is important. key = t.get_remote_server_key() - if not keys.has_key(hostname): - print '*** WARNING: Unknown host key!' - elif not keys[hostname].has_key(key.get_name()): - print '*** WARNING: Unknown host key!' + if hostname not in keys: + print('*** WARNING: Unknown host key!') + elif key.get_name() not in keys[hostname]: + print('*** WARNING: Unknown host key!') elif keys[hostname][key.get_name()] != key: - print '*** WARNING: Host key has changed!!!' + print('*** WARNING: Host key has changed!!!') sys.exit(1) else: - print '*** Host key OK.' + print('*** Host key OK.') # get username if username == '': @@ -154,21 +155,21 @@ try: if not t.is_authenticated(): manual_auth(username, hostname) if not t.is_authenticated(): - print '*** Authentication failed. :(' + print('*** Authentication failed. :(') t.close() sys.exit(1) chan = t.open_session() chan.get_pty() chan.invoke_shell() - print '*** Here we go!' - print + print('*** Here we go!\n') interactive.interactive_shell(chan) chan.close() t.close() -except Exception, e: - print '*** Caught exception: ' + str(e.__class__) + ': ' + str(e) +except Exception: + e = sys.exc_info()[1] + print('*** Caught exception: ' + str(e.__class__) + ': ' + str(e)) traceback.print_exc() try: t.close() diff --git a/demos/interactive.py b/demos/interactive.py index f3be74d2..b7962b35 100644 --- a/demos/interactive.py +++ b/demos/interactive.py @@ -51,7 +51,7 @@ def posix_shell(chan): try: x = chan.recv(1024) if len(x) == 0: - print '\r\n*** EOF\r\n', + sys.stdout.write('\r\n*** EOF\r\n') break sys.stdout.write(x) sys.stdout.flush() -- cgit v1.2.3 From 7a45d3c70f6f308835ab66e3899e247e0efc17e7 Mon Sep 17 00:00:00 2001 From: Scott Maxwell Date: Thu, 31 Oct 2013 15:25:45 -0700 Subject: More type conversion --- demos/interactive.py | 3 ++- paramiko/channel.py | 2 +- paramiko/common.py | 2 +- paramiko/file.py | 2 +- paramiko/pkey.py | 6 +++--- paramiko/py3compat.py | 8 +++++++- paramiko/transport.py | 2 +- tests/loop.py | 3 ++- tests/test_client.py | 3 ++- tests/test_transport.py | 14 +++++++------- 10 files changed, 27 insertions(+), 18 deletions(-) (limited to 'demos/interactive.py') diff --git a/demos/interactive.py b/demos/interactive.py index b7962b35..7138cd6c 100644 --- a/demos/interactive.py +++ b/demos/interactive.py @@ -19,6 +19,7 @@ import socket import sys +from paramiko.py3compat import u # windows does not have termios... try: @@ -49,7 +50,7 @@ def posix_shell(chan): r, w, e = select.select([chan, sys.stdin], [], []) if chan in r: try: - x = chan.recv(1024) + x = u(chan.recv(1024)) if len(x) == 0: sys.stdout.write('\r\n*** EOF\r\n') break diff --git a/paramiko/channel.py b/paramiko/channel.py index 182cd685..d715bb88 100644 --- a/paramiko/channel.py +++ b/paramiko/channel.py @@ -1059,7 +1059,7 @@ class Channel (object): elif key == 'x11-req': single_connection = m.get_boolean() auth_proto = m.get_text() - auth_cookie = m.get_text() + auth_cookie = m.get_binary() screen_number = m.get_int() if server is None: ok = False diff --git a/paramiko/common.py b/paramiko/common.py index 2392f037..9161f309 100644 --- a/paramiko/common.py +++ b/paramiko/common.py @@ -129,7 +129,7 @@ if PY3: four_byte = b'\x04' max_byte = b'\xff' newline_byte = b'\n' - cr_byte = b'\r' + cr_byte = 13 else: zero_byte = '\x00' one_byte = '\x01' diff --git a/paramiko/file.py b/paramiko/file.py index aca97c64..625737fe 100644 --- a/paramiko/file.py +++ b/paramiko/file.py @@ -235,7 +235,7 @@ class BufferedFile (object): self._rbuffer = '' self._pos += len(line) return line - line += new_data + line += b2s(new_data) self._realpos += len(new_data) # find the newline pos = line.find('\n') diff --git a/paramiko/pkey.py b/paramiko/pkey.py index 376041d5..4cead1c2 100644 --- a/paramiko/pkey.py +++ b/paramiko/pkey.py @@ -321,7 +321,7 @@ class PKey (object): try: encryption_type, saltstr = headers['dek-info'].split(',') except: - raise SSHException('Can\'t parse DEK-info in private key file') + raise SSHException("Can't parse DEK-info in private key file") if encryption_type not in self._CIPHER_TABLE: raise SSHException('Unknown private key cipher "%s"' % encryption_type) # if no password was passed in, raise an exception pointing out that we need one @@ -373,10 +373,10 @@ class PKey (object): n = blocksize - len(data) % blocksize #data += rng.read(n) # that would make more sense ^, but it confuses openssh. - data += '\0' * n + data += zero_byte * n data = cipher.new(key, mode, salt).encrypt(data) f.write('Proc-Type: 4,ENCRYPTED\n') - f.write('DEK-Info: %s,%s\n' % (cipher_name, hexlify(salt).upper())) + f.write('DEK-Info: %s,%s\n' % (cipher_name, u(hexlify(salt)).upper())) f.write('\n') s = u(base64.encodestring(data)) # re-wrap to 64-char lines diff --git a/paramiko/py3compat.py b/paramiko/py3compat.py index c4a85ac4..e4830dad 100644 --- a/paramiko/py3compat.py +++ b/paramiko/py3compat.py @@ -1,6 +1,6 @@ import sys -__all__ = ['PY3', 'string_types', 'integer_types', 'text_type', 'bytes_type', 'long', 'input', 'bytestring', 'byte_ord', 'byte_chr', 'byte_mask', 'b', 'u', 'StringIO', 'BytesIO', 'is_callable', 'MAXSIZE', 'next'] +__all__ = ['PY3', 'string_types', 'integer_types', 'text_type', 'bytes_type', 'long', 'input', 'bytestring', 'byte_ord', 'byte_chr', 'byte_mask', 'b', 'u', 'b2s', 'StringIO', 'BytesIO', 'is_callable', 'MAXSIZE', 'next'] PY3 = sys.version_info[0] >= 3 @@ -47,6 +47,9 @@ if PY3: else: raise TypeError("Expected unicode or bytes, got %r" % s) + def b2s(s): + return s.decode() if isinstance(s, bytes) else s + import io StringIO = io.StringIO # NOQA BytesIO = io.BytesIO # NOQA @@ -97,6 +100,9 @@ else: else: raise TypeError("Expected unicode or bytes, got %r" % s) + def b2s(s): + return s + try: import cStringIO StringIO = cStringIO.StringIO # NOQA diff --git a/paramiko/transport.py b/paramiko/transport.py index c679a988..46e0fe88 100644 --- a/paramiko/transport.py +++ b/paramiko/transport.py @@ -805,7 +805,7 @@ class Transport (threading.Thread): """ if not self.active: raise SSHException('SSH session not active') - address = str(address) + address = address port = int(port) response = self.global_request('tcpip-forward', (address, port), wait=True) if response is None: diff --git a/tests/loop.py b/tests/loop.py index cfd76265..b2c73ddf 100644 --- a/tests/loop.py +++ b/tests/loop.py @@ -21,7 +21,7 @@ """ import threading, socket -from paramiko.py3compat import * +from paramiko.common import * class LoopSocket (object): @@ -47,6 +47,7 @@ class LoopSocket (object): self.__lock.release() def send(self, data): + data = asbytes(data) if self.__mate is None: # EOF raise EOFError() diff --git a/tests/test_client.py b/tests/test_client.py index 0959ac9a..a8d04630 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -29,6 +29,7 @@ import weakref from binascii import hexlify from tests.util import test_path import paramiko +from paramiko.py3compat import b class NullServer (paramiko.ServerInterface): @@ -44,7 +45,7 @@ class NullServer (paramiko.ServerInterface): return paramiko.AUTH_FAILED def check_auth_publickey(self, username, key): - if (key.get_name() == 'ssh-dss') and (hexlify(key.get_fingerprint()) == '4478f0b9a23cc5182009ff755bc1d26c'): + if (key.get_name() == 'ssh-dss') and (hexlify(key.get_fingerprint()) == b('4478f0b9a23cc5182009ff755bc1d26c')): return paramiko.AUTH_SUCCESSFUL return paramiko.AUTH_FAILED diff --git a/tests/test_transport.py b/tests/test_transport.py index ccd44e47..230f4a28 100644 --- a/tests/test_transport.py +++ b/tests/test_transport.py @@ -362,7 +362,7 @@ class TransportTest(ParamikoTest): self.assertEquals([], w) self.assertEquals([], e) - self.assertEquals('hello\n', chan.recv(6)) + self.assertEquals(b('hello\n'), chan.recv(6)) # and, should be dead again now r, w, e = select.select([chan], [], [], 0.1) @@ -381,7 +381,7 @@ class TransportTest(ParamikoTest): self.assertEquals([chan], r) self.assertEquals([], w) self.assertEquals([], e) - self.assertEquals('', chan.recv(16)) + self.assertEquals(bytes(), chan.recv(16)) # make sure the pipe is still open for now... p = chan._pipe @@ -463,7 +463,7 @@ class TransportTest(ParamikoTest): self.assertEquals(6093, requested[0][1]) x11_server.send('hello') - self.assertEquals('hello', x11_client.recv(5)) + self.assertEquals(b('hello'), x11_client.recv(5)) x11_server.close() x11_client.close() @@ -496,7 +496,7 @@ class TransportTest(ParamikoTest): cch = self.tc.accept() sch.send('hello') - self.assertEquals('hello', cch.recv(5)) + self.assertEquals(b('hello'), cch.recv(5)) sch.close() cch.close() ss.close() @@ -528,12 +528,12 @@ class TransportTest(ParamikoTest): cch.connect(self.server._tcpip_dest) ss, _ = greeting_server.accept() - ss.send('Hello!\n') + ss.send(b('Hello!\n')) ss.close() sch.send(cch.recv(8192)) sch.close() - self.assertEquals('Hello!\n', cs.recv(7)) + self.assertEquals(b('Hello!\n'), cs.recv(7)) cs.close() def test_G_stderr_select(self): @@ -564,7 +564,7 @@ class TransportTest(ParamikoTest): self.assertEquals([], w) self.assertEquals([], e) - self.assertEquals('hello\n', chan.recv_stderr(6)) + self.assertEquals(b('hello\n'), chan.recv_stderr(6)) # and, should be dead again now r, w, e = select.select([chan], [], [], 0.1) -- cgit v1.2.3