summaryrefslogtreecommitdiff
path: root/plugins/otr.py
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/otr.py')
-rw-r--r--plugins/otr.py16
1 files changed, 14 insertions, 2 deletions
diff --git a/plugins/otr.py b/plugins/otr.py
index e7210869..e7762fcd 100644
--- a/plugins/otr.py
+++ b/plugins/otr.py
@@ -180,6 +180,13 @@ class PoezioAccount(Account):
except:
log.error('Error in load_privkey', exc_info=True)
+ def drop_privkey(self):
+ try:
+ os.remove(self.key_dir + '.key3')
+ except:
+ log.exception('Error in drop_privkey (removing %s)', self.key_dir + '.key3')
+ self.privkey = None
+
def save_privkey(self):
try:
with open(self.key_dir + '.key3', 'xb') as keyfile:
@@ -368,8 +375,13 @@ class Plugin(BasePlugin):
if tab.get_name() in self.contexts:
ctx = self.contexts[tab.get_name()]
self.api.information('The key fingerprint for %s is %s' % (name, ctx.getCurrentKey()) , 'OTR')
+ elif arg == 'drop':
+ # drop the privkey (and obviously, end the current conversations before that)
+ for context in self.contexts.values():
+ if context.state not in (STATE_FINISHED, STATE_PLAINTEXT):
+ context.disconnect()
+ self.account.drop_privkey()
def completion_otr(self, the_input):
- return the_input.new_completion(['start', 'fpr', 'ourfpr', 'refresh', 'end'], 1, quotify=True)
-
+ return the_input.new_completion(['start', 'fpr', 'ourfpr', 'refresh', 'end', 'drop'], 1, quotify=True)