annotate src/plugins/plugin_misc_debug.py @ 2138:6e509ee853a8

plugin OTR, core; use of new sendMessage + OTR mini refactoring: - new client.sendMessage method is used instead of sendMessageToStream - client.feedback is used in OTR - OTR now add message processing hints and carbon private element as recommanded by XEP-0364. Explicit Message Encryption is still TODO - OTR use the new sendMessageFinish trigger, this has a number of advantages: * there is little risk that OTR is skipped by other plugins (they have to use client.sendMessage as recommanded) * being at the end of the chain, OTR can check and remove any HTML or other leaking elements * OTR doesn't have to skip other plugins anymore, this means that things like delivery receipts are now working with OTR (but because there is not full stanza encryption, they can leak metadata) * OTR can decide to follow storage hint by letting or deleting "history" key
author Goffi <goffi@goffi.org>
date Sun, 05 Feb 2017 15:00:01 +0100
parents 0f485f1d627d
children 33c8c4973743
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2037
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
1 #!/usr/bin/env python2
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
3
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
4 # SàT plugin for managing raw XML log
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
5 # Copyright (C) 2009-2016 Jérôme Poisson (goffi@goffi.org)
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
6
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
7 # This program is free software: you can redistribute it and/or modify
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
8 # it under the terms of the GNU Affero General Public License as published by
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
9 # the Free Software Foundation, either version 3 of the License, or
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
10 # (at your option) any later version.
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
11
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
12 # This program is distributed in the hope that it will be useful,
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
15 # GNU Affero General Public License for more details.
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
16
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
17 # You should have received a copy of the GNU Affero General Public License
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
19
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
20 from sat.core.i18n import _
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
21 from sat.core.log import getLogger
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
22 log = getLogger(__name__)
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
23 from sat.core.constants import Const as C
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
24 import json
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
25
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
26 PLUGIN_INFO = {
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
27 "name": "Debug Plugin",
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
28 "import_name": "DEBUG",
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
29 "type": "Misc",
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
30 "protocols": [],
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
31 "dependencies": [],
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
32 "main": "Debug",
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
33 "handler": "no",
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
34 "description": _("""Set of method to make development and debugging easier""")
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
35 }
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
36
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
37
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
38 class Debug(object):
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
39
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
40 def __init__(self, host):
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
41 log.info(_("Plugin Debug initialization"))
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
42 self.host = host
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
43 host.bridge.addMethod("debugFakeSignal", ".plugin", in_sign='sss', out_sign='', method=self._fakeSignal)
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
44
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
45
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
46 def _fakeSignal(self, signal, arguments, profile_key):
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
47 """send a signal from backend
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
48
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
49 @param signal(str): name of the signal
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
50 @param arguments(unicode): json encoded list of arguments
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
51 @parm profile_key(unicode): profile_key to use or C.PROF_KEY_NONE if profile is not needed
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
52 """
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
53 args = json.loads(arguments)
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
54 method = getattr(self.host.bridge, signal)
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
55 if profile_key != C.PROF_KEY_NONE:
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
56 profile = self.host.memory.getProfileName(profile_key)
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
57 args.append(profile)
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
58 method(*args)
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
59
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
60
0f485f1d627d plugin debug: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
61