GPG is now optional
This commit is contained in:
parent
c4f47e9de6
commit
2e6c33719c
3 changed files with 171 additions and 159 deletions
38
core/core.py
38
core/core.py
|
@ -22,8 +22,6 @@ import sys, os, time, string, logging
|
|||
import common.hub, common.optparser
|
||||
import common.jabber
|
||||
import socket, select, pickle
|
||||
import GnuPGInterface
|
||||
|
||||
|
||||
from common import i18n
|
||||
_ = i18n._
|
||||
|
@ -48,6 +46,12 @@ def XMLunescape(txt):
|
|||
txt = txt.replace("&", "&")
|
||||
return txt
|
||||
|
||||
USE_GPG = 1
|
||||
try:
|
||||
import GnuPGInterface
|
||||
except:
|
||||
USE_GPG = 0
|
||||
else:
|
||||
class MyGnuPG(GnuPGInterface.GnuPG):
|
||||
def __init__(self):
|
||||
GnuPGInterface.GnuPG.__init__(self)
|
||||
|
@ -220,10 +224,12 @@ class GajimCore:
|
|||
#connexions {con: name, ...}
|
||||
self.connexions = {}
|
||||
self.gpg = {}
|
||||
if USE_GPG:
|
||||
self.gpg_common = MyGnuPG()
|
||||
for a in self.accounts:
|
||||
self.connected[a] = 0 #0:offline, 1:online, 2:away,
|
||||
#3:xa, 4:dnd, 5:invisible
|
||||
if USE_GPG:
|
||||
self.gpg[a] = MyGnuPG()
|
||||
self.myVCardID = []
|
||||
self.loadPlugins(self.cfgParser.tab['Core']['modules'])
|
||||
|
@ -344,7 +350,7 @@ class GajimCore:
|
|||
if xtag.getNamespace() == common.jabber.NS_XENCRYPTED:
|
||||
encTag = xtag
|
||||
break
|
||||
if encTag:
|
||||
if encTag and USE_GPG:
|
||||
#decrypt
|
||||
encmsg = encTag.getData()
|
||||
keyID = ''
|
||||
|
@ -382,7 +388,7 @@ class GajimCore:
|
|||
if xtag.getNamespace() == common.jabber.NS_XSIGNED:
|
||||
sigTag = xtag
|
||||
break
|
||||
if sigTag:
|
||||
if sigTag and USE_GPG:
|
||||
#verify
|
||||
sigmsg = sigTag.getData()
|
||||
keyID = self.gpg[self.connexions[con]].verify(status, sigmsg)
|
||||
|
@ -523,9 +529,8 @@ class GajimCore:
|
|||
self.hub.sendPlugin('WARNING', None, _("Couldn't connect to %s : %s") \
|
||||
% (hostname, e))
|
||||
return 0
|
||||
except:
|
||||
sys.exc_info()[1][0]
|
||||
sys.exc_info()[1][1]
|
||||
# except:
|
||||
# print sys.exc_info()[1]
|
||||
else:
|
||||
log.debug("Connected to server")
|
||||
|
||||
|
@ -567,7 +572,7 @@ class GajimCore:
|
|||
def request_infos(self, account, con, jid):
|
||||
identities, features = con.discoverInfo(jid)
|
||||
if not identities:
|
||||
identities, features, items = con.browseAgent(jid)
|
||||
identities, features, items = con.browseAgents(jid)
|
||||
else:
|
||||
items = con.discoverItems(jid)
|
||||
self.hub.sendPlugin('AGENT_INFO', account, (jid, identities, features, items))
|
||||
|
@ -619,11 +624,12 @@ class GajimCore:
|
|||
for item in ev[2][2].keys():
|
||||
if not config.has_key(item):
|
||||
config[item] = ev[2][2][item]
|
||||
self.hub.sendPlugin('CONFIG', None, (ev[2][0], config))
|
||||
else:
|
||||
self.cfgParser.tab[ev[2][1]] = ev[2][2]
|
||||
config = ev[2][2]
|
||||
self.cfgParser.tab[ev[2][1]] = config
|
||||
self.cfgParser.writeCfgFile()
|
||||
self.hub.sendPlugin('CONFIG', None, (ev[2][0], ev[2][2]))
|
||||
config['usegpg'] = USE_GPG
|
||||
self.hub.sendPlugin('CONFIG', None, (ev[2][0], config))
|
||||
#('CONFIG', account, (section, config))
|
||||
elif ev[0] == 'CONFIG':
|
||||
if ev[2][0] == 'accounts':
|
||||
|
@ -642,7 +648,7 @@ class GajimCore:
|
|||
self.cfgParser.tab[a] = ev[2][1][a]
|
||||
if not a in self.connected.keys():
|
||||
self.connected[a] = 0
|
||||
if not self.gpg.has_key(a):
|
||||
if not self.gpg.has_key(a) and USE_GPG:
|
||||
self.gpg[a] = MyGnuPG()
|
||||
else:
|
||||
self.cfgParser.tab[ev[2][0]] = ev[2][1]
|
||||
|
@ -658,7 +664,7 @@ class GajimCore:
|
|||
keyID = ''
|
||||
if self.cfgParser.tab[ev[1]].has_key("keyid"):
|
||||
keyID = self.cfgParser.tab[ev[1]]["keyid"]
|
||||
if keyID:
|
||||
if keyID and USE_GPG:
|
||||
signed = self.gpg[ev[1]].sign(msg, keyID)
|
||||
if signed == 'BAD_PASSPHRASE':
|
||||
signed = ''
|
||||
|
@ -709,7 +715,7 @@ class GajimCore:
|
|||
elif ev[0] == 'MSG':
|
||||
msgtxt = ev[2][1]
|
||||
msgenc = ''
|
||||
if ev[2][2]:
|
||||
if ev[2][2] and USE_GPG:
|
||||
#encrypt
|
||||
msgenc = self.gpg[ev[1]].encrypt(ev[2][1], [ev[2][2]])
|
||||
if msgenc: msgtxt = '[this message is encrypted]'
|
||||
|
@ -766,7 +772,6 @@ class GajimCore:
|
|||
groups=ev[2][2])
|
||||
#('REQ_AGENTS', account, ())
|
||||
elif ev[0] == 'REQ_AGENTS':
|
||||
# agents = con.requestAgents()
|
||||
#do we need that ?
|
||||
#con.discoverInfo('jabber.lagaule.org')
|
||||
agents = con.discoverItems('jabber.lagaule.org')
|
||||
|
@ -810,6 +815,7 @@ class GajimCore:
|
|||
elif ev[0] == 'ACC_CHG':
|
||||
self.connected[ev[2]] = self.connected[ev[1]]
|
||||
del self.connected[ev[1]]
|
||||
if USE_GPG:
|
||||
self.gpg[ev[2]] = self.gpg[ev[1]]
|
||||
del self.gpg[ev[1]]
|
||||
if con:
|
||||
|
@ -891,8 +897,10 @@ class GajimCore:
|
|||
'available', show=ev[2][2], status = ev[2][3]))
|
||||
#('PASSPHRASE', account, passphrase)
|
||||
elif ev[0] == 'PASSPHRASE':
|
||||
if USE_GPG:
|
||||
self.gpg[ev[1]].passphrase = ev[2]
|
||||
elif ev[0] == 'GPG_SECRETE_KEYS':
|
||||
if USE_GPG:
|
||||
keys = self.gpg_common.get_secret_keys()
|
||||
self.hub.sendPlugin('GPG_SECRETE_KEYS', ev[1], keys)
|
||||
else:
|
||||
|
|
|
@ -423,8 +423,11 @@ class accountPreference_Window:
|
|||
if infos.has_key('proxyport'):
|
||||
self.xml.get_widget("entry_proxyport").set_text(str(\
|
||||
infos['proxyport']))
|
||||
if infos.has_key('keyid'):
|
||||
if infos['keyid']:
|
||||
if not infos.has_key('usegpg'):
|
||||
self.xml.get_widget('gpg_key_label').set_text('GPG is not usable on this computer')
|
||||
self.xml.get_widget('gpg_choose_key_button').set_sensitive(False)
|
||||
if infos.has_key('keyid') and infos.has_key('usegpg'):
|
||||
if infos['keyid'] and infos['usegpg']:
|
||||
self.xml.get_widget('gpg_key_label').set_text(infos['keyid'])
|
||||
if infos.has_key('keyname'):
|
||||
self.xml.get_widget('gpg_name_label').set_text(infos['keyname'])
|
||||
|
|
|
@ -1355,7 +1355,8 @@ class roster_Window:
|
|||
save_gpg_pass = self.plugin.accounts[account]["savegpgpass"]
|
||||
if self.plugin.accounts[account].has_key("keyid"):
|
||||
keyid = self.plugin.accounts[account]["keyid"]
|
||||
if keyid and not self.plugin.connected[account]:
|
||||
if keyid and not self.plugin.connected[account] and \
|
||||
self.plugin.config['usegpg']:
|
||||
if save_gpg_pass:
|
||||
passphrase = self.plugin.accounts[account]['gpgpass']
|
||||
else:
|
||||
|
|
Loading…
Add table
Reference in a new issue