annotate sat/tools/async_trigger.py @ 3237:b0c57c9a4bd8

plugin XEP-0384: OMEMO trust policy: OMEMO trust policy can now be specified. For now there are 2 policies: - `manual`: each new device fingerprint must be explicitly trusted or not before the device can be used, and the message sent - `BTBV` (Blind Trust Before Verification): each new device fingerprint is automically trusted, until user manually trust or not a device, in which case the behaviour becomes the same as for `manual` for the entity. When using the Trust UI, user can put the entity back to blind trust if they wish. A message is send as feedback to user when a new device is/must be trusted, trying to explain clearly what's happening to the user. Devices which have been automically trusted are marked, so user can know which ones may cause security issue.
author Goffi <goffi@goffi.org>
date Fri, 27 Mar 2020 10:02:14 +0100
parents 559a625a236b
children c069882f64cb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
1 #!/usr/bin/env python3
3137
559a625a236b fixed shebangs
Goffi <goffi@goffi.org>
parents: 3136
diff changeset
2
2645
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
3
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
4 # SAT: a jabber client
3136
9d0df638c8b4 dates update
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
5 # Copyright (C) 2009-2020 Jérôme Poisson (goffi@goffi.org)
2645
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
6
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
7 # This program is free software: you can redistribute it and/or modify
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
8 # it under the terms of the GNU Affero General Public License as published by
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
9 # the Free Software Foundation, either version 3 of the License, or
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
10 # (at your option) any later version.
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
11
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
12 # This program is distributed in the hope that it will be useful,
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
15 # GNU Affero General Public License for more details.
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
16
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
17 # You should have received a copy of the GNU Affero General Public License
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
19
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
20 """Misc usefull classes"""
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
21
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
22 from sat.tools import trigger as sync_trigger
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
23 from twisted.internet import defer
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
24
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
25 class TriggerManager(sync_trigger.TriggerManager):
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
26 """This is a TriggerManager with an new asyncPoint method"""
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
27
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
28 @defer.inlineCallbacks
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
29 def asyncPoint(self, point_name, *args, **kwargs):
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
30 """This put a trigger point with potentially async Deferred
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
31
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
32 All the triggers for that point will be run
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
33 @param point_name: name of the trigger point
2650
3a8e7ec4648a tools (trigger, async_trigger): added no_cancel argument to point and asyncPoint when a trigger must not be cancellable
Goffi <goffi@goffi.org>
parents: 2645
diff changeset
34 @param *args: args to transmit to trigger
3a8e7ec4648a tools (trigger, async_trigger): added no_cancel argument to point and asyncPoint when a trigger must not be cancellable
Goffi <goffi@goffi.org>
parents: 2645
diff changeset
35 @param *kwargs: kwargs to transmit to trigger
3a8e7ec4648a tools (trigger, async_trigger): added no_cancel argument to point and asyncPoint when a trigger must not be cancellable
Goffi <goffi@goffi.org>
parents: 2645
diff changeset
36 if "triggers_no_cancel" is present, it will be popped out
3a8e7ec4648a tools (trigger, async_trigger): added no_cancel argument to point and asyncPoint when a trigger must not be cancellable
Goffi <goffi@goffi.org>
parents: 2645
diff changeset
37 when set to True, this argument don't let triggers stop
3a8e7ec4648a tools (trigger, async_trigger): added no_cancel argument to point and asyncPoint when a trigger must not be cancellable
Goffi <goffi@goffi.org>
parents: 2645
diff changeset
38 the workflow
2645
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
39 @return D(bool): True if the action must be continued, False else
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
40 """
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
41 if point_name not in self.__triggers:
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
42 defer.returnValue(True)
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
43
2650
3a8e7ec4648a tools (trigger, async_trigger): added no_cancel argument to point and asyncPoint when a trigger must not be cancellable
Goffi <goffi@goffi.org>
parents: 2645
diff changeset
44 can_cancel = not kwargs.pop('triggers_no_cancel', False)
3a8e7ec4648a tools (trigger, async_trigger): added no_cancel argument to point and asyncPoint when a trigger must not be cancellable
Goffi <goffi@goffi.org>
parents: 2645
diff changeset
45
2645
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
46 for priority, trigger in self.__triggers[point_name]:
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
47 try:
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
48 cont = yield trigger(*args, **kwargs)
2650
3a8e7ec4648a tools (trigger, async_trigger): added no_cancel argument to point and asyncPoint when a trigger must not be cancellable
Goffi <goffi@goffi.org>
parents: 2645
diff changeset
49 if can_cancel and not cont:
2645
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
50 defer.returnValue(False)
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
51 except sync_trigger.SkipOtherTriggers:
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
52 break
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
53 defer.returnValue(True)