Philipp Hörist pushed to branch master at gajim / gajim
Commits:
a2785ba3 by Philipp Hörist at 2017-04-12T22:39:55+02:00
Add version check for python-gnupg
- - - - -
78b562f7 by Philipp Hörist at 2017-04-12T22:50:02+02:00
Make PGP encoding configurable
python-gnupg uses latin1 as default encoding because GPG itself uses
latin1 as default.
We should not override this default with getpreferredencoding, because
getpreferredencoding maybe returns something else than what GPG is configured
on that system.
Example: On Windows
GPG is run in default mode with 'latin1'
getpreferredencoding returns 'cp1252'
The approach would be now to default to latin1 as it is GPGs default.
And if the User sets a different ecoding for GPG he has to set it in
Gajim aswell.
- - - - -
3 changed files:
- src/common/config.py
- src/common/gajim.py
- src/common/gpg.py
Changes:
=====================================
src/common/config.py
=====================================
--- a/src/common/config.py
+++ b/src/common/config.py
@@ -315,6 +315,7 @@ class Config:
'positive_184_ack': [ opt_bool, False, _('If enabled, Gajim will
show an icon to show that sent message has been received by your contact')],
'show_avatar_in_tabs': [ opt_bool, False, _('Show a mini avatar in
chat window tabs and in window icon')],
'use_keyring': [opt_bool, True, _('If True, Gajim will use the
Systems Keyring to store account passwords.')],
+ 'pgp_encoding': [ opt_str, '', _('Sets the encoding used by
python-gnupg'), True],
}, {})
__options_per_key = {
=====================================
src/common/gajim.py
=====================================
--- a/src/common/gajim.py
+++ b/src/common/gajim.py
@@ -32,6 +32,7 @@ import logging
import locale
import gi
import uuid
+from distutils.version import LooseVersion as V
from common import config
import nbxmpp
@@ -165,7 +166,19 @@ except ImportError:
HAVE_GPG = True
GPG_BINARY = 'gpg'
try:
- __import__('gnupg')
+ import gnupg
+ '''
+ We need https://pypi.python.org/pypi/python-gnupg
+ but https://pypi.python.org/pypi/gnupg shares the same package name.
+ It cannot be used as a drop-in replacement.
+ We test with a version check if python-gnupg is installed as it is
+ on a much lower version number than gnupg
+ Also we need at least python-gnupg 0.3.8
+ '''
+ v_gnupg = gnupg.__version__
+ if V(v_gnupg) < V('0.3.8') or V(v_gnupg) > V('1.0.0'):
+ log.info('Gajim needs python-gnupg >= 0.3.8')
+ HAVE_GPG = False
except ImportError:
HAVE_GPG = False
else:
=====================================
src/common/gpg.py
=====================================
--- a/src/common/gpg.py
+++ b/src/common/gpg.py
@@ -22,9 +22,10 @@
## along with Gajim. If not, see <http://www.gnu.org/licenses/>.
##
-from common.gajim import HAVE_GPG, GPG_BINARY
import os
import logging
+from common import gajim
+from common.gajim import HAVE_GPG, GPG_BINARY
if HAVE_GPG:
import gnupg
@@ -33,7 +34,9 @@ if HAVE_GPG:
class GnuPG(gnupg.GPG):
def __init__(self, use_agent=False):
gnupg.GPG.__init__(self, gpgbinary=GPG_BINARY)
- self.encoding = 'utf-8'
+ encoding = gajim.config.get('pgp_encoding')
+ if encoding:
+ self.encoding = encoding
self.decode_errors = 'replace'
self.passphrase = None
self.use_agent = use_agent
View it on GitLab:
https://dev.gajim.org/gajim/gajim/compare/a51ea32dc63d716d9fb1461cd96159cc894c3a32...78b562f7a53770e2fc895e9e9833d202cd759d69
_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits