mirror of
https://mau.dev/maunium/synapse.git
synced 2024-08-28 21:22:02 +00:00
Merge pull request #488 from matrix-org/markjh/user_name
Rename 'user_name' to 'user_id' in push
This commit is contained in:
commit
806bae1ee7
@ -35,7 +35,7 @@ class Pusher(object):
|
|||||||
MAX_BACKOFF = 60 * 60 * 1000
|
MAX_BACKOFF = 60 * 60 * 1000
|
||||||
GIVE_UP_AFTER = 24 * 60 * 60 * 1000
|
GIVE_UP_AFTER = 24 * 60 * 60 * 1000
|
||||||
|
|
||||||
def __init__(self, _hs, profile_tag, user_name, app_id,
|
def __init__(self, _hs, profile_tag, user_id, app_id,
|
||||||
app_display_name, device_display_name, pushkey, pushkey_ts,
|
app_display_name, device_display_name, pushkey, pushkey_ts,
|
||||||
data, last_token, last_success, failing_since):
|
data, last_token, last_success, failing_since):
|
||||||
self.hs = _hs
|
self.hs = _hs
|
||||||
@ -43,7 +43,7 @@ class Pusher(object):
|
|||||||
self.store = self.hs.get_datastore()
|
self.store = self.hs.get_datastore()
|
||||||
self.clock = self.hs.get_clock()
|
self.clock = self.hs.get_clock()
|
||||||
self.profile_tag = profile_tag
|
self.profile_tag = profile_tag
|
||||||
self.user_name = user_name
|
self.user_id = user_id
|
||||||
self.app_id = app_id
|
self.app_id = app_id
|
||||||
self.app_display_name = app_display_name
|
self.app_display_name = app_display_name
|
||||||
self.device_display_name = device_display_name
|
self.device_display_name = device_display_name
|
||||||
@ -92,15 +92,15 @@ class Pusher(object):
|
|||||||
# we fail to dispatch the push)
|
# we fail to dispatch the push)
|
||||||
config = PaginationConfig(from_token=None, limit='1')
|
config = PaginationConfig(from_token=None, limit='1')
|
||||||
chunk = yield self.evStreamHandler.get_stream(
|
chunk = yield self.evStreamHandler.get_stream(
|
||||||
self.user_name, config, timeout=0, affect_presence=False,
|
self.user_id, config, timeout=0, affect_presence=False,
|
||||||
only_room_events=True
|
only_room_events=True
|
||||||
)
|
)
|
||||||
self.last_token = chunk['end']
|
self.last_token = chunk['end']
|
||||||
self.store.update_pusher_last_token(
|
self.store.update_pusher_last_token(
|
||||||
self.app_id, self.pushkey, self.user_name, self.last_token
|
self.app_id, self.pushkey, self.user_id, self.last_token
|
||||||
)
|
)
|
||||||
logger.info("Pusher %s for user %s starting from token %s",
|
logger.info("Pusher %s for user %s starting from token %s",
|
||||||
self.pushkey, self.user_name, self.last_token)
|
self.pushkey, self.user_id, self.last_token)
|
||||||
|
|
||||||
wait = 0
|
wait = 0
|
||||||
while self.alive:
|
while self.alive:
|
||||||
@ -125,7 +125,7 @@ class Pusher(object):
|
|||||||
config = PaginationConfig(from_token=from_tok, limit='1')
|
config = PaginationConfig(from_token=from_tok, limit='1')
|
||||||
timeout = (300 + random.randint(-60, 60)) * 1000
|
timeout = (300 + random.randint(-60, 60)) * 1000
|
||||||
chunk = yield self.evStreamHandler.get_stream(
|
chunk = yield self.evStreamHandler.get_stream(
|
||||||
self.user_name, config, timeout=timeout, affect_presence=False,
|
self.user_id, config, timeout=timeout, affect_presence=False,
|
||||||
only_room_events=True
|
only_room_events=True
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -142,7 +142,7 @@ class Pusher(object):
|
|||||||
yield self.store.update_pusher_last_token(
|
yield self.store.update_pusher_last_token(
|
||||||
self.app_id,
|
self.app_id,
|
||||||
self.pushkey,
|
self.pushkey,
|
||||||
self.user_name,
|
self.user_id,
|
||||||
self.last_token
|
self.last_token
|
||||||
)
|
)
|
||||||
return
|
return
|
||||||
@ -153,8 +153,8 @@ class Pusher(object):
|
|||||||
processed = False
|
processed = False
|
||||||
|
|
||||||
rule_evaluator = yield \
|
rule_evaluator = yield \
|
||||||
push_rule_evaluator.evaluator_for_user_name_and_profile_tag(
|
push_rule_evaluator.evaluator_for_user_id_and_profile_tag(
|
||||||
self.user_name, self.profile_tag, single_event['room_id'], self.store
|
self.user_id, self.profile_tag, single_event['room_id'], self.store
|
||||||
)
|
)
|
||||||
|
|
||||||
actions = yield rule_evaluator.actions_for_event(single_event)
|
actions = yield rule_evaluator.actions_for_event(single_event)
|
||||||
@ -179,7 +179,7 @@ class Pusher(object):
|
|||||||
pk
|
pk
|
||||||
)
|
)
|
||||||
yield self.hs.get_pusherpool().remove_pusher(
|
yield self.hs.get_pusherpool().remove_pusher(
|
||||||
self.app_id, pk, self.user_name
|
self.app_id, pk, self.user_id
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
processed = True
|
processed = True
|
||||||
@ -193,7 +193,7 @@ class Pusher(object):
|
|||||||
yield self.store.update_pusher_last_token_and_success(
|
yield self.store.update_pusher_last_token_and_success(
|
||||||
self.app_id,
|
self.app_id,
|
||||||
self.pushkey,
|
self.pushkey,
|
||||||
self.user_name,
|
self.user_id,
|
||||||
self.last_token,
|
self.last_token,
|
||||||
self.clock.time_msec()
|
self.clock.time_msec()
|
||||||
)
|
)
|
||||||
@ -202,7 +202,7 @@ class Pusher(object):
|
|||||||
yield self.store.update_pusher_failing_since(
|
yield self.store.update_pusher_failing_since(
|
||||||
self.app_id,
|
self.app_id,
|
||||||
self.pushkey,
|
self.pushkey,
|
||||||
self.user_name,
|
self.user_id,
|
||||||
self.failing_since)
|
self.failing_since)
|
||||||
else:
|
else:
|
||||||
if not self.failing_since:
|
if not self.failing_since:
|
||||||
@ -210,7 +210,7 @@ class Pusher(object):
|
|||||||
yield self.store.update_pusher_failing_since(
|
yield self.store.update_pusher_failing_since(
|
||||||
self.app_id,
|
self.app_id,
|
||||||
self.pushkey,
|
self.pushkey,
|
||||||
self.user_name,
|
self.user_id,
|
||||||
self.failing_since
|
self.failing_since
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -222,13 +222,13 @@ class Pusher(object):
|
|||||||
# of old notifications.
|
# of old notifications.
|
||||||
logger.warn("Giving up on a notification to user %s, "
|
logger.warn("Giving up on a notification to user %s, "
|
||||||
"pushkey %s",
|
"pushkey %s",
|
||||||
self.user_name, self.pushkey)
|
self.user_id, self.pushkey)
|
||||||
self.backoff_delay = Pusher.INITIAL_BACKOFF
|
self.backoff_delay = Pusher.INITIAL_BACKOFF
|
||||||
self.last_token = chunk['end']
|
self.last_token = chunk['end']
|
||||||
yield self.store.update_pusher_last_token(
|
yield self.store.update_pusher_last_token(
|
||||||
self.app_id,
|
self.app_id,
|
||||||
self.pushkey,
|
self.pushkey,
|
||||||
self.user_name,
|
self.user_id,
|
||||||
self.last_token
|
self.last_token
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -236,14 +236,14 @@ class Pusher(object):
|
|||||||
yield self.store.update_pusher_failing_since(
|
yield self.store.update_pusher_failing_since(
|
||||||
self.app_id,
|
self.app_id,
|
||||||
self.pushkey,
|
self.pushkey,
|
||||||
self.user_name,
|
self.user_id,
|
||||||
self.failing_since
|
self.failing_since
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
logger.warn("Failed to dispatch push for user %s "
|
logger.warn("Failed to dispatch push for user %s "
|
||||||
"(failing for %dms)."
|
"(failing for %dms)."
|
||||||
"Trying again in %dms",
|
"Trying again in %dms",
|
||||||
self.user_name,
|
self.user_id,
|
||||||
self.clock.time_msec() - self.failing_since,
|
self.clock.time_msec() - self.failing_since,
|
||||||
self.backoff_delay)
|
self.backoff_delay)
|
||||||
yield synapse.util.async.sleep(self.backoff_delay / 1000.0)
|
yield synapse.util.async.sleep(self.backoff_delay / 1000.0)
|
||||||
@ -280,7 +280,7 @@ class Pusher(object):
|
|||||||
if last_active > self.last_last_active_time:
|
if last_active > self.last_last_active_time:
|
||||||
self.last_last_active_time = last_active
|
self.last_last_active_time = last_active
|
||||||
if self.has_unread:
|
if self.has_unread:
|
||||||
logger.info("Resetting badge count for %s", self.user_name)
|
logger.info("Resetting badge count for %s", self.user_id)
|
||||||
self.reset_badge_count()
|
self.reset_badge_count()
|
||||||
self.has_unread = False
|
self.has_unread = False
|
||||||
|
|
||||||
|
@ -15,27 +15,27 @@
|
|||||||
from synapse.push.rulekinds import PRIORITY_CLASS_MAP, PRIORITY_CLASS_INVERSE_MAP
|
from synapse.push.rulekinds import PRIORITY_CLASS_MAP, PRIORITY_CLASS_INVERSE_MAP
|
||||||
|
|
||||||
|
|
||||||
def list_with_base_rules(rawrules, user_name):
|
def list_with_base_rules(rawrules, user_id):
|
||||||
ruleslist = []
|
ruleslist = []
|
||||||
|
|
||||||
# shove the server default rules for each kind onto the end of each
|
# shove the server default rules for each kind onto the end of each
|
||||||
current_prio_class = PRIORITY_CLASS_INVERSE_MAP.keys()[-1]
|
current_prio_class = PRIORITY_CLASS_INVERSE_MAP.keys()[-1]
|
||||||
|
|
||||||
ruleslist.extend(make_base_prepend_rules(
|
ruleslist.extend(make_base_prepend_rules(
|
||||||
user_name, PRIORITY_CLASS_INVERSE_MAP[current_prio_class]
|
user_id, PRIORITY_CLASS_INVERSE_MAP[current_prio_class]
|
||||||
))
|
))
|
||||||
|
|
||||||
for r in rawrules:
|
for r in rawrules:
|
||||||
if r['priority_class'] < current_prio_class:
|
if r['priority_class'] < current_prio_class:
|
||||||
while r['priority_class'] < current_prio_class:
|
while r['priority_class'] < current_prio_class:
|
||||||
ruleslist.extend(make_base_append_rules(
|
ruleslist.extend(make_base_append_rules(
|
||||||
user_name,
|
user_id,
|
||||||
PRIORITY_CLASS_INVERSE_MAP[current_prio_class]
|
PRIORITY_CLASS_INVERSE_MAP[current_prio_class]
|
||||||
))
|
))
|
||||||
current_prio_class -= 1
|
current_prio_class -= 1
|
||||||
if current_prio_class > 0:
|
if current_prio_class > 0:
|
||||||
ruleslist.extend(make_base_prepend_rules(
|
ruleslist.extend(make_base_prepend_rules(
|
||||||
user_name,
|
user_id,
|
||||||
PRIORITY_CLASS_INVERSE_MAP[current_prio_class]
|
PRIORITY_CLASS_INVERSE_MAP[current_prio_class]
|
||||||
))
|
))
|
||||||
|
|
||||||
@ -43,13 +43,13 @@ def list_with_base_rules(rawrules, user_name):
|
|||||||
|
|
||||||
while current_prio_class > 0:
|
while current_prio_class > 0:
|
||||||
ruleslist.extend(make_base_append_rules(
|
ruleslist.extend(make_base_append_rules(
|
||||||
user_name,
|
user_id,
|
||||||
PRIORITY_CLASS_INVERSE_MAP[current_prio_class]
|
PRIORITY_CLASS_INVERSE_MAP[current_prio_class]
|
||||||
))
|
))
|
||||||
current_prio_class -= 1
|
current_prio_class -= 1
|
||||||
if current_prio_class > 0:
|
if current_prio_class > 0:
|
||||||
ruleslist.extend(make_base_prepend_rules(
|
ruleslist.extend(make_base_prepend_rules(
|
||||||
user_name,
|
user_id,
|
||||||
PRIORITY_CLASS_INVERSE_MAP[current_prio_class]
|
PRIORITY_CLASS_INVERSE_MAP[current_prio_class]
|
||||||
))
|
))
|
||||||
|
|
||||||
|
@ -23,13 +23,13 @@ logger = logging.getLogger(__name__)
|
|||||||
|
|
||||||
|
|
||||||
class HttpPusher(Pusher):
|
class HttpPusher(Pusher):
|
||||||
def __init__(self, _hs, profile_tag, user_name, app_id,
|
def __init__(self, _hs, profile_tag, user_id, app_id,
|
||||||
app_display_name, device_display_name, pushkey, pushkey_ts,
|
app_display_name, device_display_name, pushkey, pushkey_ts,
|
||||||
data, last_token, last_success, failing_since):
|
data, last_token, last_success, failing_since):
|
||||||
super(HttpPusher, self).__init__(
|
super(HttpPusher, self).__init__(
|
||||||
_hs,
|
_hs,
|
||||||
profile_tag,
|
profile_tag,
|
||||||
user_name,
|
user_id,
|
||||||
app_id,
|
app_id,
|
||||||
app_display_name,
|
app_display_name,
|
||||||
device_display_name,
|
device_display_name,
|
||||||
@ -87,7 +87,7 @@ class HttpPusher(Pusher):
|
|||||||
}
|
}
|
||||||
if event['type'] == 'm.room.member':
|
if event['type'] == 'm.room.member':
|
||||||
d['notification']['membership'] = event['content']['membership']
|
d['notification']['membership'] = event['content']['membership']
|
||||||
d['notification']['user_is_target'] = event['state_key'] == self.user_name
|
d['notification']['user_is_target'] = event['state_key'] == self.user_id
|
||||||
if 'content' in event:
|
if 'content' in event:
|
||||||
d['notification']['content'] = event['content']
|
d['notification']['content'] = event['content']
|
||||||
|
|
||||||
|
@ -27,17 +27,17 @@ logger = logging.getLogger(__name__)
|
|||||||
|
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def evaluator_for_user_name_and_profile_tag(user_name, profile_tag, room_id, store):
|
def evaluator_for_user_id_and_profile_tag(user_id, profile_tag, room_id, store):
|
||||||
rawrules = yield store.get_push_rules_for_user(user_name)
|
rawrules = yield store.get_push_rules_for_user(user_id)
|
||||||
enabled_map = yield store.get_push_rules_enabled_for_user(user_name)
|
enabled_map = yield store.get_push_rules_enabled_for_user(user_id)
|
||||||
our_member_event = yield store.get_current_state(
|
our_member_event = yield store.get_current_state(
|
||||||
room_id=room_id,
|
room_id=room_id,
|
||||||
event_type='m.room.member',
|
event_type='m.room.member',
|
||||||
state_key=user_name,
|
state_key=user_id,
|
||||||
)
|
)
|
||||||
|
|
||||||
defer.returnValue(PushRuleEvaluator(
|
defer.returnValue(PushRuleEvaluator(
|
||||||
user_name, profile_tag, rawrules, enabled_map,
|
user_id, profile_tag, rawrules, enabled_map,
|
||||||
room_id, our_member_event, store
|
room_id, our_member_event, store
|
||||||
))
|
))
|
||||||
|
|
||||||
@ -46,9 +46,9 @@ class PushRuleEvaluator:
|
|||||||
DEFAULT_ACTIONS = []
|
DEFAULT_ACTIONS = []
|
||||||
INEQUALITY_EXPR = re.compile("^([=<>]*)([0-9]*)$")
|
INEQUALITY_EXPR = re.compile("^([=<>]*)([0-9]*)$")
|
||||||
|
|
||||||
def __init__(self, user_name, profile_tag, raw_rules, enabled_map, room_id,
|
def __init__(self, user_id, profile_tag, raw_rules, enabled_map, room_id,
|
||||||
our_member_event, store):
|
our_member_event, store):
|
||||||
self.user_name = user_name
|
self.user_id = user_id
|
||||||
self.profile_tag = profile_tag
|
self.profile_tag = profile_tag
|
||||||
self.room_id = room_id
|
self.room_id = room_id
|
||||||
self.our_member_event = our_member_event
|
self.our_member_event = our_member_event
|
||||||
@ -61,7 +61,7 @@ class PushRuleEvaluator:
|
|||||||
rule['actions'] = json.loads(raw_rule['actions'])
|
rule['actions'] = json.loads(raw_rule['actions'])
|
||||||
rules.append(rule)
|
rules.append(rule)
|
||||||
|
|
||||||
user = UserID.from_string(self.user_name)
|
user = UserID.from_string(self.user_id)
|
||||||
self.rules = baserules.list_with_base_rules(rules, user)
|
self.rules = baserules.list_with_base_rules(rules, user)
|
||||||
|
|
||||||
self.enabled_map = enabled_map
|
self.enabled_map = enabled_map
|
||||||
@ -83,7 +83,7 @@ class PushRuleEvaluator:
|
|||||||
has configured both globally and per-room when we have the ability
|
has configured both globally and per-room when we have the ability
|
||||||
to do such things.
|
to do such things.
|
||||||
"""
|
"""
|
||||||
if ev['user_id'] == self.user_name:
|
if ev['user_id'] == self.user_id:
|
||||||
# let's assume you probably know about messages you sent yourself
|
# let's assume you probably know about messages you sent yourself
|
||||||
defer.returnValue([])
|
defer.returnValue([])
|
||||||
|
|
||||||
@ -124,13 +124,13 @@ class PushRuleEvaluator:
|
|||||||
if len(actions) == 0:
|
if len(actions) == 0:
|
||||||
logger.warn(
|
logger.warn(
|
||||||
"Ignoring rule id %s with no actions for user %s",
|
"Ignoring rule id %s with no actions for user %s",
|
||||||
r['rule_id'], self.user_name
|
r['rule_id'], self.user_id
|
||||||
)
|
)
|
||||||
continue
|
continue
|
||||||
if matches:
|
if matches:
|
||||||
logger.info(
|
logger.info(
|
||||||
"%s matches for user %s, event %s",
|
"%s matches for user %s, event %s",
|
||||||
r['rule_id'], self.user_name, ev['event_id']
|
r['rule_id'], self.user_id, ev['event_id']
|
||||||
)
|
)
|
||||||
|
|
||||||
# filter out dont_notify as we treat an empty actions list
|
# filter out dont_notify as we treat an empty actions list
|
||||||
@ -141,7 +141,7 @@ class PushRuleEvaluator:
|
|||||||
|
|
||||||
logger.info(
|
logger.info(
|
||||||
"No rules match for user %s, event %s",
|
"No rules match for user %s, event %s",
|
||||||
self.user_name, ev['event_id']
|
self.user_id, ev['event_id']
|
||||||
)
|
)
|
||||||
defer.returnValue(PushRuleEvaluator.DEFAULT_ACTIONS)
|
defer.returnValue(PushRuleEvaluator.DEFAULT_ACTIONS)
|
||||||
|
|
||||||
|
@ -38,12 +38,12 @@ class PusherPool:
|
|||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def user_presence_changed(self, user, state):
|
def user_presence_changed(self, user, state):
|
||||||
user_name = user.to_string()
|
user_id = user.to_string()
|
||||||
|
|
||||||
# until we have read receipts, pushers use this to reset a user's
|
# until we have read receipts, pushers use this to reset a user's
|
||||||
# badge counters to zero
|
# badge counters to zero
|
||||||
for p in self.pushers.values():
|
for p in self.pushers.values():
|
||||||
if p.user_name == user_name:
|
if p.user_id == user_id:
|
||||||
yield p.presence_changed(state)
|
yield p.presence_changed(state)
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
@ -52,14 +52,14 @@ class PusherPool:
|
|||||||
self._start_pushers(pushers)
|
self._start_pushers(pushers)
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def add_pusher(self, user_name, access_token, profile_tag, kind, app_id,
|
def add_pusher(self, user_id, access_token, profile_tag, kind, app_id,
|
||||||
app_display_name, device_display_name, pushkey, lang, data):
|
app_display_name, device_display_name, pushkey, lang, data):
|
||||||
# we try to create the pusher just to validate the config: it
|
# we try to create the pusher just to validate the config: it
|
||||||
# will then get pulled out of the database,
|
# will then get pulled out of the database,
|
||||||
# recreated, added and started: this means we have only one
|
# recreated, added and started: this means we have only one
|
||||||
# code path adding pushers.
|
# code path adding pushers.
|
||||||
self._create_pusher({
|
self._create_pusher({
|
||||||
"user_name": user_name,
|
"user_name": user_id,
|
||||||
"kind": kind,
|
"kind": kind,
|
||||||
"profile_tag": profile_tag,
|
"profile_tag": profile_tag,
|
||||||
"app_id": app_id,
|
"app_id": app_id,
|
||||||
@ -74,7 +74,7 @@ class PusherPool:
|
|||||||
"failing_since": None
|
"failing_since": None
|
||||||
})
|
})
|
||||||
yield self._add_pusher_to_store(
|
yield self._add_pusher_to_store(
|
||||||
user_name, access_token, profile_tag, kind, app_id,
|
user_id, access_token, profile_tag, kind, app_id,
|
||||||
app_display_name, device_display_name,
|
app_display_name, device_display_name,
|
||||||
pushkey, lang, data
|
pushkey, lang, data
|
||||||
)
|
)
|
||||||
@ -109,11 +109,11 @@ class PusherPool:
|
|||||||
self.remove_pusher(p['app_id'], p['pushkey'], p['user_name'])
|
self.remove_pusher(p['app_id'], p['pushkey'], p['user_name'])
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def _add_pusher_to_store(self, user_name, access_token, profile_tag, kind,
|
def _add_pusher_to_store(self, user_id, access_token, profile_tag, kind,
|
||||||
app_id, app_display_name, device_display_name,
|
app_id, app_display_name, device_display_name,
|
||||||
pushkey, lang, data):
|
pushkey, lang, data):
|
||||||
yield self.store.add_pusher(
|
yield self.store.add_pusher(
|
||||||
user_name=user_name,
|
user_id=user_id,
|
||||||
access_token=access_token,
|
access_token=access_token,
|
||||||
profile_tag=profile_tag,
|
profile_tag=profile_tag,
|
||||||
kind=kind,
|
kind=kind,
|
||||||
@ -125,14 +125,14 @@ class PusherPool:
|
|||||||
lang=lang,
|
lang=lang,
|
||||||
data=data,
|
data=data,
|
||||||
)
|
)
|
||||||
self._refresh_pusher(app_id, pushkey, user_name)
|
self._refresh_pusher(app_id, pushkey, user_id)
|
||||||
|
|
||||||
def _create_pusher(self, pusherdict):
|
def _create_pusher(self, pusherdict):
|
||||||
if pusherdict['kind'] == 'http':
|
if pusherdict['kind'] == 'http':
|
||||||
return HttpPusher(
|
return HttpPusher(
|
||||||
self.hs,
|
self.hs,
|
||||||
profile_tag=pusherdict['profile_tag'],
|
profile_tag=pusherdict['profile_tag'],
|
||||||
user_name=pusherdict['user_name'],
|
user_id=pusherdict['user_name'],
|
||||||
app_id=pusherdict['app_id'],
|
app_id=pusherdict['app_id'],
|
||||||
app_display_name=pusherdict['app_display_name'],
|
app_display_name=pusherdict['app_display_name'],
|
||||||
device_display_name=pusherdict['device_display_name'],
|
device_display_name=pusherdict['device_display_name'],
|
||||||
@ -150,14 +150,14 @@ class PusherPool:
|
|||||||
)
|
)
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def _refresh_pusher(self, app_id, pushkey, user_name):
|
def _refresh_pusher(self, app_id, pushkey, user_id):
|
||||||
resultlist = yield self.store.get_pushers_by_app_id_and_pushkey(
|
resultlist = yield self.store.get_pushers_by_app_id_and_pushkey(
|
||||||
app_id, pushkey
|
app_id, pushkey
|
||||||
)
|
)
|
||||||
|
|
||||||
p = None
|
p = None
|
||||||
for r in resultlist:
|
for r in resultlist:
|
||||||
if r['user_name'] == user_name:
|
if r['user_name'] == user_id:
|
||||||
p = r
|
p = r
|
||||||
|
|
||||||
if p:
|
if p:
|
||||||
@ -186,12 +186,12 @@ class PusherPool:
|
|||||||
logger.info("Started pushers")
|
logger.info("Started pushers")
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def remove_pusher(self, app_id, pushkey, user_name):
|
def remove_pusher(self, app_id, pushkey, user_id):
|
||||||
fullid = "%s:%s:%s" % (app_id, pushkey, user_name)
|
fullid = "%s:%s:%s" % (app_id, pushkey, user_id)
|
||||||
if fullid in self.pushers:
|
if fullid in self.pushers:
|
||||||
logger.info("Stopping pusher %s", fullid)
|
logger.info("Stopping pusher %s", fullid)
|
||||||
self.pushers[fullid].stop()
|
self.pushers[fullid].stop()
|
||||||
del self.pushers[fullid]
|
del self.pushers[fullid]
|
||||||
yield self.store.delete_pusher_by_app_id_pushkey_user_name(
|
yield self.store.delete_pusher_by_app_id_pushkey_user_id(
|
||||||
app_id, pushkey, user_name
|
app_id, pushkey, user_id
|
||||||
)
|
)
|
||||||
|
@ -73,7 +73,7 @@ class PushRuleRestServlet(ClientV1RestServlet):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
yield self.hs.get_datastore().add_push_rule(
|
yield self.hs.get_datastore().add_push_rule(
|
||||||
user_name=requester.user.to_string(),
|
user_id=requester.user.to_string(),
|
||||||
rule_id=_namespaced_rule_id_from_spec(spec),
|
rule_id=_namespaced_rule_id_from_spec(spec),
|
||||||
priority_class=priority_class,
|
priority_class=priority_class,
|
||||||
conditions=conditions,
|
conditions=conditions,
|
||||||
@ -206,7 +206,7 @@ class PushRuleRestServlet(ClientV1RestServlet):
|
|||||||
def on_OPTIONS(self, _):
|
def on_OPTIONS(self, _):
|
||||||
return 200, {}
|
return 200, {}
|
||||||
|
|
||||||
def set_rule_attr(self, user_name, spec, val):
|
def set_rule_attr(self, user_id, spec, val):
|
||||||
if spec['attr'] == 'enabled':
|
if spec['attr'] == 'enabled':
|
||||||
if isinstance(val, dict) and "enabled" in val:
|
if isinstance(val, dict) and "enabled" in val:
|
||||||
val = val["enabled"]
|
val = val["enabled"]
|
||||||
@ -217,15 +217,15 @@ class PushRuleRestServlet(ClientV1RestServlet):
|
|||||||
raise SynapseError(400, "Value for 'enabled' must be boolean")
|
raise SynapseError(400, "Value for 'enabled' must be boolean")
|
||||||
namespaced_rule_id = _namespaced_rule_id_from_spec(spec)
|
namespaced_rule_id = _namespaced_rule_id_from_spec(spec)
|
||||||
self.hs.get_datastore().set_push_rule_enabled(
|
self.hs.get_datastore().set_push_rule_enabled(
|
||||||
user_name, namespaced_rule_id, val
|
user_id, namespaced_rule_id, val
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
raise UnrecognizedRequestError()
|
raise UnrecognizedRequestError()
|
||||||
|
|
||||||
def get_rule_attr(self, user_name, namespaced_rule_id, attr):
|
def get_rule_attr(self, user_id, namespaced_rule_id, attr):
|
||||||
if attr == 'enabled':
|
if attr == 'enabled':
|
||||||
return self.hs.get_datastore().get_push_rule_enabled_by_user_rule_id(
|
return self.hs.get_datastore().get_push_rule_enabled_by_user_rule_id(
|
||||||
user_name, namespaced_rule_id
|
user_id, namespaced_rule_id
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
raise UnrecognizedRequestError()
|
raise UnrecognizedRequestError()
|
||||||
|
@ -41,7 +41,7 @@ class PusherRestServlet(ClientV1RestServlet):
|
|||||||
and 'kind' in content and
|
and 'kind' in content and
|
||||||
content['kind'] is None):
|
content['kind'] is None):
|
||||||
yield pusher_pool.remove_pusher(
|
yield pusher_pool.remove_pusher(
|
||||||
content['app_id'], content['pushkey'], user_name=user.to_string()
|
content['app_id'], content['pushkey'], user_id=user.to_string()
|
||||||
)
|
)
|
||||||
defer.returnValue((200, {}))
|
defer.returnValue((200, {}))
|
||||||
|
|
||||||
@ -71,7 +71,7 @@ class PusherRestServlet(ClientV1RestServlet):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
yield pusher_pool.add_pusher(
|
yield pusher_pool.add_pusher(
|
||||||
user_name=user.to_string(),
|
user_id=user.to_string(),
|
||||||
access_token=requester.access_token_id,
|
access_token=requester.access_token_id,
|
||||||
profile_tag=content['profile_tag'],
|
profile_tag=content['profile_tag'],
|
||||||
kind=content['kind'],
|
kind=content['kind'],
|
||||||
|
@ -25,11 +25,11 @@ logger = logging.getLogger(__name__)
|
|||||||
|
|
||||||
class PushRuleStore(SQLBaseStore):
|
class PushRuleStore(SQLBaseStore):
|
||||||
@cachedInlineCallbacks()
|
@cachedInlineCallbacks()
|
||||||
def get_push_rules_for_user(self, user_name):
|
def get_push_rules_for_user(self, user_id):
|
||||||
rows = yield self._simple_select_list(
|
rows = yield self._simple_select_list(
|
||||||
table="push_rules",
|
table="push_rules",
|
||||||
keyvalues={
|
keyvalues={
|
||||||
"user_name": user_name,
|
"user_name": user_id,
|
||||||
},
|
},
|
||||||
retcols=(
|
retcols=(
|
||||||
"user_name", "rule_id", "priority_class", "priority",
|
"user_name", "rule_id", "priority_class", "priority",
|
||||||
@ -45,11 +45,11 @@ class PushRuleStore(SQLBaseStore):
|
|||||||
defer.returnValue(rows)
|
defer.returnValue(rows)
|
||||||
|
|
||||||
@cachedInlineCallbacks()
|
@cachedInlineCallbacks()
|
||||||
def get_push_rules_enabled_for_user(self, user_name):
|
def get_push_rules_enabled_for_user(self, user_id):
|
||||||
results = yield self._simple_select_list(
|
results = yield self._simple_select_list(
|
||||||
table="push_rules_enable",
|
table="push_rules_enable",
|
||||||
keyvalues={
|
keyvalues={
|
||||||
'user_name': user_name
|
'user_name': user_id
|
||||||
},
|
},
|
||||||
retcols=(
|
retcols=(
|
||||||
"user_name", "rule_id", "enabled",
|
"user_name", "rule_id", "enabled",
|
||||||
@ -122,7 +122,7 @@ class PushRuleStore(SQLBaseStore):
|
|||||||
)
|
)
|
||||||
defer.returnValue(ret)
|
defer.returnValue(ret)
|
||||||
|
|
||||||
def _add_push_rule_relative_txn(self, txn, user_name, **kwargs):
|
def _add_push_rule_relative_txn(self, txn, user_id, **kwargs):
|
||||||
after = kwargs.pop("after", None)
|
after = kwargs.pop("after", None)
|
||||||
relative_to_rule = kwargs.pop("before", after)
|
relative_to_rule = kwargs.pop("before", after)
|
||||||
|
|
||||||
@ -130,7 +130,7 @@ class PushRuleStore(SQLBaseStore):
|
|||||||
txn,
|
txn,
|
||||||
table="push_rules",
|
table="push_rules",
|
||||||
keyvalues={
|
keyvalues={
|
||||||
"user_name": user_name,
|
"user_name": user_id,
|
||||||
"rule_id": relative_to_rule,
|
"rule_id": relative_to_rule,
|
||||||
},
|
},
|
||||||
retcols=["priority_class", "priority"],
|
retcols=["priority_class", "priority"],
|
||||||
@ -154,7 +154,7 @@ class PushRuleStore(SQLBaseStore):
|
|||||||
new_rule.pop("before", None)
|
new_rule.pop("before", None)
|
||||||
new_rule.pop("after", None)
|
new_rule.pop("after", None)
|
||||||
new_rule['priority_class'] = priority_class
|
new_rule['priority_class'] = priority_class
|
||||||
new_rule['user_name'] = user_name
|
new_rule['user_name'] = user_id
|
||||||
new_rule['id'] = self._push_rule_id_gen.get_next_txn(txn)
|
new_rule['id'] = self._push_rule_id_gen.get_next_txn(txn)
|
||||||
|
|
||||||
# check if the priority before/after is free
|
# check if the priority before/after is free
|
||||||
@ -170,7 +170,7 @@ class PushRuleStore(SQLBaseStore):
|
|||||||
"SELECT COUNT(*) FROM push_rules"
|
"SELECT COUNT(*) FROM push_rules"
|
||||||
" WHERE user_name = ? AND priority_class = ? AND priority = ?"
|
" WHERE user_name = ? AND priority_class = ? AND priority = ?"
|
||||||
)
|
)
|
||||||
txn.execute(sql, (user_name, priority_class, new_rule_priority))
|
txn.execute(sql, (user_id, priority_class, new_rule_priority))
|
||||||
res = txn.fetchall()
|
res = txn.fetchall()
|
||||||
num_conflicting = res[0][0]
|
num_conflicting = res[0][0]
|
||||||
|
|
||||||
@ -187,14 +187,14 @@ class PushRuleStore(SQLBaseStore):
|
|||||||
else:
|
else:
|
||||||
sql += ">= ?"
|
sql += ">= ?"
|
||||||
|
|
||||||
txn.execute(sql, (user_name, priority_class, new_rule_priority))
|
txn.execute(sql, (user_id, priority_class, new_rule_priority))
|
||||||
|
|
||||||
txn.call_after(
|
txn.call_after(
|
||||||
self.get_push_rules_for_user.invalidate, (user_name,)
|
self.get_push_rules_for_user.invalidate, (user_id,)
|
||||||
)
|
)
|
||||||
|
|
||||||
txn.call_after(
|
txn.call_after(
|
||||||
self.get_push_rules_enabled_for_user.invalidate, (user_name,)
|
self.get_push_rules_enabled_for_user.invalidate, (user_id,)
|
||||||
)
|
)
|
||||||
|
|
||||||
self._simple_insert_txn(
|
self._simple_insert_txn(
|
||||||
@ -203,14 +203,14 @@ class PushRuleStore(SQLBaseStore):
|
|||||||
values=new_rule,
|
values=new_rule,
|
||||||
)
|
)
|
||||||
|
|
||||||
def _add_push_rule_highest_priority_txn(self, txn, user_name,
|
def _add_push_rule_highest_priority_txn(self, txn, user_id,
|
||||||
priority_class, **kwargs):
|
priority_class, **kwargs):
|
||||||
# find the highest priority rule in that class
|
# find the highest priority rule in that class
|
||||||
sql = (
|
sql = (
|
||||||
"SELECT COUNT(*), MAX(priority) FROM push_rules"
|
"SELECT COUNT(*), MAX(priority) FROM push_rules"
|
||||||
" WHERE user_name = ? and priority_class = ?"
|
" WHERE user_name = ? and priority_class = ?"
|
||||||
)
|
)
|
||||||
txn.execute(sql, (user_name, priority_class))
|
txn.execute(sql, (user_id, priority_class))
|
||||||
res = txn.fetchall()
|
res = txn.fetchall()
|
||||||
(how_many, highest_prio) = res[0]
|
(how_many, highest_prio) = res[0]
|
||||||
|
|
||||||
@ -221,15 +221,15 @@ class PushRuleStore(SQLBaseStore):
|
|||||||
# and insert the new rule
|
# and insert the new rule
|
||||||
new_rule = kwargs
|
new_rule = kwargs
|
||||||
new_rule['id'] = self._push_rule_id_gen.get_next_txn(txn)
|
new_rule['id'] = self._push_rule_id_gen.get_next_txn(txn)
|
||||||
new_rule['user_name'] = user_name
|
new_rule['user_name'] = user_id
|
||||||
new_rule['priority_class'] = priority_class
|
new_rule['priority_class'] = priority_class
|
||||||
new_rule['priority'] = new_prio
|
new_rule['priority'] = new_prio
|
||||||
|
|
||||||
txn.call_after(
|
txn.call_after(
|
||||||
self.get_push_rules_for_user.invalidate, (user_name,)
|
self.get_push_rules_for_user.invalidate, (user_id,)
|
||||||
)
|
)
|
||||||
txn.call_after(
|
txn.call_after(
|
||||||
self.get_push_rules_enabled_for_user.invalidate, (user_name,)
|
self.get_push_rules_enabled_for_user.invalidate, (user_id,)
|
||||||
)
|
)
|
||||||
|
|
||||||
self._simple_insert_txn(
|
self._simple_insert_txn(
|
||||||
@ -239,48 +239,48 @@ class PushRuleStore(SQLBaseStore):
|
|||||||
)
|
)
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def delete_push_rule(self, user_name, rule_id):
|
def delete_push_rule(self, user_id, rule_id):
|
||||||
"""
|
"""
|
||||||
Delete a push rule. Args specify the row to be deleted and can be
|
Delete a push rule. Args specify the row to be deleted and can be
|
||||||
any of the columns in the push_rule table, but below are the
|
any of the columns in the push_rule table, but below are the
|
||||||
standard ones
|
standard ones
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
user_name (str): The matrix ID of the push rule owner
|
user_id (str): The matrix ID of the push rule owner
|
||||||
rule_id (str): The rule_id of the rule to be deleted
|
rule_id (str): The rule_id of the rule to be deleted
|
||||||
"""
|
"""
|
||||||
yield self._simple_delete_one(
|
yield self._simple_delete_one(
|
||||||
"push_rules",
|
"push_rules",
|
||||||
{'user_name': user_name, 'rule_id': rule_id},
|
{'user_name': user_id, 'rule_id': rule_id},
|
||||||
desc="delete_push_rule",
|
desc="delete_push_rule",
|
||||||
)
|
)
|
||||||
|
|
||||||
self.get_push_rules_for_user.invalidate((user_name,))
|
self.get_push_rules_for_user.invalidate((user_id,))
|
||||||
self.get_push_rules_enabled_for_user.invalidate((user_name,))
|
self.get_push_rules_enabled_for_user.invalidate((user_id,))
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def set_push_rule_enabled(self, user_name, rule_id, enabled):
|
def set_push_rule_enabled(self, user_id, rule_id, enabled):
|
||||||
ret = yield self.runInteraction(
|
ret = yield self.runInteraction(
|
||||||
"_set_push_rule_enabled_txn",
|
"_set_push_rule_enabled_txn",
|
||||||
self._set_push_rule_enabled_txn,
|
self._set_push_rule_enabled_txn,
|
||||||
user_name, rule_id, enabled
|
user_id, rule_id, enabled
|
||||||
)
|
)
|
||||||
defer.returnValue(ret)
|
defer.returnValue(ret)
|
||||||
|
|
||||||
def _set_push_rule_enabled_txn(self, txn, user_name, rule_id, enabled):
|
def _set_push_rule_enabled_txn(self, txn, user_id, rule_id, enabled):
|
||||||
new_id = self._push_rules_enable_id_gen.get_next_txn(txn)
|
new_id = self._push_rules_enable_id_gen.get_next_txn(txn)
|
||||||
self._simple_upsert_txn(
|
self._simple_upsert_txn(
|
||||||
txn,
|
txn,
|
||||||
"push_rules_enable",
|
"push_rules_enable",
|
||||||
{'user_name': user_name, 'rule_id': rule_id},
|
{'user_name': user_id, 'rule_id': rule_id},
|
||||||
{'enabled': 1 if enabled else 0},
|
{'enabled': 1 if enabled else 0},
|
||||||
{'id': new_id},
|
{'id': new_id},
|
||||||
)
|
)
|
||||||
txn.call_after(
|
txn.call_after(
|
||||||
self.get_push_rules_for_user.invalidate, (user_name,)
|
self.get_push_rules_for_user.invalidate, (user_id,)
|
||||||
)
|
)
|
||||||
txn.call_after(
|
txn.call_after(
|
||||||
self.get_push_rules_enabled_for_user.invalidate, (user_name,)
|
self.get_push_rules_enabled_for_user.invalidate, (user_id,)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ class PusherStore(SQLBaseStore):
|
|||||||
defer.returnValue(rows)
|
defer.returnValue(rows)
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def add_pusher(self, user_name, access_token, profile_tag, kind, app_id,
|
def add_pusher(self, user_id, access_token, profile_tag, kind, app_id,
|
||||||
app_display_name, device_display_name,
|
app_display_name, device_display_name,
|
||||||
pushkey, pushkey_ts, lang, data):
|
pushkey, pushkey_ts, lang, data):
|
||||||
try:
|
try:
|
||||||
@ -90,7 +90,7 @@ class PusherStore(SQLBaseStore):
|
|||||||
dict(
|
dict(
|
||||||
app_id=app_id,
|
app_id=app_id,
|
||||||
pushkey=pushkey,
|
pushkey=pushkey,
|
||||||
user_name=user_name,
|
user_name=user_id,
|
||||||
),
|
),
|
||||||
dict(
|
dict(
|
||||||
access_token=access_token,
|
access_token=access_token,
|
||||||
@ -112,38 +112,38 @@ class PusherStore(SQLBaseStore):
|
|||||||
raise StoreError(500, "Problem creating pusher.")
|
raise StoreError(500, "Problem creating pusher.")
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def delete_pusher_by_app_id_pushkey_user_name(self, app_id, pushkey, user_name):
|
def delete_pusher_by_app_id_pushkey_user_id(self, app_id, pushkey, user_id):
|
||||||
yield self._simple_delete_one(
|
yield self._simple_delete_one(
|
||||||
"pushers",
|
"pushers",
|
||||||
{"app_id": app_id, "pushkey": pushkey, 'user_name': user_name},
|
{"app_id": app_id, "pushkey": pushkey, 'user_name': user_id},
|
||||||
desc="delete_pusher_by_app_id_pushkey_user_name",
|
desc="delete_pusher_by_app_id_pushkey_user_id",
|
||||||
)
|
)
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def update_pusher_last_token(self, app_id, pushkey, user_name, last_token):
|
def update_pusher_last_token(self, app_id, pushkey, user_id, last_token):
|
||||||
yield self._simple_update_one(
|
yield self._simple_update_one(
|
||||||
"pushers",
|
"pushers",
|
||||||
{'app_id': app_id, 'pushkey': pushkey, 'user_name': user_name},
|
{'app_id': app_id, 'pushkey': pushkey, 'user_name': user_id},
|
||||||
{'last_token': last_token},
|
{'last_token': last_token},
|
||||||
desc="update_pusher_last_token",
|
desc="update_pusher_last_token",
|
||||||
)
|
)
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def update_pusher_last_token_and_success(self, app_id, pushkey, user_name,
|
def update_pusher_last_token_and_success(self, app_id, pushkey, user_id,
|
||||||
last_token, last_success):
|
last_token, last_success):
|
||||||
yield self._simple_update_one(
|
yield self._simple_update_one(
|
||||||
"pushers",
|
"pushers",
|
||||||
{'app_id': app_id, 'pushkey': pushkey, 'user_name': user_name},
|
{'app_id': app_id, 'pushkey': pushkey, 'user_name': user_id},
|
||||||
{'last_token': last_token, 'last_success': last_success},
|
{'last_token': last_token, 'last_success': last_success},
|
||||||
desc="update_pusher_last_token_and_success",
|
desc="update_pusher_last_token_and_success",
|
||||||
)
|
)
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def update_pusher_failing_since(self, app_id, pushkey, user_name,
|
def update_pusher_failing_since(self, app_id, pushkey, user_id,
|
||||||
failing_since):
|
failing_since):
|
||||||
yield self._simple_update_one(
|
yield self._simple_update_one(
|
||||||
"pushers",
|
"pushers",
|
||||||
{'app_id': app_id, 'pushkey': pushkey, 'user_name': user_name},
|
{'app_id': app_id, 'pushkey': pushkey, 'user_name': user_id},
|
||||||
{'failing_since': failing_since},
|
{'failing_since': failing_since},
|
||||||
desc="update_pusher_failing_since",
|
desc="update_pusher_failing_since",
|
||||||
)
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user