aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPo-Chuan Hsieh <sunpoet@FreeBSD.org>2022-04-30 15:57:14 +0000
committerPo-Chuan Hsieh <sunpoet@FreeBSD.org>2022-04-30 15:57:14 +0000
commit6f7516452ecf34b5e3da0ccaae3e72de93c98379 (patch)
tree3a5d691d810c10d1ffb2ce045f456ca59355039f
parentcf6077d62fb9e6ed7d2c2d40c7a8dc027e560c18 (diff)
downloadports-6f7516452ecf34b5e3da0ccaae3e72de93c98379.tar.gz
ports-6f7516452ecf34b5e3da0ccaae3e72de93c98379.zip
security/py-ssh: Remove obsoleted port
Use security/py-paramiko instead. This library originated as a fork of the Paramiko library, and has now been merged back into it. Approved by: lwhsu (maintainer)
-rw-r--r--MOVED1
-rw-r--r--security/Makefile1
-rw-r--r--security/py-ssh/Makefile20
-rw-r--r--security/py-ssh/distinfo2
-rw-r--r--security/py-ssh/files/patch-2to3941
-rw-r--r--security/py-ssh/files/patch-setup.py10
-rw-r--r--security/py-ssh/pkg-descr6
7 files changed, 1 insertions, 980 deletions
diff --git a/MOVED b/MOVED
index 5061a7b1cc6c..17a4eaec9e81 100644
--- a/MOVED
+++ b/MOVED
@@ -17139,3 +17139,4 @@ math/py-gmpy2-devel|math/py-gmpy2|2022-04-22|No more need for the -devel port, p
net/google-cloud-sdk-app-engine-go||2022-04-27|Obsolete, not supported by the current GCP SDK
www/py-dj32-django-modelcluster|www/py-django-modelcluster|2022-04-30|Remove obsoleted port. Use www/py-django-modelcluster instead
www/rubygem-rack-proxy06|www/rubygem-rack-proxy|2022-04-30|Remove obsoleted port. Use www/rubygem-rack-proxy instead
+security/py-ssh|security/py-paramiko|2022-04-30|Remove obsoleted port. Use security/py-paramiko instead
diff --git a/security/Makefile b/security/Makefile
index 4d179e1f055b..66f61f6149ac 100644
--- a/security/Makefile
+++ b/security/Makefile
@@ -973,7 +973,6 @@
SUBDIR += py-signedjson
SUBDIR += py-social-auth-core
SUBDIR += py-spake2
- SUBDIR += py-ssh
SUBDIR += py-ssh-audit
SUBDIR += py-sshpubkeys
SUBDIR += py-stem
diff --git a/security/py-ssh/Makefile b/security/py-ssh/Makefile
deleted file mode 100644
index e0af68b92494..000000000000
--- a/security/py-ssh/Makefile
+++ /dev/null
@@ -1,20 +0,0 @@
-# Created by: Li-Wen Hsu <lwhsu@FreeBSD.org>
-
-PORTNAME= ssh
-PORTVERSION= 1.8.0
-PORTREVISION= 1
-CATEGORIES= security python
-MASTER_SITES= CHEESESHOP
-PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
-
-MAINTAINER= lwhsu@FreeBSD.org
-COMMENT= Python SSH2 protocol library
-
-RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pycrypto>=2.1:security/py-pycrypto@${PY_FLAVOR}
-
-USES= python:3.6+
-USE_PYTHON= distutils autoplist
-
-NO_ARCH= yes
-
-.include <bsd.port.mk>
diff --git a/security/py-ssh/distinfo b/security/py-ssh/distinfo
deleted file mode 100644
index 93f673c63174..000000000000
--- a/security/py-ssh/distinfo
+++ /dev/null
@@ -1,2 +0,0 @@
-SHA256 (ssh-1.8.0.tar.gz) = b0aca1faf8a12e6aae24ab9cfae90d061a8741b680c8afad21da6ff8b8ae28d7
-SIZE (ssh-1.8.0.tar.gz) = 795832
diff --git a/security/py-ssh/files/patch-2to3 b/security/py-ssh/files/patch-2to3
deleted file mode 100644
index d3db3ca9d53f..000000000000
--- a/security/py-ssh/files/patch-2to3
+++ /dev/null
@@ -1,941 +0,0 @@
---- ssh/auth_handler.py.orig 2012-04-19 22:17:28 UTC
-+++ ssh/auth_handler.py
-@@ -198,7 +198,7 @@ class AuthHandler (object):
- if self.auth_method == 'password':
- m.add_boolean(False)
- password = self.password
-- if isinstance(password, unicode):
-+ if isinstance(password, str):
- password = password.encode('UTF-8')
- m.add_string(password)
- elif self.auth_method == 'publickey':
-@@ -308,7 +308,7 @@ class AuthHandler (object):
- keyblob = m.get_string()
- try:
- key = self.transport._key_info[keytype](Message(keyblob))
-- except SSHException, e:
-+ except SSHException as e:
- self.transport._log(INFO, 'Auth rejected: public key: %s' % str(e))
- key = None
- except:
---- ssh/channel.py.orig 2012-05-05 04:45:50 UTC
-+++ ssh/channel.py
-@@ -607,7 +607,7 @@ class Channel (object):
- """
- try:
- out = self.in_buffer.read(nbytes, self.timeout)
-- except PipeTimeout, e:
-+ except PipeTimeout as e:
- raise socket.timeout()
-
- ack = self._check_add_window(len(out))
-@@ -657,7 +657,7 @@ class Channel (object):
- """
- try:
- out = self.in_stderr_buffer.read(nbytes, self.timeout)
-- except PipeTimeout, e:
-+ except PipeTimeout as e:
- raise socket.timeout()
-
- ack = self._check_add_window(len(out))
---- ssh/client.py.orig 2012-09-10 18:40:40 UTC
-+++ ssh/client.py
-@@ -189,8 +189,8 @@ class SSHClient (object):
- """
- f = open(filename, 'w')
- f.write('# SSH host keys collected by ssh\n')
-- for hostname, keys in self._host_keys.iteritems():
-- for keytype, key in keys.iteritems():
-+ for hostname, keys in self._host_keys.items():
-+ for keytype, key in keys.items():
- f.write('%s %s %s\n' % (hostname, keytype, key.get_base64()))
- f.close()
-
-@@ -326,7 +326,7 @@ class SSHClient (object):
-
- if key_filename is None:
- key_filenames = []
-- elif isinstance(key_filename, (str, unicode)):
-+ elif isinstance(key_filename, str):
- key_filenames = [ key_filename ]
- else:
- key_filenames = key_filename
-@@ -434,7 +434,7 @@ class SSHClient (object):
- two_factor = (allowed_types == ['password'])
- if not two_factor:
- return
-- except SSHException, e:
-+ except SSHException as e:
- saved_exception = e
-
- if not two_factor:
-@@ -448,7 +448,7 @@ class SSHClient (object):
- if not two_factor:
- return
- break
-- except SSHException, e:
-+ except SSHException as e:
- saved_exception = e
-
- if not two_factor and allow_agent:
-@@ -464,7 +464,7 @@ class SSHClient (object):
- if not two_factor:
- return
- break
-- except SSHException, e:
-+ except SSHException as e:
- saved_exception = e
-
- if not two_factor:
-@@ -496,16 +496,16 @@ class SSHClient (object):
- if not two_factor:
- return
- break
-- except SSHException, e:
-+ except SSHException as e:
- saved_exception = e
-- except IOError, e:
-+ except IOError as e:
- saved_exception = e
-
- if password is not None:
- try:
- self._transport.auth_password(username, password)
- return
-- except SSHException, e:
-+ except SSHException as e:
- saved_exception = e
- elif two_factor:
- raise SSHException('Two-factor authentication requires a password')
---- ssh/dsskey.py.orig 2012-04-19 22:17:28 UTC
-+++ ssh/dsskey.py
-@@ -93,7 +93,7 @@ class DSSKey (PKey):
-
- def sign_ssh_data(self, rng, data):
- digest = SHA.new(data).digest()
-- dss = DSA.construct((long(self.y), long(self.g), long(self.p), long(self.q), long(self.x)))
-+ dss = DSA.construct((int(self.y), int(self.g), int(self.p), int(self.q), int(self.x)))
- # generate a suitable k
- qsize = len(util.deflate_long(self.q, 0))
- while True:
-@@ -128,7 +128,7 @@ class DSSKey (PKey):
- sigS = util.inflate_long(sig[20:], 1)
- sigM = util.inflate_long(SHA.new(data).digest(), 1)
-
-- dss = DSA.construct((long(self.y), long(self.g), long(self.p), long(self.q)))
-+ dss = DSA.construct((int(self.y), int(self.g), int(self.p), int(self.q)))
- return dss.verify(sigM, (sigR, sigS))
-
- def _encode_key(self):
-@@ -184,7 +184,7 @@ class DSSKey (PKey):
- # DSAPrivateKey = { version = 0, p, q, g, y, x }
- try:
- keylist = BER(data).decode()
-- except BERException, x:
-+ except BERException as x:
- raise SSHException('Unable to parse key file: ' + str(x))
- if (type(keylist) is not list) or (len(keylist) < 6) or (keylist[0] != 0):
- raise SSHException('not a valid DSA private key file (bad ber encoding)')
---- ssh/hostkeys.py.orig 2012-07-15 23:45:13 UTC
-+++ ssh/hostkeys.py
-@@ -79,7 +79,7 @@ class HostKeyEntry:
- key = DSSKey(data=base64.decodestring(key))
- else:
- return None
-- except binascii.Error, e:
-+ except binascii.Error as e:
- raise InvalidHostKey(line, e)
-
- return cls(names, key)
-@@ -277,7 +277,7 @@ class HostKeys (UserDict.DictMixin):
- if len(entry) == 0:
- self._entries.append(HostKeyEntry([hostname], None))
- return
-- for key_type in entry.keys():
-+ for key_type in list(entry.keys()):
- found = False
- for e in self._entries:
- if (hostname in e.hostnames) and (e.key.get_name() == key_type):
-@@ -298,7 +298,7 @@ class HostKeys (UserDict.DictMixin):
-
- def values(self):
- ret = []
-- for k in self.keys():
-+ for k in list(self.keys()):
- ret.append(self.lookup(k))
- return ret
-
---- ssh/kex_group1.py.orig 2012-04-19 22:17:28 UTC
-+++ ssh/kex_group1.py
-@@ -29,10 +29,10 @@ from ssh.message import Message
- from ssh.ssh_exception import SSHException
-
-
--_MSG_KEXDH_INIT, _MSG_KEXDH_REPLY = range(30, 32)
-+_MSG_KEXDH_INIT, _MSG_KEXDH_REPLY = list(range(30, 32))
-
- # draft-ietf-secsh-transport-09.txt, page 17
--P = 0xFFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381FFFFFFFFFFFFFFFFL
-+P = 0xFFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381FFFFFFFFFFFFFFFF
- G = 2
-
-
-@@ -42,9 +42,9 @@ class KexGroup1(object):
-
- def __init__(self, transport):
- self.transport = transport
-- self.x = 0L
-- self.e = 0L
-- self.f = 0L
-+ self.x = 0
-+ self.e = 0
-+ self.f = 0
-
- def start_kex(self):
- self._generate_x()
---- ssh/message.py.orig 2012-04-19 22:17:28 UTC
-+++ ssh/message.py
-@@ -21,7 +21,7 @@ Implementation of an SSH2 "message".
- """
-
- import struct
--import cStringIO
-+import io
-
- from ssh import util
-
-@@ -46,9 +46,9 @@ class Message (object):
- @type content: string
- """
- if content != None:
-- self.packet = cStringIO.StringIO(content)
-+ self.packet = io.StringIO(content)
- else:
-- self.packet = cStringIO.StringIO()
-+ self.packet = io.StringIO()
-
- def __str__(self):
- """
-@@ -275,8 +275,8 @@ class Message (object):
- return self.add_string(i)
- elif type(i) is int:
- return self.add_int(i)
-- elif type(i) is long:
-- if i > 0xffffffffL:
-+ elif type(i) is int:
-+ if i > 0xffffffff:
- return self.add_mpint(i)
- else:
- return self.add_int(i)
---- ssh/packet.py.orig 2012-09-10 18:40:40 UTC
-+++ ssh/packet.py
-@@ -93,8 +93,8 @@ class Packetizer (object):
- self.__mac_key_in = ''
- self.__compress_engine_out = None
- self.__compress_engine_in = None
-- self.__sequence_number_out = 0L
-- self.__sequence_number_in = 0L
-+ self.__sequence_number_out = 0
-+ self.__sequence_number_in = 0
-
- # lock around outbound writes (packet computation)
- self.__write_lock = threading.RLock()
-@@ -217,7 +217,7 @@ class Packetizer (object):
- n -= len(x)
- except socket.timeout:
- got_timeout = True
-- except socket.error, e:
-+ except socket.error as e:
- # on Linux, sometimes instead of socket.timeout, we get
- # EAGAIN. this is a bug in recent (> 2.6.9) kernels but
- # we need to work around it.
-@@ -246,7 +246,7 @@ class Packetizer (object):
- n = self.__socket.send(out)
- except socket.timeout:
- retry_write = True
-- except socket.error, e:
-+ except socket.error as e:
- if (type(e.args) is tuple) and (len(e.args) > 0) and (e.args[0] == errno.EAGAIN):
- retry_write = True
- elif (type(e.args) is tuple) and (len(e.args) > 0) and (e.args[0] == errno.EINTR):
-@@ -311,7 +311,7 @@ class Packetizer (object):
- if self.__block_engine_out != None:
- payload = struct.pack('>I', self.__sequence_number_out) + packet
- out += compute_hmac(self.__mac_key_out, payload, self.__mac_engine_out)[:self.__mac_size_out]
-- self.__sequence_number_out = (self.__sequence_number_out + 1) & 0xffffffffL
-+ self.__sequence_number_out = (self.__sequence_number_out + 1) & 0xffffffff
- self.write_all(out)
-
- self.__sent_bytes += len(out)
-@@ -371,7 +371,7 @@ class Packetizer (object):
-
- msg = Message(payload[1:])
- msg.seqno = self.__sequence_number_in
-- self.__sequence_number_in = (self.__sequence_number_in + 1) & 0xffffffffL
-+ self.__sequence_number_in = (self.__sequence_number_in + 1) & 0xffffffff
-
- # check for rekey
- raw_packet_size = packet_size + self.__mac_size_in + 4
-@@ -469,7 +469,7 @@ class Packetizer (object):
- break
- except socket.timeout:
- pass
-- except EnvironmentError, e:
-+ except EnvironmentError as e:
- if ((type(e.args) is tuple) and (len(e.args) > 0) and
- (e.args[0] == errno.EINTR)):
- pass
---- ssh/pkey.py.orig 2012-04-19 22:17:28 UTC
-+++ ssh/pkey.py
-@@ -304,7 +304,7 @@ class PKey (object):
- # if we trudged to the end of the file, just try to cope.
- try:
- data = base64.decodestring(''.join(lines[start:end]))
-- except base64.binascii.Error, e:
-+ except base64.binascii.Error as e:
- raise SSHException('base64 decoding error: ' + str(e))
- if 'proc-type' not in headers:
- # unencryped: done
-@@ -346,9 +346,9 @@ class PKey (object):
-
- @raise IOError: if there was an error writing the file.
- """
-- f = open(filename, 'w', 0600)
-+ f = open(filename, 'w', 0o600)
- # grrr... the mode doesn't always take hold
-- os.chmod(filename, 0600)
-+ os.chmod(filename, 0o600)
- self._write_private_key(tag, f, data, password)
- f.close()
-
-@@ -356,7 +356,7 @@ class PKey (object):
- f.write('-----BEGIN %s PRIVATE KEY-----\n' % tag)
- if password is not None:
- # since we only support one cipher here, use it
-- cipher_name = self._CIPHER_TABLE.keys()[0]
-+ cipher_name = list(self._CIPHER_TABLE.keys())[0]
- cipher = self._CIPHER_TABLE[cipher_name]['cipher']
- keysize = self._CIPHER_TABLE[cipher_name]['keysize']
- blocksize = self._CIPHER_TABLE[cipher_name]['blocksize']
---- ssh/server.py.orig 2012-05-06 22:10:09 UTC
-+++ ssh/server.py
-@@ -48,7 +48,7 @@ class InteractiveQuery (object):
- self.instructions = instructions
- self.prompts = []
- for x in prompts:
-- if (type(x) is str) or (type(x) is unicode):
-+ if (type(x) is str) or (type(x) is str):
- self.add_prompt(x)
- else:
- self.add_prompt(x[0], x[1])
-@@ -602,7 +602,7 @@ class SubsystemHandler (threading.Thread):
- try:
- self.__transport._log(DEBUG, 'Starting handler for subsystem %s' % self.__name)
- self.start_subsystem(self.__name, self.__transport, self.__channel)
-- except Exception, e:
-+ except Exception as e:
- self.__transport._log(ERROR, 'Exception in subsystem handler for "%s": %s' %
- (self.__name, str(e)))
- self.__transport._log(ERROR, util.tb_strings())
---- ssh/sftp_attr.py.orig 2012-04-19 22:17:28 UTC
-+++ ssh/sftp_attr.py
-@@ -44,7 +44,7 @@ class SFTPAttributes (object):
- FLAG_UIDGID = 2
- FLAG_PERMISSIONS = 4
- FLAG_AMTIME = 8
-- FLAG_EXTENDED = 0x80000000L
-+ FLAG_EXTENDED = 0x80000000
-
- def __init__(self):
- """
-@@ -139,11 +139,11 @@ class SFTPAttributes (object):
- msg.add_int(self.st_mode)
- if self._flags & self.FLAG_AMTIME:
- # throw away any fractional seconds
-- msg.add_int(long(self.st_atime))
-- msg.add_int(long(self.st_mtime))
-+ msg.add_int(int(self.st_atime))
-+ msg.add_int(int(self.st_mtime))
- if self._flags & self.FLAG_EXTENDED:
- msg.add_int(len(self.attr))
-- for key, val in self.attr.iteritems():
-+ for key, val in self.attr.items():
- msg.add_string(key)
- msg.add_string(val)
- return
-@@ -158,7 +158,7 @@ class SFTPAttributes (object):
- out += 'mode=' + oct(self.st_mode) + ' '
- if (self.st_atime is not None) and (self.st_mtime is not None):
- out += 'atime=%d mtime=%d ' % (self.st_atime, self.st_mtime)
-- for k, v in self.attr.iteritems():
-+ for k, v in self.attr.items():
- out += '"%s"=%r ' % (str(k), v)
- out += ']'
- return out
-@@ -194,13 +194,13 @@ class SFTPAttributes (object):
- ks = 's'
- else:
- ks = '?'
-- ks += self._rwx((self.st_mode & 0700) >> 6, self.st_mode & stat.S_ISUID)
-- ks += self._rwx((self.st_mode & 070) >> 3, self.st_mode & stat.S_ISGID)
-+ ks += self._rwx((self.st_mode & 0o700) >> 6, self.st_mode & stat.S_ISUID)
-+ ks += self._rwx((self.st_mode & 0o70) >> 3, self.st_mode & stat.S_ISGID)
- ks += self._rwx(self.st_mode & 7, self.st_mode & stat.S_ISVTX, True)
- else:
- ks = '?---------'
- # compute display date
-- if (self.st_mtime is None) or (self.st_mtime == 0xffffffffL):
-+ if (self.st_mtime is None) or (self.st_mtime == 0xffffffff):
- # shouldn't really happen
- datestr = '(unknown date)'
- else:
---- ssh/sftp_client.py.orig 2012-08-29 17:56:54 UTC
-+++ ssh/sftp_client.py
-@@ -85,7 +85,7 @@ class SFTPClient (BaseSFTP):
- self.ultra_debug = transport.get_hexdump()
- try:
- server_version = self._send_version()
-- except EOFError, x:
-+ except EOFError as x:
- raise SSHException('EOF during negotiation')
- self._log(INFO, 'Opened sftp connection (server version %d)' % server_version)
-
-@@ -178,7 +178,7 @@ class SFTPClient (BaseSFTP):
- while True:
- try:
- t, msg = self._request(CMD_READDIR, handle)
-- except EOFError, e:
-+ except EOFError as e:
- # done with handle
- break
- if t != CMD_NAME:
-@@ -285,7 +285,7 @@ class SFTPClient (BaseSFTP):
- self._log(DEBUG, 'rename(%r, %r)' % (oldpath, newpath))
- self._request(CMD_RENAME, oldpath, newpath)
-
-- def mkdir(self, path, mode=0777):
-+ def mkdir(self, path, mode=0o777):
- """
- Create a folder (directory) named C{path} with numeric mode C{mode}.
- The default mode is 0777 (octal). On some systems, mode is ignored.
-@@ -369,7 +369,7 @@ class SFTPClient (BaseSFTP):
- """
- dest = self._adjust_cwd(dest)
- self._log(DEBUG, 'symlink(%r, %r)' % (source, dest))
-- if type(source) is unicode:
-+ if type(source) is str:
- source = source.encode('utf-8')
- self._request(CMD_SYMLINK, source, dest)
-
-@@ -643,7 +643,7 @@ class SFTPClient (BaseSFTP):
- for item in arg:
- if isinstance(item, int):
- msg.add_int(item)
-- elif isinstance(item, long):
-+ elif isinstance(item, int):
- msg.add_int64(item)
- elif isinstance(item, str):
- msg.add_string(item)
-@@ -663,7 +663,7 @@ class SFTPClient (BaseSFTP):
- while True:
- try:
- t, data = self._read_packet()
-- except EOFError, e:
-+ except EOFError as e:
- raise SSHException('Server connection dropped: %s' % (str(e),))
- msg = Message(data)
- num = msg.get_int()
-@@ -689,7 +689,7 @@ class SFTPClient (BaseSFTP):
- return (None, None)
-
- def _finish_responses(self, fileobj):
-- while fileobj in self._expecting.values():
-+ while fileobj in list(self._expecting.values()):
- self._read_response()
- fileobj._check_exception()
-
-@@ -716,7 +716,7 @@ class SFTPClient (BaseSFTP):
- Return an adjusted path if we're emulating a "current working
- directory" for the server.
- """
-- if type(path) is unicode:
-+ if type(path) is str:
- path = path.encode('utf-8')
- if self._cwd is None:
- return path
---- ssh/sftp_file.py.orig 2012-08-29 17:56:54 UTC
-+++ ssh/sftp_file.py
-@@ -53,12 +53,12 @@ class SFTPFile (BufferedFile):
- self._saved_exception = None
-
- def __del__(self):
-- self._close(async=True)
-+ self._close(asynchronous=True)
-
- def close(self):
-- self._close(async=False)
-+ self._close(asynchronous=False)
-
-- def _close(self, async=False):
-+ def _close(self, asynchronous=False):
- # We allow double-close without signaling an error, because real
- # Python file objects do. However, we must protect against actually
- # sending multiple CMD_CLOSE packets, because after we close our
-@@ -73,7 +73,7 @@ class SFTPFile (BufferedFile):
- self.sftp._finish_responses(self)
- BufferedFile.close(self)
- try:
-- if async:
-+ if asynchronous:
- # GC'd file handle could be called from an arbitrary thread -- don't wait for a response
- self.sftp._async_request(type(None), CMD_CLOSE, self.handle)
- else:
-@@ -107,7 +107,7 @@ class SFTPFile (BufferedFile):
- return None. this guarantees nothing about the number of bytes
- collected in the prefetch buffer so far.
- """
-- k = [i for i in self._prefetch_data.keys() if i <= offset]
-+ k = [i for i in list(self._prefetch_data.keys()) if i <= offset]
- if len(k) == 0:
- return None
- index = max(k)
-@@ -152,7 +152,7 @@ class SFTPFile (BufferedFile):
- data = self._read_prefetch(size)
- if data is not None:
- return data
-- t, msg = self.sftp._request(CMD_READ, self.handle, long(self._realpos), int(size))
-+ t, msg = self.sftp._request(CMD_READ, self.handle, int(self._realpos), int(size))
- if t != CMD_DATA:
- raise SFTPError('Expected data')
- return msg.get_string()
-@@ -160,7 +160,7 @@ class SFTPFile (BufferedFile):
- def _write(self, data):
- # may write less than requested if it would exceed max packet size
- chunk = min(len(data), self.MAX_REQUEST_SIZE)
-- req = self.sftp._async_request(type(None), CMD_WRITE, self.handle, long(self._realpos), str(data[:chunk]))
-+ req = self.sftp._async_request(type(None), CMD_WRITE, self.handle, int(self._realpos), str(data[:chunk]))
- if not self.pipelined or self.sftp.sock.recv_ready():
- t, msg = self.sftp._read_response(req)
- if t != CMD_STATUS:
-@@ -340,7 +340,7 @@ class SFTPFile (BufferedFile):
- @since: 1.4
- """
- t, msg = self.sftp._request(CMD_EXTENDED, 'check-file', self.handle,
-- hash_algorithm, long(offset), long(length), block_size)
-+ hash_algorithm, int(offset), int(length), block_size)
- ext = msg.get_string()
- alg = msg.get_string()
- data = msg.get_remainder()
-@@ -450,14 +450,14 @@ class SFTPFile (BufferedFile):
- # do these read requests in a temporary thread because there may be
- # a lot of them, so it may block.
- for offset, length in chunks:
-- self.sftp._async_request(self, CMD_READ, self.handle, long(offset), int(length))
-+ self.sftp._async_request(self, CMD_READ, self.handle, int(offset), int(length))
-
- def _async_response(self, t, msg):
- if t == CMD_STATUS:
- # save exception and re-raise it on next file operation
- try:
- self.sftp._convert_status(msg)
-- except Exception, x:
-+ except Exception as x:
- self._saved_exception = x
- return
- if t != CMD_DATA:
---- ssh/sftp_handle.py.orig 2012-04-19 22:17:28 UTC
-+++ ssh/sftp_handle.py
-@@ -100,7 +100,7 @@ class SFTPHandle (object):
- readfile.seek(offset)
- self.__tell = offset
- data = readfile.read(length)
-- except IOError, e:
-+ except IOError as e:
- self.__tell = None
- return SFTPServer.convert_errno(e.errno)
- self.__tell += len(data)
-@@ -139,7 +139,7 @@ class SFTPHandle (object):
- self.__tell = offset
- writefile.write(data)
- writefile.flush()
-- except IOError, e:
-+ except IOError as e:
- self.__tell = None
- return SFTPServer.convert_errno(e.errno)
- if self.__tell is not None:
---- ssh/sftp_server.py.orig 2012-04-19 22:17:28 UTC
-+++ ssh/sftp_server.py
-@@ -92,7 +92,7 @@ class SFTPServer (BaseSFTP, SubsystemHandler):
- except EOFError:
- self._log(DEBUG, 'EOF -- end of session')
- return
-- except Exception, e:
-+ except Exception as e:
- self._log(DEBUG, 'Exception on channel: ' + str(e))
- self._log(DEBUG, util.tb_strings())
- return
-@@ -100,7 +100,7 @@ class SFTPServer (BaseSFTP, SubsystemHandler):
- request_number = msg.get_int()
- try:
- self._process(t, request_number, msg)
-- except Exception, e:
-+ except Exception as e:
- self._log(DEBUG, 'Exception in server processing: ' + str(e))
- self._log(DEBUG, util.tb_strings())
- # send some kind of failure message, at least
-@@ -113,9 +113,9 @@ class SFTPServer (BaseSFTP, SubsystemHandler):
- self.server.session_ended()
- super(SFTPServer, self).finish_subsystem()
- # close any file handles that were left open (so we can return them to the OS quickly)
-- for f in self.file_table.itervalues():
-+ for f in self.file_table.values():
- f.close()
-- for f in self.folder_table.itervalues():
-+ for f in self.folder_table.values():
- f.close()
- self.file_table = {}
- self.folder_table = {}
-@@ -179,7 +179,7 @@ class SFTPServer (BaseSFTP, SubsystemHandler):
- for item in arg:
- if type(item) is int:
- msg.add_int(item)
-- elif type(item) is long:
-+ elif type(item) is int:
- msg.add_int64(item)
- elif type(item) is str:
- msg.add_string(item)
---- ssh/transport.py.orig 2012-09-13 23:42:52 UTC
-+++ ssh/transport.py
-@@ -110,8 +110,8 @@ class SecurityOptions (object):
- x = tuple(x)
- if type(x) is not tuple:
- raise TypeError('expected tuple or list')
-- possible = getattr(self._transport, orig).keys()
-- forbidden = filter(lambda n: n not in possible, x)
-+ possible = list(getattr(self._transport, orig).keys())
-+ forbidden = [n for n in x if n not in possible]
- if len(forbidden) > 0:
- raise ValueError('unknown cipher')
- setattr(self._transport, name, x)
-@@ -175,7 +175,7 @@ class ChannelMap (object):
- def values(self):
- self._lock.acquire()
- try:
-- return self._map.values()
-+ return list(self._map.values())
- finally:
- self._lock.release()
-
-@@ -273,7 +273,7 @@ class Transport (threading.Thread):
- @param sock: a socket or socket-like object to create the session over.
- @type sock: socket
- """
-- if isinstance(sock, (str, unicode)):
-+ if isinstance(sock, str):
- # convert "host:port" into (host, port)
- hl = sock.split(':', 1)
- if len(hl) == 1:
-@@ -291,7 +291,7 @@ class Transport (threading.Thread):
- sock = socket.socket(af, socket.SOCK_STREAM)
- try:
- retry_on_signal(lambda: sock.connect((hostname, port)))
-- except socket.error, e:
-+ except socket.error as e:
- reason = str(e)
- else:
- break
-@@ -373,7 +373,7 @@ class Transport (threading.Thread):
-
- @rtype: str
- """
-- out = '<ssh.Transport at %s' % hex(long(id(self)) & 0xffffffffL)
-+ out = '<ssh.Transport at %s' % hex(int(id(self)) & 0xffffffff)
- if not self.active:
- out += ' (unconnected)'
- else:
-@@ -616,7 +616,7 @@ class Transport (threading.Thread):
- self.active = False
- self.packetizer.close()
- self.join()
-- for chan in self._channels.values():
-+ for chan in list(self._channels.values()):
- chan._unlink()
-
- def get_remote_server_key(self):
-@@ -690,7 +690,7 @@ class Transport (threading.Thread):
- """
- return self.open_channel('auth-agent@openssh.com')
-
-- def open_forwarded_tcpip_channel(self, (src_addr, src_port), (dest_addr, dest_port)):
-+ def open_forwarded_tcpip_channel(self, xxx_todo_changeme3, xxx_todo_changeme4):
- """
- Request a new channel back to the client, of type C{"forwarded-tcpip"}.
- This is used after a client has requested port forwarding, for sending
-@@ -701,6 +701,8 @@ class Transport (threading.Thread):
- @param dest_addr: local (server) connected address
- @param dest_port: local (server) connected port
- """
-+ (src_addr, src_port) = xxx_todo_changeme3
-+ (dest_addr, dest_port) = xxx_todo_changeme4
- return self.open_channel('forwarded-tcpip', (dest_addr, dest_port), (src_addr, src_port))
-
- def open_channel(self, kind, dest_addr=None, src_addr=None):
-@@ -810,7 +812,9 @@ class Transport (threading.Thread):
- if port == 0:
- port = response.get_int()
- if handler is None:
-- def default_handler(channel, (src_addr, src_port), (dest_addr, dest_port)):
-+ def default_handler(channel, xxx_todo_changeme, xxx_todo_changeme1):
-+ (src_addr, src_port) = xxx_todo_changeme
-+ (dest_addr, dest_port) = xxx_todo_changeme1
- self._queue_incoming_channel(channel)
- handler = default_handler
- self._tcp_handler = handler
-@@ -1180,7 +1184,7 @@ class Transport (threading.Thread):
- return []
- try:
- return self.auth_handler.wait_for_response(my_event)
-- except BadAuthenticationType, x:
-+ except BadAuthenticationType as x:
- # if password auth isn't allowed, but keyboard-interactive *is*, try to fudge it
- if not fallback or ('keyboard-interactive' not in x.allowed_types):
- raise
-@@ -1196,7 +1200,7 @@ class Transport (threading.Thread):
- return []
- return [ password ]
- return self.auth_interactive(username, handler)
-- except SSHException, ignored:
-+ except SSHException as ignored:
- # attempt failed; just raise the original exception
- raise x
- return None
-@@ -1510,7 +1514,8 @@ class Transport (threading.Thread):
- # only called if a channel has turned on x11 forwarding
- if handler is None:
- # by default, use the same mechanism as accept()
-- def default_handler(channel, (src_addr, src_port)):
-+ def default_handler(channel, xxx_todo_changeme2):
-+ (src_addr, src_port) = xxx_todo_changeme2
- self._queue_incoming_channel(channel)
- self._x11_handler = default_handler
- else:
-@@ -1541,9 +1546,9 @@ class Transport (threading.Thread):
- # active=True occurs before the thread is launched, to avoid a race
- _active_threads.append(self)
- if self.server_mode:
-- self._log(DEBUG, 'starting thread (server mode): %s' % hex(long(id(self)) & 0xffffffffL))
-+ self._log(DEBUG, 'starting thread (server mode): %s' % hex(int(id(self)) & 0xffffffff))
- else:
-- self._log(DEBUG, 'starting thread (client mode): %s' % hex(long(id(self)) & 0xffffffffL))
-+ self._log(DEBUG, 'starting thread (client mode): %s' % hex(int(id(self)) & 0xffffffff))
- try:
- try:
- self.packetizer.write_all(self.local_version + '\r\n')
-@@ -1597,27 +1602,27 @@ class Transport (threading.Thread):
- msg.add_byte(chr(MSG_UNIMPLEMENTED))
- msg.add_int(m.seqno)
- self._send_message(msg)
-- except SSHException, e:
-+ except SSHException as e:
- self._log(ERROR, 'Exception: ' + str(e))
- self._log(ERROR, util.tb_strings())
- self.saved_exception = e
-- except EOFError, e:
-+ except EOFError as e:
- self._log(DEBUG, 'EOF in transport thread')
- #self._log(DEBUG, util.tb_strings())
- self.saved_exception = e
-- except socket.error, e:
-+ except socket.error as e:
- if type(e.args) is tuple:
- emsg = '%s (%d)' % (e.args[1], e.args[0])
- else:
- emsg = e.args
- self._log(ERROR, 'Socket exception: ' + emsg)
- self.saved_exception = e
-- except Exception, e:
-+ except Exception as e:
- self._log(ERROR, 'Unknown exception: ' + str(e))
- self._log(ERROR, util.tb_strings())
- self.saved_exception = e
- _active_threads.remove(self)
-- for chan in self._channels.values():
-+ for chan in list(self._channels.values()):
- chan._unlink()
- if self.active:
- self.active = False
-@@ -1626,7 +1631,7 @@ class Transport (threading.Thread):
- self.completion_event.set()
- if self.auth_handler is not None:
- self.auth_handler.abort()
-- for event in self.channel_events.values():
-+ for event in list(self.channel_events.values()):
- event.set()
- try:
- self.lock.acquire()
-@@ -1670,7 +1675,7 @@ class Transport (threading.Thread):
- timeout = 2
- try:
- buf = self.packetizer.readline(timeout)
-- except Exception, x:
-+ except Exception as x:
- raise SSHException('Error reading SSH protocol banner' + str(x))
- if buf[:4] == 'SSH-':
- break
-@@ -1712,8 +1717,8 @@ class Transport (threading.Thread):
- pkex = list(self.get_security_options().kex)
- pkex.remove('diffie-hellman-group-exchange-sha1')
- self.get_security_options().kex = pkex
-- available_server_keys = filter(self.server_key_dict.keys().__contains__,
-- self._preferred_keys)
-+ available_server_keys = list(filter(list(self.server_key_dict.keys()).__contains__,
-+ self._preferred_keys))
- else:
- available_server_keys = self._preferred_keys
-
-@@ -1765,19 +1770,19 @@ class Transport (threading.Thread):
- # as a server, we pick the first item in the client's list that we support.
- # as a client, we pick the first item in our list that the server supports.
- if self.server_mode:
-- agreed_kex = filter(self._preferred_kex.__contains__, kex_algo_list)
-+ agreed_kex = list(filter(self._preferred_kex.__contains__, kex_algo_list))
- else:
-- agreed_kex = filter(kex_algo_list.__contains__, self._preferred_kex)
-+ agreed_kex = list(filter(kex_algo_list.__contains__, self._preferred_kex))
- if len(agreed_kex) == 0:
- raise SSHException('Incompatible ssh peer (no acceptable kex algorithm)')
- self.kex_engine = self._kex_info[agreed_kex[0]](self)
-
- if self.server_mode:
-- available_server_keys = filter(self.server_key_dict.keys().__contains__,
-- self._preferred_keys)
-- agreed_keys = filter(available_server_keys.__contains__, server_key_algo_list)
-+ available_server_keys = list(filter(list(self.server_key_dict.keys()).__contains__,
-+ self._preferred_keys))
-+ agreed_keys = list(filter(available_server_keys.__contains__, server_key_algo_list))
- else:
-- agreed_keys = filter(server_key_algo_list.__contains__, self._preferred_keys)
-+ agreed_keys = list(filter(server_key_algo_list.__contains__, self._preferred_keys))
- if len(agreed_keys) == 0:
- raise SSHException('Incompatible ssh peer (no acceptable host key)')
- self.host_key_type = agreed_keys[0]
-@@ -1785,15 +1790,15 @@ class Transport (threading.Thread):
- raise SSHException('Incompatible ssh peer (can\'t match requested host key type)')
-
- if self.server_mode:
-- agreed_local_ciphers = filter(self._preferred_ciphers.__contains__,
-- server_encrypt_algo_list)
-- agreed_remote_ciphers = filter(self._preferred_ciphers.__contains__,
-- client_encrypt_algo_list)
-+ agreed_local_ciphers = list(filter(self._preferred_ciphers.__contains__,
-+ server_encrypt_algo_list))
-+ agreed_remote_ciphers = list(filter(self._preferred_ciphers.__contains__,
-+ client_encrypt_algo_list))
- else:
-- agreed_local_ciphers = filter(client_encrypt_algo_list.__contains__,
-- self._preferred_ciphers)
-- agreed_remote_ciphers = filter(server_encrypt_algo_list.__contains__,
-- self._preferred_ciphers)
-+ agreed_local_ciphers = list(filter(client_encrypt_algo_list.__contains__,
-+ self._preferred_ciphers))
-+ agreed_remote_ciphers = list(filter(server_encrypt_algo_list.__contains__,
-+ self._preferred_ciphers))
- if (len(agreed_local_ciphers) == 0) or (len(agreed_remote_ciphers) == 0):
- raise SSHException('Incompatible ssh server (no acceptable ciphers)')
- self.local_cipher = agreed_local_ciphers[0]
-@@ -1801,22 +1806,22 @@ class Transport (threading.Thread):
- self._log(DEBUG, 'Ciphers agreed: local=%s, remote=%s' % (self.local_cipher, self.remote_cipher))
-
- if self.server_mode:
-- agreed_remote_macs = filter(self._preferred_macs.__contains__, client_mac_algo_list)
-- agreed_local_macs = filter(self._preferred_macs.__contains__, server_mac_algo_list)
-+ agreed_remote_macs = list(filter(self._preferred_macs.__contains__, client_mac_algo_list))
-+ agreed_local_macs = list(filter(self._preferred_macs.__contains__, server_mac_algo_list))
- else:
-- agreed_local_macs = filter(client_mac_algo_list.__contains__, self._preferred_macs)
-- agreed_remote_macs = filter(server_mac_algo_list.__contains__, self._preferred_macs)
-+ agreed_local_macs = list(filter(client_mac_algo_list.__contains__, self._preferred_macs))
-+ agreed_remote_macs = list(filter(server_mac_algo_list.__contains__, self._preferred_macs))
- if (len(agreed_local_macs) == 0) or (len(agreed_remote_macs) == 0):
- raise SSHException('Incompatible ssh server (no acceptable macs)')
- self.local_mac = agreed_local_macs[0]
- self.remote_mac = agreed_remote_macs[0]
-
- if self.server_mode:
-- agreed_remote_compression = filter(self._preferred_compression.__contains__, client_compress_algo_list)
-- agreed_local_compression = filter(self._preferred_compression.__contains__, server_compress_algo_list)
-+ agreed_remote_compression = list(filter(self._preferred_compression.__contains__, client_compress_algo_list))
-+ agreed_local_compression = list(filter(self._preferred_compression.__contains__, server_compress_algo_list))
- else:
-- agreed_local_compression = filter(client_compress_algo_list.__contains__, self._preferred_compression)
-- agreed_remote_compression = filter(server_compress_algo_list.__contains__, self._preferred_compression)
-+ agreed_local_compression = list(filter(client_compress_algo_list.__contains__, self._preferred_compression))
-+ agreed_remote_compression = list(filter(server_compress_algo_list.__contains__, self._preferred_compression))
- if (len(agreed_local_compression) == 0) or (len(agreed_remote_compression) == 0):
- raise SSHException('Incompatible ssh server (no acceptable compression) %r %r %r' % (agreed_local_compression, agreed_remote_compression, self._preferred_compression))
- self.local_compression = agreed_local_compression[0]
---- ssh/util.py.orig 2012-09-10 18:40:40 UTC
-+++ ssh/util.py
-@@ -20,8 +20,8 @@
- Useful functions used by the rest of ssh.
- """
-
--from __future__ import generators
-
-+
- import array
- from binascii import hexlify, unhexlify
- import errno
-@@ -48,7 +48,7 @@ if sys.version_info < (2,3):
-
- def inflate_long(s, always_positive=False):
- "turns a normalized byte string into a long-int (adapted from Crypto.Util.number)"
-- out = 0L
-+ out = 0
- negative = 0
- if not always_positive and (len(s) > 0) and (ord(s[0]) >= 0x80):
- negative = 1
-@@ -60,16 +60,16 @@ def inflate_long(s, always_positive=False):
- for i in range(0, len(s), 4):
- out = (out << 32) + struct.unpack('>I', s[i:i+4])[0]
- if negative:
-- out -= (1L << (8 * len(s)))
-+ out -= (1 << (8 * len(s)))
- return out
-
- def deflate_long(n, add_sign_padding=True):
- "turns a long-int into a normalized byte string (adapted from Crypto.Util.number)"
- # after much testing, this algorithm was deemed to be the fastest
- s = ''
-- n = long(n)
-+ n = int(n)
- while (n != 0) and (n != -1):
-- s = struct.pack('>I', n & 0xffffffffL) + s
-+ s = struct.pack('>I', n & 0xffffffff) + s
- n = n >> 32
- # strip off leading zeros, FFs
- for i in enumerate(s):
-@@ -276,13 +276,13 @@ def retry_on_signal(function):
- while True:
- try:
- return function()
-- except EnvironmentError, e:
-+ except EnvironmentError as e:
- if e.errno != errno.EINTR:
- raise
-
- class Counter (object):
- """Stateful counter for CTR mode crypto"""
-- def __init__(self, nbits, initial_value=1L, overflow=0L):
-+ def __init__(self, nbits, initial_value=1, overflow=0):
- self.blocksize = nbits / 8
- self.overflow = overflow
- # start with value - 1 so we don't have to store intermediate values when counting
-@@ -306,6 +306,6 @@ class Counter (object):
- self.value = array.array('c', '\x00' * (self.blocksize - len(x)) + x)
- return self.value.tostring()
-
-- def new(cls, nbits, initial_value=1L, overflow=0L):
-+ def new(cls, nbits, initial_value=1, overflow=0):
- return cls(nbits, initial_value=initial_value, overflow=overflow)
- new = classmethod(new)
diff --git a/security/py-ssh/files/patch-setup.py b/security/py-ssh/files/patch-setup.py
deleted file mode 100644
index 626cde9d4886..000000000000
--- a/security/py-ssh/files/patch-setup.py
+++ /dev/null
@@ -1,10 +0,0 @@
---- setup.py.orig 2012-09-14 19:01:37 UTC
-+++ setup.py
-@@ -38,7 +38,6 @@ import sys
- try:
- from setuptools import setup
- kw = {
-- 'install_requires': 'pycrypto >= 2.1, != 2.4',
- }
- except ImportError:
- from distutils.core import setup
diff --git a/security/py-ssh/pkg-descr b/security/py-ssh/pkg-descr
deleted file mode 100644
index 522df45ada1d..000000000000
--- a/security/py-ssh/pkg-descr
+++ /dev/null
@@ -1,6 +0,0 @@
-This is a library for making SSH2 connections (client or server). Emphasis is
-on using SSH2 as an alternative to SSL for making secure connections between
-python scripts. All major ciphers and hash methods are supported. SFTP client
-and server mode are both supported too.
-
-WWW: https://pypi.org/project/ssh/