This is an automated email from the git hooks/post-receive script. x2go pushed a change to branch master in repository python-x2go. from 4f03a83 Check availability of X2Go KDrive base support server-side before firing up x2gokdriveclient. new 4cf1023 x2go/_paramiko.py: Monkey-patch PKey._write_private_key() method as it is broken under Python3. The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Summary of changes: debian/changelog | 3 +++ x2go/_paramiko.py | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/python-x2go.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository python-x2go. commit 4cf1023d3c0cb1a6bb7d54bc4d990b6cfaf8f2ba Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Fri Dec 27 14:27:07 2019 +0000 x2go/_paramiko.py: Monkey-patch PKey._write_private_key() method as it is broken under Python3. --- debian/changelog | 3 +++ x2go/_paramiko.py | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/debian/changelog b/debian/changelog index 828f991..b2fb6ac 100644 --- a/debian/changelog +++ b/debian/changelog @@ -7,6 +7,9 @@ python-x2go (0.6.1.3-0x2go1) UNRELEASED; urgency=medium needs an assignment. - Check availability of X2Go KDrive base support server-side before firing up x2gokdriveclient. + - x2go/_paramiko.py: Monkey-patch PKey._write_private_key() method as + it is broken under Python3. + See: https://github.com/paramiko/paramiko/pull/1583/ -- X2Go Release Manager <git-admin@x2go.org> Thu, 26 Dec 2019 10:37:02 +0100 diff --git a/x2go/_paramiko.py b/x2go/_paramiko.py index c3f1d3b..c2e31e8 100644 --- a/x2go/_paramiko.py +++ b/x2go/_paramiko.py @@ -27,6 +27,7 @@ __name__ = 'x2go._paramiko' import paramiko import re +import sys try: from paramiko.config import SSH_PORT except ImportError: @@ -34,6 +35,8 @@ except ImportError: import platform from x2go.utils import compare_versions +from cryptography.hazmat.primitives import serialization + PARAMIKO_VERSION = paramiko.__version__.split()[0] PARAMIKO_FEATURE = { 'forward-ssh-agent': compare_versions(PARAMIKO_VERSION, ">=", '1.8.0') and (platform.system() != "Windows"), @@ -42,8 +45,36 @@ PARAMIKO_FEATURE = { 'host-entries-reloadable': compare_versions(PARAMIKO_VERSION, ">=", '1.11.0'), 'preserve-known-hosts': compare_versions(PARAMIKO_VERSION, ">=", '1.11.0'), 'ecdsa-hostkeys': compare_versions(PARAMIKO_VERSION, ">=", '1.11.6'), + 'write-private-key-py3': False, } +def _Pkey_write_private_key(self, f, key, format, password=None): + """\ + See https://github.com/paramiko/paramiko/pull/1583/ + + The upstream version has a bug when run under Python3. + + Monkey patching it until it has been fixed upstream. + + """ + if password is None: + encryption = serialization.NoEncryption() + else: + encryption = serialization.BestAvailableEncryption(b(password)) + + if sys.version_info[0] == 2: + f.write( + key.private_bytes( + serialization.Encoding.PEM, format, encryption + ) + ).decode() + else: + f.write( + key.private_bytes( + serialization.Encoding.PEM, format, encryption + ) + ) + def _SSHClient_save_host_keys(self, filename): """\ Available since paramiko 1.11.0... @@ -147,3 +178,5 @@ def monkey_patch_paramiko(): paramiko.hostkeys.HostKeys.load = _HostKeys_load if not PARAMIKO_FEATURE['hash-host-entries']: paramiko.hostkeys.HostKeys.add = _HostKeys_add + if not PARAMIKO_FEATURE['write-private-key-py3']: + paramiko.pkey.PKey._write_private_key = _Pkey_write_private_key -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/python-x2go.git