David Baker
7065b75bfd
Don't crash if a user has no push rule enabled entries
2016-01-22 15:13:44 +00:00
David Baker
52bdd1b834
Overlay the push_rules_enabled map for users, otherwise they won't be able to disable server default rules.
2016-01-22 14:58:19 +00:00
Erik Johnston
0e07f2e15d
Only fetch events for rooms and receipts
2016-01-21 16:10:37 +00:00
Erik Johnston
3a00f13436
Only compute badge count when necessary.
...
This reverts commit d726597737
.
2016-01-21 14:56:11 +00:00
David Baker
930ba003f8
Remove member event rule as per SYN-607
2016-01-21 11:50:27 +00:00
David Baker
3fa344c037
Add storage function to get all receipts for a user. Also add some cache invalidation to the receipts storage because there wasn't any, and remove a method that was unused.
2016-01-20 15:30:31 +00:00
David Baker
7cc047455e
Inline membership specifier
2016-01-20 13:50:28 +00:00
David Baker
d726597737
Simplify badge updating code by just updating it every time we get woken up and it's not an event
2016-01-20 13:49:00 +00:00
David Baker
2309450a76
Merge branch 'develop' into push_badge_counts
2016-01-20 13:45:13 +00:00
David Baker
746f6e0eb3
'filtered' is a list of zero or 1
2016-01-20 13:44:04 +00:00
David Baker
7441d8cc0c
Merge remote-tracking branch 'origin/develop' into push_badge_counts
2016-01-20 13:40:22 +00:00
David Baker
259d1ecd1d
Don't generate push actions for our own events
2016-01-20 13:24:59 +00:00
David Baker
afb7b377f2
Merge branch 'develop' into push_badge_counts
2016-01-19 18:17:23 +00:00
Erik Johnston
fb5d8e58ff
Change regex cache size to 5000
2016-01-19 16:07:07 +00:00
Erik Johnston
5a7d1ecffc
Add regex cache. Only caculate push actions for users that have sent read receipts, and are on that server
2016-01-19 16:01:05 +00:00
Erik Johnston
d056a0a3d8
Handle glob -> regex errors
2016-01-19 14:43:24 +00:00
Erik Johnston
9654ee0848
Return don't break
2016-01-19 14:24:59 +00:00
Erik Johnston
7ecd211163
Except truthy values
2016-01-19 14:22:02 +00:00
Erik Johnston
9a8949f022
Merge branch 'develop' of github.com:matrix-org/synapse into default_notify
2016-01-19 11:37:05 +00:00
Erik Johnston
f750a442f7
Update _id
2016-01-19 10:14:53 +00:00
Erik Johnston
003853e702
Preserve truthiness
2016-01-18 17:34:02 +00:00
Erik Johnston
a284ad4092
You need to escape backslashes
2016-01-18 17:20:44 +00:00
Erik Johnston
47f82e4408
Fix branch didn't check word_boundary
2016-01-18 17:04:36 +00:00
Erik Johnston
29c353c553
Don't split at word boundaries, actually use regex
2016-01-18 16:48:17 +00:00
Erik Johnston
d16dcf642e
Drop log levels
2016-01-18 15:44:04 +00:00
Erik Johnston
7dd14e5d1c
Add comments and remove dead code
2016-01-18 15:42:23 +00:00
Erik Johnston
866fe27e78
Do for loop once at start
2016-01-18 15:29:41 +00:00
Erik Johnston
d1f56f732e
Use static for const dicts
2016-01-18 15:17:56 +00:00
Erik Johnston
345ff2196a
Don't edit ruleset
2016-01-18 14:50:17 +00:00
Erik Johnston
63485b3029
Re-enable urnead notifications
2016-01-18 14:48:30 +00:00
Erik Johnston
f59b564507
Make notifications go quicker
2016-01-18 14:48:29 +00:00
David Baker
12623c99b6
Use the unread notification count to send accurate badge counts in push notifications.
2016-01-13 18:55:57 +00:00
Erik Johnston
fcb05b4c82
Temporarily disable notification branch
2016-01-13 17:39:58 +00:00
Mark Haines
9c1f853d58
Rename 'user_name' to 'user_id' in push to make it consistent with the rest of the code
2016-01-13 13:32:59 +00:00
David Baker
d9db819e23
Change default pushrules back to notifying for all messages.
2016-01-13 13:15:53 +00:00
David Baker
c232780081
Merge pull request #456 from matrix-org/store_event_actions
...
Send unread notification counts
2016-01-08 14:47:15 +00:00
David Baker
823b679232
more commas
2016-01-07 10:02:47 +00:00
Matthew Hodgson
6c28ac260c
copyrights
2016-01-07 04:26:29 +00:00
David Baker
992928304f
Delete notifications for redacted events
2016-01-06 11:58:46 +00:00
David Baker
c79f221192
Add is_guest flag to users db to track whether a user is a guest user or not. Use this so we can run _filter_events_for_client when calculating event_push_actions.
2016-01-06 11:38:09 +00:00
David Baker
85ca8cb90c
comment typo
2016-01-05 13:32:39 +00:00
David Baker
c914d67cda
Rename event-actions to event_push_actions as per PR request
2016-01-04 14:05:37 +00:00
David Baker
3051c9d002
Address minor PR issues
2016-01-04 13:39:29 +00:00
David Baker
9b4cd0cd0f
pep8 & unused variable
2015-12-22 17:25:09 +00:00
David Baker
5645d9747b
Add some comments to areas that could be optimised.
2015-12-22 17:19:22 +00:00
David Baker
4c8f6a7e42
Insert push actions in a single db query rather than one per user/profile_tag
2015-12-22 17:04:31 +00:00
David Baker
65c451cb38
Add bulk push rule evaluator which actually still evaluates rules one by one, but does far fewer db queries to fetch the rules
2015-12-22 15:19:34 +00:00
David Baker
f73f154ec2
Only run pushers for users on this hs!
2015-12-21 15:28:54 +00:00
David Baker
42ad49f5b7
still very WIP, but now sends unread_notifications_count in the room object on sync (only actually corrrect in a full sync: hardcoded to 0 in incremental syncs).
2015-12-16 18:42:09 +00:00
David Baker
5e909c73d7
Store nothing instead of ['dont_notify'] for events with no notification required: much as it would be nice to be able to tell between the event not having been processed and there being no notification for it, this isn't worth filling up the table with ['dont_notify'] I think. Consequently treat the empty actions array as dont_notify and filter dont_notify out of the result.
2015-12-10 18:40:28 +00:00
David Baker
aa667ee396
Save event actions to the db
2015-12-10 17:51:15 +00:00
David Baker
21f135ba76
Very first cut of calculating actions for events as they come in. Doesn't store them yet. Not very efficient.
2015-12-10 16:26:08 +00:00
David Baker
a24eedada7
pep8
2015-12-09 15:57:42 +00:00
David Baker
4a728beba1
Split out the push rule evaluator into a separate file so it can be more readily reused. Should be functionally identical.
2015-12-09 15:51:34 +00:00
Mark Haines
5dc09e82c4
Merge pull request #413 from matrix-org/markjh/reuse_http_client
...
Reuse a single http client, rather than creating new ones
2015-12-02 12:56:23 +00:00
Mark Haines
37b2d69bbc
Reuse a single http client, rather than creating new ones
2015-12-02 11:36:02 +00:00
David Baker
4b1281f9b7
Change the m.room.message rule to be disabled by default so we only notify for 1:1 rooms / highlights out-of-the-box
2015-12-02 11:26:49 +00:00
David Baker
91482cd6a0
Use raw string for regex here, otherwise \b is the backspace character. Fixes displayname matching.
2015-10-08 11:22:15 +01:00
Erik Johnston
f8f3d72e2b
Don't make pushers handle presence/typing events
2015-08-24 16:19:43 +01:00
Erik Johnston
78fa346b07
Store the 'last_token' in the db, even if we processed no events
2015-08-19 10:08:31 +01:00
Erik Johnston
a45ec7c651
Block on storing the current last_tokens
2015-08-19 10:08:12 +01:00
Daniel Wagner-Hall
415c2f0549
Simplify LoginHander and AuthHandler
...
* Merge LoginHandler -> AuthHandler
* Add a bunch of documentation
* Improve some naming
* Remove unused branches
I will start merging the actual logic of the two handlers shortly
2015-08-12 15:49:37 +01:00
David Baker
6825eef955
Oops: underride rule had an identifier with override in it.
2015-06-23 14:26:14 +01:00
David Baker
b8690dd840
Catch any exceptions in the pusher loop. Use a lower timeout for pushers so we can see if they're actually still running.
2015-06-05 11:40:22 +01:00
Mark Haines
00dd207f60
Take a dict of the rule, not the rule list
2015-05-26 14:57:48 +01:00
Mark Haines
804b732aab
SYN-390: Don't modify the dictionary returned from the database here either
2015-05-26 10:35:08 +01:00
Mark Haines
2043527b9b
Don't try to use a txn when not in one, remove spurious debug logging
2015-05-21 16:53:03 +01:00
Mark Haines
53447e9cd3
Add caches for things requested by the pushers
2015-05-21 16:41:39 +01:00
Mark Haines
d61ce3f670
Add a cache for get_current_state with state_key
2015-05-21 16:41:39 +01:00
Erik Johnston
3e71d13acf
Also log when we've started pushers
2015-04-29 18:37:42 +01:00
Erik Johnston
c27d6ad6b5
Only start pushers when synapse has fully started
2015-04-29 18:25:24 +01:00
Erik Johnston
46daf2d200
Start pushers on reactor thread
2015-04-29 18:22:20 +01:00
David Baker
12d381bd5d
Decode the data json in the storage layer (was moved but this part was missed)
2015-04-29 17:13:51 +01:00
Erik Johnston
327ca883ec
Merge branch 'develop' of github.com:matrix-org/synapse into postgres
2015-04-28 13:39:42 +01:00
Mark Haines
9182f87664
Merge pull request #126 from matrix-org/csauth
...
Client / Server Auth Refactor
2015-04-28 11:00:27 +01:00
Erik Johnston
6f8e2d517e
Merge branch 'develop' of github.com:matrix-org/synapse into postgres
2015-04-27 14:41:40 +01:00
David Baker
ed83638668
Make one-to-one rule an underride otherwise bings don't work in one-to-one wrooms. Likewise a couple of other rules.
2015-04-24 14:27:17 +01:00
Mark Haines
4e2f8b8722
Copyright notices
2015-04-24 10:35:29 +01:00
Erik Johnston
bc9e69e160
Move encoding and decoding of JSON into storage layer
2015-04-16 11:01:09 +01:00
David Baker
6f4f7e4e22
pep8
2015-03-26 14:12:06 +00:00
David Baker
a32e876ef4
Delete pushers when changing password
2015-03-26 13:40:16 +00:00
David Baker
df4c12c762
pep8 blank lines
2015-03-25 19:08:17 +00:00
David Baker
c1a256cc4c
Allow multiple pushers for a single app ID & pushkey, honouring the 'append' flag in the API.
2015-03-25 19:06:22 +00:00
David Baker
c7023f2155
1) Pushers are now associated with an access token
...
2) Change places where we mean unauthenticated to 401, not 403, in C/S v2: hack so it stays as 403 in v1 because web client relies on it.
2015-03-24 17:24:15 +00:00
David Baker
bbb010a30f
More sacrifices to the pep8 gods.
2015-03-12 16:53:12 +00:00
David Baker
c92fdf88a3
Log the matching push rule.
2015-03-11 22:17:31 +00:00
David Baker
cdb2e045ee
Again, underscore, not hyphen
2015-03-11 14:22:35 +00:00
David Baker
465354ffde
'false' is not False
2015-03-11 11:24:50 +00:00
David Baker
83b1e7fb3c
PEP8 blank lines
2015-03-11 10:01:17 +00:00
David Baker
04f8478aaa
Add the master push rule for the break-my-push button. Allow server default rules to be disabled by default.
2015-03-10 17:26:25 +00:00
David Baker
1df3ccf7ee
D'oh: underscore, not hyphen
2015-03-09 12:39:56 +00:00
David Baker
118c883429
Call notifications should be override else they'll get clobbered by sender/room rules.
2015-03-06 19:41:36 +00:00
David Baker
be9dafcd37
Dial down logging for failed pushers
2015-03-06 15:32:38 +00:00
David Baker
96eda876a4
Specify when we don't want to highlight
2015-03-06 15:12:37 +00:00
David Baker
e7d7152c3c
Remove the fallback rule - we probably don't want to be notifying for everything even if we don't know what it is.
2015-03-06 15:03:34 +00:00
David Baker
5ecc768970
Add attribute so push gateways can tell if a member event is about the user in question
2015-03-06 14:41:50 +00:00
David Baker
c06b45129c
Add more server default rules so we have default rules for whether you get notifs for invites / random member events
2015-03-06 11:50:51 +00:00
David Baker
657a0d2568
Comment typo
2015-03-06 11:34:30 +00:00
David Baker
1487bba226
Suppress notices should trump content/room/sender rules.
2015-03-06 10:27:32 +00:00
David Baker
83d31144eb
Add the highlight tweak where messages should be highlighted a different colour in appropriate clients.
2015-03-06 10:26:08 +00:00
David Baker
590b544f67
Add default rule to suppress notices.
2015-03-04 15:29:02 +00:00
David Baker
6fab7bd2c1
s/user_name/user/ as per mjark's comment
2015-03-02 18:17:19 +00:00
David Baker
769f8b58e8
Rename the room-with-two-people rule to be more compatible if we have actual one to one rooms.
2015-03-02 13:28:24 +00:00
David Baker
cfac3b7873
SYN-267 Add a fallback rule as an explicit server default rule and make the default dont-notify so you effectively have a "notify for everything else" switch you can turn on and off.
2015-02-26 18:58:14 +00:00
David Baker
1959088156
Add API for getting/setting enabled-ness of push rules.
2015-02-26 18:07:44 +00:00
David Baker
94fa334b01
Add enable/disable overlay for push rules (REST API not yet hooked up)
2015-02-25 19:17:07 +00:00
David Baker
b457f1677c
Send room ID in http notifications so clients know which room to go to if the user responds to the notification.
2015-02-19 10:06:17 +00:00
David Baker
8d5cce62ab
Update pushers by app id and pushkey, not user id and pushkey
2015-02-13 16:16:16 +00:00
Erik Johnston
e9e54449f5
Use encode_canonical_json for pushes
2015-02-11 17:32:42 +00:00
Erik Johnston
4ebbaf0d43
Blunty replace json with simplejson
2015-02-11 14:23:10 +00:00
Mark Haines
b085fac735
Code-style fixes
2015-02-10 16:30:48 +00:00
David Baker
8f616684a3
Need to use re.search if looking for matches not at the start of the string. Also comparisons with None should be 'is'.
2015-02-09 17:01:40 +00:00
Matthew Hodgson
a578251b48
only do word-boundary patches on bodies for now
2015-02-09 16:44:47 +00:00
David Baker
784d714a3f
Fix server default rule injection (downwards, not upwards!)
2015-02-09 14:17:52 +00:00
Matthew Hodgson
ecb0f78063
glob *s should probably be non-greedy
2015-02-08 02:37:35 +00:00
Matthew Hodgson
c2afc2ad90
oops
2015-02-08 00:37:03 +00:00
Matthew Hodgson
8be07e0db4
kill off fnmatch in favour of word-boundary based push alerts (untested)
2015-02-08 00:34:34 +00:00
David Baker
aaf50bf6f3
Give server default rules the 'default' attribute and fix various brokenness.
2015-02-05 15:11:38 +00:00
David Baker
2df41aa138
Server default rules now of all kinds rather than all being at lowest prio.
2015-02-05 14:46:37 +00:00
David Baker
dc7bb70f22
s/instance_handle/profile_tag/
2015-02-03 16:51:07 +00:00
David Baker
9a71add1c0
Use set_tweak instead of set_sound
2015-02-03 16:06:31 +00:00
David Baker
365e007bee
Ignore empty strings for display names & room names in notifications
2015-01-31 12:48:06 +00:00
David Baker
0b354fcb84
Again, don't assume all member events have displayname.
2015-01-30 23:10:35 +00:00
David Baker
fe10b882b7
Don't assume all member events have a display nme.
2015-01-30 23:06:39 +00:00
David Baker
b4b892f4a3
Spit out server default rules too.
2015-01-30 15:54:51 +00:00
David Baker
4ffac34a64
Add glob asterisks when running rules.
...
Means that now you can't do exact matches even in override rules,
but I think we can live with that. Advantage is that you'll now
always get back what was put in to the API.
2015-01-30 15:03:56 +00:00
David Baker
322a047502
Add room member count condition and default rule to make a noise on rooms of only 2 people.
2015-01-30 14:46:45 +00:00
David Baker
fc946f3b8d
Include content in notification pokes
2015-01-29 21:59:17 +00:00
David Baker
0b16886397
Change 'from' in notification pokes to 'sender' to match client API v2. Send sender display names where they exist.
2015-01-29 18:51:22 +00:00
David Baker
1235f7f383
Add default push rules including setting a sound for messages mentioning your username / display name
2015-01-29 18:38:22 +00:00
Mark Haines
acb68a39e0
Code style fixes.
2015-01-29 16:12:40 +00:00
David Baker
8b1dd9f57f
Only send a badge-reset if the user actually has unread notifications.
2015-01-29 16:10:01 +00:00
David Baker
30fbba168b
Easy on the newlines
2015-01-28 14:23:16 +00:00
David Baker
dd3abbd61f
2015
2015-01-28 14:22:39 +00:00
David Baker
6fde707add
doc style fix
2015-01-28 14:14:49 +00:00
David Baker
5f2665320f
It is 2015
2015-01-28 14:11:45 +00:00
David Baker
20c47383dc
Oops, bad merge: needed to change the base class of the rest servlets too.
2015-01-28 14:10:46 +00:00
David Baker
03149ad23a
More code style things
2015-01-28 14:01:24 +00:00
David Baker
e1ca0f1396
Brackets rather than slashes at end
2015-01-28 13:58:32 +00:00
David Baker
6df6f5e084
Redundant bracketing & missed space
2015-01-28 13:56:35 +00:00
David Baker
ca7240a2f0
Update copyright
2015-01-28 13:17:55 +00:00
David Baker
fb532d8425
Unused import
2015-01-28 13:06:09 +00:00
David Baker
273b12729b
Reset badge count to zero when last active time is bumped
2015-01-28 11:55:49 +00:00
David Baker
b481889117
Support membership events and more camelcase/underscores
2015-01-26 17:27:28 +00:00
David Baker
efac71d6ca
Pushers should only try & look for rejected devices in something that's a list or tuple.
2015-01-26 14:37:14 +00:00
David Baker
f21f9fa3c5
Use push settings!
2015-01-23 17:07:06 +00:00
David Baker
fc7a05c443
more pep8 suggestions
2015-01-23 13:36:01 +00:00
David Baker
5d5932d493
use underscores everywhere, not camelcase.
2015-01-20 11:52:08 +00:00
David Baker
afb714f7be
add instance_handles to pushers so we have a way to refer to them even if the push token changes.
2015-01-20 11:49:48 +00:00
David Baker
2d2953cf5f
Require device language when adding a pusher.
...
Because this seems like it might be useful to do sooner rather
than later.
2015-01-16 11:24:10 +00:00
David Baker
2ca2dbc821
Send room name and first alias in notification poke.
2015-01-15 16:56:18 +00:00
David Baker
e3e2fc3255
Don't make the pushers' event streams cause people to appear online
2015-01-15 16:17:21 +00:00
David Baker
2cb30767fa
Honour the 'rejected' return from push gateways
...
Add a timestamp to push tokens so we know the last time they we
got them from the device. Send it to the push gateways so it can
determine whether its failure is more recent than the token.
Stop and remove pushers that have been rejected.
2015-01-13 19:48:37 +00:00
David Baker
70d0a453f3
Split out function to decide whether to notify or a given event
2015-01-13 13:14:41 +00:00
David Baker
fead431c18
If we didn't get any events, advance the token or we'll just keep not getting the same events again.
2014-12-18 18:44:33 +00:00
David Baker
9728c305a3
after a few rethinks, a working implementation of pushers.
2014-12-18 14:49:22 +00:00
David Baker
88af58d41d
Update to app_id / app_instance_id (partially) and mangle to be PEP8 compliant.
2014-12-03 13:37:02 +00:00
David Baker
eb6aedf92c
More work on pushers. Attempt to do HTTP pokes. Not sure if the actual HTTP pokes work or not yet but the retry semantics are pretty good.
2014-11-21 12:21:00 +00:00
David Baker
051b185811
remove random half-line
2014-11-19 18:37:00 +00:00
David Baker
74c3879760
Start creating a module to do generic notifications (just prints them to stdout currently!)
2014-11-19 18:20:59 +00:00