matrix-synapse 1.143.0__cp310-abi3-manylinux_2_28_aarch64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of matrix-synapse might be problematic. Click here for more details.
- matrix_synapse-1.143.0.dist-info/AUTHORS.rst +51 -0
- matrix_synapse-1.143.0.dist-info/LICENSE-AGPL-3.0 +661 -0
- matrix_synapse-1.143.0.dist-info/LICENSE-COMMERCIAL +6 -0
- matrix_synapse-1.143.0.dist-info/METADATA +385 -0
- matrix_synapse-1.143.0.dist-info/RECORD +1058 -0
- matrix_synapse-1.143.0.dist-info/WHEEL +4 -0
- matrix_synapse-1.143.0.dist-info/entry_points.txt +14 -0
- synapse/__init__.py +97 -0
- synapse/_scripts/__init__.py +0 -0
- synapse/_scripts/export_signing_key.py +109 -0
- synapse/_scripts/generate_config.py +83 -0
- synapse/_scripts/generate_log_config.py +56 -0
- synapse/_scripts/generate_signing_key.py +55 -0
- synapse/_scripts/generate_workers_map.py +318 -0
- synapse/_scripts/hash_password.py +95 -0
- synapse/_scripts/move_remote_media_to_new_store.py +128 -0
- synapse/_scripts/register_new_matrix_user.py +402 -0
- synapse/_scripts/review_recent_signups.py +212 -0
- synapse/_scripts/synapse_port_db.py +1604 -0
- synapse/_scripts/synctl.py +365 -0
- synapse/_scripts/update_synapse_database.py +130 -0
- synapse/api/__init__.py +20 -0
- synapse/api/auth/__init__.py +207 -0
- synapse/api/auth/base.py +406 -0
- synapse/api/auth/internal.py +299 -0
- synapse/api/auth/mas.py +436 -0
- synapse/api/auth/msc3861_delegated.py +617 -0
- synapse/api/auth_blocking.py +144 -0
- synapse/api/constants.py +362 -0
- synapse/api/errors.py +907 -0
- synapse/api/filtering.py +537 -0
- synapse/api/presence.py +102 -0
- synapse/api/ratelimiting.py +480 -0
- synapse/api/room_versions.py +535 -0
- synapse/api/urls.py +118 -0
- synapse/app/__init__.py +60 -0
- synapse/app/_base.py +862 -0
- synapse/app/admin_cmd.py +388 -0
- synapse/app/appservice.py +30 -0
- synapse/app/client_reader.py +30 -0
- synapse/app/complement_fork_starter.py +206 -0
- synapse/app/event_creator.py +29 -0
- synapse/app/federation_reader.py +30 -0
- synapse/app/federation_sender.py +30 -0
- synapse/app/frontend_proxy.py +30 -0
- synapse/app/generic_worker.py +474 -0
- synapse/app/homeserver.py +505 -0
- synapse/app/media_repository.py +30 -0
- synapse/app/phone_stats_home.py +296 -0
- synapse/app/pusher.py +30 -0
- synapse/app/synchrotron.py +30 -0
- synapse/app/user_dir.py +31 -0
- synapse/appservice/__init__.py +458 -0
- synapse/appservice/api.py +567 -0
- synapse/appservice/scheduler.py +564 -0
- synapse/config/__init__.py +27 -0
- synapse/config/__main__.py +62 -0
- synapse/config/_base.py +1106 -0
- synapse/config/_base.pyi +215 -0
- synapse/config/_util.py +99 -0
- synapse/config/account_validity.py +116 -0
- synapse/config/api.py +141 -0
- synapse/config/appservice.py +210 -0
- synapse/config/auth.py +80 -0
- synapse/config/auto_accept_invites.py +43 -0
- synapse/config/background_updates.py +44 -0
- synapse/config/cache.py +231 -0
- synapse/config/captcha.py +90 -0
- synapse/config/cas.py +116 -0
- synapse/config/consent.py +73 -0
- synapse/config/database.py +184 -0
- synapse/config/emailconfig.py +367 -0
- synapse/config/experimental.py +595 -0
- synapse/config/federation.py +114 -0
- synapse/config/homeserver.py +141 -0
- synapse/config/jwt.py +55 -0
- synapse/config/key.py +447 -0
- synapse/config/logger.py +390 -0
- synapse/config/mas.py +192 -0
- synapse/config/matrixrtc.py +66 -0
- synapse/config/metrics.py +84 -0
- synapse/config/modules.py +40 -0
- synapse/config/oembed.py +185 -0
- synapse/config/oidc.py +509 -0
- synapse/config/password_auth_providers.py +82 -0
- synapse/config/push.py +64 -0
- synapse/config/ratelimiting.py +254 -0
- synapse/config/redis.py +74 -0
- synapse/config/registration.py +296 -0
- synapse/config/repository.py +311 -0
- synapse/config/retention.py +162 -0
- synapse/config/room.py +88 -0
- synapse/config/room_directory.py +165 -0
- synapse/config/saml2.py +251 -0
- synapse/config/server.py +1170 -0
- synapse/config/server_notices.py +84 -0
- synapse/config/spam_checker.py +66 -0
- synapse/config/sso.py +121 -0
- synapse/config/stats.py +54 -0
- synapse/config/third_party_event_rules.py +40 -0
- synapse/config/tls.py +192 -0
- synapse/config/tracer.py +71 -0
- synapse/config/user_directory.py +47 -0
- synapse/config/user_types.py +42 -0
- synapse/config/voip.py +59 -0
- synapse/config/workers.py +642 -0
- synapse/crypto/__init__.py +20 -0
- synapse/crypto/context_factory.py +278 -0
- synapse/crypto/event_signing.py +194 -0
- synapse/crypto/keyring.py +931 -0
- synapse/event_auth.py +1266 -0
- synapse/events/__init__.py +667 -0
- synapse/events/auto_accept_invites.py +216 -0
- synapse/events/builder.py +387 -0
- synapse/events/presence_router.py +243 -0
- synapse/events/snapshot.py +559 -0
- synapse/events/utils.py +924 -0
- synapse/events/validator.py +305 -0
- synapse/federation/__init__.py +22 -0
- synapse/federation/federation_base.py +382 -0
- synapse/federation/federation_client.py +2132 -0
- synapse/federation/federation_server.py +1540 -0
- synapse/federation/persistence.py +70 -0
- synapse/federation/send_queue.py +531 -0
- synapse/federation/sender/__init__.py +1164 -0
- synapse/federation/sender/per_destination_queue.py +886 -0
- synapse/federation/sender/transaction_manager.py +210 -0
- synapse/federation/transport/__init__.py +28 -0
- synapse/federation/transport/client.py +1199 -0
- synapse/federation/transport/server/__init__.py +334 -0
- synapse/federation/transport/server/_base.py +429 -0
- synapse/federation/transport/server/federation.py +910 -0
- synapse/federation/units.py +133 -0
- synapse/handlers/__init__.py +20 -0
- synapse/handlers/account.py +162 -0
- synapse/handlers/account_data.py +360 -0
- synapse/handlers/account_validity.py +361 -0
- synapse/handlers/admin.py +615 -0
- synapse/handlers/appservice.py +989 -0
- synapse/handlers/auth.py +2481 -0
- synapse/handlers/cas.py +413 -0
- synapse/handlers/deactivate_account.py +363 -0
- synapse/handlers/delayed_events.py +599 -0
- synapse/handlers/device.py +1870 -0
- synapse/handlers/devicemessage.py +399 -0
- synapse/handlers/directory.py +545 -0
- synapse/handlers/e2e_keys.py +1834 -0
- synapse/handlers/e2e_room_keys.py +455 -0
- synapse/handlers/event_auth.py +390 -0
- synapse/handlers/events.py +201 -0
- synapse/handlers/federation.py +2039 -0
- synapse/handlers/federation_event.py +2419 -0
- synapse/handlers/identity.py +812 -0
- synapse/handlers/initial_sync.py +528 -0
- synapse/handlers/jwt.py +120 -0
- synapse/handlers/message.py +2347 -0
- synapse/handlers/oidc.py +1801 -0
- synapse/handlers/pagination.py +768 -0
- synapse/handlers/password_policy.py +102 -0
- synapse/handlers/presence.py +2633 -0
- synapse/handlers/profile.py +655 -0
- synapse/handlers/push_rules.py +164 -0
- synapse/handlers/read_marker.py +79 -0
- synapse/handlers/receipts.py +351 -0
- synapse/handlers/register.py +1059 -0
- synapse/handlers/relations.py +623 -0
- synapse/handlers/reports.py +98 -0
- synapse/handlers/room.py +2448 -0
- synapse/handlers/room_list.py +632 -0
- synapse/handlers/room_member.py +2365 -0
- synapse/handlers/room_member_worker.py +146 -0
- synapse/handlers/room_policy.py +186 -0
- synapse/handlers/room_summary.py +1057 -0
- synapse/handlers/saml.py +524 -0
- synapse/handlers/search.py +723 -0
- synapse/handlers/send_email.py +209 -0
- synapse/handlers/set_password.py +71 -0
- synapse/handlers/sliding_sync/__init__.py +1701 -0
- synapse/handlers/sliding_sync/extensions.py +969 -0
- synapse/handlers/sliding_sync/room_lists.py +2262 -0
- synapse/handlers/sliding_sync/store.py +128 -0
- synapse/handlers/sso.py +1291 -0
- synapse/handlers/state_deltas.py +82 -0
- synapse/handlers/stats.py +321 -0
- synapse/handlers/sync.py +3106 -0
- synapse/handlers/thread_subscriptions.py +190 -0
- synapse/handlers/typing.py +606 -0
- synapse/handlers/ui_auth/__init__.py +48 -0
- synapse/handlers/ui_auth/checkers.py +332 -0
- synapse/handlers/user_directory.py +783 -0
- synapse/handlers/worker_lock.py +371 -0
- synapse/http/__init__.py +105 -0
- synapse/http/additional_resource.py +62 -0
- synapse/http/client.py +1373 -0
- synapse/http/connectproxyclient.py +316 -0
- synapse/http/federation/__init__.py +19 -0
- synapse/http/federation/matrix_federation_agent.py +490 -0
- synapse/http/federation/srv_resolver.py +196 -0
- synapse/http/federation/well_known_resolver.py +367 -0
- synapse/http/matrixfederationclient.py +1873 -0
- synapse/http/proxy.py +290 -0
- synapse/http/proxyagent.py +497 -0
- synapse/http/replicationagent.py +202 -0
- synapse/http/request_metrics.py +309 -0
- synapse/http/server.py +1110 -0
- synapse/http/servlet.py +1018 -0
- synapse/http/site.py +825 -0
- synapse/http/types.py +27 -0
- synapse/logging/__init__.py +31 -0
- synapse/logging/_remote.py +261 -0
- synapse/logging/_terse_json.py +95 -0
- synapse/logging/context.py +1209 -0
- synapse/logging/formatter.py +62 -0
- synapse/logging/handlers.py +99 -0
- synapse/logging/loggers.py +25 -0
- synapse/logging/opentracing.py +1132 -0
- synapse/logging/scopecontextmanager.py +160 -0
- synapse/media/_base.py +830 -0
- synapse/media/filepath.py +417 -0
- synapse/media/media_repository.py +1580 -0
- synapse/media/media_storage.py +702 -0
- synapse/media/oembed.py +277 -0
- synapse/media/preview_html.py +556 -0
- synapse/media/storage_provider.py +195 -0
- synapse/media/thumbnailer.py +833 -0
- synapse/media/url_previewer.py +875 -0
- synapse/metrics/__init__.py +748 -0
- synapse/metrics/_gc.py +219 -0
- synapse/metrics/_reactor_metrics.py +171 -0
- synapse/metrics/_types.py +38 -0
- synapse/metrics/background_process_metrics.py +555 -0
- synapse/metrics/common_usage_metrics.py +94 -0
- synapse/metrics/jemalloc.py +248 -0
- synapse/module_api/__init__.py +2131 -0
- synapse/module_api/callbacks/__init__.py +50 -0
- synapse/module_api/callbacks/account_validity_callbacks.py +106 -0
- synapse/module_api/callbacks/media_repository_callbacks.py +157 -0
- synapse/module_api/callbacks/ratelimit_callbacks.py +78 -0
- synapse/module_api/callbacks/spamchecker_callbacks.py +991 -0
- synapse/module_api/callbacks/third_party_event_rules_callbacks.py +592 -0
- synapse/module_api/errors.py +42 -0
- synapse/notifier.py +970 -0
- synapse/push/__init__.py +212 -0
- synapse/push/bulk_push_rule_evaluator.py +635 -0
- synapse/push/clientformat.py +126 -0
- synapse/push/emailpusher.py +333 -0
- synapse/push/httppusher.py +564 -0
- synapse/push/mailer.py +1010 -0
- synapse/push/presentable_names.py +216 -0
- synapse/push/push_tools.py +114 -0
- synapse/push/push_types.py +141 -0
- synapse/push/pusher.py +87 -0
- synapse/push/pusherpool.py +501 -0
- synapse/push/rulekinds.py +33 -0
- synapse/py.typed +0 -0
- synapse/replication/__init__.py +20 -0
- synapse/replication/http/__init__.py +68 -0
- synapse/replication/http/_base.py +468 -0
- synapse/replication/http/account_data.py +297 -0
- synapse/replication/http/deactivate_account.py +81 -0
- synapse/replication/http/delayed_events.py +62 -0
- synapse/replication/http/devices.py +254 -0
- synapse/replication/http/federation.py +334 -0
- synapse/replication/http/login.py +106 -0
- synapse/replication/http/membership.py +364 -0
- synapse/replication/http/presence.py +133 -0
- synapse/replication/http/push.py +156 -0
- synapse/replication/http/register.py +172 -0
- synapse/replication/http/send_events.py +182 -0
- synapse/replication/http/state.py +82 -0
- synapse/replication/http/streams.py +101 -0
- synapse/replication/tcp/__init__.py +56 -0
- synapse/replication/tcp/client.py +552 -0
- synapse/replication/tcp/commands.py +569 -0
- synapse/replication/tcp/context.py +41 -0
- synapse/replication/tcp/external_cache.py +156 -0
- synapse/replication/tcp/handler.py +922 -0
- synapse/replication/tcp/protocol.py +608 -0
- synapse/replication/tcp/redis.py +509 -0
- synapse/replication/tcp/resource.py +348 -0
- synapse/replication/tcp/streams/__init__.py +96 -0
- synapse/replication/tcp/streams/_base.py +765 -0
- synapse/replication/tcp/streams/events.py +287 -0
- synapse/replication/tcp/streams/federation.py +92 -0
- synapse/replication/tcp/streams/partial_state.py +80 -0
- synapse/res/providers.json +29 -0
- synapse/res/templates/_base.html +29 -0
- synapse/res/templates/account_previously_renewed.html +6 -0
- synapse/res/templates/account_renewed.html +6 -0
- synapse/res/templates/add_threepid.html +8 -0
- synapse/res/templates/add_threepid.txt +6 -0
- synapse/res/templates/add_threepid_failure.html +7 -0
- synapse/res/templates/add_threepid_success.html +6 -0
- synapse/res/templates/already_in_use.html +12 -0
- synapse/res/templates/already_in_use.txt +10 -0
- synapse/res/templates/auth_success.html +21 -0
- synapse/res/templates/invalid_token.html +6 -0
- synapse/res/templates/mail-Element.css +7 -0
- synapse/res/templates/mail-Vector.css +7 -0
- synapse/res/templates/mail-expiry.css +4 -0
- synapse/res/templates/mail.css +156 -0
- synapse/res/templates/notice_expiry.html +46 -0
- synapse/res/templates/notice_expiry.txt +7 -0
- synapse/res/templates/notif.html +51 -0
- synapse/res/templates/notif.txt +22 -0
- synapse/res/templates/notif_mail.html +59 -0
- synapse/res/templates/notif_mail.txt +10 -0
- synapse/res/templates/password_reset.html +10 -0
- synapse/res/templates/password_reset.txt +7 -0
- synapse/res/templates/password_reset_confirmation.html +15 -0
- synapse/res/templates/password_reset_failure.html +7 -0
- synapse/res/templates/password_reset_success.html +6 -0
- synapse/res/templates/recaptcha.html +42 -0
- synapse/res/templates/registration.html +12 -0
- synapse/res/templates/registration.txt +10 -0
- synapse/res/templates/registration_failure.html +6 -0
- synapse/res/templates/registration_success.html +6 -0
- synapse/res/templates/registration_token.html +18 -0
- synapse/res/templates/room.html +33 -0
- synapse/res/templates/room.txt +9 -0
- synapse/res/templates/sso.css +129 -0
- synapse/res/templates/sso_account_deactivated.html +25 -0
- synapse/res/templates/sso_auth_account_details.html +186 -0
- synapse/res/templates/sso_auth_account_details.js +116 -0
- synapse/res/templates/sso_auth_bad_user.html +26 -0
- synapse/res/templates/sso_auth_confirm.html +27 -0
- synapse/res/templates/sso_auth_success.html +26 -0
- synapse/res/templates/sso_error.html +71 -0
- synapse/res/templates/sso_footer.html +19 -0
- synapse/res/templates/sso_login_idp_picker.html +60 -0
- synapse/res/templates/sso_new_user_consent.html +30 -0
- synapse/res/templates/sso_partial_profile.html +19 -0
- synapse/res/templates/sso_redirect_confirm.html +39 -0
- synapse/res/templates/style.css +33 -0
- synapse/res/templates/terms.html +27 -0
- synapse/rest/__init__.py +197 -0
- synapse/rest/admin/__init__.py +390 -0
- synapse/rest/admin/_base.py +72 -0
- synapse/rest/admin/background_updates.py +171 -0
- synapse/rest/admin/devices.py +221 -0
- synapse/rest/admin/event_reports.py +173 -0
- synapse/rest/admin/events.py +69 -0
- synapse/rest/admin/experimental_features.py +137 -0
- synapse/rest/admin/federation.py +243 -0
- synapse/rest/admin/media.py +540 -0
- synapse/rest/admin/registration_tokens.py +358 -0
- synapse/rest/admin/rooms.py +1061 -0
- synapse/rest/admin/scheduled_tasks.py +70 -0
- synapse/rest/admin/server_notice_servlet.py +132 -0
- synapse/rest/admin/statistics.py +132 -0
- synapse/rest/admin/username_available.py +58 -0
- synapse/rest/admin/users.py +1606 -0
- synapse/rest/client/__init__.py +20 -0
- synapse/rest/client/_base.py +113 -0
- synapse/rest/client/account.py +930 -0
- synapse/rest/client/account_data.py +319 -0
- synapse/rest/client/account_validity.py +103 -0
- synapse/rest/client/appservice_ping.py +125 -0
- synapse/rest/client/auth.py +218 -0
- synapse/rest/client/auth_metadata.py +122 -0
- synapse/rest/client/capabilities.py +121 -0
- synapse/rest/client/delayed_events.py +165 -0
- synapse/rest/client/devices.py +587 -0
- synapse/rest/client/directory.py +211 -0
- synapse/rest/client/events.py +116 -0
- synapse/rest/client/filter.py +112 -0
- synapse/rest/client/initial_sync.py +65 -0
- synapse/rest/client/keys.py +678 -0
- synapse/rest/client/knock.py +104 -0
- synapse/rest/client/login.py +750 -0
- synapse/rest/client/login_token_request.py +127 -0
- synapse/rest/client/logout.py +93 -0
- synapse/rest/client/matrixrtc.py +52 -0
- synapse/rest/client/media.py +285 -0
- synapse/rest/client/mutual_rooms.py +93 -0
- synapse/rest/client/notifications.py +137 -0
- synapse/rest/client/openid.py +109 -0
- synapse/rest/client/password_policy.py +69 -0
- synapse/rest/client/presence.py +131 -0
- synapse/rest/client/profile.py +291 -0
- synapse/rest/client/push_rule.py +331 -0
- synapse/rest/client/pusher.py +181 -0
- synapse/rest/client/read_marker.py +104 -0
- synapse/rest/client/receipts.py +165 -0
- synapse/rest/client/register.py +1067 -0
- synapse/rest/client/relations.py +138 -0
- synapse/rest/client/rendezvous.py +76 -0
- synapse/rest/client/reporting.py +207 -0
- synapse/rest/client/room.py +1669 -0
- synapse/rest/client/room_keys.py +426 -0
- synapse/rest/client/room_upgrade_rest_servlet.py +112 -0
- synapse/rest/client/sendtodevice.py +85 -0
- synapse/rest/client/sync.py +1131 -0
- synapse/rest/client/tags.py +129 -0
- synapse/rest/client/thirdparty.py +130 -0
- synapse/rest/client/thread_subscriptions.py +247 -0
- synapse/rest/client/tokenrefresh.py +52 -0
- synapse/rest/client/transactions.py +149 -0
- synapse/rest/client/user_directory.py +90 -0
- synapse/rest/client/versions.py +191 -0
- synapse/rest/client/voip.py +88 -0
- synapse/rest/consent/__init__.py +0 -0
- synapse/rest/consent/consent_resource.py +210 -0
- synapse/rest/health.py +38 -0
- synapse/rest/key/__init__.py +20 -0
- synapse/rest/key/v2/__init__.py +40 -0
- synapse/rest/key/v2/local_key_resource.py +125 -0
- synapse/rest/key/v2/remote_key_resource.py +302 -0
- synapse/rest/media/__init__.py +0 -0
- synapse/rest/media/config_resource.py +53 -0
- synapse/rest/media/create_resource.py +90 -0
- synapse/rest/media/download_resource.py +110 -0
- synapse/rest/media/media_repository_resource.py +113 -0
- synapse/rest/media/preview_url_resource.py +77 -0
- synapse/rest/media/thumbnail_resource.py +142 -0
- synapse/rest/media/upload_resource.py +187 -0
- synapse/rest/media/v1/__init__.py +39 -0
- synapse/rest/media/v1/_base.py +23 -0
- synapse/rest/media/v1/media_storage.py +23 -0
- synapse/rest/media/v1/storage_provider.py +23 -0
- synapse/rest/synapse/__init__.py +20 -0
- synapse/rest/synapse/client/__init__.py +93 -0
- synapse/rest/synapse/client/federation_whitelist.py +66 -0
- synapse/rest/synapse/client/jwks.py +77 -0
- synapse/rest/synapse/client/new_user_consent.py +115 -0
- synapse/rest/synapse/client/oidc/__init__.py +45 -0
- synapse/rest/synapse/client/oidc/backchannel_logout_resource.py +42 -0
- synapse/rest/synapse/client/oidc/callback_resource.py +48 -0
- synapse/rest/synapse/client/password_reset.py +129 -0
- synapse/rest/synapse/client/pick_idp.py +107 -0
- synapse/rest/synapse/client/pick_username.py +153 -0
- synapse/rest/synapse/client/rendezvous.py +58 -0
- synapse/rest/synapse/client/saml2/__init__.py +42 -0
- synapse/rest/synapse/client/saml2/metadata_resource.py +46 -0
- synapse/rest/synapse/client/saml2/response_resource.py +52 -0
- synapse/rest/synapse/client/sso_register.py +56 -0
- synapse/rest/synapse/client/unsubscribe.py +88 -0
- synapse/rest/synapse/mas/__init__.py +71 -0
- synapse/rest/synapse/mas/_base.py +55 -0
- synapse/rest/synapse/mas/devices.py +239 -0
- synapse/rest/synapse/mas/users.py +469 -0
- synapse/rest/well_known.py +148 -0
- synapse/server.py +1257 -0
- synapse/server_notices/__init__.py +0 -0
- synapse/server_notices/consent_server_notices.py +136 -0
- synapse/server_notices/resource_limits_server_notices.py +215 -0
- synapse/server_notices/server_notices_manager.py +388 -0
- synapse/server_notices/server_notices_sender.py +67 -0
- synapse/server_notices/worker_server_notices_sender.py +46 -0
- synapse/spam_checker_api/__init__.py +31 -0
- synapse/state/__init__.py +1022 -0
- synapse/state/v1.py +369 -0
- synapse/state/v2.py +984 -0
- synapse/static/client/login/index.html +47 -0
- synapse/static/client/login/js/jquery-3.4.1.min.js +2 -0
- synapse/static/client/login/js/login.js +291 -0
- synapse/static/client/login/spinner.gif +0 -0
- synapse/static/client/login/style.css +79 -0
- synapse/static/index.html +63 -0
- synapse/storage/__init__.py +43 -0
- synapse/storage/_base.py +245 -0
- synapse/storage/admin_client_config.py +25 -0
- synapse/storage/background_updates.py +1188 -0
- synapse/storage/controllers/__init__.py +57 -0
- synapse/storage/controllers/persist_events.py +1237 -0
- synapse/storage/controllers/purge_events.py +455 -0
- synapse/storage/controllers/state.py +950 -0
- synapse/storage/controllers/stats.py +119 -0
- synapse/storage/database.py +2719 -0
- synapse/storage/databases/__init__.py +175 -0
- synapse/storage/databases/main/__init__.py +420 -0
- synapse/storage/databases/main/account_data.py +1059 -0
- synapse/storage/databases/main/appservice.py +473 -0
- synapse/storage/databases/main/cache.py +911 -0
- synapse/storage/databases/main/censor_events.py +225 -0
- synapse/storage/databases/main/client_ips.py +815 -0
- synapse/storage/databases/main/delayed_events.py +562 -0
- synapse/storage/databases/main/deviceinbox.py +1271 -0
- synapse/storage/databases/main/devices.py +2578 -0
- synapse/storage/databases/main/directory.py +212 -0
- synapse/storage/databases/main/e2e_room_keys.py +689 -0
- synapse/storage/databases/main/end_to_end_keys.py +1894 -0
- synapse/storage/databases/main/event_federation.py +2508 -0
- synapse/storage/databases/main/event_push_actions.py +1933 -0
- synapse/storage/databases/main/events.py +3765 -0
- synapse/storage/databases/main/events_bg_updates.py +2910 -0
- synapse/storage/databases/main/events_forward_extremities.py +126 -0
- synapse/storage/databases/main/events_worker.py +2786 -0
- synapse/storage/databases/main/experimental_features.py +130 -0
- synapse/storage/databases/main/filtering.py +231 -0
- synapse/storage/databases/main/keys.py +291 -0
- synapse/storage/databases/main/lock.py +553 -0
- synapse/storage/databases/main/media_repository.py +1068 -0
- synapse/storage/databases/main/metrics.py +460 -0
- synapse/storage/databases/main/monthly_active_users.py +443 -0
- synapse/storage/databases/main/openid.py +60 -0
- synapse/storage/databases/main/presence.py +509 -0
- synapse/storage/databases/main/profile.py +539 -0
- synapse/storage/databases/main/purge_events.py +521 -0
- synapse/storage/databases/main/push_rule.py +970 -0
- synapse/storage/databases/main/pusher.py +793 -0
- synapse/storage/databases/main/receipts.py +1341 -0
- synapse/storage/databases/main/registration.py +3072 -0
- synapse/storage/databases/main/rejections.py +37 -0
- synapse/storage/databases/main/relations.py +1116 -0
- synapse/storage/databases/main/room.py +2779 -0
- synapse/storage/databases/main/roommember.py +2110 -0
- synapse/storage/databases/main/search.py +939 -0
- synapse/storage/databases/main/session.py +151 -0
- synapse/storage/databases/main/signatures.py +94 -0
- synapse/storage/databases/main/sliding_sync.py +603 -0
- synapse/storage/databases/main/state.py +1002 -0
- synapse/storage/databases/main/state_deltas.py +329 -0
- synapse/storage/databases/main/stats.py +789 -0
- synapse/storage/databases/main/stream.py +2577 -0
- synapse/storage/databases/main/tags.py +360 -0
- synapse/storage/databases/main/task_scheduler.py +225 -0
- synapse/storage/databases/main/thread_subscriptions.py +589 -0
- synapse/storage/databases/main/transactions.py +675 -0
- synapse/storage/databases/main/ui_auth.py +420 -0
- synapse/storage/databases/main/user_directory.py +1330 -0
- synapse/storage/databases/main/user_erasure_store.py +117 -0
- synapse/storage/databases/state/__init__.py +22 -0
- synapse/storage/databases/state/bg_updates.py +497 -0
- synapse/storage/databases/state/deletion.py +557 -0
- synapse/storage/databases/state/store.py +948 -0
- synapse/storage/engines/__init__.py +70 -0
- synapse/storage/engines/_base.py +154 -0
- synapse/storage/engines/postgres.py +261 -0
- synapse/storage/engines/sqlite.py +199 -0
- synapse/storage/invite_rule.py +112 -0
- synapse/storage/keys.py +40 -0
- synapse/storage/prepare_database.py +730 -0
- synapse/storage/push_rule.py +28 -0
- synapse/storage/roommember.py +88 -0
- synapse/storage/schema/README.md +4 -0
- synapse/storage/schema/__init__.py +186 -0
- synapse/storage/schema/common/delta/25/00background_updates.sql +40 -0
- synapse/storage/schema/common/delta/35/00background_updates_add_col.sql +36 -0
- synapse/storage/schema/common/delta/58/00background_update_ordering.sql +38 -0
- synapse/storage/schema/common/full_schemas/72/full.sql.postgres +8 -0
- synapse/storage/schema/common/full_schemas/72/full.sql.sqlite +6 -0
- synapse/storage/schema/common/schema_version.sql +60 -0
- synapse/storage/schema/main/delta/12/v12.sql +82 -0
- synapse/storage/schema/main/delta/13/v13.sql +38 -0
- synapse/storage/schema/main/delta/14/v14.sql +42 -0
- synapse/storage/schema/main/delta/15/appservice_txns.sql +50 -0
- synapse/storage/schema/main/delta/15/presence_indices.sql +2 -0
- synapse/storage/schema/main/delta/15/v15.sql +24 -0
- synapse/storage/schema/main/delta/16/events_order_index.sql +4 -0
- synapse/storage/schema/main/delta/16/remote_media_cache_index.sql +2 -0
- synapse/storage/schema/main/delta/16/remove_duplicates.sql +9 -0
- synapse/storage/schema/main/delta/16/room_alias_index.sql +3 -0
- synapse/storage/schema/main/delta/16/unique_constraints.sql +72 -0
- synapse/storage/schema/main/delta/16/users.sql +56 -0
- synapse/storage/schema/main/delta/17/drop_indexes.sql +37 -0
- synapse/storage/schema/main/delta/17/server_keys.sql +43 -0
- synapse/storage/schema/main/delta/17/user_threepids.sql +9 -0
- synapse/storage/schema/main/delta/18/server_keys_bigger_ints.sql +51 -0
- synapse/storage/schema/main/delta/19/event_index.sql +38 -0
- synapse/storage/schema/main/delta/20/dummy.sql +1 -0
- synapse/storage/schema/main/delta/20/pushers.py +93 -0
- synapse/storage/schema/main/delta/21/end_to_end_keys.sql +53 -0
- synapse/storage/schema/main/delta/21/receipts.sql +57 -0
- synapse/storage/schema/main/delta/22/receipts_index.sql +41 -0
- synapse/storage/schema/main/delta/22/user_threepids_unique.sql +19 -0
- synapse/storage/schema/main/delta/24/stats_reporting.sql +37 -0
- synapse/storage/schema/main/delta/25/fts.py +81 -0
- synapse/storage/schema/main/delta/25/guest_access.sql +44 -0
- synapse/storage/schema/main/delta/25/history_visibility.sql +44 -0
- synapse/storage/schema/main/delta/25/tags.sql +57 -0
- synapse/storage/schema/main/delta/26/account_data.sql +36 -0
- synapse/storage/schema/main/delta/27/account_data.sql +55 -0
- synapse/storage/schema/main/delta/27/forgotten_memberships.sql +45 -0
- synapse/storage/schema/main/delta/27/ts.py +61 -0
- synapse/storage/schema/main/delta/28/event_push_actions.sql +46 -0
- synapse/storage/schema/main/delta/28/events_room_stream.sql +39 -0
- synapse/storage/schema/main/delta/28/public_roms_index.sql +39 -0
- synapse/storage/schema/main/delta/28/receipts_user_id_index.sql +41 -0
- synapse/storage/schema/main/delta/28/upgrade_times.sql +40 -0
- synapse/storage/schema/main/delta/28/users_is_guest.sql +41 -0
- synapse/storage/schema/main/delta/29/push_actions.sql +54 -0
- synapse/storage/schema/main/delta/30/alias_creator.sql +35 -0
- synapse/storage/schema/main/delta/30/as_users.py +82 -0
- synapse/storage/schema/main/delta/30/deleted_pushers.sql +44 -0
- synapse/storage/schema/main/delta/30/presence_stream.sql +49 -0
- synapse/storage/schema/main/delta/30/public_rooms.sql +42 -0
- synapse/storage/schema/main/delta/30/push_rule_stream.sql +57 -0
- synapse/storage/schema/main/delta/30/threepid_guest_access_tokens.sql +43 -0
- synapse/storage/schema/main/delta/31/invites.sql +61 -0
- synapse/storage/schema/main/delta/31/local_media_repository_url_cache.sql +46 -0
- synapse/storage/schema/main/delta/31/pushers_0.py +92 -0
- synapse/storage/schema/main/delta/31/pushers_index.sql +41 -0
- synapse/storage/schema/main/delta/31/search_update.py +65 -0
- synapse/storage/schema/main/delta/32/events.sql +35 -0
- synapse/storage/schema/main/delta/32/openid.sql +9 -0
- synapse/storage/schema/main/delta/32/pusher_throttle.sql +42 -0
- synapse/storage/schema/main/delta/32/remove_indices.sql +52 -0
- synapse/storage/schema/main/delta/32/reports.sql +44 -0
- synapse/storage/schema/main/delta/33/access_tokens_device_index.sql +36 -0
- synapse/storage/schema/main/delta/33/devices.sql +40 -0
- synapse/storage/schema/main/delta/33/devices_for_e2e_keys.sql +38 -0
- synapse/storage/schema/main/delta/33/devices_for_e2e_keys_clear_unknown_device.sql +39 -0
- synapse/storage/schema/main/delta/33/event_fields.py +61 -0
- synapse/storage/schema/main/delta/33/remote_media_ts.py +43 -0
- synapse/storage/schema/main/delta/33/user_ips_index.sql +36 -0
- synapse/storage/schema/main/delta/34/appservice_stream.sql +42 -0
- synapse/storage/schema/main/delta/34/cache_stream.py +50 -0
- synapse/storage/schema/main/delta/34/device_inbox.sql +43 -0
- synapse/storage/schema/main/delta/34/push_display_name_rename.sql +39 -0
- synapse/storage/schema/main/delta/34/received_txn_purge.py +36 -0
- synapse/storage/schema/main/delta/35/contains_url.sql +36 -0
- synapse/storage/schema/main/delta/35/device_outbox.sql +58 -0
- synapse/storage/schema/main/delta/35/device_stream_id.sql +40 -0
- synapse/storage/schema/main/delta/35/event_push_actions_index.sql +36 -0
- synapse/storage/schema/main/delta/35/public_room_list_change_stream.sql +52 -0
- synapse/storage/schema/main/delta/35/stream_order_to_extrem.sql +56 -0
- synapse/storage/schema/main/delta/36/readd_public_rooms.sql +45 -0
- synapse/storage/schema/main/delta/37/remove_auth_idx.py +89 -0
- synapse/storage/schema/main/delta/37/user_threepids.sql +71 -0
- synapse/storage/schema/main/delta/38/postgres_fts_gist.sql +38 -0
- synapse/storage/schema/main/delta/39/appservice_room_list.sql +48 -0
- synapse/storage/schema/main/delta/39/device_federation_stream_idx.sql +35 -0
- synapse/storage/schema/main/delta/39/event_push_index.sql +36 -0
- synapse/storage/schema/main/delta/39/federation_out_position.sql +41 -0
- synapse/storage/schema/main/delta/39/membership_profile.sql +39 -0
- synapse/storage/schema/main/delta/40/current_state_idx.sql +36 -0
- synapse/storage/schema/main/delta/40/device_inbox.sql +40 -0
- synapse/storage/schema/main/delta/40/device_list_streams.sql +79 -0
- synapse/storage/schema/main/delta/40/event_push_summary.sql +57 -0
- synapse/storage/schema/main/delta/40/pushers.sql +58 -0
- synapse/storage/schema/main/delta/41/device_list_stream_idx.sql +36 -0
- synapse/storage/schema/main/delta/41/device_outbound_index.sql +35 -0
- synapse/storage/schema/main/delta/41/event_search_event_id_idx.sql +36 -0
- synapse/storage/schema/main/delta/41/ratelimit.sql +41 -0
- synapse/storage/schema/main/delta/42/current_state_delta.sql +48 -0
- synapse/storage/schema/main/delta/42/device_list_last_id.sql +52 -0
- synapse/storage/schema/main/delta/42/event_auth_state_only.sql +36 -0
- synapse/storage/schema/main/delta/42/user_dir.py +88 -0
- synapse/storage/schema/main/delta/43/blocked_rooms.sql +40 -0
- synapse/storage/schema/main/delta/43/quarantine_media.sql +36 -0
- synapse/storage/schema/main/delta/43/url_cache.sql +35 -0
- synapse/storage/schema/main/delta/43/user_share.sql +52 -0
- synapse/storage/schema/main/delta/44/expire_url_cache.sql +60 -0
- synapse/storage/schema/main/delta/45/group_server.sql +186 -0
- synapse/storage/schema/main/delta/45/profile_cache.sql +47 -0
- synapse/storage/schema/main/delta/46/drop_refresh_tokens.sql +36 -0
- synapse/storage/schema/main/delta/46/drop_unique_deleted_pushers.sql +54 -0
- synapse/storage/schema/main/delta/46/group_server.sql +51 -0
- synapse/storage/schema/main/delta/46/local_media_repository_url_idx.sql +43 -0
- synapse/storage/schema/main/delta/46/user_dir_null_room_ids.sql +54 -0
- synapse/storage/schema/main/delta/46/user_dir_typos.sql +43 -0
- synapse/storage/schema/main/delta/47/last_access_media.sql +35 -0
- synapse/storage/schema/main/delta/47/postgres_fts_gin.sql +36 -0
- synapse/storage/schema/main/delta/47/push_actions_staging.sql +47 -0
- synapse/storage/schema/main/delta/48/add_user_consent.sql +37 -0
- synapse/storage/schema/main/delta/48/add_user_ips_last_seen_index.sql +36 -0
- synapse/storage/schema/main/delta/48/deactivated_users.sql +44 -0
- synapse/storage/schema/main/delta/48/group_unique_indexes.py +67 -0
- synapse/storage/schema/main/delta/48/groups_joinable.sql +41 -0
- synapse/storage/schema/main/delta/49/add_user_consent_server_notice_sent.sql +39 -0
- synapse/storage/schema/main/delta/49/add_user_daily_visits.sql +40 -0
- synapse/storage/schema/main/delta/49/add_user_ips_last_seen_only_index.sql +36 -0
- synapse/storage/schema/main/delta/50/add_creation_ts_users_index.sql +38 -0
- synapse/storage/schema/main/delta/50/erasure_store.sql +40 -0
- synapse/storage/schema/main/delta/50/make_event_content_nullable.py +102 -0
- synapse/storage/schema/main/delta/51/e2e_room_keys.sql +58 -0
- synapse/storage/schema/main/delta/51/monthly_active_users.sql +46 -0
- synapse/storage/schema/main/delta/52/add_event_to_state_group_index.sql +38 -0
- synapse/storage/schema/main/delta/52/device_list_streams_unique_idx.sql +55 -0
- synapse/storage/schema/main/delta/52/e2e_room_keys.sql +72 -0
- synapse/storage/schema/main/delta/53/add_user_type_to_users.sql +38 -0
- synapse/storage/schema/main/delta/53/drop_sent_transactions.sql +35 -0
- synapse/storage/schema/main/delta/53/event_format_version.sql +35 -0
- synapse/storage/schema/main/delta/53/user_dir_populate.sql +49 -0
- synapse/storage/schema/main/delta/53/user_ips_index.sql +49 -0
- synapse/storage/schema/main/delta/53/user_share.sql +63 -0
- synapse/storage/schema/main/delta/53/user_threepid_id.sql +48 -0
- synapse/storage/schema/main/delta/53/users_in_public_rooms.sql +47 -0
- synapse/storage/schema/main/delta/54/account_validity_with_renewal.sql +49 -0
- synapse/storage/schema/main/delta/54/add_validity_to_server_keys.sql +42 -0
- synapse/storage/schema/main/delta/54/delete_forward_extremities.sql +42 -0
- synapse/storage/schema/main/delta/54/drop_legacy_tables.sql +49 -0
- synapse/storage/schema/main/delta/54/drop_presence_list.sql +35 -0
- synapse/storage/schema/main/delta/54/relations.sql +46 -0
- synapse/storage/schema/main/delta/54/stats.sql +99 -0
- synapse/storage/schema/main/delta/54/stats2.sql +47 -0
- synapse/storage/schema/main/delta/55/access_token_expiry.sql +37 -0
- synapse/storage/schema/main/delta/55/track_threepid_validations.sql +50 -0
- synapse/storage/schema/main/delta/55/users_alter_deactivated.sql +38 -0
- synapse/storage/schema/main/delta/56/add_spans_to_device_lists.sql +39 -0
- synapse/storage/schema/main/delta/56/current_state_events_membership.sql +41 -0
- synapse/storage/schema/main/delta/56/current_state_events_membership_mk2.sql +43 -0
- synapse/storage/schema/main/delta/56/delete_keys_from_deleted_backups.sql +44 -0
- synapse/storage/schema/main/delta/56/destinations_failure_ts.sql +44 -0
- synapse/storage/schema/main/delta/56/destinations_retry_interval_type.sql.postgres +18 -0
- synapse/storage/schema/main/delta/56/device_stream_id_insert.sql +39 -0
- synapse/storage/schema/main/delta/56/devices_last_seen.sql +43 -0
- synapse/storage/schema/main/delta/56/drop_unused_event_tables.sql +39 -0
- synapse/storage/schema/main/delta/56/event_expiry.sql +40 -0
- synapse/storage/schema/main/delta/56/event_labels.sql +49 -0
- synapse/storage/schema/main/delta/56/event_labels_background_update.sql +36 -0
- synapse/storage/schema/main/delta/56/fix_room_keys_index.sql +37 -0
- synapse/storage/schema/main/delta/56/hidden_devices.sql +37 -0
- synapse/storage/schema/main/delta/56/hidden_devices_fix.sql.sqlite +42 -0
- synapse/storage/schema/main/delta/56/nuke_empty_communities_from_db.sql +48 -0
- synapse/storage/schema/main/delta/56/public_room_list_idx.sql +35 -0
- synapse/storage/schema/main/delta/56/redaction_censor.sql +35 -0
- synapse/storage/schema/main/delta/56/redaction_censor2.sql +41 -0
- synapse/storage/schema/main/delta/56/redaction_censor3_fix_update.sql.postgres +25 -0
- synapse/storage/schema/main/delta/56/redaction_censor4.sql +35 -0
- synapse/storage/schema/main/delta/56/remove_tombstoned_rooms_from_directory.sql +38 -0
- synapse/storage/schema/main/delta/56/room_key_etag.sql +36 -0
- synapse/storage/schema/main/delta/56/room_membership_idx.sql +37 -0
- synapse/storage/schema/main/delta/56/room_retention.sql +52 -0
- synapse/storage/schema/main/delta/56/signing_keys.sql +75 -0
- synapse/storage/schema/main/delta/56/signing_keys_nonunique_signatures.sql +41 -0
- synapse/storage/schema/main/delta/56/stats_separated.sql +175 -0
- synapse/storage/schema/main/delta/56/unique_user_filter_index.py +46 -0
- synapse/storage/schema/main/delta/56/user_external_ids.sql +43 -0
- synapse/storage/schema/main/delta/56/users_in_public_rooms_idx.sql +36 -0
- synapse/storage/schema/main/delta/57/delete_old_current_state_events.sql +41 -0
- synapse/storage/schema/main/delta/57/device_list_remote_cache_stale.sql +44 -0
- synapse/storage/schema/main/delta/57/local_current_membership.py +111 -0
- synapse/storage/schema/main/delta/57/remove_sent_outbound_pokes.sql +40 -0
- synapse/storage/schema/main/delta/57/rooms_version_column.sql +43 -0
- synapse/storage/schema/main/delta/57/rooms_version_column_2.sql.postgres +35 -0
- synapse/storage/schema/main/delta/57/rooms_version_column_2.sql.sqlite +22 -0
- synapse/storage/schema/main/delta/57/rooms_version_column_3.sql.postgres +39 -0
- synapse/storage/schema/main/delta/57/rooms_version_column_3.sql.sqlite +23 -0
- synapse/storage/schema/main/delta/58/02remove_dup_outbound_pokes.sql +41 -0
- synapse/storage/schema/main/delta/58/03persist_ui_auth.sql +55 -0
- synapse/storage/schema/main/delta/58/05cache_instance.sql.postgres +30 -0
- synapse/storage/schema/main/delta/58/06dlols_unique_idx.py +83 -0
- synapse/storage/schema/main/delta/58/07add_method_to_thumbnail_constraint.sql.postgres +33 -0
- synapse/storage/schema/main/delta/58/07add_method_to_thumbnail_constraint.sql.sqlite +44 -0
- synapse/storage/schema/main/delta/58/07persist_ui_auth_ips.sql +44 -0
- synapse/storage/schema/main/delta/58/08_media_safe_from_quarantine.sql.postgres +18 -0
- synapse/storage/schema/main/delta/58/08_media_safe_from_quarantine.sql.sqlite +18 -0
- synapse/storage/schema/main/delta/58/09shadow_ban.sql +37 -0
- synapse/storage/schema/main/delta/58/10_pushrules_enabled_delete_obsolete.sql +47 -0
- synapse/storage/schema/main/delta/58/10drop_local_rejections_stream.sql +41 -0
- synapse/storage/schema/main/delta/58/10federation_pos_instance_name.sql +41 -0
- synapse/storage/schema/main/delta/58/11dehydration.sql +39 -0
- synapse/storage/schema/main/delta/58/11fallback.sql +43 -0
- synapse/storage/schema/main/delta/58/11user_id_seq.py +38 -0
- synapse/storage/schema/main/delta/58/12room_stats.sql +51 -0
- synapse/storage/schema/main/delta/58/13remove_presence_allow_inbound.sql +36 -0
- synapse/storage/schema/main/delta/58/14events_instance_name.sql +35 -0
- synapse/storage/schema/main/delta/58/14events_instance_name.sql.postgres +28 -0
- synapse/storage/schema/main/delta/58/15_catchup_destination_rooms.sql +61 -0
- synapse/storage/schema/main/delta/58/15unread_count.sql +45 -0
- synapse/storage/schema/main/delta/58/16populate_stats_process_rooms_fix.sql +41 -0
- synapse/storage/schema/main/delta/58/17_catchup_last_successful.sql +40 -0
- synapse/storage/schema/main/delta/58/18stream_positions.sql +41 -0
- synapse/storage/schema/main/delta/58/19instance_map.sql.postgres +25 -0
- synapse/storage/schema/main/delta/58/19txn_id.sql +59 -0
- synapse/storage/schema/main/delta/58/20instance_name_event_tables.sql +36 -0
- synapse/storage/schema/main/delta/58/20user_daily_visits.sql +37 -0
- synapse/storage/schema/main/delta/58/21as_device_stream.sql +36 -0
- synapse/storage/schema/main/delta/58/21drop_device_max_stream_id.sql +1 -0
- synapse/storage/schema/main/delta/58/22puppet_token.sql +36 -0
- synapse/storage/schema/main/delta/58/22users_have_local_media.sql +2 -0
- synapse/storage/schema/main/delta/58/23e2e_cross_signing_keys_idx.sql +36 -0
- synapse/storage/schema/main/delta/58/24drop_event_json_index.sql +38 -0
- synapse/storage/schema/main/delta/58/25user_external_ids_user_id_idx.sql +36 -0
- synapse/storage/schema/main/delta/58/26access_token_last_validated.sql +37 -0
- synapse/storage/schema/main/delta/58/27local_invites.sql +37 -0
- synapse/storage/schema/main/delta/58/28drop_last_used_column.sql.postgres +16 -0
- synapse/storage/schema/main/delta/58/28drop_last_used_column.sql.sqlite +62 -0
- synapse/storage/schema/main/delta/59/01ignored_user.py +85 -0
- synapse/storage/schema/main/delta/59/02shard_send_to_device.sql +37 -0
- synapse/storage/schema/main/delta/59/03shard_send_to_device_sequence.sql.postgres +25 -0
- synapse/storage/schema/main/delta/59/04_event_auth_chains.sql +71 -0
- synapse/storage/schema/main/delta/59/04_event_auth_chains.sql.postgres +16 -0
- synapse/storage/schema/main/delta/59/04drop_account_data.sql +36 -0
- synapse/storage/schema/main/delta/59/05cache_invalidation.sql +36 -0
- synapse/storage/schema/main/delta/59/06chain_cover_index.sql +36 -0
- synapse/storage/schema/main/delta/59/06shard_account_data.sql +39 -0
- synapse/storage/schema/main/delta/59/06shard_account_data.sql.postgres +32 -0
- synapse/storage/schema/main/delta/59/07shard_account_data_fix.sql +37 -0
- synapse/storage/schema/main/delta/59/08delete_pushers_for_deactivated_accounts.sql +39 -0
- synapse/storage/schema/main/delta/59/08delete_stale_pushers.sql +39 -0
- synapse/storage/schema/main/delta/59/09rejected_events_metadata.sql +45 -0
- synapse/storage/schema/main/delta/59/10delete_purged_chain_cover.sql +36 -0
- synapse/storage/schema/main/delta/59/11add_knock_members_to_stats.sql +39 -0
- synapse/storage/schema/main/delta/59/11drop_thumbnail_constraint.sql.postgres +22 -0
- synapse/storage/schema/main/delta/59/12account_validity_token_used_ts_ms.sql +37 -0
- synapse/storage/schema/main/delta/59/12presence_stream_instance.sql +37 -0
- synapse/storage/schema/main/delta/59/12presence_stream_instance_seq.sql.postgres +20 -0
- synapse/storage/schema/main/delta/59/13users_to_send_full_presence_to.sql +53 -0
- synapse/storage/schema/main/delta/59/14refresh_tokens.sql +53 -0
- synapse/storage/schema/main/delta/59/15locks.sql +56 -0
- synapse/storage/schema/main/delta/59/16federation_inbound_staging.sql +51 -0
- synapse/storage/schema/main/delta/60/01recreate_stream_ordering.sql.postgres +45 -0
- synapse/storage/schema/main/delta/60/02change_stream_ordering_columns.sql.postgres +30 -0
- synapse/storage/schema/main/delta/61/01change_appservices_txns.sql.postgres +23 -0
- synapse/storage/schema/main/delta/61/01insertion_event_lookups.sql +68 -0
- synapse/storage/schema/main/delta/61/02drop_redundant_room_depth_index.sql +37 -0
- synapse/storage/schema/main/delta/61/03recreate_min_depth.py +74 -0
- synapse/storage/schema/main/delta/62/01insertion_event_extremities.sql +43 -0
- synapse/storage/schema/main/delta/63/01create_registration_tokens.sql +42 -0
- synapse/storage/schema/main/delta/63/02delete_unlinked_email_pushers.sql +39 -0
- synapse/storage/schema/main/delta/63/02populate-rooms-creator.sql +36 -0
- synapse/storage/schema/main/delta/63/03session_store.sql +42 -0
- synapse/storage/schema/main/delta/63/04add_presence_stream_not_offline_index.sql +37 -0
- synapse/storage/schema/main/delta/64/01msc2716_chunk_to_batch_rename.sql.postgres +23 -0
- synapse/storage/schema/main/delta/64/01msc2716_chunk_to_batch_rename.sql.sqlite +37 -0
- synapse/storage/schema/main/delta/65/01msc2716_insertion_event_edges.sql +38 -0
- synapse/storage/schema/main/delta/65/03remove_hidden_devices_from_device_inbox.sql +41 -0
- synapse/storage/schema/main/delta/65/04_local_group_updates.sql +37 -0
- synapse/storage/schema/main/delta/65/05_remove_room_stats_historical_and_user_stats_historical.sql +38 -0
- synapse/storage/schema/main/delta/65/06remove_deleted_devices_from_device_inbox.sql +53 -0
- synapse/storage/schema/main/delta/65/07_arbitrary_relations.sql +37 -0
- synapse/storage/schema/main/delta/65/08_device_inbox_background_updates.sql +37 -0
- synapse/storage/schema/main/delta/65/10_expirable_refresh_tokens.sql +47 -0
- synapse/storage/schema/main/delta/65/11_devices_auth_provider_session.sql +46 -0
- synapse/storage/schema/main/delta/67/01drop_public_room_list_stream.sql +37 -0
- synapse/storage/schema/main/delta/68/01event_columns.sql +45 -0
- synapse/storage/schema/main/delta/68/02_msc2409_add_device_id_appservice_stream_type.sql +40 -0
- synapse/storage/schema/main/delta/68/03_delete_account_data_for_deactivated_accounts.sql +39 -0
- synapse/storage/schema/main/delta/68/04_refresh_tokens_index_next_token_id.sql +47 -0
- synapse/storage/schema/main/delta/68/04partial_state_rooms.sql +60 -0
- synapse/storage/schema/main/delta/68/05_delete_non_strings_from_event_search.sql.sqlite +22 -0
- synapse/storage/schema/main/delta/68/05partial_state_rooms_triggers.py +80 -0
- synapse/storage/schema/main/delta/68/06_msc3202_add_device_list_appservice_stream_type.sql +42 -0
- synapse/storage/schema/main/delta/69/01as_txn_seq.py +54 -0
- synapse/storage/schema/main/delta/69/01device_list_oubound_by_room.sql +57 -0
- synapse/storage/schema/main/delta/69/02cache_invalidation_index.sql +37 -0
- synapse/storage/schema/main/delta/70/01clean_table_purged_rooms.sql +39 -0
- synapse/storage/schema/main/delta/71/01rebuild_event_edges.sql.postgres +43 -0
- synapse/storage/schema/main/delta/71/01rebuild_event_edges.sql.sqlite +47 -0
- synapse/storage/schema/main/delta/71/01remove_noop_background_updates.sql +80 -0
- synapse/storage/schema/main/delta/71/02event_push_summary_unique.sql +37 -0
- synapse/storage/schema/main/delta/72/01add_room_type_to_state_stats.sql +38 -0
- synapse/storage/schema/main/delta/72/01event_push_summary_receipt.sql +54 -0
- synapse/storage/schema/main/delta/72/02event_push_actions_index.sql +38 -0
- synapse/storage/schema/main/delta/72/03bg_populate_events_columns.py +57 -0
- synapse/storage/schema/main/delta/72/03drop_event_reference_hashes.sql +36 -0
- synapse/storage/schema/main/delta/72/03remove_groups.sql +50 -0
- synapse/storage/schema/main/delta/72/04drop_column_application_services_state_last_txn.sql.postgres +17 -0
- synapse/storage/schema/main/delta/72/04drop_column_application_services_state_last_txn.sql.sqlite +40 -0
- synapse/storage/schema/main/delta/72/05receipts_event_stream_ordering.sql +38 -0
- synapse/storage/schema/main/delta/72/05remove_unstable_private_read_receipts.sql +38 -0
- synapse/storage/schema/main/delta/72/06add_consent_ts_to_users.sql +35 -0
- synapse/storage/schema/main/delta/72/06thread_notifications.sql +49 -0
- synapse/storage/schema/main/delta/72/07force_update_current_state_events_membership.py +67 -0
- synapse/storage/schema/main/delta/72/07thread_receipts.sql.postgres +30 -0
- synapse/storage/schema/main/delta/72/07thread_receipts.sql.sqlite +70 -0
- synapse/storage/schema/main/delta/72/08begin_cache_invalidation_seq_at_2.sql.postgres +23 -0
- synapse/storage/schema/main/delta/72/08thread_receipts.sql +39 -0
- synapse/storage/schema/main/delta/72/09partial_indices.sql.sqlite +56 -0
- synapse/storage/schema/main/delta/73/01event_failed_pull_attempts.sql +48 -0
- synapse/storage/schema/main/delta/73/02add_pusher_enabled.sql +35 -0
- synapse/storage/schema/main/delta/73/02room_id_indexes_for_purging.sql +41 -0
- synapse/storage/schema/main/delta/73/03pusher_device_id.sql +39 -0
- synapse/storage/schema/main/delta/73/03users_approved_column.sql +39 -0
- synapse/storage/schema/main/delta/73/04partial_join_details.sql +42 -0
- synapse/storage/schema/main/delta/73/04pending_device_list_updates.sql +47 -0
- synapse/storage/schema/main/delta/73/05old_push_actions.sql.postgres +22 -0
- synapse/storage/schema/main/delta/73/05old_push_actions.sql.sqlite +24 -0
- synapse/storage/schema/main/delta/73/06thread_notifications_thread_id_idx.sql +42 -0
- synapse/storage/schema/main/delta/73/08thread_receipts_non_null.sql.postgres +23 -0
- synapse/storage/schema/main/delta/73/08thread_receipts_non_null.sql.sqlite +76 -0
- synapse/storage/schema/main/delta/73/09partial_joined_via_destination.sql +37 -0
- synapse/storage/schema/main/delta/73/09threads_table.sql +49 -0
- synapse/storage/schema/main/delta/73/10_update_sqlite_fts4_tokenizer.py +71 -0
- synapse/storage/schema/main/delta/73/10login_tokens.sql +54 -0
- synapse/storage/schema/main/delta/73/11event_search_room_id_n_distinct.sql.postgres +33 -0
- synapse/storage/schema/main/delta/73/12refactor_device_list_outbound_pokes.sql +72 -0
- synapse/storage/schema/main/delta/73/13add_device_lists_index.sql +39 -0
- synapse/storage/schema/main/delta/73/20_un_partial_stated_room_stream.sql +51 -0
- synapse/storage/schema/main/delta/73/21_un_partial_stated_room_stream_seq.sql.postgres +20 -0
- synapse/storage/schema/main/delta/73/22_rebuild_user_dir_stats.sql +48 -0
- synapse/storage/schema/main/delta/73/22_un_partial_stated_event_stream.sql +53 -0
- synapse/storage/schema/main/delta/73/23_fix_thread_index.sql +52 -0
- synapse/storage/schema/main/delta/73/23_un_partial_stated_room_stream_seq.sql.postgres +20 -0
- synapse/storage/schema/main/delta/73/24_events_jump_to_date_index.sql +36 -0
- synapse/storage/schema/main/delta/73/25drop_presence.sql +36 -0
- synapse/storage/schema/main/delta/74/01_user_directory_stale_remote_users.sql +58 -0
- synapse/storage/schema/main/delta/74/02_set_device_id_for_pushers_bg_update.sql +38 -0
- synapse/storage/schema/main/delta/74/03_membership_tables_event_stream_ordering.sql.postgres +29 -0
- synapse/storage/schema/main/delta/74/03_membership_tables_event_stream_ordering.sql.sqlite +23 -0
- synapse/storage/schema/main/delta/74/03_room_membership_index.sql +38 -0
- synapse/storage/schema/main/delta/74/04_delete_e2e_backup_keys_for_deactivated_users.sql +36 -0
- synapse/storage/schema/main/delta/74/04_membership_tables_event_stream_ordering_triggers.py +87 -0
- synapse/storage/schema/main/delta/74/05_events_txn_id_device_id.sql +72 -0
- synapse/storage/schema/main/delta/74/90COMMENTS_destinations.sql.postgres +52 -0
- synapse/storage/schema/main/delta/76/01_add_profiles_full_user_id_column.sql +39 -0
- synapse/storage/schema/main/delta/76/02_add_user_filters_full_user_id_column.sql +39 -0
- synapse/storage/schema/main/delta/76/03_per_user_experimental_features.sql +46 -0
- synapse/storage/schema/main/delta/76/04_add_room_forgetter.sql +43 -0
- synapse/storage/schema/main/delta/77/01_add_profiles_not_valid_check.sql.postgres +16 -0
- synapse/storage/schema/main/delta/77/02_add_user_filters_not_valid_check.sql.postgres +16 -0
- synapse/storage/schema/main/delta/77/03bg_populate_full_user_id_profiles.sql +35 -0
- synapse/storage/schema/main/delta/77/04bg_populate_full_user_id_user_filters.sql +35 -0
- synapse/storage/schema/main/delta/77/05thread_notifications_backfill.sql +67 -0
- synapse/storage/schema/main/delta/77/06thread_notifications_not_null.sql.sqlite +102 -0
- synapse/storage/schema/main/delta/77/06thread_notifications_not_null_event_push_actions.sql.postgres +27 -0
- synapse/storage/schema/main/delta/77/06thread_notifications_not_null_event_push_actions_staging.sql.postgres +27 -0
- synapse/storage/schema/main/delta/77/06thread_notifications_not_null_event_push_summary.sql.postgres +29 -0
- synapse/storage/schema/main/delta/77/14bg_indices_event_stream_ordering.sql +39 -0
- synapse/storage/schema/main/delta/78/01_validate_and_update_profiles.py +99 -0
- synapse/storage/schema/main/delta/78/02_validate_and_update_user_filters.py +100 -0
- synapse/storage/schema/main/delta/78/03_remove_unused_indexes_user_filters.py +72 -0
- synapse/storage/schema/main/delta/78/03event_extremities_constraints.py +65 -0
- synapse/storage/schema/main/delta/78/04_add_full_user_id_index_user_filters.py +32 -0
- synapse/storage/schema/main/delta/79/03_read_write_locks_triggers.sql.postgres +102 -0
- synapse/storage/schema/main/delta/79/03_read_write_locks_triggers.sql.sqlite +72 -0
- synapse/storage/schema/main/delta/79/04_mitigate_stream_ordering_update_race.py +70 -0
- synapse/storage/schema/main/delta/79/05_read_write_locks_triggers.sql.postgres +69 -0
- synapse/storage/schema/main/delta/79/05_read_write_locks_triggers.sql.sqlite +65 -0
- synapse/storage/schema/main/delta/80/01_users_alter_locked.sql +35 -0
- synapse/storage/schema/main/delta/80/02_read_write_locks_unlogged.sql.postgres +30 -0
- synapse/storage/schema/main/delta/80/02_scheduled_tasks.sql +47 -0
- synapse/storage/schema/main/delta/80/03_read_write_locks_triggers.sql.postgres +37 -0
- synapse/storage/schema/main/delta/80/04_read_write_locks_deadlock.sql.postgres +71 -0
- synapse/storage/schema/main/delta/82/02_scheduled_tasks_index.sql +35 -0
- synapse/storage/schema/main/delta/82/04_add_indices_for_purging_rooms.sql +39 -0
- synapse/storage/schema/main/delta/82/05gaps.sql +44 -0
- synapse/storage/schema/main/delta/83/01_drop_old_tables.sql +43 -0
- synapse/storage/schema/main/delta/83/03_instance_name_receipts.sql.sqlite +17 -0
- synapse/storage/schema/main/delta/83/05_cross_signing_key_update_grant.sql +34 -0
- synapse/storage/schema/main/delta/83/06_event_push_summary_room.sql +36 -0
- synapse/storage/schema/main/delta/84/01_auth_links_stats.sql.postgres +20 -0
- synapse/storage/schema/main/delta/84/02_auth_links_index.sql +16 -0
- synapse/storage/schema/main/delta/84/03_auth_links_analyze.sql.postgres +16 -0
- synapse/storage/schema/main/delta/84/04_access_token_index.sql +15 -0
- synapse/storage/schema/main/delta/85/01_add_suspended.sql +14 -0
- synapse/storage/schema/main/delta/85/02_add_instance_names.sql +27 -0
- synapse/storage/schema/main/delta/85/03_new_sequences.sql.postgres +54 -0
- synapse/storage/schema/main/delta/85/04_cleanup_device_federation_outbox.sql +15 -0
- synapse/storage/schema/main/delta/85/05_add_instance_names_converted_pos.sql +16 -0
- synapse/storage/schema/main/delta/85/06_add_room_reports.sql +20 -0
- synapse/storage/schema/main/delta/86/01_authenticate_media.sql +15 -0
- synapse/storage/schema/main/delta/86/02_receipts_event_id_index.sql +15 -0
- synapse/storage/schema/main/delta/87/01_sliding_sync_memberships.sql +169 -0
- synapse/storage/schema/main/delta/87/02_per_connection_state.sql +81 -0
- synapse/storage/schema/main/delta/87/03_current_state_index.sql +19 -0
- synapse/storage/schema/main/delta/88/01_add_delayed_events.sql +43 -0
- synapse/storage/schema/main/delta/88/01_custom_profile_fields.sql +15 -0
- synapse/storage/schema/main/delta/88/02_fix_sliding_sync_membership_snapshots_forgotten_column.sql +21 -0
- synapse/storage/schema/main/delta/88/03_add_otk_ts_added_index.sql +18 -0
- synapse/storage/schema/main/delta/88/04_current_state_delta_index.sql +18 -0
- synapse/storage/schema/main/delta/88/05_drop_old_otks.sql.postgres +19 -0
- synapse/storage/schema/main/delta/88/05_drop_old_otks.sql.sqlite +19 -0
- synapse/storage/schema/main/delta/88/05_sliding_sync_room_config_index.sql +20 -0
- synapse/storage/schema/main/delta/88/06_events_received_ts_index.sql +17 -0
- synapse/storage/schema/main/delta/89/01_sliding_sync_membership_snapshot_index.sql +15 -0
- synapse/storage/schema/main/delta/90/01_add_column_participant_room_memberships_table.sql +16 -0
- synapse/storage/schema/main/delta/91/01_media_hash.sql +28 -0
- synapse/storage/schema/main/delta/92/01_remove_trigger.sql.postgres +16 -0
- synapse/storage/schema/main/delta/92/01_remove_trigger.sql.sqlite +16 -0
- synapse/storage/schema/main/delta/92/02_remove_populate_participant_bg_update.sql +17 -0
- synapse/storage/schema/main/delta/92/04_ss_membership_snapshot_idx.sql +16 -0
- synapse/storage/schema/main/delta/92/04_thread_subscriptions.sql +59 -0
- synapse/storage/schema/main/delta/92/04_thread_subscriptions_seq.sql.postgres +19 -0
- synapse/storage/schema/main/delta/92/05_fixup_max_depth_cap.sql +17 -0
- synapse/storage/schema/main/delta/92/05_thread_subscriptions_comments.sql.postgres +18 -0
- synapse/storage/schema/main/delta/92/06_device_federation_inbox_index.sql +16 -0
- synapse/storage/schema/main/delta/92/06_threads_last_sent_stream_ordering_comments.sql.postgres +24 -0
- synapse/storage/schema/main/delta/92/07_add_user_reports.sql +22 -0
- synapse/storage/schema/main/delta/92/07_event_txn_id_device_id_txn_id2.sql +15 -0
- synapse/storage/schema/main/delta/92/08_room_ban_redactions.sql +21 -0
- synapse/storage/schema/main/delta/92/08_thread_subscriptions_seq_fixup.sql.postgres +19 -0
- synapse/storage/schema/main/delta/92/09_thread_subscriptions_update.sql +20 -0
- synapse/storage/schema/main/delta/92/09_thread_subscriptions_update.sql.postgres +18 -0
- synapse/storage/schema/main/delta/93/01_add_delayed_events.sql +15 -0
- synapse/storage/schema/main/full_schemas/72/full.sql.postgres +1344 -0
- synapse/storage/schema/main/full_schemas/72/full.sql.sqlite +646 -0
- synapse/storage/schema/state/delta/23/drop_state_index.sql +35 -0
- synapse/storage/schema/state/delta/32/remove_state_indices.sql +38 -0
- synapse/storage/schema/state/delta/35/add_state_index.sql +36 -0
- synapse/storage/schema/state/delta/35/state.sql +41 -0
- synapse/storage/schema/state/delta/35/state_dedupe.sql +36 -0
- synapse/storage/schema/state/delta/47/state_group_seq.py +38 -0
- synapse/storage/schema/state/delta/56/state_group_room_idx.sql +36 -0
- synapse/storage/schema/state/delta/61/02state_groups_state_n_distinct.sql.postgres +34 -0
- synapse/storage/schema/state/delta/70/08_state_group_edges_unique.sql +36 -0
- synapse/storage/schema/state/delta/89/01_state_groups_deletion.sql +39 -0
- synapse/storage/schema/state/delta/90/02_delete_unreferenced_state_groups.sql +16 -0
- synapse/storage/schema/state/delta/90/03_remove_old_deletion_bg_update.sql +15 -0
- synapse/storage/schema/state/full_schemas/72/full.sql.postgres +30 -0
- synapse/storage/schema/state/full_schemas/72/full.sql.sqlite +20 -0
- synapse/storage/types.py +183 -0
- synapse/storage/util/__init__.py +20 -0
- synapse/storage/util/id_generators.py +928 -0
- synapse/storage/util/partial_state_events_tracker.py +194 -0
- synapse/storage/util/sequence.py +315 -0
- synapse/streams/__init__.py +43 -0
- synapse/streams/config.py +91 -0
- synapse/streams/events.py +203 -0
- synapse/synapse_rust/__init__.pyi +3 -0
- synapse/synapse_rust/acl.pyi +20 -0
- synapse/synapse_rust/events.pyi +136 -0
- synapse/synapse_rust/http_client.pyi +32 -0
- synapse/synapse_rust/push.pyi +86 -0
- synapse/synapse_rust/rendezvous.pyi +30 -0
- synapse/synapse_rust/segmenter.pyi +1 -0
- synapse/synapse_rust.abi3.so +0 -0
- synapse/types/__init__.py +1600 -0
- synapse/types/handlers/__init__.py +93 -0
- synapse/types/handlers/policy_server.py +16 -0
- synapse/types/handlers/sliding_sync.py +908 -0
- synapse/types/rest/__init__.py +25 -0
- synapse/types/rest/client/__init__.py +413 -0
- synapse/types/state.py +634 -0
- synapse/types/storage/__init__.py +66 -0
- synapse/util/__init__.py +169 -0
- synapse/util/async_helpers.py +1045 -0
- synapse/util/background_queue.py +142 -0
- synapse/util/batching_queue.py +202 -0
- synapse/util/caches/__init__.py +300 -0
- synapse/util/caches/cached_call.py +143 -0
- synapse/util/caches/deferred_cache.py +530 -0
- synapse/util/caches/descriptors.py +692 -0
- synapse/util/caches/dictionary_cache.py +346 -0
- synapse/util/caches/expiringcache.py +249 -0
- synapse/util/caches/lrucache.py +975 -0
- synapse/util/caches/response_cache.py +322 -0
- synapse/util/caches/stream_change_cache.py +370 -0
- synapse/util/caches/treecache.py +189 -0
- synapse/util/caches/ttlcache.py +197 -0
- synapse/util/cancellation.py +63 -0
- synapse/util/check_dependencies.py +335 -0
- synapse/util/clock.py +567 -0
- synapse/util/constants.py +22 -0
- synapse/util/daemonize.py +165 -0
- synapse/util/distributor.py +157 -0
- synapse/util/events.py +134 -0
- synapse/util/file_consumer.py +164 -0
- synapse/util/frozenutils.py +57 -0
- synapse/util/gai_resolver.py +178 -0
- synapse/util/hash.py +38 -0
- synapse/util/httpresourcetree.py +108 -0
- synapse/util/iterutils.py +189 -0
- synapse/util/json.py +56 -0
- synapse/util/linked_list.py +156 -0
- synapse/util/logcontext.py +46 -0
- synapse/util/logformatter.py +28 -0
- synapse/util/macaroons.py +325 -0
- synapse/util/manhole.py +191 -0
- synapse/util/metrics.py +339 -0
- synapse/util/module_loader.py +116 -0
- synapse/util/msisdn.py +51 -0
- synapse/util/patch_inline_callbacks.py +250 -0
- synapse/util/pydantic_models.py +63 -0
- synapse/util/ratelimitutils.py +419 -0
- synapse/util/retryutils.py +339 -0
- synapse/util/rlimit.py +42 -0
- synapse/util/rust.py +133 -0
- synapse/util/sentinel.py +21 -0
- synapse/util/stringutils.py +293 -0
- synapse/util/task_scheduler.py +493 -0
- synapse/util/templates.py +126 -0
- synapse/util/threepids.py +123 -0
- synapse/util/wheel_timer.py +112 -0
- synapse/visibility.py +835 -0
|
@@ -0,0 +1,595 @@
|
|
|
1
|
+
#
|
|
2
|
+
# This file is licensed under the Affero General Public License (AGPL) version 3.
|
|
3
|
+
#
|
|
4
|
+
# Copyright 2021 The Matrix.org Foundation C.I.C.
|
|
5
|
+
# Copyright (C) 2023 New Vector, Ltd
|
|
6
|
+
#
|
|
7
|
+
# This program is free software: you can redistribute it and/or modify
|
|
8
|
+
# it under the terms of the GNU Affero General Public License as
|
|
9
|
+
# published by the Free Software Foundation, either version 3 of the
|
|
10
|
+
# License, or (at your option) any later version.
|
|
11
|
+
#
|
|
12
|
+
# See the GNU Affero General Public License for more details:
|
|
13
|
+
# <https://www.gnu.org/licenses/agpl-3.0.html>.
|
|
14
|
+
#
|
|
15
|
+
# Originally licensed under the Apache License, Version 2.0:
|
|
16
|
+
# <http://www.apache.org/licenses/LICENSE-2.0>.
|
|
17
|
+
#
|
|
18
|
+
# [This file includes modifications made by New Vector Limited]
|
|
19
|
+
#
|
|
20
|
+
#
|
|
21
|
+
|
|
22
|
+
import enum
|
|
23
|
+
from functools import cache
|
|
24
|
+
from typing import TYPE_CHECKING, Any, Optional
|
|
25
|
+
|
|
26
|
+
import attr
|
|
27
|
+
import attr.validators
|
|
28
|
+
|
|
29
|
+
from synapse.api.room_versions import KNOWN_ROOM_VERSIONS, RoomVersions
|
|
30
|
+
from synapse.config import ConfigError
|
|
31
|
+
from synapse.config._base import Config, RootConfig, read_file
|
|
32
|
+
from synapse.types import JsonDict, StrSequence
|
|
33
|
+
|
|
34
|
+
# Determine whether authlib is installed.
|
|
35
|
+
try:
|
|
36
|
+
import authlib # noqa: F401
|
|
37
|
+
|
|
38
|
+
HAS_AUTHLIB = True
|
|
39
|
+
except ImportError:
|
|
40
|
+
HAS_AUTHLIB = False
|
|
41
|
+
|
|
42
|
+
if TYPE_CHECKING:
|
|
43
|
+
# Only import this if we're type checking, as it might not be installed at runtime.
|
|
44
|
+
from authlib.jose.rfc7517 import JsonWebKey
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
@cache
|
|
48
|
+
def read_secret_from_file_once(file_path: Any, config_path: StrSequence) -> str:
|
|
49
|
+
"""Returns the memoized secret read from file."""
|
|
50
|
+
return read_file(file_path, config_path).strip()
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
class ClientAuthMethod(enum.Enum):
|
|
54
|
+
"""List of supported client auth methods."""
|
|
55
|
+
|
|
56
|
+
CLIENT_SECRET_POST = "client_secret_post"
|
|
57
|
+
CLIENT_SECRET_BASIC = "client_secret_basic"
|
|
58
|
+
CLIENT_SECRET_JWT = "client_secret_jwt"
|
|
59
|
+
PRIVATE_KEY_JWT = "private_key_jwt"
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def _parse_jwks(jwks: JsonDict | None) -> Optional["JsonWebKey"]:
|
|
63
|
+
"""A helper function to parse a JWK dict into a JsonWebKey."""
|
|
64
|
+
|
|
65
|
+
if jwks is None:
|
|
66
|
+
return None
|
|
67
|
+
|
|
68
|
+
from authlib.jose.rfc7517 import JsonWebKey
|
|
69
|
+
|
|
70
|
+
return JsonWebKey.import_key(jwks)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def _check_client_secret(
|
|
74
|
+
instance: "MSC3861", _attribute: attr.Attribute, _value: str | None
|
|
75
|
+
) -> None:
|
|
76
|
+
if instance._client_secret and instance._client_secret_path:
|
|
77
|
+
raise ConfigError(
|
|
78
|
+
(
|
|
79
|
+
"You have configured both "
|
|
80
|
+
"`experimental_features.msc3861.client_secret` and "
|
|
81
|
+
"`experimental_features.msc3861.client_secret_path`. "
|
|
82
|
+
"These are mutually incompatible."
|
|
83
|
+
),
|
|
84
|
+
("experimental", "msc3861", "client_secret"),
|
|
85
|
+
)
|
|
86
|
+
# Check client secret can be retrieved
|
|
87
|
+
instance.client_secret()
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def _check_admin_token(
|
|
91
|
+
instance: "MSC3861", _attribute: attr.Attribute, _value: str | None
|
|
92
|
+
) -> None:
|
|
93
|
+
if instance._admin_token and instance._admin_token_path:
|
|
94
|
+
raise ConfigError(
|
|
95
|
+
(
|
|
96
|
+
"You have configured both "
|
|
97
|
+
"`experimental_features.msc3861.admin_token` and "
|
|
98
|
+
"`experimental_features.msc3861.admin_token_path`. "
|
|
99
|
+
"These are mutually incompatible."
|
|
100
|
+
),
|
|
101
|
+
("experimental", "msc3861", "admin_token"),
|
|
102
|
+
)
|
|
103
|
+
# Check client secret can be retrieved
|
|
104
|
+
instance.admin_token()
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
@attr.s(slots=True, frozen=True)
|
|
108
|
+
class MSC3861:
|
|
109
|
+
"""Configuration for MSC3861: Matrix architecture change to delegate authentication via OIDC"""
|
|
110
|
+
|
|
111
|
+
enabled: bool = attr.ib(default=False, validator=attr.validators.instance_of(bool))
|
|
112
|
+
"""Whether to enable MSC3861 auth delegation."""
|
|
113
|
+
|
|
114
|
+
@enabled.validator
|
|
115
|
+
def _check_enabled(self, attribute: attr.Attribute, value: bool) -> None:
|
|
116
|
+
# Only allow enabling MSC3861 if authlib is installed
|
|
117
|
+
if value and not HAS_AUTHLIB:
|
|
118
|
+
raise ConfigError(
|
|
119
|
+
"MSC3861 is enabled but authlib is not installed. "
|
|
120
|
+
"Please install authlib to use MSC3861.",
|
|
121
|
+
("experimental", "msc3861", "enabled"),
|
|
122
|
+
)
|
|
123
|
+
|
|
124
|
+
issuer: str = attr.ib(default="", validator=attr.validators.instance_of(str))
|
|
125
|
+
"""The URL of the OIDC Provider."""
|
|
126
|
+
|
|
127
|
+
issuer_metadata: JsonDict | None = attr.ib(default=None)
|
|
128
|
+
"""The issuer metadata to use, otherwise discovered from /.well-known/openid-configuration as per MSC2965."""
|
|
129
|
+
|
|
130
|
+
client_id: str = attr.ib(
|
|
131
|
+
default="",
|
|
132
|
+
validator=attr.validators.instance_of(str),
|
|
133
|
+
)
|
|
134
|
+
"""The client ID to use when calling the introspection endpoint."""
|
|
135
|
+
|
|
136
|
+
client_auth_method: ClientAuthMethod = attr.ib(
|
|
137
|
+
default=ClientAuthMethod.CLIENT_SECRET_POST, converter=ClientAuthMethod
|
|
138
|
+
)
|
|
139
|
+
"""The auth method used when calling the introspection endpoint."""
|
|
140
|
+
|
|
141
|
+
_client_secret: str | None = attr.ib(
|
|
142
|
+
default=None,
|
|
143
|
+
validator=[
|
|
144
|
+
attr.validators.optional(attr.validators.instance_of(str)),
|
|
145
|
+
_check_client_secret,
|
|
146
|
+
],
|
|
147
|
+
)
|
|
148
|
+
"""
|
|
149
|
+
The client secret to use when calling the introspection endpoint,
|
|
150
|
+
when using any of the client_secret_* client auth methods.
|
|
151
|
+
"""
|
|
152
|
+
|
|
153
|
+
_client_secret_path: str | None = attr.ib(
|
|
154
|
+
default=None,
|
|
155
|
+
validator=[
|
|
156
|
+
attr.validators.optional(attr.validators.instance_of(str)),
|
|
157
|
+
_check_client_secret,
|
|
158
|
+
],
|
|
159
|
+
)
|
|
160
|
+
"""
|
|
161
|
+
Alternative to `client_secret`: allows the secret to be specified in an
|
|
162
|
+
external file.
|
|
163
|
+
"""
|
|
164
|
+
|
|
165
|
+
jwk: Optional["JsonWebKey"] = attr.ib(default=None, converter=_parse_jwks)
|
|
166
|
+
"""
|
|
167
|
+
The JWKS to use when calling the introspection endpoint,
|
|
168
|
+
when using the private_key_jwt client auth method.
|
|
169
|
+
"""
|
|
170
|
+
|
|
171
|
+
@client_auth_method.validator
|
|
172
|
+
def _check_client_auth_method(
|
|
173
|
+
self, attribute: attr.Attribute, value: ClientAuthMethod
|
|
174
|
+
) -> None:
|
|
175
|
+
# Check that the right client credentials are provided for the client auth method.
|
|
176
|
+
if not self.enabled:
|
|
177
|
+
return
|
|
178
|
+
|
|
179
|
+
if value == ClientAuthMethod.PRIVATE_KEY_JWT and self.jwk is None:
|
|
180
|
+
raise ConfigError(
|
|
181
|
+
"A JWKS must be provided when using the private_key_jwt client auth method",
|
|
182
|
+
("experimental", "msc3861", "client_auth_method"),
|
|
183
|
+
)
|
|
184
|
+
|
|
185
|
+
if (
|
|
186
|
+
value
|
|
187
|
+
in (
|
|
188
|
+
ClientAuthMethod.CLIENT_SECRET_POST,
|
|
189
|
+
ClientAuthMethod.CLIENT_SECRET_BASIC,
|
|
190
|
+
ClientAuthMethod.CLIENT_SECRET_JWT,
|
|
191
|
+
)
|
|
192
|
+
and self.client_secret() is None
|
|
193
|
+
):
|
|
194
|
+
raise ConfigError(
|
|
195
|
+
f"A client secret must be provided when using the {value} client auth method",
|
|
196
|
+
("experimental", "msc3861", "client_auth_method"),
|
|
197
|
+
)
|
|
198
|
+
|
|
199
|
+
introspection_endpoint: str | None = attr.ib(
|
|
200
|
+
default=None,
|
|
201
|
+
validator=attr.validators.optional(attr.validators.instance_of(str)),
|
|
202
|
+
)
|
|
203
|
+
"""The URL of the introspection endpoint used to validate access tokens."""
|
|
204
|
+
|
|
205
|
+
account_management_url: str | None = attr.ib(
|
|
206
|
+
default=None,
|
|
207
|
+
validator=attr.validators.optional(attr.validators.instance_of(str)),
|
|
208
|
+
)
|
|
209
|
+
"""The URL of the My Account page on the OIDC Provider as per MSC2965."""
|
|
210
|
+
|
|
211
|
+
_admin_token: str | None = attr.ib(
|
|
212
|
+
default=None,
|
|
213
|
+
validator=[
|
|
214
|
+
attr.validators.optional(attr.validators.instance_of(str)),
|
|
215
|
+
_check_admin_token,
|
|
216
|
+
],
|
|
217
|
+
)
|
|
218
|
+
"""
|
|
219
|
+
A token that should be considered as an admin token.
|
|
220
|
+
This is used by the OIDC provider, to make admin calls to Synapse.
|
|
221
|
+
"""
|
|
222
|
+
|
|
223
|
+
_admin_token_path: str | None = attr.ib(
|
|
224
|
+
default=None,
|
|
225
|
+
validator=[
|
|
226
|
+
attr.validators.optional(attr.validators.instance_of(str)),
|
|
227
|
+
_check_admin_token,
|
|
228
|
+
],
|
|
229
|
+
)
|
|
230
|
+
"""
|
|
231
|
+
Alternative to `admin_token`: allows the secret to be specified in an
|
|
232
|
+
external file.
|
|
233
|
+
"""
|
|
234
|
+
|
|
235
|
+
def client_secret(self) -> str | None:
|
|
236
|
+
"""Returns the secret given via `client_secret` or `client_secret_path`."""
|
|
237
|
+
if self._client_secret_path:
|
|
238
|
+
return read_secret_from_file_once(
|
|
239
|
+
self._client_secret_path,
|
|
240
|
+
("experimental_features", "msc3861", "client_secret_path"),
|
|
241
|
+
)
|
|
242
|
+
return self._client_secret
|
|
243
|
+
|
|
244
|
+
def admin_token(self) -> str | None:
|
|
245
|
+
"""Returns the admin token given via `admin_token` or `admin_token_path`."""
|
|
246
|
+
if self._admin_token_path:
|
|
247
|
+
return read_secret_from_file_once(
|
|
248
|
+
self._admin_token_path,
|
|
249
|
+
("experimental_features", "msc3861", "admin_token_path"),
|
|
250
|
+
)
|
|
251
|
+
return self._admin_token
|
|
252
|
+
|
|
253
|
+
def check_config_conflicts(
|
|
254
|
+
self, root: RootConfig, allow_secrets_in_config: bool
|
|
255
|
+
) -> None:
|
|
256
|
+
"""Checks for any configuration conflicts with other parts of Synapse.
|
|
257
|
+
|
|
258
|
+
Raises:
|
|
259
|
+
ConfigError: If there are any configuration conflicts.
|
|
260
|
+
"""
|
|
261
|
+
|
|
262
|
+
if not self.enabled:
|
|
263
|
+
return
|
|
264
|
+
|
|
265
|
+
if self._client_secret and not allow_secrets_in_config:
|
|
266
|
+
raise ConfigError(
|
|
267
|
+
"Config options that expect an in-line secret as value are disabled",
|
|
268
|
+
("experimental", "msc3861", "client_secret"),
|
|
269
|
+
)
|
|
270
|
+
|
|
271
|
+
if self.jwk and not allow_secrets_in_config:
|
|
272
|
+
raise ConfigError(
|
|
273
|
+
"Config options that expect an in-line secret as value are disabled",
|
|
274
|
+
("experimental", "msc3861", "jwk"),
|
|
275
|
+
)
|
|
276
|
+
|
|
277
|
+
if self._admin_token and not allow_secrets_in_config:
|
|
278
|
+
raise ConfigError(
|
|
279
|
+
"Config options that expect an in-line secret as value are disabled",
|
|
280
|
+
("experimental", "msc3861", "admin_token"),
|
|
281
|
+
)
|
|
282
|
+
|
|
283
|
+
if (
|
|
284
|
+
root.auth.password_enabled_for_reauth
|
|
285
|
+
or root.auth.password_enabled_for_login
|
|
286
|
+
):
|
|
287
|
+
raise ConfigError(
|
|
288
|
+
"Password auth cannot be enabled when OAuth delegation is enabled",
|
|
289
|
+
("password_config", "enabled"),
|
|
290
|
+
)
|
|
291
|
+
|
|
292
|
+
if root.registration.enable_registration:
|
|
293
|
+
raise ConfigError(
|
|
294
|
+
"Registration cannot be enabled when OAuth delegation is enabled",
|
|
295
|
+
("enable_registration",),
|
|
296
|
+
)
|
|
297
|
+
|
|
298
|
+
# We only need to test the user consent version, as if it must be set if the user_consent section was present in the config
|
|
299
|
+
if root.consent.user_consent_version is not None:
|
|
300
|
+
raise ConfigError(
|
|
301
|
+
"User consent cannot be enabled when OAuth delegation is enabled",
|
|
302
|
+
("user_consent",),
|
|
303
|
+
)
|
|
304
|
+
|
|
305
|
+
if (
|
|
306
|
+
root.oidc.oidc_enabled
|
|
307
|
+
or root.saml2.saml2_enabled
|
|
308
|
+
or root.cas.cas_enabled
|
|
309
|
+
or root.jwt.jwt_enabled
|
|
310
|
+
):
|
|
311
|
+
raise ConfigError("SSO cannot be enabled when OAuth delegation is enabled")
|
|
312
|
+
|
|
313
|
+
if bool(root.authproviders.password_providers):
|
|
314
|
+
raise ConfigError(
|
|
315
|
+
"Password auth providers cannot be enabled when OAuth delegation is enabled"
|
|
316
|
+
)
|
|
317
|
+
|
|
318
|
+
if root.captcha.enable_registration_captcha:
|
|
319
|
+
raise ConfigError(
|
|
320
|
+
"CAPTCHA cannot be enabled when OAuth delegation is enabled",
|
|
321
|
+
("captcha", "enable_registration_captcha"),
|
|
322
|
+
)
|
|
323
|
+
|
|
324
|
+
if root.auth.login_via_existing_enabled:
|
|
325
|
+
raise ConfigError(
|
|
326
|
+
"Login via existing session cannot be enabled when OAuth delegation is enabled",
|
|
327
|
+
("login_via_existing_session", "enabled"),
|
|
328
|
+
)
|
|
329
|
+
|
|
330
|
+
if root.registration.refresh_token_lifetime:
|
|
331
|
+
raise ConfigError(
|
|
332
|
+
"refresh_token_lifetime cannot be set when OAuth delegation is enabled",
|
|
333
|
+
("refresh_token_lifetime",),
|
|
334
|
+
)
|
|
335
|
+
|
|
336
|
+
if root.registration.nonrefreshable_access_token_lifetime:
|
|
337
|
+
raise ConfigError(
|
|
338
|
+
"nonrefreshable_access_token_lifetime cannot be set when OAuth delegation is enabled",
|
|
339
|
+
("nonrefreshable_access_token_lifetime",),
|
|
340
|
+
)
|
|
341
|
+
|
|
342
|
+
if root.registration.session_lifetime:
|
|
343
|
+
raise ConfigError(
|
|
344
|
+
"session_lifetime cannot be set when OAuth delegation is enabled",
|
|
345
|
+
("session_lifetime",),
|
|
346
|
+
)
|
|
347
|
+
|
|
348
|
+
if root.registration.enable_3pid_changes:
|
|
349
|
+
raise ConfigError(
|
|
350
|
+
"enable_3pid_changes cannot be enabled when OAuth delegation is enabled",
|
|
351
|
+
("enable_3pid_changes",),
|
|
352
|
+
)
|
|
353
|
+
|
|
354
|
+
|
|
355
|
+
@attr.s(auto_attribs=True, frozen=True, slots=True)
|
|
356
|
+
class MSC3866Config:
|
|
357
|
+
"""Configuration for MSC3866 (mandating approval for new users)"""
|
|
358
|
+
|
|
359
|
+
# Whether the base support for the approval process is enabled. This includes the
|
|
360
|
+
# ability for administrators to check and update the approval of users, even if no
|
|
361
|
+
# approval is currently required.
|
|
362
|
+
enabled: bool = False
|
|
363
|
+
# Whether to require that new users are approved by an admin before their account
|
|
364
|
+
# can be used. Note that this setting is ignored if 'enabled' is false.
|
|
365
|
+
require_approval_for_new_accounts: bool = False
|
|
366
|
+
|
|
367
|
+
|
|
368
|
+
class ExperimentalConfig(Config):
|
|
369
|
+
"""Config section for enabling experimental features"""
|
|
370
|
+
|
|
371
|
+
section = "experimental"
|
|
372
|
+
|
|
373
|
+
def read_config(
|
|
374
|
+
self, config: JsonDict, allow_secrets_in_config: bool, **kwargs: Any
|
|
375
|
+
) -> None:
|
|
376
|
+
experimental = config.get("experimental_features") or {}
|
|
377
|
+
|
|
378
|
+
# MSC3026 (busy presence state)
|
|
379
|
+
self.msc3026_enabled: bool = experimental.get("msc3026_enabled", False)
|
|
380
|
+
|
|
381
|
+
# MSC2697 (device dehydration)
|
|
382
|
+
# Enabled by default since this option was added after adding the feature.
|
|
383
|
+
# It is not recommended that both MSC2697 and MSC3814 both be enabled at
|
|
384
|
+
# once.
|
|
385
|
+
self.msc2697_enabled: bool = experimental.get("msc2697_enabled", True)
|
|
386
|
+
|
|
387
|
+
# MSC3814 (dehydrated devices with SSSS)
|
|
388
|
+
# This is an alternative method to achieve the same goals as MSC2697.
|
|
389
|
+
# It is not recommended that both MSC2697 and MSC3814 both be enabled at
|
|
390
|
+
# once.
|
|
391
|
+
self.msc3814_enabled: bool = experimental.get("msc3814_enabled", False)
|
|
392
|
+
|
|
393
|
+
if self.msc2697_enabled and self.msc3814_enabled:
|
|
394
|
+
raise ConfigError(
|
|
395
|
+
"MSC2697 and MSC3814 should not both be enabled.",
|
|
396
|
+
(
|
|
397
|
+
"experimental_features",
|
|
398
|
+
"msc3814_enabled",
|
|
399
|
+
),
|
|
400
|
+
)
|
|
401
|
+
|
|
402
|
+
# MSC3244 (room version capabilities)
|
|
403
|
+
self.msc3244_enabled: bool = experimental.get("msc3244_enabled", True)
|
|
404
|
+
|
|
405
|
+
# MSC3266 (room summary api)
|
|
406
|
+
self.msc3266_enabled: bool = experimental.get("msc3266_enabled", False)
|
|
407
|
+
|
|
408
|
+
# MSC2409 (this setting only relates to optionally sending to-device messages).
|
|
409
|
+
# Presence, typing and read receipt EDUs are already sent to application services that
|
|
410
|
+
# have opted in to receive them. If enabled, this adds to-device messages to that list.
|
|
411
|
+
self.msc2409_to_device_messages_enabled: bool = experimental.get(
|
|
412
|
+
"msc2409_to_device_messages_enabled", False
|
|
413
|
+
)
|
|
414
|
+
|
|
415
|
+
# The portion of MSC3202 related to transaction extensions:
|
|
416
|
+
# sending device list changes, one-time key counts and fallback key
|
|
417
|
+
# usage to application services.
|
|
418
|
+
self.msc3202_transaction_extensions: bool = experimental.get(
|
|
419
|
+
"msc3202_transaction_extensions", False
|
|
420
|
+
)
|
|
421
|
+
|
|
422
|
+
# MSC3983: Proxying OTK claim requests to exclusive ASes.
|
|
423
|
+
self.msc3983_appservice_otk_claims: bool = experimental.get(
|
|
424
|
+
"msc3983_appservice_otk_claims", False
|
|
425
|
+
)
|
|
426
|
+
|
|
427
|
+
# MSC3984: Proxying key queries to exclusive ASes.
|
|
428
|
+
self.msc3984_appservice_key_query: bool = experimental.get(
|
|
429
|
+
"msc3984_appservice_key_query", False
|
|
430
|
+
)
|
|
431
|
+
|
|
432
|
+
# MSC3720 (Account status endpoint)
|
|
433
|
+
self.msc3720_enabled: bool = experimental.get("msc3720_enabled", False)
|
|
434
|
+
|
|
435
|
+
# MSC2654: Unread counts
|
|
436
|
+
#
|
|
437
|
+
# Note that enabling this will result in an incorrect unread count for
|
|
438
|
+
# previously calculated push actions.
|
|
439
|
+
self.msc2654_enabled: bool = experimental.get("msc2654_enabled", False)
|
|
440
|
+
|
|
441
|
+
# MSC2815 (allow room moderators to view redacted event content)
|
|
442
|
+
self.msc2815_enabled: bool = experimental.get("msc2815_enabled", False)
|
|
443
|
+
|
|
444
|
+
# MSC3391: Removing account data.
|
|
445
|
+
self.msc3391_enabled = experimental.get("msc3391_enabled", False)
|
|
446
|
+
|
|
447
|
+
# MSC3575 (Sliding Sync) alternate endpoints, c.f. MSC4186.
|
|
448
|
+
#
|
|
449
|
+
# This is enabled by default as a replacement for the sliding sync proxy.
|
|
450
|
+
self.msc3575_enabled: bool = experimental.get("msc3575_enabled", True)
|
|
451
|
+
|
|
452
|
+
# MSC3773: Thread notifications
|
|
453
|
+
self.msc3773_enabled: bool = experimental.get("msc3773_enabled", False)
|
|
454
|
+
|
|
455
|
+
# MSC3664: Pushrules to match on related events
|
|
456
|
+
self.msc3664_enabled: bool = experimental.get("msc3664_enabled", False)
|
|
457
|
+
|
|
458
|
+
# MSC3848: Introduce errcodes for specific event sending failures
|
|
459
|
+
self.msc3848_enabled: bool = experimental.get("msc3848_enabled", False)
|
|
460
|
+
|
|
461
|
+
# MSC3852: Expose last seen user agent field on /_matrix/client/v3/devices.
|
|
462
|
+
self.msc3852_enabled: bool = experimental.get("msc3852_enabled", False)
|
|
463
|
+
|
|
464
|
+
# MSC3866: M_USER_AWAITING_APPROVAL error code
|
|
465
|
+
raw_msc3866_config = experimental.get("msc3866", {})
|
|
466
|
+
self.msc3866 = MSC3866Config(**raw_msc3866_config)
|
|
467
|
+
|
|
468
|
+
# MSC3881: Remotely toggle push notifications for another client
|
|
469
|
+
self.msc3881_enabled: bool = experimental.get("msc3881_enabled", False)
|
|
470
|
+
|
|
471
|
+
# MSC3874: Filtering /messages with rel_types / not_rel_types.
|
|
472
|
+
self.msc3874_enabled: bool = experimental.get("msc3874_enabled", False)
|
|
473
|
+
|
|
474
|
+
# MSC3890: Remotely silence local notifications
|
|
475
|
+
# Note: This option requires "experimental_features.msc3391_enabled" to be
|
|
476
|
+
# set to "true", in order to communicate account data deletions to clients.
|
|
477
|
+
self.msc3890_enabled: bool = experimental.get("msc3890_enabled", False)
|
|
478
|
+
if self.msc3890_enabled and not self.msc3391_enabled:
|
|
479
|
+
raise ConfigError(
|
|
480
|
+
"Option 'experimental_features.msc3391' must be set to 'true' to "
|
|
481
|
+
"enable 'experimental_features.msc3890'. MSC3391 functionality is "
|
|
482
|
+
"required to communicate account data deletions to clients."
|
|
483
|
+
)
|
|
484
|
+
|
|
485
|
+
# MSC3381: Polls.
|
|
486
|
+
# In practice, supporting polls in Synapse only requires an implementation of
|
|
487
|
+
# MSC3930: Push rules for MSC3391 polls; which is what this option enables.
|
|
488
|
+
self.msc3381_polls_enabled: bool = experimental.get(
|
|
489
|
+
"msc3381_polls_enabled", False
|
|
490
|
+
)
|
|
491
|
+
|
|
492
|
+
# MSC3912: Relation-based redactions.
|
|
493
|
+
self.msc3912_enabled: bool = experimental.get("msc3912_enabled", False)
|
|
494
|
+
|
|
495
|
+
# MSC1767 and friends: Extensible Events
|
|
496
|
+
self.msc1767_enabled: bool = experimental.get("msc1767_enabled", False)
|
|
497
|
+
if self.msc1767_enabled:
|
|
498
|
+
# Enable room version (and thus applicable push rules from MSC3931/3932)
|
|
499
|
+
version_id = RoomVersions.MSC1767v10.identifier
|
|
500
|
+
KNOWN_ROOM_VERSIONS[version_id] = RoomVersions.MSC1767v10
|
|
501
|
+
|
|
502
|
+
# MSC3391: Removing account data.
|
|
503
|
+
self.msc3391_enabled = experimental.get("msc3391_enabled", False)
|
|
504
|
+
|
|
505
|
+
# MSC3861: Matrix architecture change to delegate authentication via OIDC
|
|
506
|
+
try:
|
|
507
|
+
self.msc3861 = MSC3861(**experimental.get("msc3861", {}))
|
|
508
|
+
except ValueError as exc:
|
|
509
|
+
raise ConfigError(
|
|
510
|
+
"Invalid MSC3861 configuration", ("experimental", "msc3861")
|
|
511
|
+
) from exc
|
|
512
|
+
|
|
513
|
+
# Check that none of the other config options conflict with MSC3861 when enabled
|
|
514
|
+
self.msc3861.check_config_conflicts(
|
|
515
|
+
self.root, allow_secrets_in_config=allow_secrets_in_config
|
|
516
|
+
)
|
|
517
|
+
|
|
518
|
+
self.msc4028_push_encrypted_events = experimental.get(
|
|
519
|
+
"msc4028_push_encrypted_events", False
|
|
520
|
+
)
|
|
521
|
+
|
|
522
|
+
self.msc4069_profile_inhibit_propagation = experimental.get(
|
|
523
|
+
"msc4069_profile_inhibit_propagation", False
|
|
524
|
+
)
|
|
525
|
+
|
|
526
|
+
# MSC4108: Mechanism to allow OIDC sign in and E2EE set up via QR code
|
|
527
|
+
self.msc4108_enabled = experimental.get("msc4108_enabled", False)
|
|
528
|
+
|
|
529
|
+
self.msc4108_delegation_endpoint: str | None = experimental.get(
|
|
530
|
+
"msc4108_delegation_endpoint", None
|
|
531
|
+
)
|
|
532
|
+
|
|
533
|
+
auth_delegated = self.msc3861.enabled or (
|
|
534
|
+
config.get("matrix_authentication_service") or {}
|
|
535
|
+
).get("enabled", False)
|
|
536
|
+
|
|
537
|
+
if (
|
|
538
|
+
self.msc4108_enabled or self.msc4108_delegation_endpoint is not None
|
|
539
|
+
) and not auth_delegated:
|
|
540
|
+
raise ConfigError(
|
|
541
|
+
"MSC4108 requires MSC3861 or matrix_authentication_service to be enabled",
|
|
542
|
+
("experimental", "msc4108_delegation_endpoint"),
|
|
543
|
+
)
|
|
544
|
+
|
|
545
|
+
if self.msc4108_delegation_endpoint is not None and self.msc4108_enabled:
|
|
546
|
+
raise ConfigError(
|
|
547
|
+
"You cannot have MSC4108 both enabled and delegated at the same time",
|
|
548
|
+
("experimental", "msc4108_delegation_endpoint"),
|
|
549
|
+
)
|
|
550
|
+
|
|
551
|
+
# MSC4133: Custom profile fields
|
|
552
|
+
self.msc4133_enabled: bool = experimental.get("msc4133_enabled", False)
|
|
553
|
+
|
|
554
|
+
# MSC4143: Matrix RTC Transport using Livekit Backend
|
|
555
|
+
self.msc4143_enabled: bool = experimental.get("msc4143_enabled", False)
|
|
556
|
+
|
|
557
|
+
# MSC4169: Backwards-compatible redaction sending using `/send`
|
|
558
|
+
self.msc4169_enabled: bool = experimental.get("msc4169_enabled", False)
|
|
559
|
+
|
|
560
|
+
# MSC4210: Remove legacy mentions
|
|
561
|
+
self.msc4210_enabled: bool = experimental.get("msc4210_enabled", False)
|
|
562
|
+
|
|
563
|
+
# MSC4222: Adding `state_after` to sync v2
|
|
564
|
+
self.msc4222_enabled: bool = experimental.get("msc4222_enabled", False)
|
|
565
|
+
|
|
566
|
+
# MSC4076: Add `disable_badge_count`` to pusher configuration
|
|
567
|
+
self.msc4076_enabled: bool = experimental.get("msc4076_enabled", False)
|
|
568
|
+
|
|
569
|
+
# MSC4277: Harmonizing the reporting endpoints
|
|
570
|
+
#
|
|
571
|
+
# If enabled, ignore the score parameter and respond with HTTP 200 on
|
|
572
|
+
# reporting requests regardless of the subject's existence.
|
|
573
|
+
self.msc4277_enabled: bool = experimental.get("msc4277_enabled", False)
|
|
574
|
+
|
|
575
|
+
# MSC4235: Add `via` param to hierarchy endpoint
|
|
576
|
+
self.msc4235_enabled: bool = experimental.get("msc4235_enabled", False)
|
|
577
|
+
|
|
578
|
+
# MSC4263: Preventing MXID enumeration via key queries
|
|
579
|
+
self.msc4263_limit_key_queries_to_users_who_share_rooms = experimental.get(
|
|
580
|
+
"msc4263_limit_key_queries_to_users_who_share_rooms",
|
|
581
|
+
False,
|
|
582
|
+
)
|
|
583
|
+
|
|
584
|
+
# MSC4267: Automatically forgetting rooms on leave
|
|
585
|
+
self.msc4267_enabled: bool = experimental.get("msc4267_enabled", False)
|
|
586
|
+
|
|
587
|
+
# MSC4155: Invite filtering
|
|
588
|
+
self.msc4155_enabled: bool = experimental.get("msc4155_enabled", False)
|
|
589
|
+
|
|
590
|
+
# MSC4293: Redact on Kick/Ban
|
|
591
|
+
self.msc4293_enabled: bool = experimental.get("msc4293_enabled", False)
|
|
592
|
+
|
|
593
|
+
# MSC4306: Thread Subscriptions
|
|
594
|
+
# (and MSC4308: Thread Subscriptions extension to Sliding Sync)
|
|
595
|
+
self.msc4306_enabled: bool = experimental.get("msc4306_enabled", False)
|