Browse Source

Implement MSC4028: push all encrypted events. (#16361)

This unstable push rule is implemented behind an experimental
configuration flag.
tags/v1.94.0rc1
Patrick Cloke 7 months ago
committed by GitHub
parent
commit
17800a0e97
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 31 additions and 1 deletions
  1. +1
    -0
      changelog.d/16361.feature
  2. +1
    -0
      rust/benches/evaluator.rs
  3. +13
    -0
      rust/src/push/base_rules.rs
  4. +1
    -1
      rust/src/push/evaluator.rs
  5. +9
    -0
      rust/src/push/mod.rs
  6. +1
    -0
      stubs/synapse/synapse_rust/push.pyi
  7. +4
    -0
      synapse/config/experimental.py
  8. +1
    -0
      synapse/storage/databases/main/push_rule.py

+ 1
- 0
changelog.d/16361.feature View File

@@ -0,0 +1 @@
Experimental support for [MSC4028](https://github.com/matrix-org/matrix-spec-proposals/pull/4028) to push all encrypted events to clients.

+ 1
- 0
rust/benches/evaluator.rs View File

@@ -197,6 +197,7 @@ fn bench_eval_message(b: &mut Bencher) {
false,
false,
false,
false,
);

b.iter(|| eval.run(&rules, Some("bob"), Some("person")));


+ 13
- 0
rust/src/push/base_rules.rs View File

@@ -63,6 +63,19 @@ pub const BASE_PREPEND_OVERRIDE_RULES: &[PushRule] = &[PushRule {
}];

pub const BASE_APPEND_OVERRIDE_RULES: &[PushRule] = &[
PushRule {
rule_id: Cow::Borrowed("global/override/.org.matrix.msc4028.encrypted_event"),
priority_class: 5,
conditions: Cow::Borrowed(&[Condition::Known(KnownCondition::EventMatch(
EventMatchCondition {
key: Cow::Borrowed("type"),
pattern: Cow::Borrowed("m.room.encrypted"),
},
))]),
actions: Cow::Borrowed(&[Action::Notify]),
default: true,
default_enabled: false,
},
PushRule {
rule_id: Cow::Borrowed("global/override/.m.rule.suppress_notices"),
priority_class: 5,


+ 1
- 1
rust/src/push/evaluator.rs View File

@@ -564,7 +564,7 @@ fn test_requires_room_version_supports_condition() {
};
let rules = PushRules::new(vec![custom_rule]);
result = evaluator.run(
&FilteredPushRules::py_new(rules, BTreeMap::new(), true, false, true),
&FilteredPushRules::py_new(rules, BTreeMap::new(), true, false, true, false),
None,
None,
);


+ 9
- 0
rust/src/push/mod.rs View File

@@ -527,6 +527,7 @@ pub struct FilteredPushRules {
msc1767_enabled: bool,
msc3381_polls_enabled: bool,
msc3664_enabled: bool,
msc4028_push_encrypted_events: bool,
}

#[pymethods]
@@ -538,6 +539,7 @@ impl FilteredPushRules {
msc1767_enabled: bool,
msc3381_polls_enabled: bool,
msc3664_enabled: bool,
msc4028_push_encrypted_events: bool,
) -> Self {
Self {
push_rules,
@@ -545,6 +547,7 @@ impl FilteredPushRules {
msc1767_enabled,
msc3381_polls_enabled,
msc3664_enabled,
msc4028_push_encrypted_events,
}
}

@@ -581,6 +584,12 @@ impl FilteredPushRules {
return false;
}

if !self.msc4028_push_encrypted_events
&& rule.rule_id == "global/override/.org.matrix.msc4028.encrypted_event"
{
return false;
}

true
})
.map(|r| {


+ 1
- 0
stubs/synapse/synapse_rust/push.pyi View File

@@ -46,6 +46,7 @@ class FilteredPushRules:
msc1767_enabled: bool,
msc3381_polls_enabled: bool,
msc3664_enabled: bool,
msc4028_push_encrypted_events: bool,
): ...
def rules(self) -> Collection[Tuple[PushRule, bool]]: ...



+ 4
- 0
synapse/config/experimental.py View File

@@ -415,3 +415,7 @@ class ExperimentalConfig(Config):
LimitExceededError.include_retry_after_header = experimental.get(
"msc4041_enabled", False
)

self.msc4028_push_encrypted_events = experimental.get(
"msc4028_push_encrypted_events", False
)

+ 1
- 0
synapse/storage/databases/main/push_rule.py View File

@@ -88,6 +88,7 @@ def _load_rules(
msc1767_enabled=experimental_config.msc1767_enabled,
msc3664_enabled=experimental_config.msc3664_enabled,
msc3381_polls_enabled=experimental_config.msc3381_polls_enabled,
msc4028_push_encrypted_events=experimental_config.msc4028_push_encrypted_events,
)

return filtered_rules


Loading…
Cancel
Save