mirror of
https://github.com/element-hq/synapse.git
synced 2024-11-28 15:08:49 +03:00
Merge branch 'release-v1.99'
This commit is contained in:
commit
2927008e48
1211 changed files with 21412 additions and 9640 deletions
|
@ -1,17 +1,23 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
# Copyright 2022 The Matrix.org Foundation C.I.C.
|
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# This file is licensed under the Affero General Public License (AGPL) version 3.
|
||||||
# you may not use this file except in compliance with the License.
|
#
|
||||||
# You may obtain a copy of the License at
|
# Copyright (C) 2023 New Vector, Ltd
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# See the GNU Affero General Public License for more details:
|
||||||
|
# <https://www.gnu.org/licenses/agpl-3.0.html>.
|
||||||
|
#
|
||||||
|
# Originally licensed under the Apache License, Version 2.0:
|
||||||
|
# <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||||
|
#
|
||||||
|
# [This file includes modifications made by New Vector Limited]
|
||||||
#
|
#
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
#
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
# Wraps `auditwheel repair` to first check if we're repairing a potentially abi3
|
# Wraps `auditwheel repair` to first check if we're repairing a potentially abi3
|
||||||
# compatible wheel, if so rename the wheel before repairing it.
|
# compatible wheel, if so rename the wheel before repairing it.
|
||||||
|
|
|
@ -1,17 +1,23 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
# Copyright 2022 The Matrix.org Foundation C.I.C.
|
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# This file is licensed under the Affero General Public License (AGPL) version 3.
|
||||||
# you may not use this file except in compliance with the License.
|
#
|
||||||
# You may obtain a copy of the License at
|
# Copyright (C) 2023 New Vector, Ltd
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# See the GNU Affero General Public License for more details:
|
||||||
|
# <https://www.gnu.org/licenses/agpl-3.0.html>.
|
||||||
|
#
|
||||||
|
# Originally licensed under the Apache License, Version 2.0:
|
||||||
|
# <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||||
|
#
|
||||||
|
# [This file includes modifications made by New Vector Limited]
|
||||||
#
|
#
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
#
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
# Calculate the trial jobs to run based on if we're in a PR or not.
|
# Calculate the trial jobs to run based on if we're in a PR or not.
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ except Exception:
|
||||||
"""\
|
"""\
|
||||||
Lockfile is not version 2.0. You probably need to upgrade poetry on your local box
|
Lockfile is not version 2.0. You probably need to upgrade poetry on your local box
|
||||||
and re-run `poetry lock --no-update`. See the Poetry cheat sheet at
|
and re-run `poetry lock --no-update`. See the Poetry cheat sheet at
|
||||||
https://matrix-org.github.io/synapse/develop/development/dependencies.html
|
https://element-hq.github.io/synapse/develop/development/dependencies.html
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
raise
|
raise
|
||||||
|
|
2
.github/CODEOWNERS
vendored
2
.github/CODEOWNERS
vendored
|
@ -1,2 +1,2 @@
|
||||||
# Automatically request reviews from the synapse-core team when a pull request comes in.
|
# Automatically request reviews from the synapse-core team when a pull request comes in.
|
||||||
* @matrix-org/synapse-core
|
* @element-hq/synapse-core
|
||||||
|
|
4
.github/FUNDING.yml
vendored
4
.github/FUNDING.yml
vendored
|
@ -1,4 +0,0 @@
|
||||||
# One username per supported platform and one custom link
|
|
||||||
patreon: matrixdotorg
|
|
||||||
liberapay: matrixdotorg
|
|
||||||
custom: https://paypal.me/matrixdotorg
|
|
10
.github/ISSUE_TEMPLATE/BUG_REPORT.yml
vendored
10
.github/ISSUE_TEMPLATE/BUG_REPORT.yml
vendored
|
@ -86,7 +86,7 @@ body:
|
||||||
|
|
||||||
If PostgreSQL, please also answer the following:
|
If PostgreSQL, please also answer the following:
|
||||||
- are you using a single PostgreSQL server
|
- are you using a single PostgreSQL server
|
||||||
or [separate servers for `main` and `state`](https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#databases)?
|
or [separate servers for `main` and `state`](https://vector-im.github.io/synapse/latest/usage/configuration/config_documentation.html#databases)?
|
||||||
- have you previously ported from SQLite using the Synapse "portdb" script?
|
- have you previously ported from SQLite using the Synapse "portdb" script?
|
||||||
- have you previously restored from a backup?
|
- have you previously restored from a backup?
|
||||||
validations:
|
validations:
|
||||||
|
@ -97,7 +97,7 @@ body:
|
||||||
label: Workers
|
label: Workers
|
||||||
description: |
|
description: |
|
||||||
Are you running a single Synapse process, or are you running
|
Are you running a single Synapse process, or are you running
|
||||||
[2 or more workers](https://matrix-org.github.io/synapse/latest/workers.html)?
|
[2 or more workers](https://vector-im.github.io/synapse/latest/workers.html)?
|
||||||
options:
|
options:
|
||||||
- Single process
|
- Single process
|
||||||
- Multiple workers
|
- Multiple workers
|
||||||
|
@ -121,9 +121,9 @@ body:
|
||||||
Do you have any unusual config options turned on? If so, please provide details.
|
Do you have any unusual config options turned on? If so, please provide details.
|
||||||
|
|
||||||
- Experimental or undocumented features
|
- Experimental or undocumented features
|
||||||
- [Presence](https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#presence)
|
- [Presence](https://vector-im.github.io/synapse/latest/usage/configuration/config_documentation.html#presence)
|
||||||
- [Message retention](https://matrix-org.github.io/synapse/latest/message_retention_policies.html)
|
- [Message retention](https://vector-im.github.io/synapse/latest/message_retention_policies.html)
|
||||||
- [Synapse modules](https://matrix-org.github.io/synapse/latest/modules/index.html)
|
- [Synapse modules](https://vector-im.github.io/synapse/latest/modules/index.html)
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: logs
|
id: logs
|
||||||
attributes:
|
attributes:
|
||||||
|
|
10
.github/PULL_REQUEST_TEMPLATE.md
vendored
10
.github/PULL_REQUEST_TEMPLATE.md
vendored
|
@ -1,14 +1,14 @@
|
||||||
### Pull Request Checklist
|
### Pull Request Checklist
|
||||||
|
|
||||||
<!-- Please read https://matrix-org.github.io/synapse/latest/development/contributing_guide.html before submitting your pull request -->
|
<!-- Please read https://element-hq.github.io/synapse/latest/development/contributing_guide.html before submitting your pull request -->
|
||||||
|
|
||||||
* [ ] Pull request is based on the develop branch
|
* [ ] Pull request is based on the develop branch
|
||||||
* [ ] Pull request includes a [changelog file](https://matrix-org.github.io/synapse/latest/development/contributing_guide.html#changelog). The entry should:
|
* [ ] Pull request includes a [changelog file](https://element-hq.github.io/synapse/latest/development/contributing_guide.html#changelog). The entry should:
|
||||||
- Be a short description of your change which makes sense to users. "Fixed a bug that prevented receiving messages from other servers." instead of "Moved X method from `EventStore` to `EventWorkerStore`.".
|
- Be a short description of your change which makes sense to users. "Fixed a bug that prevented receiving messages from other servers." instead of "Moved X method from `EventStore` to `EventWorkerStore`.".
|
||||||
- Use markdown where necessary, mostly for `code blocks`.
|
- Use markdown where necessary, mostly for `code blocks`.
|
||||||
- End with either a period (.) or an exclamation mark (!).
|
- End with either a period (.) or an exclamation mark (!).
|
||||||
- Start with a capital letter.
|
- Start with a capital letter.
|
||||||
- Feel free to credit yourself, by adding a sentence "Contributed by @github_username." or "Contributed by [Your Name]." to the end of the entry.
|
- Feel free to credit yourself, by adding a sentence "Contributed by @github_username." or "Contributed by [Your Name]." to the end of the entry.
|
||||||
* [ ] Pull request includes a [sign off](https://matrix-org.github.io/synapse/latest/development/contributing_guide.html#sign-off)
|
* [ ] Pull request includes a [sign off](https://element-hq.github.io/synapse/latest/development/contributing_guide.html#sign-off)
|
||||||
* [ ] [Code style](https://matrix-org.github.io/synapse/latest/code_style.html) is correct
|
* [ ] [Code style](https://element-hq.github.io/synapse/latest/code_style.html) is correct
|
||||||
(run the [linters](https://matrix-org.github.io/synapse/latest/development/contributing_guide.html#run-the-linters))
|
(run the [linters](https://element-hq.github.io/synapse/latest/development/contributing_guide.html#run-the-linters))
|
||||||
|
|
19
.github/workflows/docker.yml
vendored
19
.github/workflows/docker.yml
vendored
|
@ -11,7 +11,7 @@ on:
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
packages: write
|
packages: write
|
||||||
|
id-token: write # needed for signing the images with GitHub OIDC Token
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
@ -29,6 +29,9 @@ jobs:
|
||||||
- name: Inspect builder
|
- name: Inspect builder
|
||||||
run: docker buildx inspect
|
run: docker buildx inspect
|
||||||
|
|
||||||
|
- name: Install Cosign
|
||||||
|
uses: sigstore/cosign-installer@v3.3.0
|
||||||
|
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
@ -58,7 +61,7 @@ jobs:
|
||||||
with:
|
with:
|
||||||
images: |
|
images: |
|
||||||
docker.io/matrixdotorg/synapse
|
docker.io/matrixdotorg/synapse
|
||||||
ghcr.io/matrix-org/synapse
|
ghcr.io/element-hq/synapse
|
||||||
flavor: |
|
flavor: |
|
||||||
latest=false
|
latest=false
|
||||||
tags: |
|
tags: |
|
||||||
|
@ -68,6 +71,7 @@ jobs:
|
||||||
type=pep440,pattern={{raw}}
|
type=pep440,pattern={{raw}}
|
||||||
|
|
||||||
- name: Build and push all platforms
|
- name: Build and push all platforms
|
||||||
|
id: build-and-push
|
||||||
uses: docker/build-push-action@v5
|
uses: docker/build-push-action@v5
|
||||||
with:
|
with:
|
||||||
push: true
|
push: true
|
||||||
|
@ -82,3 +86,14 @@ jobs:
|
||||||
# https://github.com/rust-lang/cargo/issues/10583
|
# https://github.com/rust-lang/cargo/issues/10583
|
||||||
build-args: |
|
build-args: |
|
||||||
CARGO_NET_GIT_FETCH_WITH_CLI=true
|
CARGO_NET_GIT_FETCH_WITH_CLI=true
|
||||||
|
|
||||||
|
- name: Sign the images with GitHub OIDC Token
|
||||||
|
env:
|
||||||
|
DIGEST: ${{ steps.build-and-push.outputs.digest }}
|
||||||
|
TAGS: ${{ steps.set-tag.outputs.tags }}
|
||||||
|
run: |
|
||||||
|
images=""
|
||||||
|
for tag in ${TAGS}; do
|
||||||
|
images+="${tag}@${DIGEST} "
|
||||||
|
done
|
||||||
|
cosign sign --yes ${images}
|
||||||
|
|
2
.github/workflows/docs-pr.yaml
vendored
2
.github/workflows/docs-pr.yaml
vendored
|
@ -24,7 +24,7 @@ jobs:
|
||||||
mdbook-version: '0.4.17'
|
mdbook-version: '0.4.17'
|
||||||
|
|
||||||
- name: Setup python
|
- name: Setup python
|
||||||
uses: actions/setup-python@v4
|
uses: actions/setup-python@v5
|
||||||
with:
|
with:
|
||||||
python-version: "3.x"
|
python-version: "3.x"
|
||||||
|
|
||||||
|
|
5
.github/workflows/docs.yaml
vendored
5
.github/workflows/docs.yaml
vendored
|
@ -60,8 +60,11 @@ jobs:
|
||||||
with:
|
with:
|
||||||
mdbook-version: '0.4.17'
|
mdbook-version: '0.4.17'
|
||||||
|
|
||||||
|
- name: Set version of docs
|
||||||
|
run: echo 'window.SYNAPSE_VERSION = "${{ needs.pre.outputs.branch-version }}";' > ./docs/website_files/version.js
|
||||||
|
|
||||||
- name: Setup python
|
- name: Setup python
|
||||||
uses: actions/setup-python@v4
|
uses: actions/setup-python@v5
|
||||||
with:
|
with:
|
||||||
python-version: "3.x"
|
python-version: "3.x"
|
||||||
|
|
||||||
|
|
8
.github/workflows/latest_deps.yml
vendored
8
.github/workflows/latest_deps.yml
vendored
|
@ -23,7 +23,7 @@ concurrency:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
check_repo:
|
check_repo:
|
||||||
# Prevent this workflow from running on any fork of Synapse other than matrix-org/synapse, as it is
|
# Prevent this workflow from running on any fork of Synapse other than element-hq/synapse, as it is
|
||||||
# only useful to the Synapse core team.
|
# only useful to the Synapse core team.
|
||||||
# All other workflow steps depend on this one, thus if 'should_run_workflow' is not 'true', the rest
|
# All other workflow steps depend on this one, thus if 'should_run_workflow' is not 'true', the rest
|
||||||
# of the workflow will be skipped as well.
|
# of the workflow will be skipped as well.
|
||||||
|
@ -32,7 +32,7 @@ jobs:
|
||||||
should_run_workflow: ${{ steps.check_condition.outputs.should_run_workflow }}
|
should_run_workflow: ${{ steps.check_condition.outputs.should_run_workflow }}
|
||||||
steps:
|
steps:
|
||||||
- id: check_condition
|
- id: check_condition
|
||||||
run: echo "should_run_workflow=${{ github.repository == 'matrix-org/synapse' }}" >> "$GITHUB_OUTPUT"
|
run: echo "should_run_workflow=${{ github.repository == 'element-hq/synapse' }}" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
mypy:
|
mypy:
|
||||||
needs: check_repo
|
needs: check_repo
|
||||||
|
@ -86,7 +86,7 @@ jobs:
|
||||||
-e POSTGRES_PASSWORD=postgres \
|
-e POSTGRES_PASSWORD=postgres \
|
||||||
-e POSTGRES_INITDB_ARGS="--lc-collate C --lc-ctype C --encoding UTF8" \
|
-e POSTGRES_INITDB_ARGS="--lc-collate C --lc-ctype C --encoding UTF8" \
|
||||||
postgres:${{ matrix.postgres-version }}
|
postgres:${{ matrix.postgres-version }}
|
||||||
- uses: actions/setup-python@v4
|
- uses: actions/setup-python@v5
|
||||||
with:
|
with:
|
||||||
python-version: "3.x"
|
python-version: "3.x"
|
||||||
- run: pip install .[all,test]
|
- run: pip install .[all,test]
|
||||||
|
@ -200,7 +200,7 @@ jobs:
|
||||||
- name: Prepare Complement's Prerequisites
|
- name: Prepare Complement's Prerequisites
|
||||||
run: synapse/.ci/scripts/setup_complement_prerequisites.sh
|
run: synapse/.ci/scripts/setup_complement_prerequisites.sh
|
||||||
|
|
||||||
- uses: actions/setup-go@v4
|
- uses: actions/setup-go@v5
|
||||||
with:
|
with:
|
||||||
cache-dependency-path: complement/go.sum
|
cache-dependency-path: complement/go.sum
|
||||||
go-version-file: complement/go.mod
|
go-version-file: complement/go.mod
|
||||||
|
|
2
.github/workflows/poetry_lockfile.yaml
vendored
2
.github/workflows/poetry_lockfile.yaml
vendored
|
@ -17,7 +17,7 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: actions/setup-python@v4
|
- uses: actions/setup-python@v5
|
||||||
with:
|
with:
|
||||||
python-version: '3.x'
|
python-version: '3.x'
|
||||||
- run: pip install tomli
|
- run: pip install tomli
|
||||||
|
|
8
.github/workflows/release-artifacts.yml
vendored
8
.github/workflows/release-artifacts.yml
vendored
|
@ -28,7 +28,7 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: actions/setup-python@v4
|
- uses: actions/setup-python@v5
|
||||||
with:
|
with:
|
||||||
python-version: '3.x'
|
python-version: '3.x'
|
||||||
- id: set-distros
|
- id: set-distros
|
||||||
|
@ -74,7 +74,7 @@ jobs:
|
||||||
${{ runner.os }}-buildx-
|
${{ runner.os }}-buildx-
|
||||||
|
|
||||||
- name: Set up python
|
- name: Set up python
|
||||||
uses: actions/setup-python@v4
|
uses: actions/setup-python@v5
|
||||||
with:
|
with:
|
||||||
python-version: '3.x'
|
python-version: '3.x'
|
||||||
|
|
||||||
|
@ -123,7 +123,7 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- uses: actions/setup-python@v4
|
- uses: actions/setup-python@v5
|
||||||
with:
|
with:
|
||||||
# setup-python@v4 doesn't impose a default python version. Need to use 3.x
|
# setup-python@v4 doesn't impose a default python version. Need to use 3.x
|
||||||
# here, because `python` on osx points to Python 2.7.
|
# here, because `python` on osx points to Python 2.7.
|
||||||
|
@ -168,7 +168,7 @@ jobs:
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: actions/setup-python@v4
|
- uses: actions/setup-python@v5
|
||||||
with:
|
with:
|
||||||
python-version: '3.10'
|
python-version: '3.10'
|
||||||
|
|
||||||
|
|
12
.github/workflows/tests.yml
vendored
12
.github/workflows/tests.yml
vendored
|
@ -102,7 +102,7 @@ jobs:
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: actions/setup-python@v4
|
- uses: actions/setup-python@v5
|
||||||
with:
|
with:
|
||||||
python-version: "3.x"
|
python-version: "3.x"
|
||||||
- run: "pip install 'click==8.1.1' 'GitPython>=3.1.20'"
|
- run: "pip install 'click==8.1.1' 'GitPython>=3.1.20'"
|
||||||
|
@ -112,7 +112,7 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: actions/setup-python@v4
|
- uses: actions/setup-python@v5
|
||||||
with:
|
with:
|
||||||
python-version: "3.x"
|
python-version: "3.x"
|
||||||
- run: .ci/scripts/check_lockfile.py
|
- run: .ci/scripts/check_lockfile.py
|
||||||
|
@ -194,7 +194,7 @@ jobs:
|
||||||
with:
|
with:
|
||||||
ref: ${{ github.event.pull_request.head.sha }}
|
ref: ${{ github.event.pull_request.head.sha }}
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- uses: actions/setup-python@v4
|
- uses: actions/setup-python@v5
|
||||||
with:
|
with:
|
||||||
python-version: "3.x"
|
python-version: "3.x"
|
||||||
- run: "pip install 'towncrier>=18.6.0rc1'"
|
- run: "pip install 'towncrier>=18.6.0rc1'"
|
||||||
|
@ -297,7 +297,7 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: actions/setup-python@v4
|
- uses: actions/setup-python@v5
|
||||||
with:
|
with:
|
||||||
python-version: "3.x"
|
python-version: "3.x"
|
||||||
- id: get-matrix
|
- id: get-matrix
|
||||||
|
@ -384,7 +384,7 @@ jobs:
|
||||||
sudo apt-get -qq install build-essential libffi-dev python-dev \
|
sudo apt-get -qq install build-essential libffi-dev python-dev \
|
||||||
libxml2-dev libxslt-dev xmlsec1 zlib1g-dev libjpeg-dev libwebp-dev
|
libxml2-dev libxslt-dev xmlsec1 zlib1g-dev libjpeg-dev libwebp-dev
|
||||||
|
|
||||||
- uses: actions/setup-python@v4
|
- uses: actions/setup-python@v5
|
||||||
with:
|
with:
|
||||||
python-version: '3.8'
|
python-version: '3.8'
|
||||||
|
|
||||||
|
@ -636,7 +636,7 @@ jobs:
|
||||||
- name: Prepare Complement's Prerequisites
|
- name: Prepare Complement's Prerequisites
|
||||||
run: synapse/.ci/scripts/setup_complement_prerequisites.sh
|
run: synapse/.ci/scripts/setup_complement_prerequisites.sh
|
||||||
|
|
||||||
- uses: actions/setup-go@v4
|
- uses: actions/setup-go@v5
|
||||||
with:
|
with:
|
||||||
cache-dependency-path: complement/go.sum
|
cache-dependency-path: complement/go.sum
|
||||||
go-version-file: complement/go.mod
|
go-version-file: complement/go.mod
|
||||||
|
|
1
.github/workflows/triage-incoming.yml
vendored
1
.github/workflows/triage-incoming.yml
vendored
|
@ -12,4 +12,3 @@ jobs:
|
||||||
content_id: ${{ github.event.issue.node_id }}
|
content_id: ${{ github.event.issue.node_id }}
|
||||||
secrets:
|
secrets:
|
||||||
github_access_token: ${{ secrets.ELEMENT_BOT_TOKEN }}
|
github_access_token: ${{ secrets.ELEMENT_BOT_TOKEN }}
|
||||||
|
|
||||||
|
|
8
.github/workflows/twisted_trunk.yml
vendored
8
.github/workflows/twisted_trunk.yml
vendored
|
@ -22,17 +22,17 @@ concurrency:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
check_repo:
|
check_repo:
|
||||||
# Prevent this workflow from running on any fork of Synapse other than matrix-org/synapse, as it is
|
# Prevent this workflow from running on any fork of Synapse other than element-hq/synapse, as it is
|
||||||
# only useful to the Synapse core team.
|
# only useful to the Synapse core team.
|
||||||
# All other workflow steps depend on this one, thus if 'should_run_workflow' is not 'true', the rest
|
# All other workflow steps depend on this one, thus if 'should_run_workflow' is not 'true', the rest
|
||||||
# of the workflow will be skipped as well.
|
# of the workflow will be skipped as well.
|
||||||
if: github.repository == 'matrix-org/synapse'
|
if: github.repository == 'element-hq/synapse'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
outputs:
|
outputs:
|
||||||
should_run_workflow: ${{ steps.check_condition.outputs.should_run_workflow }}
|
should_run_workflow: ${{ steps.check_condition.outputs.should_run_workflow }}
|
||||||
steps:
|
steps:
|
||||||
- id: check_condition
|
- id: check_condition
|
||||||
run: echo "should_run_workflow=${{ github.repository == 'matrix-org/synapse' }}" >> "$GITHUB_OUTPUT"
|
run: echo "should_run_workflow=${{ github.repository == 'element-hq/synapse' }}" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
mypy:
|
mypy:
|
||||||
needs: check_repo
|
needs: check_repo
|
||||||
|
@ -171,7 +171,7 @@ jobs:
|
||||||
- name: Prepare Complement's Prerequisites
|
- name: Prepare Complement's Prerequisites
|
||||||
run: synapse/.ci/scripts/setup_complement_prerequisites.sh
|
run: synapse/.ci/scripts/setup_complement_prerequisites.sh
|
||||||
|
|
||||||
- uses: actions/setup-go@v4
|
- uses: actions/setup-go@v5
|
||||||
with:
|
with:
|
||||||
cache-dependency-path: complement/go.sum
|
cache-dependency-path: complement/go.sum
|
||||||
go-version-file: complement/go.mod
|
go-version-file: complement/go.mod
|
||||||
|
|
59
CHANGES.md
59
CHANGES.md
|
@ -1,3 +1,62 @@
|
||||||
|
# Synapse 1.99.0 (2024-01-16)
|
||||||
|
|
||||||
|
Synapse 1.99.0 is the first Synapse release under an AGPLv3.0 licence (with CLA to enable Element to sell AGPL
|
||||||
|
exceptions). You can read more about this here:
|
||||||
|
|
||||||
|
- https://matrix.org/blog/2023/11/06/future-of-synapse-dendrite/
|
||||||
|
- https://element.io/blog/element-to-adopt-agplv3/
|
||||||
|
- https://element.io/blog/synapse-now-lives-at-github-com-element-hq-synapse/
|
||||||
|
|
||||||
|
No significant changes since 1.99.0rc1.
|
||||||
|
|
||||||
|
|
||||||
|
# Synapse 1.99.0rc1 (2024-01-09)
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
- Add [config options](https://element-hq.github.io/synapse/v1.99/usage/configuration/config_documentation.html#server_notices) to set the avatar and the topic of the server notices room, as well as the avatar of the server notices user. ([\#16679](https://github.com/matrix-org/synapse/issues/16679))
|
||||||
|
- Add config option [`email.notif_delay_before_mail`](https://element-hq.github.io/synapse/v1.99/usage/configuration/config_documentation.html#email) to tweak the delay before an email is sent following a notification. ([\#16696](https://github.com/matrix-org/synapse/issues/16696))
|
||||||
|
- Add new configuration option [`sentry.environment`](https://element-hq.github.io/synapse/v1.99/usage/configuration/config_documentation.html#sentry) for improved system monitoring. Contributed by @zeeshanrafiqrana. ([\#16738](https://github.com/matrix-org/synapse/issues/16738))
|
||||||
|
- Filter out rooms from the room directory being served to other homeservers when those rooms block that homeserver by their Access Control Lists. ([\#16759](https://github.com/element-hq/synapse/issues/16759))
|
||||||
|
|
||||||
|
### Bugfixes
|
||||||
|
|
||||||
|
- Fix a long-standing bug where the signing keys generated by Synapse were world-readable. Contributed by Fabian Klemp. ([\#16740](https://github.com/matrix-org/synapse/issues/16740))
|
||||||
|
- Fix email verification redirection. Contributed by Fadhlan Ridhwanallah. ([\#16761](https://github.com/element-hq/synapse/issues/16761))
|
||||||
|
- Fixed a bug that prevented users from being queried by display name if it contains non-ASCII characters. ([\#16767](https://github.com/element-hq/synapse/issues/16767))
|
||||||
|
- Allow reactivate user without password with Admin API in some edge cases. ([\#16770](https://github.com/element-hq/synapse/issues/16770))
|
||||||
|
- Adds the `recursion_depth` parameter to the response of the /relations endpoint if MSC3981 recursion is being performed. ([\#16775](https://github.com/element-hq/synapse/issues/16775))
|
||||||
|
|
||||||
|
### Improved Documentation
|
||||||
|
|
||||||
|
- Added version picker for Synapse documentation. Contributed by @Dmytro27Ind. ([\#16533](https://github.com/matrix-org/synapse/issues/16533))
|
||||||
|
- Clarify that `password_config.enabled: "only_for_reauth"` does not allow new logins to be created using password auth. ([\#16737](https://github.com/matrix-org/synapse/issues/16737))
|
||||||
|
- Remove value from header in configuration documentation for `refresh_token_lifetime`. ([\#16763](https://github.com/element-hq/synapse/issues/16763))
|
||||||
|
- Add another custom statistics collection server to the documentation. Contributed by @loelkes. ([\#16769](https://github.com/element-hq/synapse/issues/16769))
|
||||||
|
|
||||||
|
### Internal Changes
|
||||||
|
|
||||||
|
- Remove run-once workflow after adding the version picker to the documentation. ([\#9453](https://github.com/element-hq/synapse/issues/9453))
|
||||||
|
- Update the implementation of [MSC2965](https://github.com/matrix-org/matrix-spec-proposals/pull/2965) (OIDC Provider discovery). ([\#16726](https://github.com/matrix-org/synapse/issues/16726))
|
||||||
|
- Move the rust stubs inline for better IDE integration. ([\#16757](https://github.com/element-hq/synapse/issues/16757))
|
||||||
|
- Fix sample config doc CI. ([\#16758](https://github.com/element-hq/synapse/issues/16758))
|
||||||
|
- Simplify event internal metadata class. ([\#16762](https://github.com/element-hq/synapse/issues/16762), [\#16780](https://github.com/element-hq/synapse/issues/16780))
|
||||||
|
- Sign the published docker image using [cosign](https://docs.sigstore.dev/). ([\#16774](https://github.com/element-hq/synapse/issues/16774))
|
||||||
|
- Port `EventInternalMetadata` class to Rust. ([\#16782](https://github.com/element-hq/synapse/issues/16782))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Updates to locked dependencies
|
||||||
|
|
||||||
|
* Bump actions/setup-go from 4 to 5. ([\#16749](https://github.com/matrix-org/synapse/issues/16749))
|
||||||
|
* Bump actions/setup-python from 4 to 5. ([\#16748](https://github.com/matrix-org/synapse/issues/16748))
|
||||||
|
* Bump immutabledict from 3.0.0 to 4.0.0. ([\#16743](https://github.com/matrix-org/synapse/issues/16743))
|
||||||
|
* Bump isort from 5.12.0 to 5.13.0. ([\#16745](https://github.com/matrix-org/synapse/issues/16745))
|
||||||
|
* Bump isort from 5.13.0 to 5.13.1. ([\#16752](https://github.com/matrix-org/synapse/issues/16752))
|
||||||
|
* Bump pydantic from 2.5.1 to 2.5.2. ([\#16747](https://github.com/matrix-org/synapse/issues/16747))
|
||||||
|
* Bump ruff from 0.1.6 to 0.1.7. ([\#16746](https://github.com/matrix-org/synapse/issues/16746))
|
||||||
|
* Bump types-setuptools from 68.2.0.2 to 69.0.0.0. ([\#16744](https://github.com/matrix-org/synapse/issues/16744))
|
||||||
|
|
||||||
# Synapse 1.98.0 (2023-12-12)
|
# Synapse 1.98.0 (2023-12-12)
|
||||||
|
|
||||||
Synapse 1.98.0 will be the last Synapse release in 2023; the regular release cadence will resume in January 2024.
|
Synapse 1.98.0 will be the last Synapse release in 2023; the regular release cadence will resume in January 2024.
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
# Welcome to Synapse
|
# Welcome to Synapse
|
||||||
|
|
||||||
Please see the [contributors' guide](https://matrix-org.github.io/synapse/latest/development/contributing_guide.html) in our rendered documentation.
|
Please see the [contributors' guide](https://element-hq.github.io/synapse/latest/development/contributing_guide.html) in our rendered documentation.
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# Installation Instructions
|
# Installation Instructions
|
||||||
|
|
||||||
This document has moved to the
|
This document has moved to the
|
||||||
[Synapse documentation website](https://matrix-org.github.io/synapse/latest/setup/installation.html).
|
[Synapse documentation website](https://element-hq.github.io/synapse/latest/setup/installation.html).
|
||||||
Please update your links.
|
Please update your links.
|
||||||
|
|
||||||
The markdown source is available in [docs/setup/installation.md](docs/setup/installation.md).
|
The markdown source is available in [docs/setup/installation.md](docs/setup/installation.md).
|
||||||
|
|
782
LICENSE
782
LICENSE
|
@ -1,177 +1,661 @@
|
||||||
|
GNU AFFERO GENERAL PUBLIC LICENSE
|
||||||
|
Version 3, 19 November 2007
|
||||||
|
|
||||||
Apache License
|
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||||
Version 2.0, January 2004
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
http://www.apache.org/licenses/
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
Preamble
|
||||||
|
|
||||||
1. Definitions.
|
The GNU Affero General Public License is a free, copyleft license for
|
||||||
|
software and other kinds of works, specifically designed to ensure
|
||||||
|
cooperation with the community in the case of network server software.
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
The licenses for most software and other practical works are designed
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
to take away your freedom to share and change the works. By contrast,
|
||||||
|
our General Public Licenses are intended to guarantee your freedom to
|
||||||
|
share and change all versions of a program--to make sure it remains free
|
||||||
|
software for all its users.
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by
|
When we speak of free software, we are referring to freedom, not
|
||||||
the copyright owner that is granting the License.
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
them if you wish), that you receive source code or can get it if you
|
||||||
|
want it, that you can change the software or use pieces of it in new
|
||||||
|
free programs, and that you know you can do these things.
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all
|
Developers that use our General Public Licenses protect your rights
|
||||||
other entities that control, are controlled by, or are under common
|
with two steps: (1) assert copyright on the software, and (2) offer
|
||||||
control with that entity. For the purposes of this definition,
|
you this License which gives you legal permission to copy, distribute
|
||||||
"control" means (i) the power, direct or indirect, to cause the
|
and/or modify the software.
|
||||||
direction or management of such entity, whether by contract or
|
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity
|
A secondary benefit of defending all users' freedom is that
|
||||||
exercising permissions granted by this License.
|
improvements made in alternate versions of the program, if they
|
||||||
|
receive widespread use, become available for other developers to
|
||||||
|
incorporate. Many developers of free software are heartened and
|
||||||
|
encouraged by the resulting cooperation. However, in the case of
|
||||||
|
software used on network servers, this result may fail to come about.
|
||||||
|
The GNU General Public License permits making a modified version and
|
||||||
|
letting the public access it on a server without ever releasing its
|
||||||
|
source code to the public.
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications,
|
The GNU Affero General Public License is designed specifically to
|
||||||
including but not limited to software source code, documentation
|
ensure that, in such cases, the modified source code becomes available
|
||||||
source, and configuration files.
|
to the community. It requires the operator of a network server to
|
||||||
|
provide the source code of the modified version running there to the
|
||||||
|
users of that server. Therefore, public use of a modified version, on
|
||||||
|
a publicly accessible server, gives the public access to the source
|
||||||
|
code of the modified version.
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical
|
An older license, called the Affero General Public License and
|
||||||
transformation or translation of a Source form, including but
|
published by Affero, was designed to accomplish similar goals. This is
|
||||||
not limited to compiled object code, generated documentation,
|
a different license, not a version of the Affero GPL, but Affero has
|
||||||
and conversions to other media types.
|
released a new version of the Affero GPL which permits relicensing under
|
||||||
|
this license.
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
The precise terms and conditions for copying, distribution and
|
||||||
Object form, made available under the License, as indicated by a
|
modification follow.
|
||||||
copyright notice that is included in or attached to the work
|
|
||||||
(an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
TERMS AND CONDITIONS
|
||||||
form, that is based on (or derived from) the Work and for which the
|
|
||||||
editorial revisions, annotations, elaborations, or other modifications
|
|
||||||
represent, as a whole, an original work of authorship. For the purposes
|
|
||||||
of this License, Derivative Works shall not include works that remain
|
|
||||||
separable from, or merely link (or bind by name) to the interfaces of,
|
|
||||||
the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including
|
0. Definitions.
|
||||||
the original version of the Work and any modifications or additions
|
|
||||||
to that Work or Derivative Works thereof, that is intentionally
|
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of
|
|
||||||
the copyright owner. For the purposes of this definition, "submitted"
|
|
||||||
means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems,
|
|
||||||
and issue tracking systems that are managed by, or on behalf of, the
|
|
||||||
Licensor for the purpose of discussing and improving the Work, but
|
|
||||||
excluding communication that is conspicuously marked or otherwise
|
|
||||||
designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
"This License" refers to version 3 of the GNU Affero General Public License.
|
||||||
on behalf of whom a Contribution has been received by Licensor and
|
|
||||||
subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
works, such as semiconductor masks.
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
|
||||||
Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
"The Program" refers to any copyrightable work licensed under this
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
License. Each licensee is addressed as "you". "Licensees" and
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
"recipients" may be individuals or organizations.
|
||||||
(except as stated in this section) patent license to make, have made,
|
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
||||||
where such license applies only to those patent claims licensable
|
|
||||||
by such Contributor that are necessarily infringed by their
|
|
||||||
Contribution(s) alone or by combination of their Contribution(s)
|
|
||||||
with the Work to which such Contribution(s) was submitted. If You
|
|
||||||
institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
||||||
or a Contribution incorporated within the Work constitutes direct
|
|
||||||
or contributory patent infringement, then any patent licenses
|
|
||||||
granted to You under this License for that Work shall terminate
|
|
||||||
as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
To "modify" a work means to copy from or adapt all or part of the work
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
in a fashion requiring copyright permission, other than the making of an
|
||||||
modifications, and in Source or Object form, provided that You
|
exact copy. The resulting work is called a "modified version" of the
|
||||||
meet the following conditions:
|
earlier work or a work "based on" the earlier work.
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or
|
A "covered work" means either the unmodified Program or a work based
|
||||||
Derivative Works a copy of this License; and
|
on the Program.
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices
|
To "propagate" a work means to do anything with it that, without
|
||||||
stating that You changed the files; and
|
permission, would make you directly or secondarily liable for
|
||||||
|
infringement under applicable copyright law, except executing it on a
|
||||||
|
computer or modifying a private copy. Propagation includes copying,
|
||||||
|
distribution (with or without modification), making available to the
|
||||||
|
public, and in some countries other activities as well.
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
To "convey" a work means any kind of propagation that enables other
|
||||||
that You distribute, all copyright, patent, trademark, and
|
parties to make or receive copies. Mere interaction with a user through
|
||||||
attribution notices from the Source form of the Work,
|
a computer network, with no transfer of a copy, is not conveying.
|
||||||
excluding those notices that do not pertain to any part of
|
|
||||||
the Derivative Works; and
|
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its
|
An interactive user interface displays "Appropriate Legal Notices"
|
||||||
distribution, then any Derivative Works that You distribute must
|
to the extent that it includes a convenient and prominently visible
|
||||||
include a readable copy of the attribution notices contained
|
feature that (1) displays an appropriate copyright notice, and (2)
|
||||||
within such NOTICE file, excluding those notices that do not
|
tells the user that there is no warranty for the work (except to the
|
||||||
pertain to any part of the Derivative Works, in at least one
|
extent that warranties are provided), that licensees may convey the
|
||||||
of the following places: within a NOTICE text file distributed
|
work under this License, and how to view a copy of this License. If
|
||||||
as part of the Derivative Works; within the Source form or
|
the interface presents a list of user commands or options, such as a
|
||||||
documentation, if provided along with the Derivative Works; or,
|
menu, a prominent item in the list meets this criterion.
|
||||||
within a display generated by the Derivative Works, if and
|
|
||||||
wherever such third-party notices normally appear. The contents
|
|
||||||
of the NOTICE file are for informational purposes only and
|
|
||||||
do not modify the License. You may add Your own attribution
|
|
||||||
notices within Derivative Works that You distribute, alongside
|
|
||||||
or as an addendum to the NOTICE text from the Work, provided
|
|
||||||
that such additional attribution notices cannot be construed
|
|
||||||
as modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
1. Source Code.
|
||||||
may provide additional or different license terms and conditions
|
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
|
||||||
for any such Derivative Works as a whole, provided Your use,
|
|
||||||
reproduction, and distribution of the Work otherwise complies with
|
|
||||||
the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
The "source code" for a work means the preferred form of the work
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
for making modifications to it. "Object code" means any non-source
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
form of a work.
|
||||||
this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify
|
|
||||||
the terms of any separate license agreement you may have executed
|
|
||||||
with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
A "Standard Interface" means an interface that either is an official
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
standard defined by a recognized standards body, or, in the case of
|
||||||
except as required for reasonable and customary use in describing the
|
interfaces specified for a particular programming language, one that
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
is widely used among developers working in that language.
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
The "System Libraries" of an executable work include anything, other
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
than the work as a whole, that (a) is included in the normal form of
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
packaging a Major Component, but which is not part of that Major
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
Component, and (b) serves only to enable use of the work with that
|
||||||
implied, including, without limitation, any warranties or conditions
|
Major Component, or to implement a Standard Interface for which an
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
implementation is available to the public in source code form. A
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
"Major Component", in this context, means a major essential component
|
||||||
appropriateness of using or redistributing the Work and assume any
|
(kernel, window system, and so on) of the specific operating system
|
||||||
risks associated with Your exercise of permissions under this License.
|
(if any) on which the executable work runs, or a compiler used to
|
||||||
|
produce the work, or an object code interpreter used to run it.
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
The "Corresponding Source" for a work in object code form means all
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
the source code needed to generate, install, and (for an executable
|
||||||
unless required by applicable law (such as deliberate and grossly
|
work) run the object code and to modify the work, including scripts to
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
control those activities. However, it does not include the work's
|
||||||
liable to You for damages, including any direct, indirect, special,
|
System Libraries, or general-purpose tools or generally available free
|
||||||
incidental, or consequential damages of any character arising as a
|
programs which are used unmodified in performing those activities but
|
||||||
result of this License or out of the use or inability to use the
|
which are not part of the work. For example, Corresponding Source
|
||||||
Work (including but not limited to damages for loss of goodwill,
|
includes interface definition files associated with source files for
|
||||||
work stoppage, computer failure or malfunction, or any and all
|
the work, and the source code for shared libraries and dynamically
|
||||||
other commercial damages or losses), even if such Contributor
|
linked subprograms that the work is specifically designed to require,
|
||||||
has been advised of the possibility of such damages.
|
such as by intimate data communication or control flow between those
|
||||||
|
subprograms and other parts of the work.
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
The Corresponding Source need not include anything that users
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
can regenerate automatically from other parts of the Corresponding
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
Source.
|
||||||
or other liability obligations and/or rights consistent with this
|
|
||||||
License. However, in accepting such obligations, You may act only
|
The Corresponding Source for a work in source code form is that
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf
|
same work.
|
||||||
of any other Contributor, and only if You agree to indemnify,
|
|
||||||
defend, and hold each Contributor harmless for any liability
|
2. Basic Permissions.
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
|
||||||
of your accepting any such warranty or additional liability.
|
All rights granted under this License are granted for the term of
|
||||||
|
copyright on the Program, and are irrevocable provided the stated
|
||||||
|
conditions are met. This License explicitly affirms your unlimited
|
||||||
|
permission to run the unmodified Program. The output from running a
|
||||||
|
covered work is covered by this License only if the output, given its
|
||||||
|
content, constitutes a covered work. This License acknowledges your
|
||||||
|
rights of fair use or other equivalent, as provided by copyright law.
|
||||||
|
|
||||||
|
You may make, run and propagate covered works that you do not
|
||||||
|
convey, without conditions so long as your license otherwise remains
|
||||||
|
in force. You may convey covered works to others for the sole purpose
|
||||||
|
of having them make modifications exclusively for you, or provide you
|
||||||
|
with facilities for running those works, provided that you comply with
|
||||||
|
the terms of this License in conveying all material for which you do
|
||||||
|
not control copyright. Those thus making or running the covered works
|
||||||
|
for you must do so exclusively on your behalf, under your direction
|
||||||
|
and control, on terms that prohibit them from making any copies of
|
||||||
|
your copyrighted material outside their relationship with you.
|
||||||
|
|
||||||
|
Conveying under any other circumstances is permitted solely under
|
||||||
|
the conditions stated below. Sublicensing is not allowed; section 10
|
||||||
|
makes it unnecessary.
|
||||||
|
|
||||||
|
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||||
|
|
||||||
|
No covered work shall be deemed part of an effective technological
|
||||||
|
measure under any applicable law fulfilling obligations under article
|
||||||
|
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||||
|
similar laws prohibiting or restricting circumvention of such
|
||||||
|
measures.
|
||||||
|
|
||||||
|
When you convey a covered work, you waive any legal power to forbid
|
||||||
|
circumvention of technological measures to the extent such circumvention
|
||||||
|
is effected by exercising rights under this License with respect to
|
||||||
|
the covered work, and you disclaim any intention to limit operation or
|
||||||
|
modification of the work as a means of enforcing, against the work's
|
||||||
|
users, your or third parties' legal rights to forbid circumvention of
|
||||||
|
technological measures.
|
||||||
|
|
||||||
|
4. Conveying Verbatim Copies.
|
||||||
|
|
||||||
|
You may convey verbatim copies of the Program's source code as you
|
||||||
|
receive it, in any medium, provided that you conspicuously and
|
||||||
|
appropriately publish on each copy an appropriate copyright notice;
|
||||||
|
keep intact all notices stating that this License and any
|
||||||
|
non-permissive terms added in accord with section 7 apply to the code;
|
||||||
|
keep intact all notices of the absence of any warranty; and give all
|
||||||
|
recipients a copy of this License along with the Program.
|
||||||
|
|
||||||
|
You may charge any price or no price for each copy that you convey,
|
||||||
|
and you may offer support or warranty protection for a fee.
|
||||||
|
|
||||||
|
5. Conveying Modified Source Versions.
|
||||||
|
|
||||||
|
You may convey a work based on the Program, or the modifications to
|
||||||
|
produce it from the Program, in the form of source code under the
|
||||||
|
terms of section 4, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) The work must carry prominent notices stating that you modified
|
||||||
|
it, and giving a relevant date.
|
||||||
|
|
||||||
|
b) The work must carry prominent notices stating that it is
|
||||||
|
released under this License and any conditions added under section
|
||||||
|
7. This requirement modifies the requirement in section 4 to
|
||||||
|
"keep intact all notices".
|
||||||
|
|
||||||
|
c) You must license the entire work, as a whole, under this
|
||||||
|
License to anyone who comes into possession of a copy. This
|
||||||
|
License will therefore apply, along with any applicable section 7
|
||||||
|
additional terms, to the whole of the work, and all its parts,
|
||||||
|
regardless of how they are packaged. This License gives no
|
||||||
|
permission to license the work in any other way, but it does not
|
||||||
|
invalidate such permission if you have separately received it.
|
||||||
|
|
||||||
|
d) If the work has interactive user interfaces, each must display
|
||||||
|
Appropriate Legal Notices; however, if the Program has interactive
|
||||||
|
interfaces that do not display Appropriate Legal Notices, your
|
||||||
|
work need not make them do so.
|
||||||
|
|
||||||
|
A compilation of a covered work with other separate and independent
|
||||||
|
works, which are not by their nature extensions of the covered work,
|
||||||
|
and which are not combined with it such as to form a larger program,
|
||||||
|
in or on a volume of a storage or distribution medium, is called an
|
||||||
|
"aggregate" if the compilation and its resulting copyright are not
|
||||||
|
used to limit the access or legal rights of the compilation's users
|
||||||
|
beyond what the individual works permit. Inclusion of a covered work
|
||||||
|
in an aggregate does not cause this License to apply to the other
|
||||||
|
parts of the aggregate.
|
||||||
|
|
||||||
|
6. Conveying Non-Source Forms.
|
||||||
|
|
||||||
|
You may convey a covered work in object code form under the terms
|
||||||
|
of sections 4 and 5, provided that you also convey the
|
||||||
|
machine-readable Corresponding Source under the terms of this License,
|
||||||
|
in one of these ways:
|
||||||
|
|
||||||
|
a) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by the
|
||||||
|
Corresponding Source fixed on a durable physical medium
|
||||||
|
customarily used for software interchange.
|
||||||
|
|
||||||
|
b) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by a
|
||||||
|
written offer, valid for at least three years and valid for as
|
||||||
|
long as you offer spare parts or customer support for that product
|
||||||
|
model, to give anyone who possesses the object code either (1) a
|
||||||
|
copy of the Corresponding Source for all the software in the
|
||||||
|
product that is covered by this License, on a durable physical
|
||||||
|
medium customarily used for software interchange, for a price no
|
||||||
|
more than your reasonable cost of physically performing this
|
||||||
|
conveying of source, or (2) access to copy the
|
||||||
|
Corresponding Source from a network server at no charge.
|
||||||
|
|
||||||
|
c) Convey individual copies of the object code with a copy of the
|
||||||
|
written offer to provide the Corresponding Source. This
|
||||||
|
alternative is allowed only occasionally and noncommercially, and
|
||||||
|
only if you received the object code with such an offer, in accord
|
||||||
|
with subsection 6b.
|
||||||
|
|
||||||
|
d) Convey the object code by offering access from a designated
|
||||||
|
place (gratis or for a charge), and offer equivalent access to the
|
||||||
|
Corresponding Source in the same way through the same place at no
|
||||||
|
further charge. You need not require recipients to copy the
|
||||||
|
Corresponding Source along with the object code. If the place to
|
||||||
|
copy the object code is a network server, the Corresponding Source
|
||||||
|
may be on a different server (operated by you or a third party)
|
||||||
|
that supports equivalent copying facilities, provided you maintain
|
||||||
|
clear directions next to the object code saying where to find the
|
||||||
|
Corresponding Source. Regardless of what server hosts the
|
||||||
|
Corresponding Source, you remain obligated to ensure that it is
|
||||||
|
available for as long as needed to satisfy these requirements.
|
||||||
|
|
||||||
|
e) Convey the object code using peer-to-peer transmission, provided
|
||||||
|
you inform other peers where the object code and Corresponding
|
||||||
|
Source of the work are being offered to the general public at no
|
||||||
|
charge under subsection 6d.
|
||||||
|
|
||||||
|
A separable portion of the object code, whose source code is excluded
|
||||||
|
from the Corresponding Source as a System Library, need not be
|
||||||
|
included in conveying the object code work.
|
||||||
|
|
||||||
|
A "User Product" is either (1) a "consumer product", which means any
|
||||||
|
tangible personal property which is normally used for personal, family,
|
||||||
|
or household purposes, or (2) anything designed or sold for incorporation
|
||||||
|
into a dwelling. In determining whether a product is a consumer product,
|
||||||
|
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||||
|
product received by a particular user, "normally used" refers to a
|
||||||
|
typical or common use of that class of product, regardless of the status
|
||||||
|
of the particular user or of the way in which the particular user
|
||||||
|
actually uses, or expects or is expected to use, the product. A product
|
||||||
|
is a consumer product regardless of whether the product has substantial
|
||||||
|
commercial, industrial or non-consumer uses, unless such uses represent
|
||||||
|
the only significant mode of use of the product.
|
||||||
|
|
||||||
|
"Installation Information" for a User Product means any methods,
|
||||||
|
procedures, authorization keys, or other information required to install
|
||||||
|
and execute modified versions of a covered work in that User Product from
|
||||||
|
a modified version of its Corresponding Source. The information must
|
||||||
|
suffice to ensure that the continued functioning of the modified object
|
||||||
|
code is in no case prevented or interfered with solely because
|
||||||
|
modification has been made.
|
||||||
|
|
||||||
|
If you convey an object code work under this section in, or with, or
|
||||||
|
specifically for use in, a User Product, and the conveying occurs as
|
||||||
|
part of a transaction in which the right of possession and use of the
|
||||||
|
User Product is transferred to the recipient in perpetuity or for a
|
||||||
|
fixed term (regardless of how the transaction is characterized), the
|
||||||
|
Corresponding Source conveyed under this section must be accompanied
|
||||||
|
by the Installation Information. But this requirement does not apply
|
||||||
|
if neither you nor any third party retains the ability to install
|
||||||
|
modified object code on the User Product (for example, the work has
|
||||||
|
been installed in ROM).
|
||||||
|
|
||||||
|
The requirement to provide Installation Information does not include a
|
||||||
|
requirement to continue to provide support service, warranty, or updates
|
||||||
|
for a work that has been modified or installed by the recipient, or for
|
||||||
|
the User Product in which it has been modified or installed. Access to a
|
||||||
|
network may be denied when the modification itself materially and
|
||||||
|
adversely affects the operation of the network or violates the rules and
|
||||||
|
protocols for communication across the network.
|
||||||
|
|
||||||
|
Corresponding Source conveyed, and Installation Information provided,
|
||||||
|
in accord with this section must be in a format that is publicly
|
||||||
|
documented (and with an implementation available to the public in
|
||||||
|
source code form), and must require no special password or key for
|
||||||
|
unpacking, reading or copying.
|
||||||
|
|
||||||
|
7. Additional Terms.
|
||||||
|
|
||||||
|
"Additional permissions" are terms that supplement the terms of this
|
||||||
|
License by making exceptions from one or more of its conditions.
|
||||||
|
Additional permissions that are applicable to the entire Program shall
|
||||||
|
be treated as though they were included in this License, to the extent
|
||||||
|
that they are valid under applicable law. If additional permissions
|
||||||
|
apply only to part of the Program, that part may be used separately
|
||||||
|
under those permissions, but the entire Program remains governed by
|
||||||
|
this License without regard to the additional permissions.
|
||||||
|
|
||||||
|
When you convey a copy of a covered work, you may at your option
|
||||||
|
remove any additional permissions from that copy, or from any part of
|
||||||
|
it. (Additional permissions may be written to require their own
|
||||||
|
removal in certain cases when you modify the work.) You may place
|
||||||
|
additional permissions on material, added by you to a covered work,
|
||||||
|
for which you have or can give appropriate copyright permission.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, for material you
|
||||||
|
add to a covered work, you may (if authorized by the copyright holders of
|
||||||
|
that material) supplement the terms of this License with terms:
|
||||||
|
|
||||||
|
a) Disclaiming warranty or limiting liability differently from the
|
||||||
|
terms of sections 15 and 16 of this License; or
|
||||||
|
|
||||||
|
b) Requiring preservation of specified reasonable legal notices or
|
||||||
|
author attributions in that material or in the Appropriate Legal
|
||||||
|
Notices displayed by works containing it; or
|
||||||
|
|
||||||
|
c) Prohibiting misrepresentation of the origin of that material, or
|
||||||
|
requiring that modified versions of such material be marked in
|
||||||
|
reasonable ways as different from the original version; or
|
||||||
|
|
||||||
|
d) Limiting the use for publicity purposes of names of licensors or
|
||||||
|
authors of the material; or
|
||||||
|
|
||||||
|
e) Declining to grant rights under trademark law for use of some
|
||||||
|
trade names, trademarks, or service marks; or
|
||||||
|
|
||||||
|
f) Requiring indemnification of licensors and authors of that
|
||||||
|
material by anyone who conveys the material (or modified versions of
|
||||||
|
it) with contractual assumptions of liability to the recipient, for
|
||||||
|
any liability that these contractual assumptions directly impose on
|
||||||
|
those licensors and authors.
|
||||||
|
|
||||||
|
All other non-permissive additional terms are considered "further
|
||||||
|
restrictions" within the meaning of section 10. If the Program as you
|
||||||
|
received it, or any part of it, contains a notice stating that it is
|
||||||
|
governed by this License along with a term that is a further
|
||||||
|
restriction, you may remove that term. If a license document contains
|
||||||
|
a further restriction but permits relicensing or conveying under this
|
||||||
|
License, you may add to a covered work material governed by the terms
|
||||||
|
of that license document, provided that the further restriction does
|
||||||
|
not survive such relicensing or conveying.
|
||||||
|
|
||||||
|
If you add terms to a covered work in accord with this section, you
|
||||||
|
must place, in the relevant source files, a statement of the
|
||||||
|
additional terms that apply to those files, or a notice indicating
|
||||||
|
where to find the applicable terms.
|
||||||
|
|
||||||
|
Additional terms, permissive or non-permissive, may be stated in the
|
||||||
|
form of a separately written license, or stated as exceptions;
|
||||||
|
the above requirements apply either way.
|
||||||
|
|
||||||
|
8. Termination.
|
||||||
|
|
||||||
|
You may not propagate or modify a covered work except as expressly
|
||||||
|
provided under this License. Any attempt otherwise to propagate or
|
||||||
|
modify it is void, and will automatically terminate your rights under
|
||||||
|
this License (including any patent licenses granted under the third
|
||||||
|
paragraph of section 11).
|
||||||
|
|
||||||
|
However, if you cease all violation of this License, then your
|
||||||
|
license from a particular copyright holder is reinstated (a)
|
||||||
|
provisionally, unless and until the copyright holder explicitly and
|
||||||
|
finally terminates your license, and (b) permanently, if the copyright
|
||||||
|
holder fails to notify you of the violation by some reasonable means
|
||||||
|
prior to 60 days after the cessation.
|
||||||
|
|
||||||
|
Moreover, your license from a particular copyright holder is
|
||||||
|
reinstated permanently if the copyright holder notifies you of the
|
||||||
|
violation by some reasonable means, this is the first time you have
|
||||||
|
received notice of violation of this License (for any work) from that
|
||||||
|
copyright holder, and you cure the violation prior to 30 days after
|
||||||
|
your receipt of the notice.
|
||||||
|
|
||||||
|
Termination of your rights under this section does not terminate the
|
||||||
|
licenses of parties who have received copies or rights from you under
|
||||||
|
this License. If your rights have been terminated and not permanently
|
||||||
|
reinstated, you do not qualify to receive new licenses for the same
|
||||||
|
material under section 10.
|
||||||
|
|
||||||
|
9. Acceptance Not Required for Having Copies.
|
||||||
|
|
||||||
|
You are not required to accept this License in order to receive or
|
||||||
|
run a copy of the Program. Ancillary propagation of a covered work
|
||||||
|
occurring solely as a consequence of using peer-to-peer transmission
|
||||||
|
to receive a copy likewise does not require acceptance. However,
|
||||||
|
nothing other than this License grants you permission to propagate or
|
||||||
|
modify any covered work. These actions infringe copyright if you do
|
||||||
|
not accept this License. Therefore, by modifying or propagating a
|
||||||
|
covered work, you indicate your acceptance of this License to do so.
|
||||||
|
|
||||||
|
10. Automatic Licensing of Downstream Recipients.
|
||||||
|
|
||||||
|
Each time you convey a covered work, the recipient automatically
|
||||||
|
receives a license from the original licensors, to run, modify and
|
||||||
|
propagate that work, subject to this License. You are not responsible
|
||||||
|
for enforcing compliance by third parties with this License.
|
||||||
|
|
||||||
|
An "entity transaction" is a transaction transferring control of an
|
||||||
|
organization, or substantially all assets of one, or subdividing an
|
||||||
|
organization, or merging organizations. If propagation of a covered
|
||||||
|
work results from an entity transaction, each party to that
|
||||||
|
transaction who receives a copy of the work also receives whatever
|
||||||
|
licenses to the work the party's predecessor in interest had or could
|
||||||
|
give under the previous paragraph, plus a right to possession of the
|
||||||
|
Corresponding Source of the work from the predecessor in interest, if
|
||||||
|
the predecessor has it or can get it with reasonable efforts.
|
||||||
|
|
||||||
|
You may not impose any further restrictions on the exercise of the
|
||||||
|
rights granted or affirmed under this License. For example, you may
|
||||||
|
not impose a license fee, royalty, or other charge for exercise of
|
||||||
|
rights granted under this License, and you may not initiate litigation
|
||||||
|
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||||
|
any patent claim is infringed by making, using, selling, offering for
|
||||||
|
sale, or importing the Program or any portion of it.
|
||||||
|
|
||||||
|
11. Patents.
|
||||||
|
|
||||||
|
A "contributor" is a copyright holder who authorizes use under this
|
||||||
|
License of the Program or a work on which the Program is based. The
|
||||||
|
work thus licensed is called the contributor's "contributor version".
|
||||||
|
|
||||||
|
A contributor's "essential patent claims" are all patent claims
|
||||||
|
owned or controlled by the contributor, whether already acquired or
|
||||||
|
hereafter acquired, that would be infringed by some manner, permitted
|
||||||
|
by this License, of making, using, or selling its contributor version,
|
||||||
|
but do not include claims that would be infringed only as a
|
||||||
|
consequence of further modification of the contributor version. For
|
||||||
|
purposes of this definition, "control" includes the right to grant
|
||||||
|
patent sublicenses in a manner consistent with the requirements of
|
||||||
|
this License.
|
||||||
|
|
||||||
|
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||||
|
patent license under the contributor's essential patent claims, to
|
||||||
|
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||||
|
propagate the contents of its contributor version.
|
||||||
|
|
||||||
|
In the following three paragraphs, a "patent license" is any express
|
||||||
|
agreement or commitment, however denominated, not to enforce a patent
|
||||||
|
(such as an express permission to practice a patent or covenant not to
|
||||||
|
sue for patent infringement). To "grant" such a patent license to a
|
||||||
|
party means to make such an agreement or commitment not to enforce a
|
||||||
|
patent against the party.
|
||||||
|
|
||||||
|
If you convey a covered work, knowingly relying on a patent license,
|
||||||
|
and the Corresponding Source of the work is not available for anyone
|
||||||
|
to copy, free of charge and under the terms of this License, through a
|
||||||
|
publicly available network server or other readily accessible means,
|
||||||
|
then you must either (1) cause the Corresponding Source to be so
|
||||||
|
available, or (2) arrange to deprive yourself of the benefit of the
|
||||||
|
patent license for this particular work, or (3) arrange, in a manner
|
||||||
|
consistent with the requirements of this License, to extend the patent
|
||||||
|
license to downstream recipients. "Knowingly relying" means you have
|
||||||
|
actual knowledge that, but for the patent license, your conveying the
|
||||||
|
covered work in a country, or your recipient's use of the covered work
|
||||||
|
in a country, would infringe one or more identifiable patents in that
|
||||||
|
country that you have reason to believe are valid.
|
||||||
|
|
||||||
|
If, pursuant to or in connection with a single transaction or
|
||||||
|
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||||
|
covered work, and grant a patent license to some of the parties
|
||||||
|
receiving the covered work authorizing them to use, propagate, modify
|
||||||
|
or convey a specific copy of the covered work, then the patent license
|
||||||
|
you grant is automatically extended to all recipients of the covered
|
||||||
|
work and works based on it.
|
||||||
|
|
||||||
|
A patent license is "discriminatory" if it does not include within
|
||||||
|
the scope of its coverage, prohibits the exercise of, or is
|
||||||
|
conditioned on the non-exercise of one or more of the rights that are
|
||||||
|
specifically granted under this License. You may not convey a covered
|
||||||
|
work if you are a party to an arrangement with a third party that is
|
||||||
|
in the business of distributing software, under which you make payment
|
||||||
|
to the third party based on the extent of your activity of conveying
|
||||||
|
the work, and under which the third party grants, to any of the
|
||||||
|
parties who would receive the covered work from you, a discriminatory
|
||||||
|
patent license (a) in connection with copies of the covered work
|
||||||
|
conveyed by you (or copies made from those copies), or (b) primarily
|
||||||
|
for and in connection with specific products or compilations that
|
||||||
|
contain the covered work, unless you entered into that arrangement,
|
||||||
|
or that patent license was granted, prior to 28 March 2007.
|
||||||
|
|
||||||
|
Nothing in this License shall be construed as excluding or limiting
|
||||||
|
any implied license or other defenses to infringement that may
|
||||||
|
otherwise be available to you under applicable patent law.
|
||||||
|
|
||||||
|
12. No Surrender of Others' Freedom.
|
||||||
|
|
||||||
|
If conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot convey a
|
||||||
|
covered work so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you may
|
||||||
|
not convey it at all. For example, if you agree to terms that obligate you
|
||||||
|
to collect a royalty for further conveying from those to whom you convey
|
||||||
|
the Program, the only way you could satisfy both those terms and this
|
||||||
|
License would be to refrain entirely from conveying the Program.
|
||||||
|
|
||||||
|
13. Remote Network Interaction; Use with the GNU General Public License.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, if you modify the
|
||||||
|
Program, your modified version must prominently offer all users
|
||||||
|
interacting with it remotely through a computer network (if your version
|
||||||
|
supports such interaction) an opportunity to receive the Corresponding
|
||||||
|
Source of your version by providing access to the Corresponding Source
|
||||||
|
from a network server at no charge, through some standard or customary
|
||||||
|
means of facilitating copying of software. This Corresponding Source
|
||||||
|
shall include the Corresponding Source for any work covered by version 3
|
||||||
|
of the GNU General Public License that is incorporated pursuant to the
|
||||||
|
following paragraph.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, you have
|
||||||
|
permission to link or combine any covered work with a work licensed
|
||||||
|
under version 3 of the GNU General Public License into a single
|
||||||
|
combined work, and to convey the resulting work. The terms of this
|
||||||
|
License will continue to apply to the part which is the covered work,
|
||||||
|
but the work with which it is combined will remain governed by version
|
||||||
|
3 of the GNU General Public License.
|
||||||
|
|
||||||
|
14. Revised Versions of this License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions of
|
||||||
|
the GNU Affero General Public License from time to time. Such new versions
|
||||||
|
will be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the
|
||||||
|
Program specifies that a certain numbered version of the GNU Affero General
|
||||||
|
Public License "or any later version" applies to it, you have the
|
||||||
|
option of following the terms and conditions either of that numbered
|
||||||
|
version or of any later version published by the Free Software
|
||||||
|
Foundation. If the Program does not specify a version number of the
|
||||||
|
GNU Affero General Public License, you may choose any version ever published
|
||||||
|
by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Program specifies that a proxy can decide which future
|
||||||
|
versions of the GNU Affero General Public License can be used, that proxy's
|
||||||
|
public statement of acceptance of a version permanently authorizes you
|
||||||
|
to choose that version for the Program.
|
||||||
|
|
||||||
|
Later license versions may give you additional or different
|
||||||
|
permissions. However, no additional obligations are imposed on any
|
||||||
|
author or copyright holder as a result of your choosing to follow a
|
||||||
|
later version.
|
||||||
|
|
||||||
|
15. Disclaimer of Warranty.
|
||||||
|
|
||||||
|
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||||
|
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||||
|
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||||
|
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||||
|
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||||
|
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
16. Limitation of Liability.
|
||||||
|
|
||||||
|
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||||
|
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||||
|
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||||
|
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||||
|
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||||
|
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||||
|
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||||
|
SUCH DAMAGES.
|
||||||
|
|
||||||
|
17. Interpretation of Sections 15 and 16.
|
||||||
|
|
||||||
|
If the disclaimer of warranty and limitation of liability provided
|
||||||
|
above cannot be given local legal effect according to their terms,
|
||||||
|
reviewing courts shall apply local law that most closely approximates
|
||||||
|
an absolute waiver of all civil liability in connection with the
|
||||||
|
Program, unless a warranty or assumption of liability accompanies a
|
||||||
|
copy of the Program in return for a fee.
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
state the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU Affero General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU Affero General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Affero General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If your software can interact with users remotely through a computer
|
||||||
|
network, you should also make sure that it provides a way for users to
|
||||||
|
get its source. For example, if your program is a web application, its
|
||||||
|
interface could display a "Source" link that leads users to an archive
|
||||||
|
of the code. There are many ways you could offer source, and different
|
||||||
|
solutions will be better for different programs; see section 13 for the
|
||||||
|
specific requirements.
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or school,
|
||||||
|
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||||
|
For more information on this, and how to apply and follow the GNU AGPL, see
|
||||||
|
<https://www.gnu.org/licenses/>.
|
||||||
|
|
40
README.rst
40
README.rst
|
@ -17,17 +17,17 @@ Matrix project <https://matrix.org/docs/guides/introduction>`_, and the `formal
|
||||||
Installing and configuration
|
Installing and configuration
|
||||||
============================
|
============================
|
||||||
|
|
||||||
The Synapse documentation describes `how to install Synapse <https://matrix-org.github.io/synapse/latest/setup/installation.html>`_. We recommend using
|
The Synapse documentation describes `how to install Synapse <https://element-hq.github.io/synapse/latest/setup/installation.html>`_. We recommend using
|
||||||
`Docker images <https://matrix-org.github.io/synapse/latest/setup/installation.html#docker-images-and-ansible-playbooks>`_ or `Debian packages from Matrix.org
|
`Docker images <https://element-hq.github.io/synapse/latest/setup/installation.html#docker-images-and-ansible-playbooks>`_ or `Debian packages from Matrix.org
|
||||||
<https://matrix-org.github.io/synapse/latest/setup/installation.html#matrixorg-packages>`_.
|
<https://element-hq.github.io/synapse/latest/setup/installation.html#matrixorg-packages>`_.
|
||||||
|
|
||||||
.. _federation:
|
.. _federation:
|
||||||
|
|
||||||
Synapse has a variety of `config options
|
Synapse has a variety of `config options
|
||||||
<https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html>`_
|
<https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html>`_
|
||||||
which can be used to customise its behaviour after installation.
|
which can be used to customise its behaviour after installation.
|
||||||
There are additional details on how to `configure Synapse for federation here
|
There are additional details on how to `configure Synapse for federation here
|
||||||
<https://matrix-org.github.io/synapse/latest/federate.html>`_.
|
<https://element-hq.github.io/synapse/latest/federate.html>`_.
|
||||||
|
|
||||||
.. _reverse-proxy:
|
.. _reverse-proxy:
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ It is recommended to put a reverse proxy such as
|
||||||
doing so is that it means that you can expose the default https port (443) to
|
doing so is that it means that you can expose the default https port (443) to
|
||||||
Matrix clients without needing to run Synapse with root privileges.
|
Matrix clients without needing to run Synapse with root privileges.
|
||||||
For information on configuring one, see `the reverse proxy docs
|
For information on configuring one, see `the reverse proxy docs
|
||||||
<https://matrix-org.github.io/synapse/latest/reverse_proxy.html>`_.
|
<https://element-hq.github.io/synapse/latest/reverse_proxy.html>`_.
|
||||||
|
|
||||||
Upgrading an existing Synapse
|
Upgrading an existing Synapse
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
@ -52,7 +52,7 @@ The instructions for upgrading Synapse are in `the upgrade notes`_.
|
||||||
Please check these instructions as upgrading may require extra steps for some
|
Please check these instructions as upgrading may require extra steps for some
|
||||||
versions of Synapse.
|
versions of Synapse.
|
||||||
|
|
||||||
.. _the upgrade notes: https://matrix-org.github.io/synapse/develop/upgrade.html
|
.. _the upgrade notes: https://element-hq.github.io/synapse/develop/upgrade.html
|
||||||
|
|
||||||
|
|
||||||
Platform dependencies
|
Platform dependencies
|
||||||
|
@ -60,7 +60,7 @@ Platform dependencies
|
||||||
|
|
||||||
Synapse uses a number of platform dependencies such as Python and PostgreSQL,
|
Synapse uses a number of platform dependencies such as Python and PostgreSQL,
|
||||||
and aims to follow supported upstream versions. See the
|
and aims to follow supported upstream versions. See the
|
||||||
`deprecation policy <https://matrix-org.github.io/synapse/latest/deprecation_policy.html>`_
|
`deprecation policy <https://element-hq.github.io/synapse/latest/deprecation_policy.html>`_
|
||||||
for more details.
|
for more details.
|
||||||
|
|
||||||
|
|
||||||
|
@ -114,7 +114,7 @@ from a web client.
|
||||||
Unless you are running a test instance of Synapse on your local machine, in
|
Unless you are running a test instance of Synapse on your local machine, in
|
||||||
general, you will need to enable TLS support before you can successfully
|
general, you will need to enable TLS support before you can successfully
|
||||||
connect from a client: see
|
connect from a client: see
|
||||||
`TLS certificates <https://matrix-org.github.io/synapse/latest/setup/installation.html#tls-certificates>`_.
|
`TLS certificates <https://element-hq.github.io/synapse/latest/setup/installation.html#tls-certificates>`_.
|
||||||
|
|
||||||
An easy way to get started is to login or register via Element at
|
An easy way to get started is to login or register via Element at
|
||||||
https://app.element.io/#/login or https://app.element.io/#/register respectively.
|
https://app.element.io/#/login or https://app.element.io/#/register respectively.
|
||||||
|
@ -136,11 +136,11 @@ By default, registration of new users via Matrix clients is disabled. To enable
|
||||||
it:
|
it:
|
||||||
|
|
||||||
1. In the
|
1. In the
|
||||||
`registration config section <https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#registration>`_
|
`registration config section <https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html#registration>`_
|
||||||
set ``enable_registration: true`` in ``homeserver.yaml``.
|
set ``enable_registration: true`` in ``homeserver.yaml``.
|
||||||
2. Then **either**:
|
2. Then **either**:
|
||||||
|
|
||||||
a. set up a `CAPTCHA <https://matrix-org.github.io/synapse/latest/CAPTCHA_SETUP.html>`_, or
|
a. set up a `CAPTCHA <https://element-hq.github.io/synapse/latest/CAPTCHA_SETUP.html>`_, or
|
||||||
b. set ``enable_registration_without_verification: true`` in ``homeserver.yaml``.
|
b. set ``enable_registration_without_verification: true`` in ``homeserver.yaml``.
|
||||||
|
|
||||||
We **strongly** recommend using a CAPTCHA, particularly if your homeserver is exposed to
|
We **strongly** recommend using a CAPTCHA, particularly if your homeserver is exposed to
|
||||||
|
@ -162,9 +162,9 @@ desired ``localpart`` in the 'User name' box.
|
||||||
Troubleshooting and support
|
Troubleshooting and support
|
||||||
===========================
|
===========================
|
||||||
|
|
||||||
The `Admin FAQ <https://matrix-org.github.io/synapse/latest/usage/administration/admin_faq.html>`_
|
The `Admin FAQ <https://element-hq.github.io/synapse/latest/usage/administration/admin_faq.html>`_
|
||||||
includes tips on dealing with some common problems. For more details, see
|
includes tips on dealing with some common problems. For more details, see
|
||||||
`Synapse's wider documentation <https://matrix-org.github.io/synapse/latest/>`_.
|
`Synapse's wider documentation <https://element-hq.github.io/synapse/latest/>`_.
|
||||||
|
|
||||||
For additional support installing or managing Synapse, please ask in the community
|
For additional support installing or managing Synapse, please ask in the community
|
||||||
support room |room|_ (from a matrix.org account if necessary). We do not use GitHub
|
support room |room|_ (from a matrix.org account if necessary). We do not use GitHub
|
||||||
|
@ -211,15 +211,15 @@ Development
|
||||||
|
|
||||||
We welcome contributions to Synapse from the community!
|
We welcome contributions to Synapse from the community!
|
||||||
The best place to get started is our
|
The best place to get started is our
|
||||||
`guide for contributors <https://matrix-org.github.io/synapse/latest/development/contributing_guide.html>`_.
|
`guide for contributors <https://element-hq.github.io/synapse/latest/development/contributing_guide.html>`_.
|
||||||
This is part of our larger `documentation <https://matrix-org.github.io/synapse/latest>`_, which includes
|
This is part of our larger `documentation <https://element-hq.github.io/synapse/latest>`_, which includes
|
||||||
|
|
||||||
information for Synapse developers as well as Synapse administrators.
|
information for Synapse developers as well as Synapse administrators.
|
||||||
Developers might be particularly interested in:
|
Developers might be particularly interested in:
|
||||||
|
|
||||||
* `Synapse's database schema <https://matrix-org.github.io/synapse/latest/development/database_schema.html>`_,
|
* `Synapse's database schema <https://element-hq.github.io/synapse/latest/development/database_schema.html>`_,
|
||||||
* `notes on Synapse's implementation details <https://matrix-org.github.io/synapse/latest/development/internal_documentation/index.html>`_, and
|
* `notes on Synapse's implementation details <https://element-hq.github.io/synapse/latest/development/internal_documentation/index.html>`_, and
|
||||||
* `how we use git <https://matrix-org.github.io/synapse/latest/development/git.html>`_.
|
* `how we use git <https://element-hq.github.io/synapse/latest/development/git.html>`_.
|
||||||
|
|
||||||
Alongside all that, join our developer community on Matrix:
|
Alongside all that, join our developer community on Matrix:
|
||||||
`#synapse-dev:matrix.org <https://matrix.to/#/#synapse-dev:matrix.org>`_, featuring real humans!
|
`#synapse-dev:matrix.org <https://matrix.to/#/#synapse-dev:matrix.org>`_, featuring real humans!
|
||||||
|
@ -235,9 +235,9 @@ Alongside all that, join our developer community on Matrix:
|
||||||
|
|
||||||
.. |documentation| image:: https://img.shields.io/badge/documentation-%E2%9C%93-success
|
.. |documentation| image:: https://img.shields.io/badge/documentation-%E2%9C%93-success
|
||||||
:alt: (Rendered documentation on GitHub Pages)
|
:alt: (Rendered documentation on GitHub Pages)
|
||||||
:target: https://matrix-org.github.io/synapse/latest/
|
:target: https://element-hq.github.io/synapse/latest/
|
||||||
|
|
||||||
.. |license| image:: https://img.shields.io/github/license/matrix-org/synapse
|
.. |license| image:: https://img.shields.io/github/license/element-hq/synapse
|
||||||
:alt: (check license in LICENSE file)
|
:alt: (check license in LICENSE file)
|
||||||
:target: LICENSE
|
:target: LICENSE
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
Upgrading Synapse
|
Upgrading Synapse
|
||||||
=================
|
=================
|
||||||
|
|
||||||
This document has moved to the `Synapse documentation website <https://matrix-org.github.io/synapse/latest/upgrade>`_.
|
This document has moved to the `Synapse documentation website <https://element-hq.github.io/synapse/latest/upgrade>`_.
|
||||||
Please update your links.
|
Please update your links.
|
||||||
|
|
||||||
The markdown source is available in `docs/upgrade.md <docs/upgrade.md>`_.
|
The markdown source is available in `docs/upgrade.md <docs/upgrade.md>`_.
|
||||||
|
|
|
@ -16,14 +16,14 @@ create-missing = false
|
||||||
|
|
||||||
[output.html]
|
[output.html]
|
||||||
# The URL visitors will be directed to when they try to edit a page
|
# The URL visitors will be directed to when they try to edit a page
|
||||||
edit-url-template = "https://github.com/matrix-org/synapse/edit/develop/{path}"
|
edit-url-template = "https://github.com/element-hq/synapse/edit/develop/{path}"
|
||||||
|
|
||||||
# Remove the numbers that appear before each item in the sidebar, as they can
|
# Remove the numbers that appear before each item in the sidebar, as they can
|
||||||
# get quite messy as we nest deeper
|
# get quite messy as we nest deeper
|
||||||
no-section-label = true
|
no-section-label = true
|
||||||
|
|
||||||
# The source code URL of the repository
|
# The source code URL of the repository
|
||||||
git-repository-url = "https://github.com/matrix-org/synapse"
|
git-repository-url = "https://github.com/element-hq/synapse"
|
||||||
|
|
||||||
# The path that the docs are hosted on
|
# The path that the docs are hosted on
|
||||||
site-url = "/synapse/"
|
site-url = "/synapse/"
|
||||||
|
|
|
@ -1,18 +1,24 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
# Copyright 2014-2016 OpenMarket Ltd
|
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# This file is licensed under the Affero General Public License (AGPL) version 3.
|
||||||
# you may not use this file except in compliance with the License.
|
#
|
||||||
# You may obtain a copy of the License at
|
# Copyright (C) 2023 New Vector, Ltd
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# See the GNU Affero General Public License for more details:
|
||||||
|
# <https://www.gnu.org/licenses/agpl-3.0.html>.
|
||||||
|
#
|
||||||
|
# Originally licensed under the Apache License, Version 2.0:
|
||||||
|
# <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||||
|
#
|
||||||
|
# [This file includes modifications made by New Vector Limited]
|
||||||
#
|
#
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
#
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
""" Starts a synapse client console. """
|
""" Starts a synapse client console. """
|
||||||
import argparse
|
import argparse
|
||||||
|
|
|
@ -1,16 +1,22 @@
|
||||||
# Copyright 2014-2016 OpenMarket Ltd
|
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# This file is licensed under the Affero General Public License (AGPL) version 3.
|
||||||
# you may not use this file except in compliance with the License.
|
#
|
||||||
# You may obtain a copy of the License at
|
# Copyright (C) 2023 New Vector, Ltd
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# See the GNU Affero General Public License for more details:
|
||||||
|
# <https://www.gnu.org/licenses/agpl-3.0.html>.
|
||||||
|
#
|
||||||
|
# Originally licensed under the Apache License, Version 2.0:
|
||||||
|
# <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||||
|
#
|
||||||
|
# [This file includes modifications made by New Vector Limited]
|
||||||
#
|
#
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
#
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
import json
|
import json
|
||||||
import urllib
|
import urllib
|
||||||
|
|
|
@ -57,7 +57,7 @@ services:
|
||||||
- POSTGRES_USER=synapse
|
- POSTGRES_USER=synapse
|
||||||
- POSTGRES_PASSWORD=changeme
|
- POSTGRES_PASSWORD=changeme
|
||||||
# ensure the database gets created correctly
|
# ensure the database gets created correctly
|
||||||
# https://matrix-org.github.io/synapse/latest/postgres.html#set-up-database
|
# https://element-hq.github.io/synapse/latest/postgres.html#set-up-database
|
||||||
- POSTGRES_INITDB_ARGS=--encoding=UTF-8 --lc-collate=C --lc-ctype=C
|
- POSTGRES_INITDB_ARGS=--encoding=UTF-8 --lc-collate=C --lc-ctype=C
|
||||||
volumes:
|
volumes:
|
||||||
# You may store the database tables in a local folder..
|
# You may store the database tables in a local folder..
|
||||||
|
|
|
@ -113,4 +113,4 @@ federation_sender_instances:
|
||||||
|
|
||||||
## Other Worker types
|
## Other Worker types
|
||||||
|
|
||||||
Using the concepts shown here it is possible to create other worker types in Docker Compose. See the [Workers](https://matrix-org.github.io/synapse/latest/workers.html#available-worker-applications) documentation for a list of available workers.
|
Using the concepts shown here it is possible to create other worker types in Docker Compose. See the [Workers](https://element-hq.github.io/synapse/latest/workers.html#available-worker-applications) documentation for a list of available workers.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Using the Synapse Grafana dashboard
|
# Using the Synapse Grafana dashboard
|
||||||
|
|
||||||
0. Set up Prometheus and Grafana. Out of scope for this readme. Useful documentation about using Grafana with Prometheus: http://docs.grafana.org/features/datasources/prometheus/
|
0. Set up Prometheus and Grafana. Out of scope for this readme. Useful documentation about using Grafana with Prometheus: http://docs.grafana.org/features/datasources/prometheus/
|
||||||
1. Have your Prometheus scrape your Synapse. https://matrix-org.github.io/synapse/latest/metrics-howto.html
|
1. Have your Prometheus scrape your Synapse. https://element-hq.github.io/synapse/latest/metrics-howto.html
|
||||||
2. Import dashboard into Grafana. Download `synapse.json`. Import it to Grafana and select the correct Prometheus datasource. http://docs.grafana.org/reference/export_import/
|
2. Import dashboard into Grafana. Download `synapse.json`. Import it to Grafana and select the correct Prometheus datasource. http://docs.grafana.org/reference/export_import/
|
||||||
3. Set up required recording rules. [contrib/prometheus](../prometheus)
|
3. Set up required recording rules. [contrib/prometheus](../prometheus)
|
||||||
|
|
|
@ -4253,7 +4253,7 @@
|
||||||
"type": "prometheus",
|
"type": "prometheus",
|
||||||
"uid": "${DS_PROMETHEUS}"
|
"uid": "${DS_PROMETHEUS}"
|
||||||
},
|
},
|
||||||
"description": "Triangular growth may indicate a problem with federation sending from the remote host --- but it may also be the case that everyone is asleep and no messages are being sent.\n\nSee https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#federation_metrics_domains",
|
"description": "Triangular growth may indicate a problem with federation sending from the remote host --- but it may also be the case that everyone is asleep and no messages are being sent.\n\nSee https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html#federation_metrics_domains",
|
||||||
"fieldConfig": {
|
"fieldConfig": {
|
||||||
"defaults": {
|
"defaults": {
|
||||||
"color": {
|
"color": {
|
||||||
|
@ -4375,7 +4375,7 @@
|
||||||
"type": "prometheus",
|
"type": "prometheus",
|
||||||
"uid": "${DS_PROMETHEUS}"
|
"uid": "${DS_PROMETHEUS}"
|
||||||
},
|
},
|
||||||
"description": "Triangular growth may indicate a problem with federation senders on the monitored instance---but it may also be the case that everyone is asleep and no messages are being sent.\n\nSee https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#federation_metrics_domains",
|
"description": "Triangular growth may indicate a problem with federation senders on the monitored instance---but it may also be the case that everyone is asleep and no messages are being sent.\n\nSee https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html#federation_metrics_domains",
|
||||||
"fieldConfig": {
|
"fieldConfig": {
|
||||||
"defaults": {
|
"defaults": {
|
||||||
"color": {
|
"color": {
|
||||||
|
|
|
@ -1,16 +1,22 @@
|
||||||
# Copyright 2014-2016 OpenMarket Ltd
|
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# This file is licensed under the Affero General Public License (AGPL) version 3.
|
||||||
# you may not use this file except in compliance with the License.
|
#
|
||||||
# You may obtain a copy of the License at
|
# Copyright (C) 2023 New Vector, Ltd
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# See the GNU Affero General Public License for more details:
|
||||||
|
# <https://www.gnu.org/licenses/agpl-3.0.html>.
|
||||||
|
#
|
||||||
|
# Originally licensed under the Apache License, Version 2.0:
|
||||||
|
# <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||||
|
#
|
||||||
|
# [This file includes modifications made by New Vector Limited]
|
||||||
#
|
#
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
#
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import cgi
|
import cgi
|
||||||
|
|
|
@ -1,16 +1,22 @@
|
||||||
# Copyright 2014-2016 OpenMarket Ltd
|
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# This file is licensed under the Affero General Public License (AGPL) version 3.
|
||||||
# you may not use this file except in compliance with the License.
|
#
|
||||||
# You may obtain a copy of the License at
|
# Copyright (C) 2023 New Vector, Ltd
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# See the GNU Affero General Public License for more details:
|
||||||
|
# <https://www.gnu.org/licenses/agpl-3.0.html>.
|
||||||
|
#
|
||||||
|
# Originally licensed under the Apache License, Version 2.0:
|
||||||
|
# <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||||
|
#
|
||||||
|
# [This file includes modifications made by New Vector Limited]
|
||||||
#
|
#
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
#
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
|
|
|
@ -1,16 +1,22 @@
|
||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# This file is licensed under the Affero General Public License (AGPL) version 3.
|
||||||
# you may not use this file except in compliance with the License.
|
#
|
||||||
# You may obtain a copy of the License at
|
# Copyright (C) 2023 New Vector, Ltd
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# See the GNU Affero General Public License for more details:
|
||||||
|
# <https://www.gnu.org/licenses/agpl-3.0.html>.
|
||||||
|
#
|
||||||
|
# Originally licensed under the Apache License, Version 2.0:
|
||||||
|
# <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||||
|
#
|
||||||
|
# [This file includes modifications made by New Vector Limited]
|
||||||
#
|
#
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
#
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import datetime
|
import datetime
|
||||||
|
|
|
@ -9,7 +9,7 @@ This directory contains an `lnav` [log format definition](
|
||||||
https://docs.lnav.org/en/v0.10.1/formats.html#defining-a-new-format
|
https://docs.lnav.org/en/v0.10.1/formats.html#defining-a-new-format
|
||||||
) for Synapse logs as
|
) for Synapse logs as
|
||||||
emitted by Synapse with the default [logging configuration](
|
emitted by Synapse with the default [logging configuration](
|
||||||
https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#log_config
|
https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html#log_config
|
||||||
). It supports lnav 0.10.1 because that's what's packaged by my distribution.
|
). It supports lnav 0.10.1 because that's what's packaged by my distribution.
|
||||||
|
|
||||||
This should allow lnav:
|
This should allow lnav:
|
||||||
|
@ -40,7 +40,7 @@ Within lnav itself:
|
||||||
down and up.
|
down and up.
|
||||||
- Use `o` and `O` to skip through logs based on the request ID (`POST-1234`, or
|
- Use `o` and `O` to skip through logs based on the request ID (`POST-1234`, or
|
||||||
else the value of the [`request_id_header`](
|
else the value of the [`request_id_header`](
|
||||||
https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html?highlight=request_id_header#listeners
|
https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html?highlight=request_id_header#listeners
|
||||||
) header). This may get confused if the same request ID is repeated among
|
) header). This may get confused if the same request ID is repeated among
|
||||||
multiple files or process restarts.
|
multiple files or process restarts.
|
||||||
- ???
|
- ???
|
||||||
|
|
|
@ -34,7 +34,7 @@ Add a new job to the main prometheus.yml file:
|
||||||
```
|
```
|
||||||
|
|
||||||
An example of a Prometheus configuration with workers can be found in
|
An example of a Prometheus configuration with workers can be found in
|
||||||
[metrics-howto.md](https://matrix-org.github.io/synapse/latest/metrics-howto.html).
|
[metrics-howto.md](https://element-hq.github.io/synapse/latest/metrics-howto.html).
|
||||||
|
|
||||||
To use `synapse.rules` add
|
To use `synapse.rules` add
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ Purge history API examples
|
||||||
# `purge_history.sh`
|
# `purge_history.sh`
|
||||||
|
|
||||||
A bash file, that uses the
|
A bash file, that uses the
|
||||||
[purge history API](https://matrix-org.github.io/synapse/latest/admin_api/purge_history_api.html)
|
[purge history API](https://element-hq.github.io/synapse/latest/admin_api/purge_history_api.html)
|
||||||
to purge all messages in a list of rooms up to a certain event. You can select a
|
to purge all messages in a list of rooms up to a certain event. You can select a
|
||||||
timeframe or a number of messages that you want to keep in the room.
|
timeframe or a number of messages that you want to keep in the room.
|
||||||
|
|
||||||
|
@ -14,5 +14,5 @@ the script.
|
||||||
# `purge_remote_media.sh`
|
# `purge_remote_media.sh`
|
||||||
|
|
||||||
A bash file, that uses the
|
A bash file, that uses the
|
||||||
[purge history API](https://matrix-org.github.io/synapse/latest/admin_api/purge_history_api.html)
|
[purge history API](https://element-hq.github.io/synapse/latest/admin_api/purge_history_api.html)
|
||||||
to purge all old cached remote media.
|
to purge all old cached remote media.
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# this script will use the api:
|
# this script will use the api:
|
||||||
# https://matrix-org.github.io/synapse/latest/admin_api/purge_history_api.html
|
# https://element-hq.github.io/synapse/latest/admin_api/purge_history_api.html
|
||||||
#
|
#
|
||||||
# It will purge all messages in a list of rooms up to a cetrain event
|
# It will purge all messages in a list of rooms up to a cetrain event
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
The documentation for using systemd to manage synapse workers is now part of
|
The documentation for using systemd to manage synapse workers is now part of
|
||||||
the main synapse distribution. See
|
the main synapse distribution. See
|
||||||
[docs/systemd-with-workers](https://matrix-org.github.io/synapse/latest/systemd-with-workers/index.html).
|
[docs/systemd-with-workers](https://element-hq.github.io/synapse/latest/systemd-with-workers/index.html).
|
||||||
|
|
|
@ -3,7 +3,7 @@ This is a setup for managing synapse with a user contributed systemd unit
|
||||||
file. It provides a `matrix-synapse` systemd unit file that should be tailored
|
file. It provides a `matrix-synapse` systemd unit file that should be tailored
|
||||||
to accommodate your installation in accordance with the installation
|
to accommodate your installation in accordance with the installation
|
||||||
instructions provided in
|
instructions provided in
|
||||||
[installation instructions](https://matrix-org.github.io/synapse/latest/setup/installation.html).
|
[installation instructions](https://element-hq.github.io/synapse/latest/setup/installation.html).
|
||||||
|
|
||||||
## Setup
|
## Setup
|
||||||
1. Under the service section, ensure the `User` variable matches which user
|
1. Under the service section, ensure the `User` variable matches which user
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Creating multiple stream writers with a bash script
|
# Creating multiple stream writers with a bash script
|
||||||
|
|
||||||
This script creates multiple [stream writer](https://github.com/matrix-org/synapse/blob/develop/docs/workers.md#stream-writers) workers.
|
This script creates multiple [stream writer](https://github.com/element-hq/synapse/blob/develop/docs/workers.md#stream-writers) workers.
|
||||||
|
|
||||||
Stream writers require both replication and HTTP listeners.
|
Stream writers require both replication and HTTP listeners.
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ cat << EXAMPLECONFIG
|
||||||
# Don't forget to configure your reverse proxy and
|
# Don't forget to configure your reverse proxy and
|
||||||
# necessary endpoints to their respective worker.
|
# necessary endpoints to their respective worker.
|
||||||
|
|
||||||
# See https://github.com/matrix-org/synapse/blob/develop/docs/workers.md
|
# See https://github.com/element-hq/synapse/blob/develop/docs/workers.md
|
||||||
# for more information.
|
# for more information.
|
||||||
|
|
||||||
# Remember: Under NO circumstances should the replication
|
# Remember: Under NO circumstances should the replication
|
||||||
|
@ -102,7 +102,7 @@ You should receive an output similar to the following:
|
||||||
# Don't forget to configure your reverse proxy and
|
# Don't forget to configure your reverse proxy and
|
||||||
# necessary endpoints to their respective worker.
|
# necessary endpoints to their respective worker.
|
||||||
|
|
||||||
# See https://github.com/matrix-org/synapse/blob/develop/docs/workers.md
|
# See https://github.com/element-hq/synapse/blob/develop/docs/workers.md
|
||||||
# for more information
|
# for more information
|
||||||
|
|
||||||
# Remember: Under NO circumstances should the replication
|
# Remember: Under NO circumstances should the replication
|
||||||
|
|
13
debian/changelog
vendored
13
debian/changelog
vendored
|
@ -1,3 +1,16 @@
|
||||||
|
matrix-synapse-py3 (1.99.0) stable; urgency=medium
|
||||||
|
|
||||||
|
* Fix copyright file with new licensing
|
||||||
|
* New Synapse release 1.99.0.
|
||||||
|
|
||||||
|
-- Synapse Packaging team <packages@matrix.org> Tue, 16 Jan 2024 11:58:34 +0000
|
||||||
|
|
||||||
|
matrix-synapse-py3 (1.99.0~rc1) stable; urgency=medium
|
||||||
|
|
||||||
|
* New Synapse release 1.99.0rc1.
|
||||||
|
|
||||||
|
-- Synapse Packaging team <packages@matrix.org> Tue, 09 Jan 2024 13:43:56 +0000
|
||||||
|
|
||||||
matrix-synapse-py3 (1.98.0) stable; urgency=medium
|
matrix-synapse-py3 (1.98.0) stable; urgency=medium
|
||||||
|
|
||||||
* New Synapse release 1.98.0.
|
* New Synapse release 1.98.0.
|
||||||
|
|
2
debian/control
vendored
2
debian/control
vendored
|
@ -18,7 +18,7 @@ Build-Depends:
|
||||||
python3-venv,
|
python3-venv,
|
||||||
tar,
|
tar,
|
||||||
Standards-Version: 3.9.8
|
Standards-Version: 3.9.8
|
||||||
Homepage: https://github.com/matrix-org/synapse
|
Homepage: https://github.com/element-hq/synapse
|
||||||
|
|
||||||
Package: matrix-synapse-py3
|
Package: matrix-synapse-py3
|
||||||
Architecture: any
|
Architecture: any
|
||||||
|
|
6
debian/copyright
vendored
6
debian/copyright
vendored
|
@ -1,11 +1,15 @@
|
||||||
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||||
Upstream-Name: synapse
|
Upstream-Name: synapse
|
||||||
Source: https://github.com/matrix-org/synapse
|
Source: https://github.com/element-hq/synapse
|
||||||
|
|
||||||
Files: *
|
Files: *
|
||||||
Copyright: 2014-2017, OpenMarket Ltd, 2017-2018 New Vector Ltd
|
Copyright: 2014-2017, OpenMarket Ltd, 2017-2018 New Vector Ltd
|
||||||
License: Apache-2.0
|
License: Apache-2.0
|
||||||
|
|
||||||
|
Files: *
|
||||||
|
Copyright: 2023 New Vector Ltd
|
||||||
|
License: AGPL-3.0-or-later
|
||||||
|
|
||||||
Files: synapse/config/saml2.py
|
Files: synapse/config/saml2.py
|
||||||
Copyright: 2015, Ericsson
|
Copyright: 2015, Ericsson
|
||||||
License: Apache-2.0
|
License: Apache-2.0
|
||||||
|
|
2
debian/po/templates.pot
vendored
2
debian/po/templates.pot
vendored
|
@ -30,7 +30,7 @@ msgid ""
|
||||||
"The name that this homeserver will appear as, to clients and other servers "
|
"The name that this homeserver will appear as, to clients and other servers "
|
||||||
"via federation. This is normally the public hostname of the server running "
|
"via federation. This is normally the public hostname of the server running "
|
||||||
"synapse, but can be different if you set up delegation. Please refer to the "
|
"synapse, but can be different if you set up delegation. Please refer to the "
|
||||||
"delegation documentation in this case: https://github.com/matrix-org/synapse/"
|
"delegation documentation in this case: https://github.com/element-hq/synapse/"
|
||||||
"blob/master/docs/delegate.md."
|
"blob/master/docs/delegate.md."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
2
debian/templates
vendored
2
debian/templates
vendored
|
@ -5,7 +5,7 @@ _Description: Name of the server:
|
||||||
servers via federation. This is normally the public hostname of the
|
servers via federation. This is normally the public hostname of the
|
||||||
server running synapse, but can be different if you set up delegation.
|
server running synapse, but can be different if you set up delegation.
|
||||||
Please refer to the delegation documentation in this case:
|
Please refer to the delegation documentation in this case:
|
||||||
https://github.com/matrix-org/synapse/blob/master/docs/delegate.md.
|
https://github.com/element-hq/synapse/blob/master/docs/delegate.md.
|
||||||
|
|
||||||
Template: matrix-synapse/report-stats
|
Template: matrix-synapse/report-stats
|
||||||
Type: boolean
|
Type: boolean
|
||||||
|
|
|
@ -161,8 +161,8 @@ RUN --mount=type=cache,target=/synapse/target,sharing=locked \
|
||||||
FROM docker.io/library/python:${PYTHON_VERSION}-slim-bookworm
|
FROM docker.io/library/python:${PYTHON_VERSION}-slim-bookworm
|
||||||
|
|
||||||
LABEL org.opencontainers.image.url='https://matrix.org/docs/projects/server/synapse'
|
LABEL org.opencontainers.image.url='https://matrix.org/docs/projects/server/synapse'
|
||||||
LABEL org.opencontainers.image.documentation='https://github.com/matrix-org/synapse/blob/master/docker/README.md'
|
LABEL org.opencontainers.image.documentation='https://github.com/element-hq/synapse/blob/master/docker/README.md'
|
||||||
LABEL org.opencontainers.image.source='https://github.com/matrix-org/synapse.git'
|
LABEL org.opencontainers.image.source='https://github.com/element-hq/synapse.git'
|
||||||
LABEL org.opencontainers.image.licenses='Apache-2.0'
|
LABEL org.opencontainers.image.licenses='Apache-2.0'
|
||||||
|
|
||||||
RUN \
|
RUN \
|
||||||
|
|
|
@ -15,7 +15,7 @@ and run Synapse against Complement.
|
||||||
Consult the [contributing guide][guideComplementSh] for instructions on how to use it.
|
Consult the [contributing guide][guideComplementSh] for instructions on how to use it.
|
||||||
|
|
||||||
|
|
||||||
[guideComplementSh]: https://matrix-org.github.io/synapse/latest/development/contributing_guide.html#run-the-integration-tests-complement
|
[guideComplementSh]: https://element-hq.github.io/synapse/latest/development/contributing_guide.html#run-the-integration-tests-complement
|
||||||
|
|
||||||
## Building and running the images manually
|
## Building and running the images manually
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,7 @@ docker run -it --rm \
|
||||||
```
|
```
|
||||||
|
|
||||||
For information on picking a suitable server name, see
|
For information on picking a suitable server name, see
|
||||||
https://matrix-org.github.io/synapse/latest/setup/installation.html.
|
https://element-hq.github.io/synapse/latest/setup/installation.html.
|
||||||
|
|
||||||
The above command will generate a `homeserver.yaml` in (typically)
|
The above command will generate a `homeserver.yaml` in (typically)
|
||||||
`/var/lib/docker/volumes/synapse-data/_data`. You should check this file, and
|
`/var/lib/docker/volumes/synapse-data/_data`. You should check this file, and
|
||||||
|
@ -78,7 +78,7 @@ The following environment variables are supported in `generate` mode:
|
||||||
|
|
||||||
## Postgres
|
## Postgres
|
||||||
|
|
||||||
By default the config will use SQLite. See the [docs on using Postgres](https://github.com/matrix-org/synapse/blob/develop/docs/postgres.md) for more info on how to use Postgres. Until this section is improved [this issue](https://github.com/matrix-org/synapse/issues/8304) may provide useful information.
|
By default the config will use SQLite. See the [docs on using Postgres](https://github.com/element-hq/synapse/blob/develop/docs/postgres.md) for more info on how to use Postgres. Until this section is improved [this issue](https://github.com/element-hq/synapse/issues/8304) may provide useful information.
|
||||||
|
|
||||||
## Running synapse
|
## Running synapse
|
||||||
|
|
||||||
|
@ -151,10 +151,10 @@ is suitable for local testing, but for any practical use, you will either need
|
||||||
to use a reverse proxy, or configure Synapse to expose an HTTPS port.
|
to use a reverse proxy, or configure Synapse to expose an HTTPS port.
|
||||||
|
|
||||||
For documentation on using a reverse proxy, see
|
For documentation on using a reverse proxy, see
|
||||||
https://github.com/matrix-org/synapse/blob/master/docs/reverse_proxy.md.
|
https://github.com/element-hq/synapse/blob/master/docs/reverse_proxy.md.
|
||||||
|
|
||||||
For more information on enabling TLS support in synapse itself, see
|
For more information on enabling TLS support in synapse itself, see
|
||||||
https://matrix-org.github.io/synapse/latest/setup/installation.html#tls-certificates. Of
|
https://element-hq.github.io/synapse/latest/setup/installation.html#tls-certificates. Of
|
||||||
course, you will need to expose the TLS port from the container with a `-p`
|
course, you will need to expose the TLS port from the container with a `-p`
|
||||||
argument to `docker run`.
|
argument to `docker run`.
|
||||||
|
|
||||||
|
@ -242,4 +242,4 @@ healthcheck:
|
||||||
|
|
||||||
Jemalloc is embedded in the image and will be used instead of the default allocator.
|
Jemalloc is embedded in the image and will be used instead of the default allocator.
|
||||||
You can read about jemalloc by reading the Synapse
|
You can read about jemalloc by reading the Synapse
|
||||||
[Admin FAQ](https://matrix-org.github.io/synapse/latest/usage/administration/admin_faq.html#help-synapse-is-slow-and-eats-all-my-ramcpu).
|
[Admin FAQ](https://element-hq.github.io/synapse/latest/usage/administration/admin_faq.html#help-synapse-is-slow-and-eats-all-my-ramcpu).
|
||||||
|
|
|
@ -1,58 +1,58 @@
|
||||||
# syntax=docker/dockerfile:1
|
# syntax=docker/dockerfile:1
|
||||||
# This dockerfile builds on top of 'docker/Dockerfile-workers' in matrix-org/synapse
|
# This dockerfile builds on top of 'docker/Dockerfile-workers' in element-hq/synapse
|
||||||
# by including a built-in postgres instance, as well as setting up the homeserver so
|
# by including a built-in postgres instance, as well as setting up the homeserver so
|
||||||
# that it is ready for testing via Complement.
|
# that it is ready for testing via Complement.
|
||||||
#
|
#
|
||||||
# Instructions for building this image from those it depends on is detailed in this guide:
|
# Instructions for building this image from those it depends on is detailed in this guide:
|
||||||
# https://github.com/matrix-org/synapse/blob/develop/docker/README-testing.md#testing-with-postgresql-and-single-or-multi-process-synapse
|
# https://github.com/element-hq/synapse/blob/develop/docker/README-testing.md#testing-with-postgresql-and-single-or-multi-process-synapse
|
||||||
|
|
||||||
ARG SYNAPSE_VERSION=latest
|
ARG SYNAPSE_VERSION=latest
|
||||||
# This is an intermediate image, to be built locally (not pulled from a registry).
|
# This is an intermediate image, to be built locally (not pulled from a registry).
|
||||||
ARG FROM=matrixdotorg/synapse-workers:$SYNAPSE_VERSION
|
ARG FROM=matrixdotorg/synapse-workers:$SYNAPSE_VERSION
|
||||||
|
|
||||||
FROM $FROM
|
FROM $FROM
|
||||||
# First of all, we copy postgres server from the official postgres image,
|
# First of all, we copy postgres server from the official postgres image,
|
||||||
# since for repeated rebuilds, this is much faster than apt installing
|
# since for repeated rebuilds, this is much faster than apt installing
|
||||||
# postgres each time.
|
# postgres each time.
|
||||||
|
|
||||||
# This trick only works because (a) the Synapse image happens to have all the
|
# This trick only works because (a) the Synapse image happens to have all the
|
||||||
# shared libraries that postgres wants, (b) we use a postgres image based on
|
# shared libraries that postgres wants, (b) we use a postgres image based on
|
||||||
# the same debian version as Synapse's docker image (so the versions of the
|
# the same debian version as Synapse's docker image (so the versions of the
|
||||||
# shared libraries match).
|
# shared libraries match).
|
||||||
RUN adduser --system --uid 999 postgres --home /var/lib/postgresql
|
RUN adduser --system --uid 999 postgres --home /var/lib/postgresql
|
||||||
COPY --from=docker.io/library/postgres:13-bookworm /usr/lib/postgresql /usr/lib/postgresql
|
COPY --from=docker.io/library/postgres:13-bookworm /usr/lib/postgresql /usr/lib/postgresql
|
||||||
COPY --from=docker.io/library/postgres:13-bookworm /usr/share/postgresql /usr/share/postgresql
|
COPY --from=docker.io/library/postgres:13-bookworm /usr/share/postgresql /usr/share/postgresql
|
||||||
RUN mkdir /var/run/postgresql && chown postgres /var/run/postgresql
|
RUN mkdir /var/run/postgresql && chown postgres /var/run/postgresql
|
||||||
ENV PATH="${PATH}:/usr/lib/postgresql/13/bin"
|
ENV PATH="${PATH}:/usr/lib/postgresql/13/bin"
|
||||||
ENV PGDATA=/var/lib/postgresql/data
|
ENV PGDATA=/var/lib/postgresql/data
|
||||||
|
|
||||||
# We also initialize the database at build time, rather than runtime, so that it's faster to spin up the image.
|
# We also initialize the database at build time, rather than runtime, so that it's faster to spin up the image.
|
||||||
RUN gosu postgres initdb --locale=C --encoding=UTF-8 --auth-host password
|
RUN gosu postgres initdb --locale=C --encoding=UTF-8 --auth-host password
|
||||||
|
|
||||||
# Configure a password and create a database for Synapse
|
# Configure a password and create a database for Synapse
|
||||||
RUN echo "ALTER USER postgres PASSWORD 'somesecret'" | gosu postgres postgres --single
|
RUN echo "ALTER USER postgres PASSWORD 'somesecret'" | gosu postgres postgres --single
|
||||||
RUN echo "CREATE DATABASE synapse" | gosu postgres postgres --single
|
RUN echo "CREATE DATABASE synapse" | gosu postgres postgres --single
|
||||||
|
|
||||||
# Extend the shared homeserver config to disable rate-limiting,
|
# Extend the shared homeserver config to disable rate-limiting,
|
||||||
# set Complement's static shared secret, enable registration, amongst other
|
# set Complement's static shared secret, enable registration, amongst other
|
||||||
# tweaks to get Synapse ready for testing.
|
# tweaks to get Synapse ready for testing.
|
||||||
# To do this, we copy the old template out of the way and then include it
|
# To do this, we copy the old template out of the way and then include it
|
||||||
# with Jinja2.
|
# with Jinja2.
|
||||||
RUN mv /conf/shared.yaml.j2 /conf/shared-orig.yaml.j2
|
RUN mv /conf/shared.yaml.j2 /conf/shared-orig.yaml.j2
|
||||||
COPY conf/workers-shared-extra.yaml.j2 /conf/shared.yaml.j2
|
COPY conf/workers-shared-extra.yaml.j2 /conf/shared.yaml.j2
|
||||||
|
|
||||||
WORKDIR /data
|
WORKDIR /data
|
||||||
|
|
||||||
COPY conf/postgres.supervisord.conf /etc/supervisor/conf.d/postgres.conf
|
COPY conf/postgres.supervisord.conf /etc/supervisor/conf.d/postgres.conf
|
||||||
|
|
||||||
# Copy the entrypoint
|
# Copy the entrypoint
|
||||||
COPY conf/start_for_complement.sh /
|
COPY conf/start_for_complement.sh /
|
||||||
|
|
||||||
# Expose nginx's listener ports
|
# Expose nginx's listener ports
|
||||||
EXPOSE 8008 8448
|
EXPOSE 8008 8448
|
||||||
|
|
||||||
ENTRYPOINT ["/start_for_complement.sh"]
|
ENTRYPOINT ["/start_for_complement.sh"]
|
||||||
|
|
||||||
# Update the healthcheck to have a shorter check interval
|
# Update the healthcheck to have a shorter check interval
|
||||||
HEALTHCHECK --start-period=5s --interval=1s --timeout=1s \
|
HEALTHCHECK --start-period=5s --interval=1s --timeout=1s \
|
||||||
CMD /bin/sh /healthcheck.sh
|
CMD /bin/sh /healthcheck.sh
|
||||||
|
|
|
@ -1,17 +1,23 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
# Copyright 2021 The Matrix.org Foundation C.I.C.
|
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# This file is licensed under the Affero General Public License (AGPL) version 3.
|
||||||
# you may not use this file except in compliance with the License.
|
#
|
||||||
# You may obtain a copy of the License at
|
# Copyright (C) 2023 New Vector, Ltd
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# See the GNU Affero General Public License for more details:
|
||||||
|
# <https://www.gnu.org/licenses/agpl-3.0.html>.
|
||||||
|
#
|
||||||
|
# Originally licensed under the Apache License, Version 2.0:
|
||||||
|
# <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||||
|
#
|
||||||
|
# [This file includes modifications made by New Vector Limited]
|
||||||
#
|
#
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
#
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
# This script reads environment variables and generates a shared Synapse worker,
|
# This script reads environment variables and generates a shared Synapse worker,
|
||||||
# nginx and supervisord configs depending on the workers requested.
|
# nginx and supervisord configs depending on the workers requested.
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
# This file is maintained as an up-to-date snapshot of the default
|
# This file is maintained as an up-to-date snapshot of the default
|
||||||
# homeserver.yaml configuration generated by Synapse. You can find a
|
# homeserver.yaml configuration generated by Synapse. You can find a
|
||||||
# complete accounting of possible configuration options at
|
# complete accounting of possible configuration options at
|
||||||
# https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html
|
# https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html
|
||||||
#
|
#
|
||||||
# It is *not* intended to be copied and used as the basis for a real
|
# It is *not* intended to be copied and used as the basis for a real
|
||||||
# homeserver.yaml. Instead, if you are starting from scratch, please generate
|
# homeserver.yaml. Instead, if you are starting from scratch, please generate
|
||||||
# a fresh config using Synapse by following the instructions in
|
# a fresh config using Synapse by following the instructions in
|
||||||
# https://matrix-org.github.io/synapse/latest/setup/installation.html.
|
# https://element-hq.github.io/synapse/latest/setup/installation.html.
|
||||||
#
|
#
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
# Synapse Documentation
|
# Synapse Documentation
|
||||||
|
|
||||||
**The documentation is currently hosted [here](https://matrix-org.github.io/synapse).**
|
**The documentation is currently hosted [here](https://element-hq.github.io/synapse).**
|
||||||
Please update any links to point to the new website instead.
|
Please update any links to point to the new website instead.
|
||||||
|
|
||||||
## About
|
## About
|
||||||
|
|
||||||
This directory currently holds a series of markdown files documenting how to install, use
|
This directory currently holds a series of markdown files documenting how to install, use
|
||||||
and develop Synapse. The documentation is readable directly from this repository, but it is
|
and develop Synapse. The documentation is readable directly from this repository, but it is
|
||||||
recommended to instead browse through the [website](https://matrix-org.github.io/synapse) for
|
recommended to instead browse through the [website](https://element-hq.github.io/synapse) for
|
||||||
easier discoverability.
|
easier discoverability.
|
||||||
|
|
||||||
## Adding to the documentation
|
## Adding to the documentation
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
Admin APIs
|
Admin APIs
|
||||||
==========
|
==========
|
||||||
|
|
||||||
**Note**: The latest documentation can be viewed `here <https://matrix-org.github.io/synapse>`_.
|
**Note**: The latest documentation can be viewed `here <https://element-hq.github.io/synapse>`_.
|
||||||
See `docs/README.md <../README.md>`_ for more information.
|
See `docs/README.md <../README.md>`_ for more information.
|
||||||
|
|
||||||
**Please update links to point to the website instead.** Existing files in this directory
|
**Please update links to point to the website instead.** Existing files in this directory
|
||||||
|
@ -11,4 +11,3 @@ This directory includes documentation for the various synapse specific admin
|
||||||
APIs available. Updates to the existing Admin API documentation should still
|
APIs available. Updates to the existing Admin API documentation should still
|
||||||
be made to these files, but any new documentation files should instead be placed under
|
be made to these files, but any new documentation files should instead be placed under
|
||||||
`docs/usage/administration/admin_api <../usage/administration/admin_api>`_.
|
`docs/usage/administration/admin_api <../usage/administration/admin_api>`_.
|
||||||
|
|
||||||
|
|
|
@ -149,10 +149,11 @@ Body parameters:
|
||||||
granting them access to the Admin API, among other things.
|
granting them access to the Admin API, among other things.
|
||||||
- `deactivated` - **bool**, optional. If unspecified, deactivation state will be left unchanged.
|
- `deactivated` - **bool**, optional. If unspecified, deactivation state will be left unchanged.
|
||||||
|
|
||||||
Note: the `password` field must also be set if both of the following are true:
|
Note:
|
||||||
- `deactivated` is set to `false` and the user was previously deactivated (you are reactivating this user)
|
- For the password field there is no strict check of the necessity for its presence.
|
||||||
- Users are allowed to set their password on this homeserver (both `password_config.enabled` and
|
It is possible to have active users without a password, e.g. when authenticating with OIDC is configured.
|
||||||
`password_config.localdb_enabled` config options are set to `true`).
|
You must check yourself whether a password is required when reactivating a user or not.
|
||||||
|
- It is not possible to set a password if the config option `password_config.localdb_enabled` is set `false`.
|
||||||
Users' passwords are wiped upon account deactivation, hence the need to set a new one here.
|
Users' passwords are wiped upon account deactivation, hence the need to set a new one here.
|
||||||
|
|
||||||
Note: a user cannot be erased with this API. For more details on
|
Note: a user cannot be erased with this API. For more details on
|
||||||
|
|
|
@ -24,7 +24,7 @@ To enable this, first create templates for the policy and success pages.
|
||||||
These should be stored on the local filesystem.
|
These should be stored on the local filesystem.
|
||||||
|
|
||||||
These templates use the [Jinja2](http://jinja.pocoo.org) templating language,
|
These templates use the [Jinja2](http://jinja.pocoo.org) templating language,
|
||||||
and [docs/privacy_policy_templates](https://github.com/matrix-org/synapse/tree/develop/docs/privacy_policy_templates/)
|
and [docs/privacy_policy_templates](https://github.com/element-hq/synapse/tree/develop/docs/privacy_policy_templates/)
|
||||||
gives examples of the sort of thing that can be done.
|
gives examples of the sort of thing that can be done.
|
||||||
|
|
||||||
Note that the templates must be stored under a name giving the language of the
|
Note that the templates must be stored under a name giving the language of the
|
||||||
|
|
|
@ -4,14 +4,16 @@ This document aims to get you started with contributing to Synapse!
|
||||||
|
|
||||||
# 1. Who can contribute to Synapse?
|
# 1. Who can contribute to Synapse?
|
||||||
|
|
||||||
Everyone is welcome to contribute code to [matrix.org
|
Everyone is welcome to contribute code to
|
||||||
projects](https://github.com/matrix-org), provided that they are willing to
|
[Synapse](https://github.com/element-hq/synapse), provided that they are willing
|
||||||
license their contributions under the same license as the project itself. We
|
to license their contributions to Element under a [Contributor License
|
||||||
follow a simple 'inbound=outbound' model for contributions: the act of
|
Agreement](https://cla-assistant.io/element-hq/synapse) (CLA). This ensures that
|
||||||
submitting an 'inbound' contribution means that the contributor agrees to
|
their contribution will be made available under an OSI-approved open-source
|
||||||
license the code under the same terms as the project's overall 'outbound'
|
license, currently Affero General Public License v3 (AGPLv3).
|
||||||
license - in our case, this is almost always Apache Software License v2 (see
|
|
||||||
[LICENSE](https://github.com/matrix-org/synapse/blob/develop/LICENSE)).
|
Please see the
|
||||||
|
[Element blog post](https://element.io/blog/synapse-now-lives-at-github-com-element-hq-synapse/)
|
||||||
|
for the full rationale.
|
||||||
|
|
||||||
# 2. What do I need?
|
# 2. What do I need?
|
||||||
|
|
||||||
|
@ -97,8 +99,8 @@ Now edit `homeserver.yaml`, things you might want to change include:
|
||||||
|
|
||||||
- Set a `server_name`
|
- Set a `server_name`
|
||||||
- Adjusting paths to be correct for your system like the `log_config` to point to the log config you just copied
|
- Adjusting paths to be correct for your system like the `log_config` to point to the log config you just copied
|
||||||
- Using a [PostgreSQL database instead of SQLite](https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#database)
|
- Using a [PostgreSQL database instead of SQLite](https://vector-im.github.io/synapse/latest/usage/configuration/config_documentation.html#database)
|
||||||
- Adding a [`registration_shared_secret`](https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#registration_shared_secret) so you can use [`register_new_matrix_user` command](https://matrix-org.github.io/synapse/latest/setup/installation.html#registering-a-user).
|
- Adding a [`registration_shared_secret`](https://vector-im.github.io/synapse/latest/usage/configuration/config_documentation.html#registration_shared_secret) so you can use [`register_new_matrix_user` command](https://vector-im.github.io/synapse/latest/setup/installation.html#registering-a-user).
|
||||||
|
|
||||||
And then run Synapse with the following command:
|
And then run Synapse with the following command:
|
||||||
|
|
||||||
|
@ -122,22 +124,22 @@ Join our developer community on Matrix: [#synapse-dev:matrix.org](https://matrix
|
||||||
|
|
||||||
# 6. Pick an issue.
|
# 6. Pick an issue.
|
||||||
|
|
||||||
Fix your favorite problem or perhaps find a [Good First Issue](https://github.com/matrix-org/synapse/issues?q=is%3Aopen+is%3Aissue+label%3A%22Good+First+Issue%22)
|
Fix your favorite problem or perhaps find a [Good First Issue](https://github.com/element-hq/synapse/issues?q=is%3Aopen+is%3Aissue+label%3A%22Good+First+Issue%22)
|
||||||
to work on.
|
to work on.
|
||||||
|
|
||||||
|
|
||||||
# 7. Turn coffee into code and documentation!
|
# 7. Turn coffee into code and documentation!
|
||||||
|
|
||||||
There is a growing amount of documentation located in the
|
There is a growing amount of documentation located in the
|
||||||
[`docs`](https://github.com/matrix-org/synapse/tree/develop/docs)
|
[`docs`](https://github.com/element-hq/synapse/tree/develop/docs)
|
||||||
directory, with a rendered version [available online](https://matrix-org.github.io/synapse).
|
directory, with a rendered version [available online](https://vector-im.github.io/synapse).
|
||||||
This documentation is intended primarily for sysadmins running their
|
This documentation is intended primarily for sysadmins running their
|
||||||
own Synapse instance, as well as developers interacting externally with
|
own Synapse instance, as well as developers interacting externally with
|
||||||
Synapse.
|
Synapse.
|
||||||
[`docs/development`](https://github.com/matrix-org/synapse/tree/develop/docs/development)
|
[`docs/development`](https://github.com/element-hq/synapse/tree/develop/docs/development)
|
||||||
exists primarily to house documentation for
|
exists primarily to house documentation for
|
||||||
Synapse developers.
|
Synapse developers.
|
||||||
[`docs/admin_api`](https://github.com/matrix-org/synapse/tree/develop/docs/admin_api) houses documentation
|
[`docs/admin_api`](https://github.com/element-hq/synapse/tree/develop/docs/admin_api) houses documentation
|
||||||
regarding Synapse's Admin API, which is used mostly by sysadmins and external
|
regarding Synapse's Admin API, which is used mostly by sysadmins and external
|
||||||
service developers.
|
service developers.
|
||||||
|
|
||||||
|
@ -147,14 +149,10 @@ options and documentation](../code_style.md#configuration-code-and-documentation
|
||||||
|
|
||||||
We welcome improvements and additions to our documentation itself! When
|
We welcome improvements and additions to our documentation itself! When
|
||||||
writing new pages, please
|
writing new pages, please
|
||||||
[build `docs` to a book](https://github.com/matrix-org/synapse/tree/develop/docs#adding-to-the-documentation)
|
[build `docs` to a book](https://github.com/element-hq/synapse/tree/develop/docs#adding-to-the-documentation)
|
||||||
to check that your contributions render correctly. The docs are written in
|
to check that your contributions render correctly. The docs are written in
|
||||||
[GitHub-Flavoured Markdown](https://guides.github.com/features/mastering-markdown/).
|
[GitHub-Flavoured Markdown](https://guides.github.com/features/mastering-markdown/).
|
||||||
|
|
||||||
Some documentation also exists in [Synapse's GitHub
|
|
||||||
Wiki](https://github.com/matrix-org/synapse/wiki), although this is primarily
|
|
||||||
contributed to by community authors.
|
|
||||||
|
|
||||||
When changes are made to any Rust code then you must call either `poetry install`
|
When changes are made to any Rust code then you must call either `poetry install`
|
||||||
or `maturin develop` (if installed) to rebuild the Rust code. Using [`maturin`](https://github.com/PyO3/maturin)
|
or `maturin develop` (if installed) to rebuild the Rust code. Using [`maturin`](https://github.com/PyO3/maturin)
|
||||||
is quicker than `poetry install`, so is recommended when making frequent
|
is quicker than `poetry install`, so is recommended when making frequent
|
||||||
|
@ -331,7 +329,7 @@ This configuration should generally cover your needs.
|
||||||
- To run with Postgres, supply the `-e POSTGRES=1 -e MULTI_POSTGRES=1` environment flags.
|
- To run with Postgres, supply the `-e POSTGRES=1 -e MULTI_POSTGRES=1` environment flags.
|
||||||
- To run with Synapse in worker mode, supply the `-e WORKERS=1 -e REDIS=1` environment flags (in addition to the Postgres flags).
|
- To run with Synapse in worker mode, supply the `-e WORKERS=1 -e REDIS=1` environment flags (in addition to the Postgres flags).
|
||||||
|
|
||||||
For more details about other configurations, see the [Docker-specific documentation in the SyTest repo](https://github.com/matrix-org/sytest/blob/develop/docker/README.md).
|
For more details about other configurations, see the [Docker-specific documentation in the SyTest repo](https://github.com/vector-im/sytest/blob/develop/docker/README.md).
|
||||||
|
|
||||||
|
|
||||||
## Run the integration tests ([Complement](https://github.com/matrix-org/complement)).
|
## Run the integration tests ([Complement](https://github.com/matrix-org/complement)).
|
||||||
|
@ -365,7 +363,7 @@ The above will run a monolithic (single-process) Synapse with SQLite as the data
|
||||||
- If setting `WORKERS=1`, optionally set `WORKER_TYPES=` to declare which worker
|
- If setting `WORKERS=1`, optionally set `WORKER_TYPES=` to declare which worker
|
||||||
types you wish to test. A simple comma-delimited string containing the worker types
|
types you wish to test. A simple comma-delimited string containing the worker types
|
||||||
defined from the `WORKERS_CONFIG` template in
|
defined from the `WORKERS_CONFIG` template in
|
||||||
[here](https://github.com/matrix-org/synapse/blob/develop/docker/configure_workers_and_start.py#L54).
|
[here](https://github.com/element-hq/synapse/blob/develop/docker/configure_workers_and_start.py#L54).
|
||||||
A safe example would be `WORKER_TYPES="federation_inbound, federation_sender, synchrotron"`.
|
A safe example would be `WORKER_TYPES="federation_inbound, federation_sender, synchrotron"`.
|
||||||
See the [worker documentation](../workers.md) for additional information on workers.
|
See the [worker documentation](../workers.md) for additional information on workers.
|
||||||
- Passing `ASYNCIO_REACTOR=1` as an environment variable to use the Twisted asyncio reactor instead of the default one.
|
- Passing `ASYNCIO_REACTOR=1` as an environment variable to use the Twisted asyncio reactor instead of the default one.
|
||||||
|
@ -434,7 +432,7 @@ in the format of `PRnumber.type`. The type can be one of the following:
|
||||||
* `misc` (for internal-only changes)
|
* `misc` (for internal-only changes)
|
||||||
|
|
||||||
This file will become part of our [changelog](
|
This file will become part of our [changelog](
|
||||||
https://github.com/matrix-org/synapse/blob/master/CHANGES.md) at the next
|
https://github.com/element-hq/synapse/blob/master/CHANGES.md) at the next
|
||||||
release, so the content of the file should be a short description of your
|
release, so the content of the file should be a short description of your
|
||||||
change in the same style as the rest of the changelog. The file can contain Markdown
|
change in the same style as the rest of the changelog. The file can contain Markdown
|
||||||
formatting, and must end with a full stop (.) or an exclamation mark (!) for
|
formatting, and must end with a full stop (.) or an exclamation mark (!) for
|
||||||
|
@ -466,7 +464,7 @@ There are two options for solving this:
|
||||||
add the changelog file to your branch, or:
|
add the changelog file to your branch, or:
|
||||||
|
|
||||||
1. Look at the [list of all
|
1. Look at the [list of all
|
||||||
issues/PRs](https://github.com/matrix-org/synapse/issues?q=), add one to the
|
issues/PRs](https://github.com/element-hq/synapse/issues?q=), add one to the
|
||||||
highest number you see, and quickly open the PR before somebody else claims
|
highest number you see, and quickly open the PR before somebody else claims
|
||||||
your number.
|
your number.
|
||||||
|
|
||||||
|
@ -501,81 +499,19 @@ separate pull requests.)
|
||||||
|
|
||||||
## Sign off
|
## Sign off
|
||||||
|
|
||||||
In order to have a concrete record that your contribution is intentional
|
After you make a PR a comment from @CLAassistant will appear asking you to sign
|
||||||
and you agree to license it under the same terms as the project's license, we've adopted the
|
the [CLA](https://cla-assistant.io/element-hq/synapse).
|
||||||
same lightweight approach that the Linux Kernel
|
This will link a page to allow you to confirm that you have read and agreed to
|
||||||
[submitting patches process](
|
the CLA by signing in with GitHub.
|
||||||
https://www.kernel.org/doc/html/latest/process/submitting-patches.html#sign-your-work-the-developer-s-certificate-of-origin>),
|
|
||||||
[Docker](https://github.com/docker/docker/blob/master/CONTRIBUTING.md), and many other
|
|
||||||
projects use: the DCO ([Developer Certificate of Origin](http://developercertificate.org/)).
|
|
||||||
This is a simple declaration that you wrote
|
|
||||||
the contribution or otherwise have the right to contribute it to Matrix:
|
|
||||||
|
|
||||||
```
|
Alternatively, you can sign off before opening a PR by going to
|
||||||
Developer Certificate of Origin
|
<https://cla-assistant.io/element-hq/synapse>.
|
||||||
Version 1.1
|
|
||||||
|
|
||||||
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
|
|
||||||
660 York Street, Suite 102,
|
|
||||||
San Francisco, CA 94110 USA
|
|
||||||
|
|
||||||
Everyone is permitted to copy and distribute verbatim copies of this
|
|
||||||
license document, but changing it is not allowed.
|
|
||||||
|
|
||||||
Developer's Certificate of Origin 1.1
|
|
||||||
|
|
||||||
By making a contribution to this project, I certify that:
|
|
||||||
|
|
||||||
(a) The contribution was created in whole or in part by me and I
|
|
||||||
have the right to submit it under the open source license
|
|
||||||
indicated in the file; or
|
|
||||||
|
|
||||||
(b) The contribution is based upon previous work that, to the best
|
|
||||||
of my knowledge, is covered under an appropriate open source
|
|
||||||
license and I have the right under that license to submit that
|
|
||||||
work with modifications, whether created in whole or in part
|
|
||||||
by me, under the same open source license (unless I am
|
|
||||||
permitted to submit under a different license), as indicated
|
|
||||||
in the file; or
|
|
||||||
|
|
||||||
(c) The contribution was provided directly to me by some other
|
|
||||||
person who certified (a), (b) or (c) and I have not modified
|
|
||||||
it.
|
|
||||||
|
|
||||||
(d) I understand and agree that this project and the contribution
|
|
||||||
are public and that a record of the contribution (including all
|
|
||||||
personal information I submit with it, including my sign-off) is
|
|
||||||
maintained indefinitely and may be redistributed consistent with
|
|
||||||
this project or the open source license(s) involved.
|
|
||||||
```
|
|
||||||
|
|
||||||
If you agree to this for your contribution, then all that's needed is to
|
|
||||||
include the line in your commit or pull request comment:
|
|
||||||
|
|
||||||
```
|
|
||||||
Signed-off-by: Your Name <your@email.example.org>
|
|
||||||
```
|
|
||||||
|
|
||||||
We accept contributions under a legally identifiable name, such as
|
We accept contributions under a legally identifiable name, such as
|
||||||
your name on government documentation or common-law names (names
|
your name on government documentation or common-law names (names
|
||||||
claimed by legitimate usage or repute). Unfortunately, we cannot
|
claimed by legitimate usage or repute). Unfortunately, we cannot
|
||||||
accept anonymous contributions at this time.
|
accept anonymous contributions at this time.
|
||||||
|
|
||||||
Git allows you to add this signoff automatically when using the `-s`
|
|
||||||
flag to `git commit`, which uses the name and email set in your
|
|
||||||
`user.name` and `user.email` git configs.
|
|
||||||
|
|
||||||
### Private Sign off
|
|
||||||
|
|
||||||
If you would like to provide your legal name privately to the Matrix.org
|
|
||||||
Foundation (instead of in a public commit or comment), you can do so
|
|
||||||
by emailing your legal name and a link to the pull request to
|
|
||||||
[dco@matrix.org](mailto:dco@matrix.org?subject=Private%20sign%20off).
|
|
||||||
It helps to include "sign off" or similar in the subject line. You will then
|
|
||||||
be instructed further.
|
|
||||||
|
|
||||||
Once private sign off is complete, doing so for future contributions will not
|
|
||||||
be required.
|
|
||||||
|
|
||||||
# 10. Turn feedback into better code.
|
# 10. Turn feedback into better code.
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
**DO NOT USE THESE DEMO SERVERS IN PRODUCTION**
|
**DO NOT USE THESE DEMO SERVERS IN PRODUCTION**
|
||||||
|
|
||||||
Requires you to have a [Synapse development environment setup](https://matrix-org.github.io/synapse/develop/development/contributing_guide.html#4-install-the-dependencies).
|
Requires you to have a [Synapse development environment setup](https://element-hq.github.io/synapse/develop/development/contributing_guide.html#4-install-the-dependencies).
|
||||||
|
|
||||||
The demo setup allows running three federation Synapse servers, with server
|
The demo setup allows running three federation Synapse servers, with server
|
||||||
names `localhost:8480`, `localhost:8481`, and `localhost:8482`.
|
names `localhost:8480`, `localhost:8481`, and `localhost:8482`.
|
||||||
|
|
|
@ -79,9 +79,9 @@ phonenumbers = [
|
||||||
We can see this pinned version inside the docker image for that release:
|
We can see this pinned version inside the docker image for that release:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ docker pull matrixdotorg/synapse:v1.57.0
|
$ docker pull vectorim/synapse:v1.97.0
|
||||||
...
|
...
|
||||||
$ docker run --entrypoint pip matrixdotorg/synapse:v1.57.0 show phonenumbers
|
$ docker run --entrypoint pip vectorim/synapse:v1.97.0 show phonenumbers
|
||||||
Name: phonenumbers
|
Name: phonenumbers
|
||||||
Version: 8.12.44
|
Version: 8.12.44
|
||||||
Summary: Python version of Google's common library for parsing, formatting, storing and validating international phone numbers.
|
Summary: Python version of Google's common library for parsing, formatting, storing and validating international phone numbers.
|
||||||
|
|
|
@ -14,11 +14,11 @@ b2dba0607`:
|
||||||
Note how the commit comment explains clearly what is changing and why. Also
|
Note how the commit comment explains clearly what is changing and why. Also
|
||||||
note the *absence* of merge commits, as well as the absence of commits called
|
note the *absence* of merge commits, as well as the absence of commits called
|
||||||
things like (to pick a few culprits):
|
things like (to pick a few culprits):
|
||||||
[“pep8”](https://github.com/matrix-org/synapse/commit/84691da6c), [“fix broken
|
[“pep8”](https://github.com/element-hq/synapse/commit/84691da6c), [“fix broken
|
||||||
test”](https://github.com/matrix-org/synapse/commit/474810d9d),
|
test”](https://github.com/element-hq/synapse/commit/474810d9d),
|
||||||
[“oops”](https://github.com/matrix-org/synapse/commit/c9d72e457),
|
[“oops”](https://github.com/element-hq/synapse/commit/c9d72e457),
|
||||||
[“typo”](https://github.com/matrix-org/synapse/commit/836358823), or [“Who's
|
[“typo”](https://github.com/element-hq/synapse/commit/836358823), or [“Who's
|
||||||
the president?”](https://github.com/matrix-org/synapse/commit/707374d5d).
|
the president?”](https://github.com/element-hq/synapse/commit/707374d5d).
|
||||||
|
|
||||||
There are a number of reasons why keeping a clean commit history is a good
|
There are a number of reasons why keeping a clean commit history is a good
|
||||||
thing:
|
thing:
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
## Streams
|
## Streams
|
||||||
|
|
||||||
Synapse has a concept of "streams", which are roughly described in [`id_generators.py`](
|
Synapse has a concept of "streams", which are roughly described in [`id_generators.py`](
|
||||||
https://github.com/matrix-org/synapse/blob/develop/synapse/storage/util/id_generators.py
|
https://github.com/element-hq/synapse/blob/develop/synapse/storage/util/id_generators.py
|
||||||
).
|
).
|
||||||
Generally speaking, streams are a series of notifications that something in Synapse's database has changed that the application might need to respond to.
|
Generally speaking, streams are a series of notifications that something in Synapse's database has changed that the application might need to respond to.
|
||||||
For example:
|
For example:
|
||||||
|
@ -11,12 +11,12 @@ For example:
|
||||||
- The to-device stream reports when a device has a new [to-device message](https://spec.matrix.org/v1.7/client-server-api/#send-to-device-messaging).
|
- The to-device stream reports when a device has a new [to-device message](https://spec.matrix.org/v1.7/client-server-api/#send-to-device-messaging).
|
||||||
|
|
||||||
See [`synapse.replication.tcp.streams`](
|
See [`synapse.replication.tcp.streams`](
|
||||||
https://github.com/matrix-org/synapse/blob/develop/synapse/replication/tcp/streams/__init__.py
|
https://github.com/element-hq/synapse/blob/develop/synapse/replication/tcp/streams/__init__.py
|
||||||
) for the full list of streams.
|
) for the full list of streams.
|
||||||
|
|
||||||
It is very helpful to understand the streams mechanism when working on any part of Synapse that needs to respond to changes—especially if those changes are made by different workers.
|
It is very helpful to understand the streams mechanism when working on any part of Synapse that needs to respond to changes—especially if those changes are made by different workers.
|
||||||
To that end, let's describe streams formally, paraphrasing from the docstring of [`AbstractStreamIdGenerator`](
|
To that end, let's describe streams formally, paraphrasing from the docstring of [`AbstractStreamIdGenerator`](
|
||||||
https://github.com/matrix-org/synapse/blob/a719b703d9bd0dade2565ddcad0e2f3a7a9d4c37/synapse/storage/util/id_generators.py#L96
|
https://github.com/element-hq/synapse/blob/a719b703d9bd0dade2565ddcad0e2f3a7a9d4c37/synapse/storage/util/id_generators.py#L96
|
||||||
).
|
).
|
||||||
|
|
||||||
### Definition
|
### Definition
|
||||||
|
|
|
@ -64,4 +64,4 @@ release of Synapse.
|
||||||
If you want to get up and running quickly with a trio of homeservers in a
|
If you want to get up and running quickly with a trio of homeservers in a
|
||||||
private federation, there is a script in the `demo` directory. This is mainly
|
private federation, there is a script in the `demo` directory. This is mainly
|
||||||
useful just for development purposes. See
|
useful just for development purposes. See
|
||||||
[demo scripts](https://matrix-org.github.io/synapse/develop/development/demo.html).
|
[demo scripts](https://element-hq.github.io/synapse/develop/development/demo.html).
|
||||||
|
|
|
@ -38,7 +38,7 @@ docker run -d --name synapse \
|
||||||
--mount type=volume,src=synapse-data,dst=/data \
|
--mount type=volume,src=synapse-data,dst=/data \
|
||||||
-p 8008:8008 \
|
-p 8008:8008 \
|
||||||
-p 127.0.0.1:9000:9000 \
|
-p 127.0.0.1:9000:9000 \
|
||||||
matrixdotorg/synapse:latest
|
vectorim/synapse:latest
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Native config
|
#### Native config
|
||||||
|
|
|
@ -87,8 +87,8 @@
|
||||||
|
|
||||||
1. Restart Prometheus.
|
1. Restart Prometheus.
|
||||||
|
|
||||||
1. Consider using the [grafana dashboard](https://github.com/matrix-org/synapse/tree/master/contrib/grafana/)
|
1. Consider using the [grafana dashboard](https://github.com/element-hq/synapse/tree/master/contrib/grafana/)
|
||||||
and required [recording rules](https://github.com/matrix-org/synapse/tree/master/contrib/prometheus/)
|
and required [recording rules](https://github.com/element-hq/synapse/tree/master/contrib/prometheus/)
|
||||||
|
|
||||||
## Monitoring workers
|
## Monitoring workers
|
||||||
|
|
||||||
|
|
|
@ -224,7 +224,7 @@ wishing this callback to be called on every profile change are encouraged to dis
|
||||||
per-room profiles globally using the `allow_per_room_profiles` configuration setting in
|
per-room profiles globally using the `allow_per_room_profiles` configuration setting in
|
||||||
Synapse's configuration file.
|
Synapse's configuration file.
|
||||||
This callback is not called when registering a user, even when setting it through the
|
This callback is not called when registering a user, even when setting it through the
|
||||||
[`get_displayname_for_registration`](https://matrix-org.github.io/synapse/latest/modules/password_auth_provider_callbacks.html#get_displayname_for_registration)
|
[`get_displayname_for_registration`](https://element-hq.github.io/synapse/latest/modules/password_auth_provider_callbacks.html#get_displayname_for_registration)
|
||||||
module callback.
|
module callback.
|
||||||
|
|
||||||
If multiple modules implement this callback, Synapse runs them all in order.
|
If multiple modules implement this callback, Synapse runs them all in order.
|
||||||
|
|
|
@ -10,7 +10,7 @@ either the output of the module's `parse_config` static method (see below), or t
|
||||||
configuration associated with the module in Synapse's configuration file.
|
configuration associated with the module in Synapse's configuration file.
|
||||||
|
|
||||||
See the documentation for the `ModuleApi` class
|
See the documentation for the `ModuleApi` class
|
||||||
[here](https://github.com/matrix-org/synapse/blob/master/synapse/module_api/__init__.py).
|
[here](https://github.com/element-hq/synapse/blob/master/synapse/module_api/__init__.py).
|
||||||
|
|
||||||
## When Synapse runs with several modules configured
|
## When Synapse runs with several modules configured
|
||||||
|
|
||||||
|
@ -82,7 +82,7 @@ the callback name as the argument name and the function as its value. A
|
||||||
`register_[...]_callbacks` method exists for each category.
|
`register_[...]_callbacks` method exists for each category.
|
||||||
|
|
||||||
Callbacks for each category can be found on their respective page of the
|
Callbacks for each category can be found on their respective page of the
|
||||||
[Synapse documentation website](https://matrix-org.github.io/synapse).
|
[Synapse documentation website](https://element-hq.github.io/synapse).
|
||||||
|
|
||||||
## Caching
|
## Caching
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
# This file is maintained as an up-to-date snapshot of the default
|
# This file is maintained as an up-to-date snapshot of the default
|
||||||
# homeserver.yaml configuration generated by Synapse. You can find a
|
# homeserver.yaml configuration generated by Synapse. You can find a
|
||||||
# complete accounting of possible configuration options at
|
# complete accounting of possible configuration options at
|
||||||
# https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html
|
# https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html
|
||||||
#
|
#
|
||||||
# It is *not* intended to be copied and used as the basis for a real
|
# It is *not* intended to be copied and used as the basis for a real
|
||||||
# homeserver.yaml. Instead, if you are starting from scratch, please generate
|
# homeserver.yaml. Instead, if you are starting from scratch, please generate
|
||||||
# a fresh config using Synapse by following the instructions in
|
# a fresh config using Synapse by following the instructions in
|
||||||
# https://matrix-org.github.io/synapse/latest/setup/installation.html.
|
# https://element-hq.github.io/synapse/latest/setup/installation.html.
|
||||||
#
|
#
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@
|
||||||
#
|
#
|
||||||
# For more information on how to configure Synapse, including a complete accounting of
|
# For more information on how to configure Synapse, including a complete accounting of
|
||||||
# each option, go to docs/usage/configuration/config_documentation.md or
|
# each option, go to docs/usage/configuration/config_documentation.md or
|
||||||
# https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html
|
# https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html
|
||||||
server_name: "SERVERNAME"
|
server_name: "SERVERNAME"
|
||||||
pid_file: DATADIR/homeserver.pid
|
pid_file: DATADIR/homeserver.pid
|
||||||
listeners:
|
listeners:
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
# be ingested by ELK stacks. See [2] for details.
|
# be ingested by ELK stacks. See [2] for details.
|
||||||
#
|
#
|
||||||
# [1]: https://docs.python.org/3/library/logging.config.html#configuration-dictionary-schema
|
# [1]: https://docs.python.org/3/library/logging.config.html#configuration-dictionary-schema
|
||||||
# [2]: https://matrix-org.github.io/synapse/latest/structured_logging.html
|
# [2]: https://element-hq.github.io/synapse/latest/structured_logging.html
|
||||||
|
|
||||||
version: 1
|
version: 1
|
||||||
|
|
||||||
|
|
|
@ -44,14 +44,16 @@ section, which should look like this:
|
||||||
server_notices:
|
server_notices:
|
||||||
system_mxid_localpart: server
|
system_mxid_localpart: server
|
||||||
system_mxid_display_name: "Server Notices"
|
system_mxid_display_name: "Server Notices"
|
||||||
system_mxid_avatar_url: "mxc://server.com/oumMVlgDnLYFaPVkExemNVVZ"
|
system_mxid_avatar_url: "mxc://example.com/oumMVlgDnLYFaPVkExemNVVZ"
|
||||||
room_name: "Server Notices"
|
room_name: "Server Notices"
|
||||||
|
room_avatar_url: "mxc://example.com/oumMVlgDnLYFaPVkExemNVVZ"
|
||||||
|
room_topic: "Room used by your server admin to notice you of important information"
|
||||||
auto_join: true
|
auto_join: true
|
||||||
```
|
```
|
||||||
|
|
||||||
The only compulsory setting is `system_mxid_localpart`, which defines the user
|
The only compulsory setting is `system_mxid_localpart`, which defines the user
|
||||||
id of the Server Notices user, as above. `room_name` defines the name of the
|
id of the Server Notices user, as above. `room_name` defines the name of the
|
||||||
room which will be created.
|
room which will be created, `room_avatar_url` its avatar and `room_topic` its topic.
|
||||||
|
|
||||||
`system_mxid_display_name` and `system_mxid_avatar_url` can be used to set the
|
`system_mxid_display_name` and `system_mxid_avatar_url` can be used to set the
|
||||||
displayname and avatar of the Server Notices user.
|
displayname and avatar of the Server Notices user.
|
||||||
|
|
|
@ -26,9 +26,9 @@ for most users.
|
||||||
#### Docker images and Ansible playbooks
|
#### Docker images and Ansible playbooks
|
||||||
|
|
||||||
There is an official synapse image available at
|
There is an official synapse image available at
|
||||||
<https://hub.docker.com/r/matrixdotorg/synapse> or at [`ghcr.io/matrix-org/synapse`](https://ghcr.io/matrix-org/synapse)
|
<https://hub.docker.com/r/vectorim/synapse> or at [`ghcr.io/element-hq/synapse`](https://ghcr.io/element-hq/synapse)
|
||||||
which can be used with the docker-compose file available at
|
which can be used with the docker-compose file available at
|
||||||
[contrib/docker](https://github.com/matrix-org/synapse/tree/develop/contrib/docker).
|
[contrib/docker](https://github.com/element-hq/synapse/tree/develop/contrib/docker).
|
||||||
Further information on this including configuration options is available in the README
|
Further information on this including configuration options is available in the README
|
||||||
on hub.docker.com.
|
on hub.docker.com.
|
||||||
|
|
||||||
|
@ -52,6 +52,8 @@ architecture via <https://packages.matrix.org/debian/>.
|
||||||
|
|
||||||
To install the latest release:
|
To install the latest release:
|
||||||
|
|
||||||
|
TODO UPDATE ALL THIS
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo apt install -y lsb-release wget apt-transport-https
|
sudo apt install -y lsb-release wget apt-transport-https
|
||||||
sudo wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg
|
sudo wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg
|
||||||
|
|
|
@ -115,7 +115,7 @@ A custom mapping provider must specify the following methods:
|
||||||
|
|
||||||
Synapse has a built-in OpenID mapping provider if a custom provider isn't
|
Synapse has a built-in OpenID mapping provider if a custom provider isn't
|
||||||
specified in the config. It is located at
|
specified in the config. It is located at
|
||||||
[`synapse.handlers.oidc.JinjaOidcMappingProvider`](https://github.com/matrix-org/synapse/blob/develop/synapse/handlers/oidc.py).
|
[`synapse.handlers.oidc.JinjaOidcMappingProvider`](https://github.com/element-hq/synapse/blob/develop/synapse/handlers/oidc.py).
|
||||||
|
|
||||||
## SAML Mapping Providers
|
## SAML Mapping Providers
|
||||||
|
|
||||||
|
@ -202,4 +202,4 @@ A custom mapping provider must specify the following methods:
|
||||||
|
|
||||||
Synapse has a built-in SAML mapping provider if a custom provider isn't
|
Synapse has a built-in SAML mapping provider if a custom provider isn't
|
||||||
specified in the config. It is located at
|
specified in the config. It is located at
|
||||||
[`synapse.handlers.saml.DefaultSamlMappingProvider`](https://github.com/matrix-org/synapse/blob/develop/synapse/handlers/saml.py).
|
[`synapse.handlers.saml.DefaultSamlMappingProvider`](https://github.com/element-hq/synapse/blob/develop/synapse/handlers/saml.py).
|
||||||
|
|
|
@ -6,10 +6,10 @@ well as a `matrix-synapse-worker@` service template for any workers you
|
||||||
require. Additionally, to group the required services, it sets up a
|
require. Additionally, to group the required services, it sets up a
|
||||||
`matrix-synapse.target`.
|
`matrix-synapse.target`.
|
||||||
|
|
||||||
See the folder [system](https://github.com/matrix-org/synapse/tree/develop/docs/systemd-with-workers/system/)
|
See the folder [system](https://github.com/element-hq/synapse/tree/develop/docs/systemd-with-workers/system/)
|
||||||
for the systemd unit files.
|
for the systemd unit files.
|
||||||
|
|
||||||
The folder [workers](https://github.com/matrix-org/synapse/tree/develop/docs/systemd-with-workers/workers/)
|
The folder [workers](https://github.com/element-hq/synapse/tree/develop/docs/systemd-with-workers/workers/)
|
||||||
contains an example configuration for the `generic_worker` worker.
|
contains an example configuration for the `generic_worker` worker.
|
||||||
|
|
||||||
## Synapse configuration files
|
## Synapse configuration files
|
||||||
|
@ -33,7 +33,7 @@ There is no need for a separate configuration file for the master process.
|
||||||
## Set up
|
## Set up
|
||||||
|
|
||||||
1. Adjust synapse configuration files as above.
|
1. Adjust synapse configuration files as above.
|
||||||
1. Copy the `*.service` and `*.target` files in [system](https://github.com/matrix-org/synapse/tree/develop/docs/systemd-with-workers/system/)
|
1. Copy the `*.service` and `*.target` files in [system](https://github.com/element-hq/synapse/tree/develop/docs/systemd-with-workers/system/)
|
||||||
to `/etc/systemd/system`.
|
to `/etc/systemd/system`.
|
||||||
1. Run `systemctl daemon-reload` to tell systemd to load the new unit files.
|
1. Run `systemctl daemon-reload` to tell systemd to load the new unit files.
|
||||||
1. Run `systemctl enable matrix-synapse.service`. This will configure the
|
1. Run `systemctl enable matrix-synapse.service`. This will configure the
|
||||||
|
@ -74,7 +74,7 @@ systemctl restart matrix-synapse.target
|
||||||
|
|
||||||
**Optional:** If further hardening is desired, the file
|
**Optional:** If further hardening is desired, the file
|
||||||
`override-hardened.conf` may be copied from
|
`override-hardened.conf` may be copied from
|
||||||
[contrib/systemd/override-hardened.conf](https://github.com/matrix-org/synapse/tree/develop/contrib/systemd/)
|
[contrib/systemd/override-hardened.conf](https://github.com/element-hq/synapse/tree/develop/contrib/systemd/)
|
||||||
in this repository to the location
|
in this repository to the location
|
||||||
`/etc/systemd/system/matrix-synapse.service.d/override-hardened.conf` (the
|
`/etc/systemd/system/matrix-synapse.service.d/override-hardened.conf` (the
|
||||||
directory may have to be created). It enables certain sandboxing features in
|
directory may have to be created). It enables certain sandboxing features in
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
Synapse uses parametrised templates to generate the content of emails it sends and
|
Synapse uses parametrised templates to generate the content of emails it sends and
|
||||||
webpages it shows to users.
|
webpages it shows to users.
|
||||||
|
|
||||||
By default, Synapse will use the templates listed [here](https://github.com/matrix-org/synapse/tree/master/synapse/res/templates).
|
By default, Synapse will use the templates listed [here](https://github.com/element-hq/synapse/tree/master/synapse/res/templates).
|
||||||
Server admins can configure an additional directory for Synapse to look for templates
|
Server admins can configure an additional directory for Synapse to look for templates
|
||||||
in, allowing them to specify custom templates:
|
in, allowing them to specify custom templates:
|
||||||
|
|
||||||
|
|
|
@ -144,9 +144,9 @@ packages or Docker images, no action is required.
|
||||||
As mentioned previously in [Upgrading to v1.84.0](#upgrading-to-v1840), the following deprecated settings
|
As mentioned previously in [Upgrading to v1.84.0](#upgrading-to-v1840), the following deprecated settings
|
||||||
are being removed in this release of Synapse:
|
are being removed in this release of Synapse:
|
||||||
|
|
||||||
* [`worker_replication_host`](https://matrix-org.github.io/synapse/v1.86/usage/configuration/config_documentation.html#worker_replication_host)
|
* [`worker_replication_host`](https://element-hq.github.io/synapse/v1.86/usage/configuration/config_documentation.html#worker_replication_host)
|
||||||
* [`worker_replication_http_port`](https://matrix-org.github.io/synapse/v1.86/usage/configuration/config_documentation.html#worker_replication_http_port)
|
* [`worker_replication_http_port`](https://element-hq.github.io/synapse/v1.86/usage/configuration/config_documentation.html#worker_replication_http_port)
|
||||||
* [`worker_replication_http_tls`](https://matrix-org.github.io/synapse/v1.86/usage/configuration/config_documentation.html#worker_replication_http_tls)
|
* [`worker_replication_http_tls`](https://element-hq.github.io/synapse/v1.86/usage/configuration/config_documentation.html#worker_replication_http_tls)
|
||||||
|
|
||||||
Please ensure that you have migrated to using `main` on your shared configuration's `instance_map`
|
Please ensure that you have migrated to using `main` on your shared configuration's `instance_map`
|
||||||
(or create one if necessary). This is required if you have ***any*** workers at all;
|
(or create one if necessary). This is required if you have ***any*** workers at all;
|
||||||
|
@ -499,7 +499,7 @@ the names of Prometheus metrics.
|
||||||
If you want to test your changes before legacy names are disabled by default,
|
If you want to test your changes before legacy names are disabled by default,
|
||||||
you may specify `enable_legacy_metrics: false` in your homeserver configuration.
|
you may specify `enable_legacy_metrics: false` in your homeserver configuration.
|
||||||
|
|
||||||
A list of affected metrics is available on the [Metrics How-to page](https://matrix-org.github.io/synapse/v1.69/metrics-howto.html?highlight=metrics%20deprecated#renaming-of-metrics--deprecation-of-old-names-in-12).
|
A list of affected metrics is available on the [Metrics How-to page](https://element-hq.github.io/synapse/v1.69/metrics-howto.html?highlight=metrics%20deprecated#renaming-of-metrics--deprecation-of-old-names-in-12).
|
||||||
|
|
||||||
|
|
||||||
## Deprecation of the `generate_short_term_login_token` module API method
|
## Deprecation of the `generate_short_term_login_token` module API method
|
||||||
|
@ -556,7 +556,7 @@ are not affected.
|
||||||
|
|
||||||
Building from a source checkout of Synapse now requires a recent Rust compiler
|
Building from a source checkout of Synapse now requires a recent Rust compiler
|
||||||
(currently Rust 1.58.1, but see also the
|
(currently Rust 1.58.1, but see also the
|
||||||
[Platform Dependency Policy](https://matrix-org.github.io/synapse/latest/deprecation_policy.html)).
|
[Platform Dependency Policy](https://element-hq.github.io/synapse/latest/deprecation_policy.html)).
|
||||||
|
|
||||||
Installations using
|
Installations using
|
||||||
|
|
||||||
|
@ -626,7 +626,7 @@ homeserver administrators more notice of the change.
|
||||||
To continue to allow users to add email addresses to their homeserver accounts,
|
To continue to allow users to add email addresses to their homeserver accounts,
|
||||||
and perform password resets, make sure that Synapse is configured with a working
|
and perform password resets, make sure that Synapse is configured with a working
|
||||||
email server in the [`email` configuration
|
email server in the [`email` configuration
|
||||||
section](https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#email)
|
section](https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html#email)
|
||||||
(including, at a minimum, a `notif_from` setting.)
|
(including, at a minimum, a `notif_from` setting.)
|
||||||
|
|
||||||
Specifying an `email` setting under `account_threepid_delegates` will now cause
|
Specifying an `email` setting under `account_threepid_delegates` will now cause
|
||||||
|
@ -639,7 +639,7 @@ an error at startup.
|
||||||
Synapse v1.66.0 will remove the ability to delegate the tasks of verifying email address ownership, and password reset confirmation, to an identity server.
|
Synapse v1.66.0 will remove the ability to delegate the tasks of verifying email address ownership, and password reset confirmation, to an identity server.
|
||||||
|
|
||||||
If you require your homeserver to verify e-mail addresses or to support password resets via e-mail, please configure your homeserver with SMTP access so that it can send e-mails on its own behalf.
|
If you require your homeserver to verify e-mail addresses or to support password resets via e-mail, please configure your homeserver with SMTP access so that it can send e-mails on its own behalf.
|
||||||
[Consult the configuration documentation for more information.](https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#email)
|
[Consult the configuration documentation for more information.](https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html#email)
|
||||||
|
|
||||||
The option that will be removed is `account_threepid_delegates.email`.
|
The option that will be removed is `account_threepid_delegates.email`.
|
||||||
|
|
||||||
|
@ -849,7 +849,7 @@ The names of user devices are no longer visible to users on other homeservers by
|
||||||
Device IDs are unaffected, as these are necessary to facilitate end-to-end encryption.
|
Device IDs are unaffected, as these are necessary to facilitate end-to-end encryption.
|
||||||
|
|
||||||
To re-enable this functionality, set the
|
To re-enable this functionality, set the
|
||||||
[`allow_device_name_lookup_over_federation`](https://matrix-org.github.io/synapse/v1.59/usage/configuration/config_documentation.html#federation)
|
[`allow_device_name_lookup_over_federation`](https://element-hq.github.io/synapse/v1.59/usage/configuration/config_documentation.html#federation)
|
||||||
homeserver config option to `true`.
|
homeserver config option to `true`.
|
||||||
|
|
||||||
|
|
||||||
|
@ -968,7 +968,7 @@ experimental_features:
|
||||||
|
|
||||||
Synapse now refuses to start when using PostgreSQL with non-`C` values for `COLLATE` and
|
Synapse now refuses to start when using PostgreSQL with non-`C` values for `COLLATE` and
|
||||||
`CTYPE` unless the config flag `allow_unsafe_locale`, found in the database section of
|
`CTYPE` unless the config flag `allow_unsafe_locale`, found in the database section of
|
||||||
the configuration file, is set to `true`. See the [PostgreSQL documentation](https://matrix-org.github.io/synapse/latest/postgres.html#fixing-incorrect-collate-or-ctype)
|
the configuration file, is set to `true`. See the [PostgreSQL documentation](https://element-hq.github.io/synapse/latest/postgres.html#fixing-incorrect-collate-or-ctype)
|
||||||
for more information and instructions on how to fix a database with incorrect values.
|
for more information and instructions on how to fix a database with incorrect values.
|
||||||
|
|
||||||
# Upgrading to v1.55.0
|
# Upgrading to v1.55.0
|
||||||
|
@ -1007,7 +1007,7 @@ please upgrade Mjolnir to version 1.3.2 or later before upgrading Synapse.
|
||||||
This release removes support for the `structured: true` logging configuration
|
This release removes support for the `structured: true` logging configuration
|
||||||
which was deprecated in Synapse v1.23.0. If your logging configuration contains
|
which was deprecated in Synapse v1.23.0. If your logging configuration contains
|
||||||
`structured: true` then it should be modified based on the
|
`structured: true` then it should be modified based on the
|
||||||
[structured logging documentation](https://matrix-org.github.io/synapse/v1.56/structured_logging.html#upgrading-from-legacy-structured-logging-configuration).
|
[structured logging documentation](https://element-hq.github.io/synapse/v1.56/structured_logging.html#upgrading-from-legacy-structured-logging-configuration).
|
||||||
|
|
||||||
# Upgrading to v1.53.0
|
# Upgrading to v1.53.0
|
||||||
|
|
||||||
|
@ -1067,10 +1067,10 @@ are now active by default.
|
||||||
As announced with the release of [Synapse 1.47.0](#deprecation-of-the-user_may_create_room_with_invites-module-callback),
|
As announced with the release of [Synapse 1.47.0](#deprecation-of-the-user_may_create_room_with_invites-module-callback),
|
||||||
the deprecated `user_may_create_room_with_invites` module callback has been removed.
|
the deprecated `user_may_create_room_with_invites` module callback has been removed.
|
||||||
|
|
||||||
Modules relying on it can instead implement [`user_may_invite`](https://matrix-org.github.io/synapse/latest/modules/spam_checker_callbacks.html#user_may_invite)
|
Modules relying on it can instead implement [`user_may_invite`](https://element-hq.github.io/synapse/latest/modules/spam_checker_callbacks.html#user_may_invite)
|
||||||
and use the [`get_room_state`](https://github.com/matrix-org/synapse/blob/872f23b95fa980a61b0866c1475e84491991fa20/synapse/module_api/__init__.py#L869-L876)
|
and use the [`get_room_state`](https://github.com/element-hq/synapse/blob/872f23b95fa980a61b0866c1475e84491991fa20/synapse/module_api/__init__.py#L869-L876)
|
||||||
module API to infer whether the invite is happening while creating a room (see [this function](https://github.com/matrix-org/synapse-domain-rule-checker/blob/e7d092dd9f2a7f844928771dbfd9fd24c2332e48/synapse_domain_rule_checker/__init__.py#L56-L89)
|
module API to infer whether the invite is happening while creating a room (see [this function](https://github.com/matrix-org/synapse-domain-rule-checker/blob/e7d092dd9f2a7f844928771dbfd9fd24c2332e48/synapse_domain_rule_checker/__init__.py#L56-L89)
|
||||||
as an example). Alternately, modules can also implement [`on_create_room`](https://matrix-org.github.io/synapse/latest/modules/third_party_rules_callbacks.html#on_create_room).
|
as an example). Alternately, modules can also implement [`on_create_room`](https://element-hq.github.io/synapse/latest/modules/third_party_rules_callbacks.html#on_create_room).
|
||||||
|
|
||||||
|
|
||||||
# Upgrading to v1.52.0
|
# Upgrading to v1.52.0
|
||||||
|
@ -1117,14 +1117,14 @@ The following admin APIs were deprecated in [Synapse 1.34](https://github.com/ma
|
||||||
- `POST /_synapse/admin/v1/<room_id>/delete`
|
- `POST /_synapse/admin/v1/<room_id>/delete`
|
||||||
|
|
||||||
Any scripts still using the above APIs should be converted to use the
|
Any scripts still using the above APIs should be converted to use the
|
||||||
[Delete Room API](https://matrix-org.github.io/synapse/latest/admin_api/rooms.html#delete-room-api).
|
[Delete Room API](https://element-hq.github.io/synapse/latest/admin_api/rooms.html#delete-room-api).
|
||||||
|
|
||||||
## Deprecation of the `user_may_create_room_with_invites` module callback
|
## Deprecation of the `user_may_create_room_with_invites` module callback
|
||||||
|
|
||||||
The `user_may_create_room_with_invites` is deprecated and will be removed in a future
|
The `user_may_create_room_with_invites` is deprecated and will be removed in a future
|
||||||
version of Synapse. Modules implementing this callback can instead implement
|
version of Synapse. Modules implementing this callback can instead implement
|
||||||
[`user_may_invite`](https://matrix-org.github.io/synapse/latest/modules/spam_checker_callbacks.html#user_may_invite)
|
[`user_may_invite`](https://element-hq.github.io/synapse/latest/modules/spam_checker_callbacks.html#user_may_invite)
|
||||||
and use the [`get_room_state`](https://github.com/matrix-org/synapse/blob/872f23b95fa980a61b0866c1475e84491991fa20/synapse/module_api/__init__.py#L869-L876)
|
and use the [`get_room_state`](https://github.com/element-hq/synapse/blob/872f23b95fa980a61b0866c1475e84491991fa20/synapse/module_api/__init__.py#L869-L876)
|
||||||
module API method to infer whether the invite is happening in the context of creating a
|
module API method to infer whether the invite is happening in the context of creating a
|
||||||
room.
|
room.
|
||||||
|
|
||||||
|
@ -1150,7 +1150,7 @@ deleted from any configured storage providers to reclaim space.
|
||||||
|
|
||||||
## The spaces summary APIs can now be handled by workers
|
## The spaces summary APIs can now be handled by workers
|
||||||
|
|
||||||
The [available worker applications documentation](https://matrix-org.github.io/synapse/latest/workers.html#available-worker-applications)
|
The [available worker applications documentation](https://element-hq.github.io/synapse/latest/workers.html#available-worker-applications)
|
||||||
has been updated to reflect that calls to the `/spaces`, `/hierarchy`, and
|
has been updated to reflect that calls to the `/spaces`, `/hierarchy`, and
|
||||||
`/summary` endpoints can now be routed to workers for both client API and
|
`/summary` endpoints can now be routed to workers for both client API and
|
||||||
federation requests.
|
federation requests.
|
||||||
|
@ -1166,13 +1166,13 @@ The following admin APIs were deprecated in [Synapse 1.25](https://github.com/ma
|
||||||
- `POST /_synapse/admin/v1/shutdown_room/<room_id>`
|
- `POST /_synapse/admin/v1/shutdown_room/<room_id>`
|
||||||
|
|
||||||
Any scripts still using the above APIs should be converted to use the
|
Any scripts still using the above APIs should be converted to use the
|
||||||
[Delete Room API](https://matrix-org.github.io/synapse/latest/admin_api/rooms.html#delete-room-api).
|
[Delete Room API](https://element-hq.github.io/synapse/latest/admin_api/rooms.html#delete-room-api).
|
||||||
|
|
||||||
## User-interactive authentication fallback templates can now display errors
|
## User-interactive authentication fallback templates can now display errors
|
||||||
|
|
||||||
This may affect you if you make use of custom HTML templates for the
|
This may affect you if you make use of custom HTML templates for the
|
||||||
[reCAPTCHA (`synapse/res/templates/recaptcha.html`)](https://github.com/matrix-org/synapse/tree/develop/synapse/res/templates/recaptcha.html) or
|
[reCAPTCHA (`synapse/res/templates/recaptcha.html`)](https://github.com/element-hq/synapse/tree/develop/synapse/res/templates/recaptcha.html) or
|
||||||
[terms (`synapse/res/templates/terms.html`)](https://github.com/matrix-org/synapse/tree/develop/synapse/res/templates/terms.html) fallback pages.
|
[terms (`synapse/res/templates/terms.html`)](https://github.com/element-hq/synapse/tree/develop/synapse/res/templates/terms.html) fallback pages.
|
||||||
|
|
||||||
The template is now provided an `error` variable if the authentication
|
The template is now provided an `error` variable if the authentication
|
||||||
process failed. See the default templates linked above for an example.
|
process failed. See the default templates linked above for an example.
|
||||||
|
@ -1214,14 +1214,14 @@ The `template_dir` settings in the `sso`, `account_validity` and `email` section
|
||||||
configuration file are now deprecated. Server admins should use the new
|
configuration file are now deprecated. Server admins should use the new
|
||||||
`templates.custom_template_directory` setting in the configuration file and use one single
|
`templates.custom_template_directory` setting in the configuration file and use one single
|
||||||
custom template directory for all aforementioned features. Template file names remain
|
custom template directory for all aforementioned features. Template file names remain
|
||||||
unchanged. See [the related documentation](https://matrix-org.github.io/synapse/latest/templates.html)
|
unchanged. See [the related documentation](https://element-hq.github.io/synapse/latest/templates.html)
|
||||||
for more information and examples.
|
for more information and examples.
|
||||||
|
|
||||||
We plan to remove support for these settings in October 2021.
|
We plan to remove support for these settings in October 2021.
|
||||||
|
|
||||||
## `/_synapse/admin/v1/users/{userId}/media` must be handled by media workers
|
## `/_synapse/admin/v1/users/{userId}/media` must be handled by media workers
|
||||||
|
|
||||||
The [media repository worker documentation](https://matrix-org.github.io/synapse/latest/workers.html#synapseappmedia_repository)
|
The [media repository worker documentation](https://element-hq.github.io/synapse/latest/workers.html#synapseappmedia_repository)
|
||||||
has been updated to reflect that calls to `/_synapse/admin/v1/users/{userId}/media`
|
has been updated to reflect that calls to `/_synapse/admin/v1/users/{userId}/media`
|
||||||
must now be handled by media repository workers. This is due to the new `DELETE` method
|
must now be handled by media repository workers. This is due to the new `DELETE` method
|
||||||
of this endpoint modifying the media store.
|
of this endpoint modifying the media store.
|
||||||
|
@ -1624,7 +1624,7 @@ lock down external access to the Admin API endpoints.
|
||||||
This release deprecates use of the `structured: true` logging
|
This release deprecates use of the `structured: true` logging
|
||||||
configuration for structured logging. If your logging configuration
|
configuration for structured logging. If your logging configuration
|
||||||
contains `structured: true` then it should be modified based on the
|
contains `structured: true` then it should be modified based on the
|
||||||
[structured logging documentation](https://matrix-org.github.io/synapse/v1.56/structured_logging.html#upgrading-from-legacy-structured-logging-configuration).
|
[structured logging documentation](https://element-hq.github.io/synapse/v1.56/structured_logging.html#upgrading-from-legacy-structured-logging-configuration).
|
||||||
|
|
||||||
The `structured` and `drains` logging options are now deprecated and
|
The `structured` and `drains` logging options are now deprecated and
|
||||||
should be replaced by standard logging configuration of `handlers` and
|
should be replaced by standard logging configuration of `handlers` and
|
||||||
|
@ -1671,7 +1671,7 @@ update your reverse proxy configuration to reflect this change.
|
||||||
## New HTML templates
|
## New HTML templates
|
||||||
|
|
||||||
A new HTML template,
|
A new HTML template,
|
||||||
[password_reset_confirmation.html](https://github.com/matrix-org/synapse/blob/develop/synapse/res/templates/password_reset_confirmation.html),
|
[password_reset_confirmation.html](https://github.com/element-hq/synapse/blob/develop/synapse/res/templates/password_reset_confirmation.html),
|
||||||
has been added to the `synapse/res/templates` directory. If you are
|
has been added to the `synapse/res/templates` directory. If you are
|
||||||
using a custom template directory, you may want to copy the template
|
using a custom template directory, you may want to copy the template
|
||||||
over and modify it.
|
over and modify it.
|
||||||
|
@ -1724,7 +1724,7 @@ updated.
|
||||||
When setting up worker processes, we now recommend the use of a Redis
|
When setting up worker processes, we now recommend the use of a Redis
|
||||||
server for replication. **The old direct TCP connection method is
|
server for replication. **The old direct TCP connection method is
|
||||||
deprecated and will be removed in a future release.** See
|
deprecated and will be removed in a future release.** See
|
||||||
the [worker documentation](https://matrix-org.github.io/synapse/v1.66/workers.html) for more details.
|
the [worker documentation](https://element-hq.github.io/synapse/v1.66/workers.html) for more details.
|
||||||
|
|
||||||
# Upgrading to v1.14.0
|
# Upgrading to v1.14.0
|
||||||
|
|
||||||
|
@ -1770,7 +1770,7 @@ New templates (`sso_auth_confirm.html`, `sso_auth_success.html`, and
|
||||||
is configured to use SSO and a custom
|
is configured to use SSO and a custom
|
||||||
`sso_redirect_confirm_template_dir` configuration then these templates
|
`sso_redirect_confirm_template_dir` configuration then these templates
|
||||||
will need to be copied from
|
will need to be copied from
|
||||||
[`synapse/res/templates`](https://github.com/matrix-org/synapse/tree/develop/synapse/res/templates) into that directory.
|
[`synapse/res/templates`](https://github.com/element-hq/synapse/tree/develop/synapse/res/templates) into that directory.
|
||||||
|
|
||||||
## Synapse SSO Plugins Method Deprecation
|
## Synapse SSO Plugins Method Deprecation
|
||||||
|
|
||||||
|
@ -1923,7 +1923,7 @@ included.
|
||||||
Synapse will expect these files to exist inside the configured template
|
Synapse will expect these files to exist inside the configured template
|
||||||
directory, and **will fail to start** if they are absent. To view the
|
directory, and **will fail to start** if they are absent. To view the
|
||||||
default templates, see
|
default templates, see
|
||||||
[synapse/res/templates](https://github.com/matrix-org/synapse/tree/master/synapse/res/templates).
|
[synapse/res/templates](https://github.com/element-hq/synapse/tree/master/synapse/res/templates).
|
||||||
|
|
||||||
## 3pid verification changes
|
## 3pid verification changes
|
||||||
|
|
||||||
|
|
|
@ -74,3 +74,4 @@ consider using one of the following known implementations:
|
||||||
|
|
||||||
* [Matrix.org's Panopticon](https://github.com/matrix-org/panopticon)
|
* [Matrix.org's Panopticon](https://github.com/matrix-org/panopticon)
|
||||||
* [Famedly's Barad-dûr](https://gitlab.com/famedly/infra/services/barad-dur)
|
* [Famedly's Barad-dûr](https://gitlab.com/famedly/infra/services/barad-dur)
|
||||||
|
* [Synapse Usage Exporter](https://github.com/loelkes/synapse-usage-exporter) for Prometheus
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Request log format
|
# Request log format
|
||||||
|
|
||||||
HTTP request logs are written by synapse (see [`synapse/http/site.py`](https://github.com/matrix-org/synapse/tree/develop/synapse/http/site.py) for details).
|
HTTP request logs are written by synapse (see [`synapse/http/site.py`](https://github.com/element-hq/synapse/tree/develop/synapse/http/site.py) for details).
|
||||||
|
|
||||||
See the following for how to decode the dense data available from the default logging configuration.
|
See the following for how to decode the dense data available from the default logging configuration.
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ See the following for how to decode the dense data available from the default lo
|
||||||
| EEEE | Request Identifier (This identifier is shared by related log lines)|
|
| EEEE | Request Identifier (This identifier is shared by related log lines)|
|
||||||
| FFFF | Source IP (Or X-Forwarded-For if enabled) |
|
| FFFF | Source IP (Or X-Forwarded-For if enabled) |
|
||||||
| GGGG | Server Port |
|
| GGGG | Server Port |
|
||||||
| HHHH | Federated Server or Local User making request (blank if unauthenticated or not supplied).<br/>If this is of the form `@aaa:example.com|@bbb:example.com`, then that means that `@aaa:example.com` is authenticated but they are controlling `@bbb:example.com`, e.g. if `aaa` is controlling `bbb` [via the admin API](https://matrix-org.github.io/synapse/latest/admin_api/user_admin_api.html#login-as-a-user). |
|
| HHHH | Federated Server or Local User making request (blank if unauthenticated or not supplied).<br/>If this is of the form `@aaa:example.com|@bbb:example.com`, then that means that `@aaa:example.com` is authenticated but they are controlling `@bbb:example.com`, e.g. if `aaa` is controlling `bbb` [via the admin API](https://element-hq.github.io/synapse/latest/admin_api/user_admin_api.html#login-as-a-user). |
|
||||||
| IIII | Total Time to process the request |
|
| IIII | Total Time to process the request |
|
||||||
| JJJJ | Time to send response over network once generated (this may be negative if the socket is closed before the response is generated)|
|
| JJJJ | Time to send response over network once generated (this may be negative if the socket is closed before the response is generated)|
|
||||||
| KKKK | Userland CPU time |
|
| KKKK | Userland CPU time |
|
||||||
|
|
|
@ -3,12 +3,12 @@
|
||||||
It is possible to monitor much of the internal state of Synapse using [Prometheus](https://prometheus.io)
|
It is possible to monitor much of the internal state of Synapse using [Prometheus](https://prometheus.io)
|
||||||
metrics and [Grafana](https://grafana.com/).
|
metrics and [Grafana](https://grafana.com/).
|
||||||
A guide for configuring Synapse to provide metrics is available [here](../../metrics-howto.md)
|
A guide for configuring Synapse to provide metrics is available [here](../../metrics-howto.md)
|
||||||
and information on setting up Grafana is [here](https://github.com/matrix-org/synapse/tree/master/contrib/grafana).
|
and information on setting up Grafana is [here](https://github.com/element-hq/synapse/tree/master/contrib/grafana).
|
||||||
In this setup, Prometheus will periodically scrape the information Synapse provides and
|
In this setup, Prometheus will periodically scrape the information Synapse provides and
|
||||||
store a record of it over time. Grafana is then used as an interface to query and
|
store a record of it over time. Grafana is then used as an interface to query and
|
||||||
present this information through a series of pretty graphs.
|
present this information through a series of pretty graphs.
|
||||||
|
|
||||||
Once you have grafana set up, and assuming you're using [our grafana dashboard template](https://github.com/matrix-org/synapse/blob/master/contrib/grafana/synapse.json), look for the following graphs when debugging a slow/overloaded Synapse:
|
Once you have grafana set up, and assuming you're using [our grafana dashboard template](https://github.com/element-hq/synapse/blob/master/contrib/grafana/synapse.json), look for the following graphs when debugging a slow/overloaded Synapse:
|
||||||
|
|
||||||
## Message Event Send Time
|
## Message Event Send Time
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ Cross-referencing this with the Eviction Rate graph, which shows that entries ar
|
||||||
|
|
||||||
![image](https://user-images.githubusercontent.com/1342360/82240766-de95df80-9932-11ea-8c15-5acfc57c48da.png)
|
![image](https://user-images.githubusercontent.com/1342360/82240766-de95df80-9932-11ea-8c15-5acfc57c48da.png)
|
||||||
|
|
||||||
we should probably consider raising the size of that cache by raising its cache factor (a multiplier value for the size of an individual cache). Information on doing so is available [here](https://github.com/matrix-org/synapse/blob/ee421e524478c1ad8d43741c27379499c2f6135c/docs/sample_config.yaml#L608-L642) (note that the configuration of individual cache factors through the configuration file is available in Synapse v1.14.0+, whereas doing so through environment variables has been supported for a very long time). Note that this will increase Synapse's overall memory usage.
|
we should probably consider raising the size of that cache by raising its cache factor (a multiplier value for the size of an individual cache). Information on doing so is available [here](https://github.com/element-hq/synapse/blob/ee421e524478c1ad8d43741c27379499c2f6135c/docs/sample_config.yaml#L608-L642) (note that the configuration of individual cache factors through the configuration file is available in Synapse v1.14.0+, whereas doing so through environment variables has been supported for a very long time). Note that this will increase Synapse's overall memory usage.
|
||||||
|
|
||||||
## Forward Extremities
|
## Forward Extremities
|
||||||
|
|
||||||
|
@ -81,4 +81,3 @@ If you're still having performance problems with your Synapse instance and you'v
|
||||||
tried everything you can, it may just be a lack of system resources. Consider adding
|
tried everything you can, it may just be a lack of system resources. Consider adding
|
||||||
more CPU and RAM, and make use of [worker mode](../../workers.md)
|
more CPU and RAM, and make use of [worker mode](../../workers.md)
|
||||||
to make use of multiple CPU cores / multiple machines for your homeserver.
|
to make use of multiple CPU cores / multiple machines for your homeserver.
|
||||||
|
|
||||||
|
|
|
@ -549,7 +549,7 @@ listeners:
|
||||||
# that unwraps TLS.
|
# that unwraps TLS.
|
||||||
#
|
#
|
||||||
# If you plan to use a reverse proxy, please see
|
# If you plan to use a reverse proxy, please see
|
||||||
# https://matrix-org.github.io/synapse/latest/reverse_proxy.html.
|
# https://element-hq.github.io/synapse/latest/reverse_proxy.html.
|
||||||
#
|
#
|
||||||
- port: 8008
|
- port: 8008
|
||||||
tls: false
|
tls: false
|
||||||
|
@ -581,7 +581,7 @@ listeners:
|
||||||
# conflicts, and providing enhanced security through system file permissions.
|
# conflicts, and providing enhanced security through system file permissions.
|
||||||
#
|
#
|
||||||
# Note that x_forwarded will default to true, when using a UNIX socket. Please see
|
# Note that x_forwarded will default to true, when using a UNIX socket. Please see
|
||||||
# https://matrix-org.github.io/synapse/latest/reverse_proxy.html.
|
# https://element-hq.github.io/synapse/latest/reverse_proxy.html.
|
||||||
#
|
#
|
||||||
- path: /run/synapse/main_public.sock
|
- path: /run/synapse/main_public.sock
|
||||||
type: http
|
type: http
|
||||||
|
@ -680,6 +680,11 @@ This setting has the following sub-options:
|
||||||
has missed. Disabled by default.
|
has missed. Disabled by default.
|
||||||
* `notif_for_new_users`: Set to false to disable automatic subscription to email
|
* `notif_for_new_users`: Set to false to disable automatic subscription to email
|
||||||
notifications for new users. Enabled by default.
|
notifications for new users. Enabled by default.
|
||||||
|
* `notif_delay_before_mail`: The time to wait before emailing about a notification.
|
||||||
|
This gives the user a chance to view the message via push or an open client.
|
||||||
|
Defaults to 10 minutes.
|
||||||
|
|
||||||
|
_New in Synapse 1.99.0._
|
||||||
* `client_base_url`: Custom URL for client links within the email notifications. By default
|
* `client_base_url`: Custom URL for client links within the email notifications. By default
|
||||||
links will be based on "https://matrix.to". (This setting used to be called `riot_base_url`;
|
links will be based on "https://matrix.to". (This setting used to be called `riot_base_url`;
|
||||||
the old name is still supported for backwards-compatibility but is now deprecated.)
|
the old name is still supported for backwards-compatibility but is now deprecated.)
|
||||||
|
@ -1411,7 +1416,7 @@ kill -HUP [PID_OF_SYNAPSE_PROCESS]
|
||||||
If you are running multiple workers, you must individually update the worker
|
If you are running multiple workers, you must individually update the worker
|
||||||
config file and send this signal to each worker process.
|
config file and send this signal to each worker process.
|
||||||
|
|
||||||
If you're using the [example systemd service](https://github.com/matrix-org/synapse/blob/develop/contrib/systemd/matrix-synapse.service)
|
If you're using the [example systemd service](https://github.com/element-hq/synapse/blob/develop/contrib/systemd/matrix-synapse.service)
|
||||||
file in Synapse's `contrib` directory, you can send a `SIGHUP` signal by using
|
file in Synapse's `contrib` directory, you can send a `SIGHUP` signal by using
|
||||||
`systemctl reload matrix-synapse`.
|
`systemctl reload matrix-synapse`.
|
||||||
|
|
||||||
|
@ -2675,7 +2680,7 @@ Example configuration:
|
||||||
refreshable_access_token_lifetime: 10m
|
refreshable_access_token_lifetime: 10m
|
||||||
```
|
```
|
||||||
---
|
---
|
||||||
### `refresh_token_lifetime: 24h`
|
### `refresh_token_lifetime`
|
||||||
|
|
||||||
Time that a refresh token remains valid for (provided that it is not
|
Time that a refresh token remains valid for (provided that it is not
|
||||||
exchanged for another one first).
|
exchanged for another one first).
|
||||||
|
@ -2774,6 +2779,10 @@ enable_metrics: true
|
||||||
Use this option to enable sentry integration. Provide the DSN assigned to you by sentry
|
Use this option to enable sentry integration. Provide the DSN assigned to you by sentry
|
||||||
with the `dsn` setting.
|
with the `dsn` setting.
|
||||||
|
|
||||||
|
An optional `environment` field can be used to specify an environment. This allows
|
||||||
|
for log maintenance based on different environments, ensuring better organization
|
||||||
|
and analysis..
|
||||||
|
|
||||||
NOTE: While attempts are made to ensure that the logs don't contain
|
NOTE: While attempts are made to ensure that the logs don't contain
|
||||||
any sensitive information, this cannot be guaranteed. By enabling
|
any sensitive information, this cannot be guaranteed. By enabling
|
||||||
this option the sentry server may therefore receive sensitive
|
this option the sentry server may therefore receive sensitive
|
||||||
|
@ -2783,6 +2792,7 @@ through insecure notification channels if so configured.
|
||||||
Example configuration:
|
Example configuration:
|
||||||
```yaml
|
```yaml
|
||||||
sentry:
|
sentry:
|
||||||
|
environment: "production"
|
||||||
dsn: "..."
|
dsn: "..."
|
||||||
```
|
```
|
||||||
---
|
---
|
||||||
|
@ -3613,7 +3623,7 @@ This setting has the following sub-options:
|
||||||
* `enabled`: Defaults to true.
|
* `enabled`: Defaults to true.
|
||||||
Set to false to disable password authentication.
|
Set to false to disable password authentication.
|
||||||
Set to `only_for_reauth` to allow users with existing passwords to use them
|
Set to `only_for_reauth` to allow users with existing passwords to use them
|
||||||
to log in and reauthenticate, whilst preventing new users from setting passwords.
|
to reauthenticate (not log in), whilst preventing new users from setting passwords.
|
||||||
* `localdb_enabled`: Set to false to disable authentication against the local password
|
* `localdb_enabled`: Set to false to disable authentication against the local password
|
||||||
database. This is ignored if `enabled` is false, and is only useful
|
database. This is ignored if `enabled` is false, and is only useful
|
||||||
if you have other `password_providers`. Defaults to true.
|
if you have other `password_providers`. Defaults to true.
|
||||||
|
@ -3832,16 +3842,22 @@ Sub-options for this setting include:
|
||||||
* `system_mxid_display_name`: set the display name of the "notices" user
|
* `system_mxid_display_name`: set the display name of the "notices" user
|
||||||
* `system_mxid_avatar_url`: set the avatar for the "notices" user
|
* `system_mxid_avatar_url`: set the avatar for the "notices" user
|
||||||
* `room_name`: set the room name of the server notices room
|
* `room_name`: set the room name of the server notices room
|
||||||
|
* `room_avatar_url`: optional string. The room avatar to use for server notice rooms. If set to the empty string `""`, notice rooms will not be given an avatar. Defaults to the empty string. _Added in Synapse 1.99.0._
|
||||||
|
* `room_topic`: optional string. The topic to use for server notice rooms. If set to the empty string `""`, notice rooms will not be given a topic. Defaults to the empty string. _Added in Synapse 1.99.0._
|
||||||
* `auto_join`: boolean. If true, the user will be automatically joined to the room instead of being invited.
|
* `auto_join`: boolean. If true, the user will be automatically joined to the room instead of being invited.
|
||||||
Defaults to false. _Added in Synapse 1.98.0._
|
Defaults to false. _Added in Synapse 1.98.0._
|
||||||
|
|
||||||
|
Note that the name, topic and avatar of existing server notice rooms will only be updated when a new notice event is sent.
|
||||||
|
|
||||||
Example configuration:
|
Example configuration:
|
||||||
```yaml
|
```yaml
|
||||||
server_notices:
|
server_notices:
|
||||||
system_mxid_localpart: notices
|
system_mxid_localpart: notices
|
||||||
system_mxid_display_name: "Server Notices"
|
system_mxid_display_name: "Server Notices"
|
||||||
system_mxid_avatar_url: "mxc://server.com/oumMVlgDnLYFaPVkExemNVVZ"
|
system_mxid_avatar_url: "mxc://example.com/oumMVlgDnLYFaPVkExemNVVZ"
|
||||||
room_name: "Server Notices"
|
room_name: "Server Notices"
|
||||||
|
room_avatar_url: "mxc://example.com/oumMVlgDnLYFaPVkExemNVVZ"
|
||||||
|
room_topic: "Room used by your server admin to notice you of important information"
|
||||||
auto_join: true
|
auto_join: true
|
||||||
```
|
```
|
||||||
---
|
---
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
window.SYNAPSE_VERSION = 'v1.98';
|
window.SYNAPSE_VERSION = "latest";
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
# Introduction
|
# Introduction
|
||||||
|
|
||||||
Welcome to the documentation repository for Synapse, a
|
Welcome to the documentation repository for Synapse, a
|
||||||
[Matrix](https://matrix.org) homeserver implementation developed by the matrix.org core
|
[Matrix](https://matrix.org) homeserver implementation developed by Element.
|
||||||
team.
|
|
||||||
|
|
||||||
## Installing and using Synapse
|
## Installing and using Synapse
|
||||||
|
|
||||||
|
@ -37,17 +36,17 @@ following documentation:
|
||||||
* Read the [Contributing Guide](development/contributing_guide.md). It is meant
|
* Read the [Contributing Guide](development/contributing_guide.md). It is meant
|
||||||
to walk new contributors through the process of developing and submitting a
|
to walk new contributors through the process of developing and submitting a
|
||||||
change to the Synapse codebase (which is [hosted on
|
change to the Synapse codebase (which is [hosted on
|
||||||
GitHub](https://github.com/matrix-org/synapse)).
|
GitHub](https://github.com/element-hq/synapse)).
|
||||||
|
|
||||||
* Set up your [development
|
* Set up your [development
|
||||||
environment](development/contributing_guide.md#2-what-do-i-need), then learn
|
environment](development/contributing_guide.md#2-what-do-i-need), then learn
|
||||||
how to [lint](development/contributing_guide.md#run-the-linters) and
|
how to [lint](development/contributing_guide.md#run-the-linters) and
|
||||||
[test](development/contributing_guide.md#8-test-test-test) your code.
|
[test](development/contributing_guide.md#8-test-test-test) your code.
|
||||||
|
|
||||||
* Look at [the issue tracker](https://github.com/matrix-org/synapse/issues) for
|
* Look at [the issue tracker](https://github.com/element-hq/synapse/issues) for
|
||||||
bugs to fix or features to add. If you're new, it may be best to start with
|
bugs to fix or features to add. If you're new, it may be best to start with
|
||||||
those labeled [good first
|
those labeled [good first
|
||||||
issue](https://github.com/matrix-org/synapse/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22).
|
issue](https://github.com/element-hq/synapse/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22).
|
||||||
|
|
||||||
* Understand [how Synapse is
|
* Understand [how Synapse is
|
||||||
built](development/internal_documentation/index.html), how to [migrate
|
built](development/internal_documentation/index.html), how to [migrate
|
||||||
|
@ -59,18 +58,7 @@ following documentation:
|
||||||
do so!
|
do so!
|
||||||
|
|
||||||
* And finally, contribute to this documentation! The source for which is
|
* And finally, contribute to this documentation! The source for which is
|
||||||
[located here](https://github.com/matrix-org/synapse/tree/develop/docs).
|
[located here](https://github.com/element-hq/synapse/tree/develop/docs).
|
||||||
|
|
||||||
## Donating to Synapse development
|
|
||||||
|
|
||||||
Want to help keep Synapse going but don't know how to code? Synapse is a
|
|
||||||
[Matrix.org Foundation](https://matrix.org) project. Consider becoming a
|
|
||||||
supporter on [Liberapay](https://liberapay.com/matrixdotorg),
|
|
||||||
[Patreon](https://patreon.com/matrixdotorg) or through
|
|
||||||
[PayPal](https://paypal.me/matrixdotorg) via a one-time donation.
|
|
||||||
|
|
||||||
If you are an organisation or enterprise and would like to sponsor development,
|
|
||||||
reach out to us over email at: support (at) matrix.org
|
|
||||||
|
|
||||||
## Reporting a security vulnerability
|
## Reporting a security vulnerability
|
||||||
|
|
||||||
|
|
|
@ -62,8 +62,8 @@ pip install "matrix-synapse[redis]"
|
||||||
|
|
||||||
Note that these dependencies are included when synapse is installed with `pip
|
Note that these dependencies are included when synapse is installed with `pip
|
||||||
install matrix-synapse[all]`. They are also included in the debian packages from
|
install matrix-synapse[all]`. They are also included in the debian packages from
|
||||||
`matrix.org` and in the docker images at
|
`packages.matrix.org` and in the docker images at
|
||||||
https://hub.docker.com/r/matrixdotorg/synapse/.
|
https://hub.docker.com/r/ectorim/synapse/.
|
||||||
|
|
||||||
To make effective use of the workers, you will need to configure an HTTP
|
To make effective use of the workers, you will need to configure an HTTP
|
||||||
reverse-proxy such as nginx or haproxy, which will direct incoming requests to
|
reverse-proxy such as nginx or haproxy, which will direct incoming requests to
|
||||||
|
@ -629,7 +629,7 @@ worker application type.
|
||||||
|
|
||||||
You can designate generic worker to sending push notifications to
|
You can designate generic worker to sending push notifications to
|
||||||
a [push gateway](https://spec.matrix.org/v1.5/push-gateway-api/) such as
|
a [push gateway](https://spec.matrix.org/v1.5/push-gateway-api/) such as
|
||||||
[sygnal](https://github.com/matrix-org/sygnal) and email.
|
[sygnal](https://github.com/vector-im/sygnal) and email.
|
||||||
|
|
||||||
This will stop the main process sending push notifications.
|
This will stop the main process sending push notifications.
|
||||||
|
|
||||||
|
|
282
poetry.lock
generated
282
poetry.lock
generated
|
@ -832,13 +832,13 @@ files = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "immutabledict"
|
name = "immutabledict"
|
||||||
version = "3.0.0"
|
version = "4.0.0"
|
||||||
description = "Immutable wrapper around dictionaries (a fork of frozendict)"
|
description = "Immutable wrapper around dictionaries (a fork of frozendict)"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8,<4.0"
|
python-versions = ">=3.8,<4.0"
|
||||||
files = [
|
files = [
|
||||||
{file = "immutabledict-3.0.0-py3-none-any.whl", hash = "sha256:034bacc6c6872707c4ec0ea9515de6bbe0dcf0fcabd97ae19fd4e4c338f05798"},
|
{file = "immutabledict-4.0.0-py3-none-any.whl", hash = "sha256:7b28ffd8a0fbd7c6068ba8ba7a6aa0e50a158e9aae33b22d1dedd03f9aac33b6"},
|
||||||
{file = "immutabledict-3.0.0.tar.gz", hash = "sha256:5a23cd369a6187f76a8c29d7d687980b092538eb9800e58964603f1b973c56fe"},
|
{file = "immutabledict-4.0.0.tar.gz", hash = "sha256:fabf47437531e8bf65a3b5b47d501e65579323b2d1fe58f8ae01491c1fd29bf7"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -895,21 +895,15 @@ scripts = ["click (>=6.0)", "twisted (>=16.4.0)"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "isort"
|
name = "isort"
|
||||||
version = "5.12.0"
|
version = "5.13.1"
|
||||||
description = "A Python utility / library to sort Python imports."
|
description = "A Python utility / library to sort Python imports."
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8.0"
|
python-versions = ">=3.8.0"
|
||||||
files = [
|
files = [
|
||||||
{file = "isort-5.12.0-py3-none-any.whl", hash = "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6"},
|
{file = "isort-5.13.1-py3-none-any.whl", hash = "sha256:56a51732c25f94ca96f6721be206dd96a95f42950502eb26c1015d333bc6edb7"},
|
||||||
{file = "isort-5.12.0.tar.gz", hash = "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504"},
|
{file = "isort-5.13.1.tar.gz", hash = "sha256:aaed790b463e8703fb1eddb831dfa8e8616bacde2c083bd557ef73c8189b7263"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
colors = ["colorama (>=0.4.3)"]
|
|
||||||
pipfile-deprecated-finder = ["pip-shims (>=0.5.2)", "pipreqs", "requirementslib"]
|
|
||||||
plugins = ["setuptools"]
|
|
||||||
requirements-deprecated-finder = ["pip-api", "pipreqs"]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "jaeger-client"
|
name = "jaeger-client"
|
||||||
version = "4.8.0"
|
version = "4.8.0"
|
||||||
|
@ -1828,18 +1822,18 @@ files = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pydantic"
|
name = "pydantic"
|
||||||
version = "2.5.1"
|
version = "2.5.2"
|
||||||
description = "Data validation using Python type hints"
|
description = "Data validation using Python type hints"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
{file = "pydantic-2.5.1-py3-none-any.whl", hash = "sha256:dc5244a8939e0d9a68f1f1b5f550b2e1c879912033b1becbedb315accc75441b"},
|
{file = "pydantic-2.5.2-py3-none-any.whl", hash = "sha256:80c50fb8e3dcecfddae1adbcc00ec5822918490c99ab31f6cf6140ca1c1429f0"},
|
||||||
{file = "pydantic-2.5.1.tar.gz", hash = "sha256:0b8be5413c06aadfbe56f6dc1d45c9ed25fd43264414c571135c97dd77c2bedb"},
|
{file = "pydantic-2.5.2.tar.gz", hash = "sha256:ff177ba64c6faf73d7afa2e8cad38fd456c0dbe01c9954e71038001cd15a6edd"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
annotated-types = ">=0.4.0"
|
annotated-types = ">=0.4.0"
|
||||||
pydantic-core = "2.14.3"
|
pydantic-core = "2.14.5"
|
||||||
typing-extensions = ">=4.6.1"
|
typing-extensions = ">=4.6.1"
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
|
@ -1847,116 +1841,116 @@ email = ["email-validator (>=2.0.0)"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pydantic-core"
|
name = "pydantic-core"
|
||||||
version = "2.14.3"
|
version = "2.14.5"
|
||||||
description = ""
|
description = ""
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
{file = "pydantic_core-2.14.3-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:ba44fad1d114539d6a1509966b20b74d2dec9a5b0ee12dd7fd0a1bb7b8785e5f"},
|
{file = "pydantic_core-2.14.5-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:7e88f5696153dc516ba6e79f82cc4747e87027205f0e02390c21f7cb3bd8abfd"},
|
||||||
{file = "pydantic_core-2.14.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4a70d23eedd88a6484aa79a732a90e36701048a1509078d1b59578ef0ea2cdf5"},
|
{file = "pydantic_core-2.14.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4641e8ad4efb697f38a9b64ca0523b557c7931c5f84e0fd377a9a3b05121f0de"},
|
||||||
{file = "pydantic_core-2.14.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7cc24728a1a9cef497697e53b3d085fb4d3bc0ef1ef4d9b424d9cf808f52c146"},
|
{file = "pydantic_core-2.14.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:774de879d212db5ce02dfbf5b0da9a0ea386aeba12b0b95674a4ce0593df3d07"},
|
||||||
{file = "pydantic_core-2.14.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ab4a2381005769a4af2ffddae74d769e8a4aae42e970596208ec6d615c6fb080"},
|
{file = "pydantic_core-2.14.5-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ebb4e035e28f49b6f1a7032920bb9a0c064aedbbabe52c543343d39341a5b2a3"},
|
||||||
{file = "pydantic_core-2.14.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:905a12bf088d6fa20e094f9a477bf84bd823651d8b8384f59bcd50eaa92e6a52"},
|
{file = "pydantic_core-2.14.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b53e9ad053cd064f7e473a5f29b37fc4cc9dc6d35f341e6afc0155ea257fc911"},
|
||||||
{file = "pydantic_core-2.14.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:38aed5a1bbc3025859f56d6a32f6e53ca173283cb95348e03480f333b1091e7d"},
|
{file = "pydantic_core-2.14.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8aa1768c151cf562a9992462239dfc356b3d1037cc5a3ac829bb7f3bda7cc1f9"},
|
||||||
{file = "pydantic_core-2.14.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1767bd3f6370458e60c1d3d7b1d9c2751cc1ad743434e8ec84625a610c8b9195"},
|
{file = "pydantic_core-2.14.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eac5c82fc632c599f4639a5886f96867ffced74458c7db61bc9a66ccb8ee3113"},
|
||||||
{file = "pydantic_core-2.14.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7cb0c397f29688a5bd2c0dbd44451bc44ebb9b22babc90f97db5ec3e5bb69977"},
|
{file = "pydantic_core-2.14.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2ae91f50ccc5810b2f1b6b858257c9ad2e08da70bf890dee02de1775a387c66"},
|
||||||
{file = "pydantic_core-2.14.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9ff737f24b34ed26de62d481ef522f233d3c5927279f6b7229de9b0deb3f76b5"},
|
{file = "pydantic_core-2.14.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6b9ff467ffbab9110e80e8c8de3bcfce8e8b0fd5661ac44a09ae5901668ba997"},
|
||||||
{file = "pydantic_core-2.14.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a1a39fecb5f0b19faee9a8a8176c805ed78ce45d760259a4ff3d21a7daa4dfc1"},
|
{file = "pydantic_core-2.14.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:61ea96a78378e3bd5a0be99b0e5ed00057b71f66115f5404d0dae4819f495093"},
|
||||||
{file = "pydantic_core-2.14.3-cp310-none-win32.whl", hash = "sha256:ccbf355b7276593c68fa824030e68cb29f630c50e20cb11ebb0ee450ae6b3d08"},
|
{file = "pydantic_core-2.14.5-cp310-none-win32.whl", hash = "sha256:bb4c2eda937a5e74c38a41b33d8c77220380a388d689bcdb9b187cf6224c9720"},
|
||||||
{file = "pydantic_core-2.14.3-cp310-none-win_amd64.whl", hash = "sha256:536e1f58419e1ec35f6d1310c88496f0d60e4f182cacb773d38076f66a60b149"},
|
{file = "pydantic_core-2.14.5-cp310-none-win_amd64.whl", hash = "sha256:b7851992faf25eac90bfcb7bfd19e1f5ffa00afd57daec8a0042e63c74a4551b"},
|
||||||
{file = "pydantic_core-2.14.3-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:f1f46700402312bdc31912f6fc17f5ecaaaa3bafe5487c48f07c800052736289"},
|
{file = "pydantic_core-2.14.5-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:4e40f2bd0d57dac3feb3a3aed50f17d83436c9e6b09b16af271b6230a2915459"},
|
||||||
{file = "pydantic_core-2.14.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:88ec906eb2d92420f5b074f59cf9e50b3bb44f3cb70e6512099fdd4d88c2f87c"},
|
{file = "pydantic_core-2.14.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ab1cdb0f14dc161ebc268c09db04d2c9e6f70027f3b42446fa11c153521c0e88"},
|
||||||
{file = "pydantic_core-2.14.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:056ea7cc3c92a7d2a14b5bc9c9fa14efa794d9f05b9794206d089d06d3433dc7"},
|
{file = "pydantic_core-2.14.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aae7ea3a1c5bb40c93cad361b3e869b180ac174656120c42b9fadebf685d121b"},
|
||||||
{file = "pydantic_core-2.14.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:076edc972b68a66870cec41a4efdd72a6b655c4098a232314b02d2bfa3bfa157"},
|
{file = "pydantic_core-2.14.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:60b7607753ba62cf0739177913b858140f11b8af72f22860c28eabb2f0a61937"},
|
||||||
{file = "pydantic_core-2.14.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e71f666c3bf019f2490a47dddb44c3ccea2e69ac882f7495c68dc14d4065eac2"},
|
{file = "pydantic_core-2.14.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2248485b0322c75aee7565d95ad0e16f1c67403a470d02f94da7344184be770f"},
|
||||||
{file = "pydantic_core-2.14.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f518eac285c9632be337323eef9824a856f2680f943a9b68ac41d5f5bad7df7c"},
|
{file = "pydantic_core-2.14.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:823fcc638f67035137a5cd3f1584a4542d35a951c3cc68c6ead1df7dac825c26"},
|
||||||
{file = "pydantic_core-2.14.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9dbab442a8d9ca918b4ed99db8d89d11b1f067a7dadb642476ad0889560dac79"},
|
{file = "pydantic_core-2.14.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96581cfefa9123accc465a5fd0cc833ac4d75d55cc30b633b402e00e7ced00a6"},
|
||||||
{file = "pydantic_core-2.14.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0653fb9fc2fa6787f2fa08631314ab7fc8070307bd344bf9471d1b7207c24623"},
|
{file = "pydantic_core-2.14.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a33324437018bf6ba1bb0f921788788641439e0ed654b233285b9c69704c27b4"},
|
||||||
{file = "pydantic_core-2.14.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c54af5069da58ea643ad34ff32fd6bc4eebb8ae0fef9821cd8919063e0aeeaab"},
|
{file = "pydantic_core-2.14.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9bd18fee0923ca10f9a3ff67d4851c9d3e22b7bc63d1eddc12f439f436f2aada"},
|
||||||
{file = "pydantic_core-2.14.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cc956f78651778ec1ab105196e90e0e5f5275884793ab67c60938c75bcca3989"},
|
{file = "pydantic_core-2.14.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:853a2295c00f1d4429db4c0fb9475958543ee80cfd310814b5c0ef502de24dda"},
|
||||||
{file = "pydantic_core-2.14.3-cp311-none-win32.whl", hash = "sha256:5b73441a1159f1fb37353aaefb9e801ab35a07dd93cb8177504b25a317f4215a"},
|
{file = "pydantic_core-2.14.5-cp311-none-win32.whl", hash = "sha256:cb774298da62aea5c80a89bd58c40205ab4c2abf4834453b5de207d59d2e1651"},
|
||||||
{file = "pydantic_core-2.14.3-cp311-none-win_amd64.whl", hash = "sha256:7349f99f1ef8b940b309179733f2cad2e6037a29560f1b03fdc6aa6be0a8d03c"},
|
{file = "pydantic_core-2.14.5-cp311-none-win_amd64.whl", hash = "sha256:e87fc540c6cac7f29ede02e0f989d4233f88ad439c5cdee56f693cc9c1c78077"},
|
||||||
{file = "pydantic_core-2.14.3-cp311-none-win_arm64.whl", hash = "sha256:ec79dbe23702795944d2ae4c6925e35a075b88acd0d20acde7c77a817ebbce94"},
|
{file = "pydantic_core-2.14.5-cp311-none-win_arm64.whl", hash = "sha256:57d52fa717ff445cb0a5ab5237db502e6be50809b43a596fb569630c665abddf"},
|
||||||
{file = "pydantic_core-2.14.3-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:8f5624f0f67f2b9ecaa812e1dfd2e35b256487566585160c6c19268bf2ffeccc"},
|
{file = "pydantic_core-2.14.5-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:e60f112ac88db9261ad3a52032ea46388378034f3279c643499edb982536a093"},
|
||||||
{file = "pydantic_core-2.14.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6c2d118d1b6c9e2d577e215567eedbe11804c3aafa76d39ec1f8bc74e918fd07"},
|
{file = "pydantic_core-2.14.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6e227c40c02fd873c2a73a98c1280c10315cbebe26734c196ef4514776120aeb"},
|
||||||
{file = "pydantic_core-2.14.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe863491664c6720d65ae438d4efaa5eca766565a53adb53bf14bc3246c72fe0"},
|
{file = "pydantic_core-2.14.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0cbc7fff06a90bbd875cc201f94ef0ee3929dfbd5c55a06674b60857b8b85ed"},
|
||||||
{file = "pydantic_core-2.14.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:136bc7247e97a921a020abbd6ef3169af97569869cd6eff41b6a15a73c44ea9b"},
|
{file = "pydantic_core-2.14.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:103ef8d5b58596a731b690112819501ba1db7a36f4ee99f7892c40da02c3e189"},
|
||||||
{file = "pydantic_core-2.14.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aeafc7f5bbddc46213707266cadc94439bfa87ecf699444de8be044d6d6eb26f"},
|
{file = "pydantic_core-2.14.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c949f04ecad823f81b1ba94e7d189d9dfb81edbb94ed3f8acfce41e682e48cef"},
|
||||||
{file = "pydantic_core-2.14.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e16aaf788f1de5a85c8f8fcc9c1ca1dd7dd52b8ad30a7889ca31c7c7606615b8"},
|
{file = "pydantic_core-2.14.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c1452a1acdf914d194159439eb21e56b89aa903f2e1c65c60b9d874f9b950e5d"},
|
||||||
{file = "pydantic_core-2.14.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8fc652c354d3362e2932a79d5ac4bbd7170757a41a62c4fe0f057d29f10bebb"},
|
{file = "pydantic_core-2.14.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb4679d4c2b089e5ef89756bc73e1926745e995d76e11925e3e96a76d5fa51fc"},
|
||||||
{file = "pydantic_core-2.14.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f1b92e72babfd56585c75caf44f0b15258c58e6be23bc33f90885cebffde3400"},
|
{file = "pydantic_core-2.14.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cf9d3fe53b1ee360e2421be95e62ca9b3296bf3f2fb2d3b83ca49ad3f925835e"},
|
||||||
{file = "pydantic_core-2.14.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:75f3f534f33651b73f4d3a16d0254de096f43737d51e981478d580f4b006b427"},
|
{file = "pydantic_core-2.14.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:70f4b4851dbb500129681d04cc955be2a90b2248d69273a787dda120d5cf1f69"},
|
||||||
{file = "pydantic_core-2.14.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c9ffd823c46e05ef3eb28b821aa7bc501efa95ba8880b4a1380068e32c5bed47"},
|
{file = "pydantic_core-2.14.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:59986de5710ad9613ff61dd9b02bdd2f615f1a7052304b79cc8fa2eb4e336d2d"},
|
||||||
{file = "pydantic_core-2.14.3-cp312-none-win32.whl", hash = "sha256:12e05a76b223577a4696c76d7a6b36a0ccc491ffb3c6a8cf92d8001d93ddfd63"},
|
{file = "pydantic_core-2.14.5-cp312-none-win32.whl", hash = "sha256:699156034181e2ce106c89ddb4b6504c30db8caa86e0c30de47b3e0654543260"},
|
||||||
{file = "pydantic_core-2.14.3-cp312-none-win_amd64.whl", hash = "sha256:1582f01eaf0537a696c846bea92082082b6bfc1103a88e777e983ea9fbdc2a0f"},
|
{file = "pydantic_core-2.14.5-cp312-none-win_amd64.whl", hash = "sha256:5baab5455c7a538ac7e8bf1feec4278a66436197592a9bed538160a2e7d11e36"},
|
||||||
{file = "pydantic_core-2.14.3-cp312-none-win_arm64.whl", hash = "sha256:96fb679c7ca12a512d36d01c174a4fbfd912b5535cc722eb2c010c7b44eceb8e"},
|
{file = "pydantic_core-2.14.5-cp312-none-win_arm64.whl", hash = "sha256:e47e9a08bcc04d20975b6434cc50bf82665fbc751bcce739d04a3120428f3e27"},
|
||||||
{file = "pydantic_core-2.14.3-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:71ed769b58d44e0bc2701aa59eb199b6665c16e8a5b8b4a84db01f71580ec448"},
|
{file = "pydantic_core-2.14.5-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:af36f36538418f3806048f3b242a1777e2540ff9efaa667c27da63d2749dbce0"},
|
||||||
{file = "pydantic_core-2.14.3-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:5402ee0f61e7798ea93a01b0489520f2abfd9b57b76b82c93714c4318c66ca06"},
|
{file = "pydantic_core-2.14.5-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:45e95333b8418ded64745f14574aa9bfc212cb4fbeed7a687b0c6e53b5e188cd"},
|
||||||
{file = "pydantic_core-2.14.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eaab9dc009e22726c62fe3b850b797e7f0e7ba76d245284d1064081f512c7226"},
|
{file = "pydantic_core-2.14.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e47a76848f92529879ecfc417ff88a2806438f57be4a6a8bf2961e8f9ca9ec7"},
|
||||||
{file = "pydantic_core-2.14.3-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:92486a04d54987054f8b4405a9af9d482e5100d6fe6374fc3303015983fc8bda"},
|
{file = "pydantic_core-2.14.5-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d81e6987b27bc7d101c8597e1cd2bcaa2fee5e8e0f356735c7ed34368c471550"},
|
||||||
{file = "pydantic_core-2.14.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cf08b43d1d5d1678f295f0431a4a7e1707d4652576e1d0f8914b5e0213bfeee5"},
|
{file = "pydantic_core-2.14.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:34708cc82c330e303f4ce87758828ef6e457681b58ce0e921b6e97937dd1e2a3"},
|
||||||
{file = "pydantic_core-2.14.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8ca13480ce16daad0504be6ce893b0ee8ec34cd43b993b754198a89e2787f7e"},
|
{file = "pydantic_core-2.14.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:652c1988019752138b974c28f43751528116bcceadad85f33a258869e641d753"},
|
||||||
{file = "pydantic_core-2.14.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44afa3c18d45053fe8d8228950ee4c8eaf3b5a7f3b64963fdeac19b8342c987f"},
|
{file = "pydantic_core-2.14.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e4d090e73e0725b2904fdbdd8d73b8802ddd691ef9254577b708d413bf3006e"},
|
||||||
{file = "pydantic_core-2.14.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:56814b41486e2d712a8bc02a7b1f17b87fa30999d2323bbd13cf0e52296813a1"},
|
{file = "pydantic_core-2.14.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5c7d5b5005f177764e96bd584d7bf28d6e26e96f2a541fdddb934c486e36fd59"},
|
||||||
{file = "pydantic_core-2.14.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c3dc2920cc96f9aa40c6dc54256e436cc95c0a15562eb7bd579e1811593c377e"},
|
{file = "pydantic_core-2.14.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:a71891847f0a73b1b9eb86d089baee301477abef45f7eaf303495cd1473613e4"},
|
||||||
{file = "pydantic_core-2.14.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e483b8b913fcd3b48badec54185c150cb7ab0e6487914b84dc7cde2365e0c892"},
|
{file = "pydantic_core-2.14.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a717aef6971208f0851a2420b075338e33083111d92041157bbe0e2713b37325"},
|
||||||
{file = "pydantic_core-2.14.3-cp37-none-win32.whl", hash = "sha256:364dba61494e48f01ef50ae430e392f67ee1ee27e048daeda0e9d21c3ab2d609"},
|
{file = "pydantic_core-2.14.5-cp37-none-win32.whl", hash = "sha256:de790a3b5aa2124b8b78ae5faa033937a72da8efe74b9231698b5a1dd9be3405"},
|
||||||
{file = "pydantic_core-2.14.3-cp37-none-win_amd64.whl", hash = "sha256:a402ae1066be594701ac45661278dc4a466fb684258d1a2c434de54971b006ca"},
|
{file = "pydantic_core-2.14.5-cp37-none-win_amd64.whl", hash = "sha256:6c327e9cd849b564b234da821236e6bcbe4f359a42ee05050dc79d8ed2a91588"},
|
||||||
{file = "pydantic_core-2.14.3-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:10904368261e4509c091cbcc067e5a88b070ed9a10f7ad78f3029c175487490f"},
|
{file = "pydantic_core-2.14.5-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:ef98ca7d5995a82f43ec0ab39c4caf6a9b994cb0b53648ff61716370eadc43cf"},
|
||||||
{file = "pydantic_core-2.14.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:260692420028319e201b8649b13ac0988974eeafaaef95d0dfbf7120c38dc000"},
|
{file = "pydantic_core-2.14.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c6eae413494a1c3f89055da7a5515f32e05ebc1a234c27674a6956755fb2236f"},
|
||||||
{file = "pydantic_core-2.14.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c1bf1a7b05a65d3b37a9adea98e195e0081be6b17ca03a86f92aeb8b110f468"},
|
{file = "pydantic_core-2.14.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcf4e6d85614f7a4956c2de5a56531f44efb973d2fe4a444d7251df5d5c4dcfd"},
|
||||||
{file = "pydantic_core-2.14.3-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d7abd17a838a52140e3aeca271054e321226f52df7e0a9f0da8f91ea123afe98"},
|
{file = "pydantic_core-2.14.5-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6637560562134b0e17de333d18e69e312e0458ee4455bdad12c37100b7cad706"},
|
||||||
{file = "pydantic_core-2.14.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a5c51460ede609fbb4fa883a8fe16e749964ddb459966d0518991ec02eb8dfb9"},
|
{file = "pydantic_core-2.14.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:77fa384d8e118b3077cccfcaf91bf83c31fe4dc850b5e6ee3dc14dc3d61bdba1"},
|
||||||
{file = "pydantic_core-2.14.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d06c78074646111fb01836585f1198367b17d57c9f427e07aaa9ff499003e58d"},
|
{file = "pydantic_core-2.14.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16e29bad40bcf97aac682a58861249ca9dcc57c3f6be22f506501833ddb8939c"},
|
||||||
{file = "pydantic_core-2.14.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af452e69446fadf247f18ac5d153b1f7e61ef708f23ce85d8c52833748c58075"},
|
{file = "pydantic_core-2.14.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:531f4b4252fac6ca476fbe0e6f60f16f5b65d3e6b583bc4d87645e4e5ddde331"},
|
||||||
{file = "pydantic_core-2.14.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e3ad4968711fb379a67c8c755beb4dae8b721a83737737b7bcee27c05400b047"},
|
{file = "pydantic_core-2.14.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:074f3d86f081ce61414d2dc44901f4f83617329c6f3ab49d2bc6c96948b2c26b"},
|
||||||
{file = "pydantic_core-2.14.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c5ea0153482e5b4d601c25465771c7267c99fddf5d3f3bdc238ef930e6d051cf"},
|
{file = "pydantic_core-2.14.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c2adbe22ab4babbca99c75c5d07aaf74f43c3195384ec07ccbd2f9e3bddaecec"},
|
||||||
{file = "pydantic_core-2.14.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:96eb10ef8920990e703da348bb25fedb8b8653b5966e4e078e5be382b430f9e0"},
|
{file = "pydantic_core-2.14.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0f6116a558fd06d1b7c2902d1c4cf64a5bd49d67c3540e61eccca93f41418124"},
|
||||||
{file = "pydantic_core-2.14.3-cp38-none-win32.whl", hash = "sha256:ea1498ce4491236d1cffa0eee9ad0968b6ecb0c1cd711699c5677fc689905f00"},
|
{file = "pydantic_core-2.14.5-cp38-none-win32.whl", hash = "sha256:fe0a5a1025eb797752136ac8b4fa21aa891e3d74fd340f864ff982d649691867"},
|
||||||
{file = "pydantic_core-2.14.3-cp38-none-win_amd64.whl", hash = "sha256:2bc736725f9bd18a60eec0ed6ef9b06b9785454c8d0105f2be16e4d6274e63d0"},
|
{file = "pydantic_core-2.14.5-cp38-none-win_amd64.whl", hash = "sha256:079206491c435b60778cf2b0ee5fd645e61ffd6e70c47806c9ed51fc75af078d"},
|
||||||
{file = "pydantic_core-2.14.3-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:1ea992659c03c3ea811d55fc0a997bec9dde863a617cc7b25cfde69ef32e55af"},
|
{file = "pydantic_core-2.14.5-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:a6a16f4a527aae4f49c875da3cdc9508ac7eef26e7977952608610104244e1b7"},
|
||||||
{file = "pydantic_core-2.14.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d2b53e1f851a2b406bbb5ac58e16c4a5496038eddd856cc900278fa0da97f3fc"},
|
{file = "pydantic_core-2.14.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:abf058be9517dc877227ec3223f0300034bd0e9f53aebd63cf4456c8cb1e0863"},
|
||||||
{file = "pydantic_core-2.14.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c7f8e8a7cf8e81ca7d44bea4f181783630959d41b4b51d2f74bc50f348a090f"},
|
{file = "pydantic_core-2.14.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:49b08aae5013640a3bfa25a8eebbd95638ec3f4b2eaf6ed82cf0c7047133f03b"},
|
||||||
{file = "pydantic_core-2.14.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8d3b9c91eeb372a64ec6686c1402afd40cc20f61a0866850f7d989b6bf39a41a"},
|
{file = "pydantic_core-2.14.5-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c2d97e906b4ff36eb464d52a3bc7d720bd6261f64bc4bcdbcd2c557c02081ed2"},
|
||||||
{file = "pydantic_core-2.14.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9ef3e2e407e4cad2df3c89488a761ed1f1c33f3b826a2ea9a411b0a7d1cccf1b"},
|
{file = "pydantic_core-2.14.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3128e0bbc8c091ec4375a1828d6118bc20404883169ac95ffa8d983b293611e6"},
|
||||||
{file = "pydantic_core-2.14.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f86f20a9d5bee1a6ede0f2757b917bac6908cde0f5ad9fcb3606db1e2968bcf5"},
|
{file = "pydantic_core-2.14.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:88e74ab0cdd84ad0614e2750f903bb0d610cc8af2cc17f72c28163acfcf372a4"},
|
||||||
{file = "pydantic_core-2.14.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61beaa79d392d44dc19d6f11ccd824d3cccb865c4372157c40b92533f8d76dd0"},
|
{file = "pydantic_core-2.14.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c339dabd8ee15f8259ee0f202679b6324926e5bc9e9a40bf981ce77c038553db"},
|
||||||
{file = "pydantic_core-2.14.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d41df8e10b094640a6b234851b624b76a41552f637b9fb34dc720b9fe4ef3be4"},
|
{file = "pydantic_core-2.14.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3387277f1bf659caf1724e1afe8ee7dbc9952a82d90f858ebb931880216ea955"},
|
||||||
{file = "pydantic_core-2.14.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2c08ac60c3caa31f825b5dbac47e4875bd4954d8f559650ad9e0b225eaf8ed0c"},
|
{file = "pydantic_core-2.14.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ba6b6b3846cfc10fdb4c971980a954e49d447cd215ed5a77ec8190bc93dd7bc5"},
|
||||||
{file = "pydantic_core-2.14.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:98d8b3932f1a369364606417ded5412c4ffb15bedbcf797c31317e55bd5d920e"},
|
{file = "pydantic_core-2.14.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ca61d858e4107ce5e1330a74724fe757fc7135190eb5ce5c9d0191729f033209"},
|
||||||
{file = "pydantic_core-2.14.3-cp39-none-win32.whl", hash = "sha256:caa94726791e316f0f63049ee00dff3b34a629b0d099f3b594770f7d0d8f1f56"},
|
{file = "pydantic_core-2.14.5-cp39-none-win32.whl", hash = "sha256:ec1e72d6412f7126eb7b2e3bfca42b15e6e389e1bc88ea0069d0cc1742f477c6"},
|
||||||
{file = "pydantic_core-2.14.3-cp39-none-win_amd64.whl", hash = "sha256:2494d20e4c22beac30150b4be3b8339bf2a02ab5580fa6553ca274bc08681a65"},
|
{file = "pydantic_core-2.14.5-cp39-none-win_amd64.whl", hash = "sha256:c0b97ec434041827935044bbbe52b03d6018c2897349670ff8fe11ed24d1d4ab"},
|
||||||
{file = "pydantic_core-2.14.3-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:fe272a72c7ed29f84c42fedd2d06c2f9858dc0c00dae3b34ba15d6d8ae0fbaaf"},
|
{file = "pydantic_core-2.14.5-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:79e0a2cdbdc7af3f4aee3210b1172ab53d7ddb6a2d8c24119b5706e622b346d0"},
|
||||||
{file = "pydantic_core-2.14.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:7e63a56eb7fdee1587d62f753ccd6d5fa24fbeea57a40d9d8beaef679a24bdd6"},
|
{file = "pydantic_core-2.14.5-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:678265f7b14e138d9a541ddabbe033012a2953315739f8cfa6d754cc8063e8ca"},
|
||||||
{file = "pydantic_core-2.14.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7692f539a26265cece1e27e366df5b976a6db6b1f825a9e0466395b314ee48b"},
|
{file = "pydantic_core-2.14.5-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95b15e855ae44f0c6341ceb74df61b606e11f1087e87dcb7482377374aac6abe"},
|
||||||
{file = "pydantic_core-2.14.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af46f0b7a1342b49f208fed31f5a83b8495bb14b652f621e0a6787d2f10f24ee"},
|
{file = "pydantic_core-2.14.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:09b0e985fbaf13e6b06a56d21694d12ebca6ce5414b9211edf6f17738d82b0f8"},
|
||||||
{file = "pydantic_core-2.14.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6e2f9d76c00e805d47f19c7a96a14e4135238a7551a18bfd89bb757993fd0933"},
|
{file = "pydantic_core-2.14.5-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3ad873900297bb36e4b6b3f7029d88ff9829ecdc15d5cf20161775ce12306f8a"},
|
||||||
{file = "pydantic_core-2.14.3-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:de52ddfa6e10e892d00f747bf7135d7007302ad82e243cf16d89dd77b03b649d"},
|
{file = "pydantic_core-2.14.5-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:2d0ae0d8670164e10accbeb31d5ad45adb71292032d0fdb9079912907f0085f4"},
|
||||||
{file = "pydantic_core-2.14.3-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:38113856c7fad8c19be7ddd57df0c3e77b1b2336459cb03ee3903ce9d5e236ce"},
|
{file = "pydantic_core-2.14.5-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:d37f8ec982ead9ba0a22a996129594938138a1503237b87318392a48882d50b7"},
|
||||||
{file = "pydantic_core-2.14.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:354db020b1f8f11207b35360b92d95725621eb92656725c849a61e4b550f4acc"},
|
{file = "pydantic_core-2.14.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:35613015f0ba7e14c29ac6c2483a657ec740e5ac5758d993fdd5870b07a61d8b"},
|
||||||
{file = "pydantic_core-2.14.3-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:76fc18653a5c95e5301a52d1b5afb27c9adc77175bf00f73e94f501caf0e05ad"},
|
{file = "pydantic_core-2.14.5-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:ab4ea451082e684198636565224bbb179575efc1658c48281b2c866bfd4ddf04"},
|
||||||
{file = "pydantic_core-2.14.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2646f8270f932d79ba61102a15ea19a50ae0d43b314e22b3f8f4b5fabbfa6e38"},
|
{file = "pydantic_core-2.14.5-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ce601907e99ea5b4adb807ded3570ea62186b17f88e271569144e8cca4409c7"},
|
||||||
{file = "pydantic_core-2.14.3-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37dad73a2f82975ed563d6a277fd9b50e5d9c79910c4aec787e2d63547202315"},
|
{file = "pydantic_core-2.14.5-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb2ed8b3fe4bf4506d6dab3b93b83bbc22237e230cba03866d561c3577517d18"},
|
||||||
{file = "pydantic_core-2.14.3-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:113752a55a8eaece2e4ac96bc8817f134c2c23477e477d085ba89e3aa0f4dc44"},
|
{file = "pydantic_core-2.14.5-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:70f947628e074bb2526ba1b151cee10e4c3b9670af4dbb4d73bc8a89445916b5"},
|
||||||
{file = "pydantic_core-2.14.3-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:8488e973547e8fb1b4193fd9faf5236cf1b7cd5e9e6dc7ff6b4d9afdc4c720cb"},
|
{file = "pydantic_core-2.14.5-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4bc536201426451f06f044dfbf341c09f540b4ebdb9fd8d2c6164d733de5e634"},
|
||||||
{file = "pydantic_core-2.14.3-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:3d1dde10bd9962b1434053239b1d5490fc31a2b02d8950a5f731bc584c7a5a0f"},
|
{file = "pydantic_core-2.14.5-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f4791cf0f8c3104ac668797d8c514afb3431bc3305f5638add0ba1a5a37e0d88"},
|
||||||
{file = "pydantic_core-2.14.3-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:2c83892c7bf92b91d30faca53bb8ea21f9d7e39f0ae4008ef2c2f91116d0464a"},
|
{file = "pydantic_core-2.14.5-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:038c9f763e650712b899f983076ce783175397c848da04985658e7628cbe873b"},
|
||||||
{file = "pydantic_core-2.14.3-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:849cff945284c577c5f621d2df76ca7b60f803cc8663ff01b778ad0af0e39bb9"},
|
{file = "pydantic_core-2.14.5-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:27548e16c79702f1e03f5628589c6057c9ae17c95b4c449de3c66b589ead0520"},
|
||||||
{file = "pydantic_core-2.14.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa89919fbd8a553cd7d03bf23d5bc5deee622e1b5db572121287f0e64979476"},
|
{file = "pydantic_core-2.14.5-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c97bee68898f3f4344eb02fec316db93d9700fb1e6a5b760ffa20d71d9a46ce3"},
|
||||||
{file = "pydantic_core-2.14.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf15145b1f8056d12c67255cd3ce5d317cd4450d5ee747760d8d088d85d12a2d"},
|
{file = "pydantic_core-2.14.5-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9b759b77f5337b4ea024f03abc6464c9f35d9718de01cfe6bae9f2e139c397e"},
|
||||||
{file = "pydantic_core-2.14.3-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4cc6bb11f4e8e5ed91d78b9880774fbc0856cb226151b0a93b549c2b26a00c19"},
|
{file = "pydantic_core-2.14.5-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:439c9afe34638ace43a49bf72d201e0ffc1a800295bed8420c2a9ca8d5e3dbb3"},
|
||||||
{file = "pydantic_core-2.14.3-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:832d16f248ca0cc96929139734ec32d21c67669dcf8a9f3f733c85054429c012"},
|
{file = "pydantic_core-2.14.5-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:ba39688799094c75ea8a16a6b544eb57b5b0f3328697084f3f2790892510d144"},
|
||||||
{file = "pydantic_core-2.14.3-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b02b5e1f54c3396c48b665050464803c23c685716eb5d82a1d81bf81b5230da4"},
|
{file = "pydantic_core-2.14.5-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ccd4d5702bb90b84df13bd491be8d900b92016c5a455b7e14630ad7449eb03f8"},
|
||||||
{file = "pydantic_core-2.14.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:1f2d4516c32255782153e858f9a900ca6deadfb217fd3fb21bb2b60b4e04d04d"},
|
{file = "pydantic_core-2.14.5-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:81982d78a45d1e5396819bbb4ece1fadfe5f079335dd28c4ab3427cd95389944"},
|
||||||
{file = "pydantic_core-2.14.3-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:0a3e51c2be472b7867eb0c5d025b91400c2b73a0823b89d4303a9097e2ec6655"},
|
{file = "pydantic_core-2.14.5-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:7f8210297b04e53bc3da35db08b7302a6a1f4889c79173af69b72ec9754796b8"},
|
||||||
{file = "pydantic_core-2.14.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:df33902464410a1f1a0411a235f0a34e7e129f12cb6340daca0f9d1390f5fe10"},
|
{file = "pydantic_core-2.14.5-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:8c8a8812fe6f43a3a5b054af6ac2d7b8605c7bcab2804a8a7d68b53f3cd86e00"},
|
||||||
{file = "pydantic_core-2.14.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27828f0227b54804aac6fb077b6bb48e640b5435fdd7fbf0c274093a7b78b69c"},
|
{file = "pydantic_core-2.14.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:206ed23aecd67c71daf5c02c3cd19c0501b01ef3cbf7782db9e4e051426b3d0d"},
|
||||||
{file = "pydantic_core-2.14.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e2979dc80246e18e348de51246d4c9b410186ffa3c50e77924bec436b1e36cb"},
|
{file = "pydantic_core-2.14.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2027d05c8aebe61d898d4cffd774840a9cb82ed356ba47a90d99ad768f39789"},
|
||||||
{file = "pydantic_core-2.14.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b28996872b48baf829ee75fa06998b607c66a4847ac838e6fd7473a6b2ab68e7"},
|
{file = "pydantic_core-2.14.5-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:40180930807ce806aa71eda5a5a5447abb6b6a3c0b4b3b1b1962651906484d68"},
|
||||||
{file = "pydantic_core-2.14.3-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:ca55c9671bb637ce13d18ef352fd32ae7aba21b4402f300a63f1fb1fd18e0364"},
|
{file = "pydantic_core-2.14.5-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:615a0a4bff11c45eb3c1996ceed5bdaa2f7b432425253a7c2eed33bb86d80abc"},
|
||||||
{file = "pydantic_core-2.14.3-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:aecd5ed096b0e5d93fb0367fd8f417cef38ea30b786f2501f6c34eabd9062c38"},
|
{file = "pydantic_core-2.14.5-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f5e412d717366e0677ef767eac93566582518fe8be923361a5c204c1a62eaafe"},
|
||||||
{file = "pydantic_core-2.14.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:44aaf1a07ad0824e407dafc637a852e9a44d94664293bbe7d8ee549c356c8882"},
|
{file = "pydantic_core-2.14.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:513b07e99c0a267b1d954243845d8a833758a6726a3b5d8948306e3fe14675e3"},
|
||||||
{file = "pydantic_core-2.14.3.tar.gz", hash = "sha256:3ad083df8fe342d4d8d00cc1d3c1a23f0dc84fce416eb301e69f1ddbbe124d3f"},
|
{file = "pydantic_core-2.14.5.tar.gz", hash = "sha256:6d30226dfc816dd0fdf120cae611dd2215117e4f9b124af8c60ab9093b6e8e71"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
|
@ -2425,28 +2419,28 @@ files = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ruff"
|
name = "ruff"
|
||||||
version = "0.1.6"
|
version = "0.1.7"
|
||||||
description = "An extremely fast Python linter and code formatter, written in Rust."
|
description = "An extremely fast Python linter and code formatter, written in Rust."
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
{file = "ruff-0.1.6-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:88b8cdf6abf98130991cbc9f6438f35f6e8d41a02622cc5ee130a02a0ed28703"},
|
{file = "ruff-0.1.7-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:7f80496854fdc65b6659c271d2c26e90d4d401e6a4a31908e7e334fab4645aac"},
|
||||||
{file = "ruff-0.1.6-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:5c549ed437680b6105a1299d2cd30e4964211606eeb48a0ff7a93ef70b902248"},
|
{file = "ruff-0.1.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:1ea109bdb23c2a4413f397ebd8ac32cb498bee234d4191ae1a310af760e5d287"},
|
||||||
{file = "ruff-0.1.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cf5f701062e294f2167e66d11b092bba7af6a057668ed618a9253e1e90cfd76"},
|
{file = "ruff-0.1.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b0c2de9dd9daf5e07624c24add25c3a490dbf74b0e9bca4145c632457b3b42a"},
|
||||||
{file = "ruff-0.1.6-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:05991ee20d4ac4bb78385360c684e4b417edd971030ab12a4fbd075ff535050e"},
|
{file = "ruff-0.1.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:69a4bed13bc1d5dabf3902522b5a2aadfebe28226c6269694283c3b0cecb45fd"},
|
||||||
{file = "ruff-0.1.6-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:87455a0c1f739b3c069e2f4c43b66479a54dea0276dd5d4d67b091265f6fd1dc"},
|
{file = "ruff-0.1.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de02ca331f2143195a712983a57137c5ec0f10acc4aa81f7c1f86519e52b92a1"},
|
||||||
{file = "ruff-0.1.6-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:683aa5bdda5a48cb8266fcde8eea2a6af4e5700a392c56ea5fb5f0d4bfdc0240"},
|
{file = "ruff-0.1.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:45b38c3f8788a65e6a2cab02e0f7adfa88872696839d9882c13b7e2f35d64c5f"},
|
||||||
{file = "ruff-0.1.6-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:137852105586dcbf80c1717facb6781555c4e99f520c9c827bd414fac67ddfb6"},
|
{file = "ruff-0.1.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6c64cb67b2025b1ac6d58e5ffca8f7b3f7fd921f35e78198411237e4f0db8e73"},
|
||||||
{file = "ruff-0.1.6-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bd98138a98d48a1c36c394fd6b84cd943ac92a08278aa8ac8c0fdefcf7138f35"},
|
{file = "ruff-0.1.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9dcc6bb2f4df59cb5b4b40ff14be7d57012179d69c6565c1da0d1f013d29951b"},
|
||||||
{file = "ruff-0.1.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a0cd909d25f227ac5c36d4e7e681577275fb74ba3b11d288aff7ec47e3ae745"},
|
{file = "ruff-0.1.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:df2bb4bb6bbe921f6b4f5b6fdd8d8468c940731cb9406f274ae8c5ed7a78c478"},
|
||||||
{file = "ruff-0.1.6-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:e8fd1c62a47aa88a02707b5dd20c5ff20d035d634aa74826b42a1da77861b5ff"},
|
{file = "ruff-0.1.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:276a89bcb149b3d8c1b11d91aa81898fe698900ed553a08129b38d9d6570e717"},
|
||||||
{file = "ruff-0.1.6-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:fd89b45d374935829134a082617954120d7a1470a9f0ec0e7f3ead983edc48cc"},
|
{file = "ruff-0.1.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:90c958fe950735041f1c80d21b42184f1072cc3975d05e736e8d66fc377119ea"},
|
||||||
{file = "ruff-0.1.6-py3-none-musllinux_1_2_i686.whl", hash = "sha256:491262006e92f825b145cd1e52948073c56560243b55fb3b4ecb142f6f0e9543"},
|
{file = "ruff-0.1.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:6b05e3b123f93bb4146a761b7a7d57af8cb7384ccb2502d29d736eaade0db519"},
|
||||||
{file = "ruff-0.1.6-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:ea284789861b8b5ca9d5443591a92a397ac183d4351882ab52f6296b4fdd5462"},
|
{file = "ruff-0.1.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:290ecab680dce94affebefe0bbca2322a6277e83d4f29234627e0f8f6b4fa9ce"},
|
||||||
{file = "ruff-0.1.6-py3-none-win32.whl", hash = "sha256:1610e14750826dfc207ccbcdd7331b6bd285607d4181df9c1c6ae26646d6848a"},
|
{file = "ruff-0.1.7-py3-none-win32.whl", hash = "sha256:416dfd0bd45d1a2baa3b1b07b1b9758e7d993c256d3e51dc6e03a5e7901c7d80"},
|
||||||
{file = "ruff-0.1.6-py3-none-win_amd64.whl", hash = "sha256:4558b3e178145491e9bc3b2ee3c4b42f19d19384eaa5c59d10acf6e8f8b57e33"},
|
{file = "ruff-0.1.7-py3-none-win_amd64.whl", hash = "sha256:4af95fd1d3b001fc41325064336db36e3d27d2004cdb6d21fd617d45a172dd96"},
|
||||||
{file = "ruff-0.1.6-py3-none-win_arm64.whl", hash = "sha256:03910e81df0d8db0e30050725a5802441c2022ea3ae4fe0609b76081731accbc"},
|
{file = "ruff-0.1.7-py3-none-win_arm64.whl", hash = "sha256:0683b7bfbb95e6df3c7c04fe9d78f631f8e8ba4868dfc932d43d690698057e2e"},
|
||||||
{file = "ruff-0.1.6.tar.gz", hash = "sha256:1b09f29b16c6ead5ea6b097ef2764b42372aebe363722f1605ecbcd2b9207184"},
|
{file = "ruff-0.1.7.tar.gz", hash = "sha256:dffd699d07abf54833e5f6cc50b85a6ff043715da8788c4a79bcd4ab4734d306"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -3151,13 +3145,13 @@ urllib3 = ">=2"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "types-setuptools"
|
name = "types-setuptools"
|
||||||
version = "68.2.0.2"
|
version = "69.0.0.0"
|
||||||
description = "Typing stubs for setuptools"
|
description = "Typing stubs for setuptools"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
{file = "types-setuptools-68.2.0.2.tar.gz", hash = "sha256:09efc380ad5c7f78e30bca1546f706469568cf26084cfab73ecf83dea1d28446"},
|
{file = "types-setuptools-69.0.0.0.tar.gz", hash = "sha256:b0a06219f628c6527b2f8ce770a4f47550e00d3e8c3ad83e2dc31bc6e6eda95d"},
|
||||||
{file = "types_setuptools-68.2.0.2-py3-none-any.whl", hash = "sha256:d5b5ff568ea2474eb573dcb783def7dadfd9b1ff638bb653b3c7051ce5aeb6d1"},
|
{file = "types_setuptools-69.0.0.0-py3-none-any.whl", hash = "sha256:8c86195bae2ad81e6dea900a570fe9d64a59dbce2b11cc63c046b03246ea77bf"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -3432,4 +3426,4 @@ user-search = ["pyicu"]
|
||||||
[metadata]
|
[metadata]
|
||||||
lock-version = "2.0"
|
lock-version = "2.0"
|
||||||
python-versions = "^3.8.0"
|
python-versions = "^3.8.0"
|
||||||
content-hash = "57716a9580b3493c3d2038492a6d4c36d1d16a79c5a0880b6eadcaf681503d3a"
|
content-hash = "688544d284790009b81e62bff6ffee104972648092af67170f89a7cecb08ada4"
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
package = "synapse"
|
package = "synapse"
|
||||||
filename = "CHANGES.md"
|
filename = "CHANGES.md"
|
||||||
directory = "changelog.d"
|
directory = "changelog.d"
|
||||||
issue_format = "[\\#{issue}](https://github.com/matrix-org/synapse/issues/{issue})"
|
issue_format = "[\\#{issue}](https://github.com/element-hq/synapse/issues/{issue})"
|
||||||
|
|
||||||
[[tool.towncrier.type]]
|
[[tool.towncrier.type]]
|
||||||
directory = "feature"
|
directory = "feature"
|
||||||
|
@ -96,12 +96,12 @@ module-name = "synapse.synapse_rust"
|
||||||
|
|
||||||
[tool.poetry]
|
[tool.poetry]
|
||||||
name = "matrix-synapse"
|
name = "matrix-synapse"
|
||||||
version = "1.98.0"
|
version = "1.99.0"
|
||||||
description = "Homeserver for the Matrix decentralised comms protocol"
|
description = "Homeserver for the Matrix decentralised comms protocol"
|
||||||
authors = ["Matrix.org Team and Contributors <packages@matrix.org>"]
|
authors = ["Matrix.org Team and Contributors <packages@matrix.org>"]
|
||||||
license = "Apache-2.0"
|
license = "AGPL-3.0-or-later"
|
||||||
readme = "README.rst"
|
readme = "README.rst"
|
||||||
repository = "https://github.com/matrix-org/synapse"
|
repository = "https://github.com/element-hq/synapse"
|
||||||
packages = [
|
packages = [
|
||||||
{ include = "synapse" },
|
{ include = "synapse" },
|
||||||
]
|
]
|
||||||
|
@ -321,7 +321,7 @@ all = [
|
||||||
# This helps prevents merge conflicts when running a batch of dependabot updates.
|
# This helps prevents merge conflicts when running a batch of dependabot updates.
|
||||||
isort = ">=5.10.1"
|
isort = ">=5.10.1"
|
||||||
black = ">=22.7.0"
|
black = ">=22.7.0"
|
||||||
ruff = "0.1.6"
|
ruff = "0.1.7"
|
||||||
# Type checking only works with the pydantic.v1 compat module from pydantic v2
|
# Type checking only works with the pydantic.v1 compat module from pydantic v2
|
||||||
pydantic = "^2"
|
pydantic = "^2"
|
||||||
|
|
||||||
|
|
|
@ -1,16 +1,22 @@
|
||||||
// Copyright 2022 The Matrix.org Foundation C.I.C.
|
/*
|
||||||
//
|
* This file is licensed under the Affero General Public License (AGPL) version 3.
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
*
|
||||||
// you may not use this file except in compliance with the License.
|
* Copyright (C) 2023 New Vector, Ltd
|
||||||
// You may obtain a copy of the License at
|
*
|
||||||
//
|
* This program is free software: you can redistribute it and/or modify
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
* it under the terms of the GNU Affero General Public License as
|
||||||
//
|
* published by the Free Software Foundation, either version 3 of the
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
* License, or (at your option) any later version.
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
*
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* See the GNU Affero General Public License for more details:
|
||||||
// See the License for the specific language governing permissions and
|
* <https://www.gnu.org/licenses/agpl-3.0.html>.
|
||||||
// limitations under the License.
|
*
|
||||||
|
* Originally licensed under the Apache License, Version 2.0:
|
||||||
|
* <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||||
|
*
|
||||||
|
* [This file includes modifications made by New Vector Limited]
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
#![feature(test)]
|
#![feature(test)]
|
||||||
|
|
||||||
|
|
|
@ -1,16 +1,22 @@
|
||||||
// Copyright 2022 The Matrix.org Foundation C.I.C.
|
/*
|
||||||
//
|
* This file is licensed under the Affero General Public License (AGPL) version 3.
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
*
|
||||||
// you may not use this file except in compliance with the License.
|
* Copyright (C) 2023 New Vector, Ltd
|
||||||
// You may obtain a copy of the License at
|
*
|
||||||
//
|
* This program is free software: you can redistribute it and/or modify
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
* it under the terms of the GNU Affero General Public License as
|
||||||
//
|
* published by the Free Software Foundation, either version 3 of the
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
* License, or (at your option) any later version.
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
*
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* See the GNU Affero General Public License for more details:
|
||||||
// See the License for the specific language governing permissions and
|
* <https://www.gnu.org/licenses/agpl-3.0.html>.
|
||||||
// limitations under the License.
|
*
|
||||||
|
* Originally licensed under the Apache License, Version 2.0:
|
||||||
|
* <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||||
|
*
|
||||||
|
* [This file includes modifications made by New Vector Limited]
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
#![feature(test)]
|
#![feature(test)]
|
||||||
|
|
||||||
|
|
|
@ -1,16 +1,22 @@
|
||||||
// Copyright 2023 The Matrix.org Foundation C.I.C.
|
/*
|
||||||
//
|
* This file is licensed under the Affero General Public License (AGPL) version 3.
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
*
|
||||||
// you may not use this file except in compliance with the License.
|
* Copyright (C) 2023 New Vector, Ltd
|
||||||
// You may obtain a copy of the License at
|
*
|
||||||
//
|
* This program is free software: you can redistribute it and/or modify
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
* it under the terms of the GNU Affero General Public License as
|
||||||
//
|
* published by the Free Software Foundation, either version 3 of the
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
* License, or (at your option) any later version.
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
*
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* See the GNU Affero General Public License for more details:
|
||||||
// See the License for the specific language governing permissions and
|
* <https://www.gnu.org/licenses/agpl-3.0.html>.
|
||||||
// limitations under the License.
|
*
|
||||||
|
* Originally licensed under the Apache License, Version 2.0:
|
||||||
|
* <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||||
|
*
|
||||||
|
* [This file includes modifications made by New Vector Limited]
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
//! An implementation of Matrix server ACL rules.
|
//! An implementation of Matrix server ACL rules.
|
||||||
|
|
||||||
|
|
430
rust/src/events/internal_metadata.rs
Normal file
430
rust/src/events/internal_metadata.rs
Normal file
|
@ -0,0 +1,430 @@
|
||||||
|
/*
|
||||||
|
* This file is licensed under the Affero General Public License (AGPL) version 3.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2024 New Vector, Ltd
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as
|
||||||
|
* published by the Free Software Foundation, either version 3 of the
|
||||||
|
* License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* See the GNU Affero General Public License for more details:
|
||||||
|
* <https://www.gnu.org/licenses/agpl-3.0.html>.
|
||||||
|
*
|
||||||
|
* Originally licensed under the Apache License, Version 2.0:
|
||||||
|
* <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||||
|
*
|
||||||
|
* [This file includes modifications made by New Vector Limited]
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
//! Implements the internal metadata class attached to events.
|
||||||
|
//!
|
||||||
|
//! The internal metadata is a bit like a `TypedDict`, in that it is stored as a
|
||||||
|
//! JSON dict in the DB. Most events have zero, or only a few, of these keys
|
||||||
|
//! set. Therefore, since we care more about memory size than performance here,
|
||||||
|
//! we store these fields in a mapping.
|
||||||
|
//!
|
||||||
|
//! We want to store (most) of the fields as Rust objects, so we implement the
|
||||||
|
//! mapping by using a vec of enums. This is less efficient than using
|
||||||
|
//! attributes, but for small number of keys is actually faster than using a
|
||||||
|
//! hash or btree map.
|
||||||
|
|
||||||
|
use std::{num::NonZeroI64, ops::Deref};
|
||||||
|
|
||||||
|
use anyhow::Context;
|
||||||
|
use log::warn;
|
||||||
|
use pyo3::{
|
||||||
|
exceptions::PyAttributeError,
|
||||||
|
pyclass, pymethods,
|
||||||
|
types::{PyDict, PyString},
|
||||||
|
IntoPy, PyAny, PyObject, PyResult, Python,
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Definitions of the various fields of the internal metadata.
|
||||||
|
#[derive(Clone)]
|
||||||
|
enum EventInternalMetadataData {
|
||||||
|
OutOfBandMembership(bool),
|
||||||
|
SendOnBehalfOf(Box<str>),
|
||||||
|
RecheckRedaction(bool),
|
||||||
|
SoftFailed(bool),
|
||||||
|
ProactivelySend(bool),
|
||||||
|
Redacted(bool),
|
||||||
|
TxnId(Box<str>),
|
||||||
|
TokenId(i64),
|
||||||
|
DeviceId(Box<str>),
|
||||||
|
}
|
||||||
|
|
||||||
|
impl EventInternalMetadataData {
|
||||||
|
/// Convert the field to its name and python object.
|
||||||
|
fn to_python_pair<'a>(&self, py: Python<'a>) -> (&'a PyString, PyObject) {
|
||||||
|
match self {
|
||||||
|
EventInternalMetadataData::OutOfBandMembership(o) => {
|
||||||
|
(pyo3::intern!(py, "out_of_band_membership"), o.into_py(py))
|
||||||
|
}
|
||||||
|
EventInternalMetadataData::SendOnBehalfOf(o) => {
|
||||||
|
(pyo3::intern!(py, "send_on_behalf_of"), o.into_py(py))
|
||||||
|
}
|
||||||
|
EventInternalMetadataData::RecheckRedaction(o) => {
|
||||||
|
(pyo3::intern!(py, "recheck_redaction"), o.into_py(py))
|
||||||
|
}
|
||||||
|
EventInternalMetadataData::SoftFailed(o) => {
|
||||||
|
(pyo3::intern!(py, "soft_failed"), o.into_py(py))
|
||||||
|
}
|
||||||
|
EventInternalMetadataData::ProactivelySend(o) => {
|
||||||
|
(pyo3::intern!(py, "proactively_send"), o.into_py(py))
|
||||||
|
}
|
||||||
|
EventInternalMetadataData::Redacted(o) => {
|
||||||
|
(pyo3::intern!(py, "redacted"), o.into_py(py))
|
||||||
|
}
|
||||||
|
EventInternalMetadataData::TxnId(o) => (pyo3::intern!(py, "txn_id"), o.into_py(py)),
|
||||||
|
EventInternalMetadataData::TokenId(o) => (pyo3::intern!(py, "token_id"), o.into_py(py)),
|
||||||
|
EventInternalMetadataData::DeviceId(o) => {
|
||||||
|
(pyo3::intern!(py, "device_id"), o.into_py(py))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Converts from python key/values to the field.
|
||||||
|
///
|
||||||
|
/// Returns `None` if the key is a valid but unrecognized string.
|
||||||
|
fn from_python_pair(key: &PyAny, value: &PyAny) -> PyResult<Option<Self>> {
|
||||||
|
let key_str: &str = key.extract()?;
|
||||||
|
|
||||||
|
let e = match key_str {
|
||||||
|
"out_of_band_membership" => EventInternalMetadataData::OutOfBandMembership(
|
||||||
|
value
|
||||||
|
.extract()
|
||||||
|
.with_context(|| format!("'{key_str}' has invalid type"))?,
|
||||||
|
),
|
||||||
|
|
||||||
|
"send_on_behalf_of" => EventInternalMetadataData::SendOnBehalfOf(
|
||||||
|
value
|
||||||
|
.extract()
|
||||||
|
.map(String::into_boxed_str)
|
||||||
|
.with_context(|| format!("'{key_str}' has invalid type"))?,
|
||||||
|
),
|
||||||
|
"recheck_redaction" => EventInternalMetadataData::RecheckRedaction(
|
||||||
|
value
|
||||||
|
.extract()
|
||||||
|
.with_context(|| format!("'{key_str}' has invalid type"))?,
|
||||||
|
),
|
||||||
|
"soft_failed" => EventInternalMetadataData::SoftFailed(
|
||||||
|
value
|
||||||
|
.extract()
|
||||||
|
.with_context(|| format!("'{key_str}' has invalid type"))?,
|
||||||
|
),
|
||||||
|
"proactively_send" => EventInternalMetadataData::ProactivelySend(
|
||||||
|
value
|
||||||
|
.extract()
|
||||||
|
.with_context(|| format!("'{key_str}' has invalid type"))?,
|
||||||
|
),
|
||||||
|
"redacted" => EventInternalMetadataData::Redacted(
|
||||||
|
value
|
||||||
|
.extract()
|
||||||
|
.with_context(|| format!("'{key_str}' has invalid type"))?,
|
||||||
|
),
|
||||||
|
"txn_id" => EventInternalMetadataData::TxnId(
|
||||||
|
value
|
||||||
|
.extract()
|
||||||
|
.map(String::into_boxed_str)
|
||||||
|
.with_context(|| format!("'{key_str}' has invalid type"))?,
|
||||||
|
),
|
||||||
|
"token_id" => EventInternalMetadataData::TokenId(
|
||||||
|
value
|
||||||
|
.extract()
|
||||||
|
.with_context(|| format!("'{key_str}' has invalid type"))?,
|
||||||
|
),
|
||||||
|
"device_id" => EventInternalMetadataData::DeviceId(
|
||||||
|
value
|
||||||
|
.extract()
|
||||||
|
.map(String::into_boxed_str)
|
||||||
|
.with_context(|| format!("'{key_str}' has invalid type"))?,
|
||||||
|
),
|
||||||
|
_ => return Ok(None),
|
||||||
|
};
|
||||||
|
|
||||||
|
Ok(Some(e))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Helper macro to find the given field in internal metadata, returning None if
|
||||||
|
/// not found.
|
||||||
|
macro_rules! get_property_opt {
|
||||||
|
($self:expr, $name:ident) => {
|
||||||
|
$self.data.iter().find_map(|entry| {
|
||||||
|
if let EventInternalMetadataData::$name(data) = entry {
|
||||||
|
Some(data)
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
})
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Helper macro to find the given field in internal metadata, raising an
|
||||||
|
/// attribute error if not found.
|
||||||
|
macro_rules! get_property {
|
||||||
|
($self:expr, $name:ident) => {
|
||||||
|
get_property_opt!($self, $name).ok_or_else(|| {
|
||||||
|
PyAttributeError::new_err(format!(
|
||||||
|
"'EventInternalMetadata' has no attribute '{}'",
|
||||||
|
stringify!($name),
|
||||||
|
))
|
||||||
|
})
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Helper macro to set the give field.
|
||||||
|
macro_rules! set_property {
|
||||||
|
($self:expr, $name:ident, $obj:expr) => {
|
||||||
|
for entry in &mut $self.data {
|
||||||
|
if let EventInternalMetadataData::$name(data) = entry {
|
||||||
|
*data = $obj;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$self.data.push(EventInternalMetadataData::$name($obj))
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#[pyclass]
|
||||||
|
#[derive(Clone)]
|
||||||
|
pub struct EventInternalMetadata {
|
||||||
|
/// The fields of internal metadata. This functions as a mapping.
|
||||||
|
data: Vec<EventInternalMetadataData>,
|
||||||
|
|
||||||
|
/// The stream ordering of this event. None, until it has been persisted.
|
||||||
|
#[pyo3(get, set)]
|
||||||
|
stream_ordering: Option<NonZeroI64>,
|
||||||
|
|
||||||
|
/// whether this event is an outlier (ie, whether we have the state at that
|
||||||
|
/// point in the DAG)
|
||||||
|
#[pyo3(get, set)]
|
||||||
|
outlier: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[pymethods]
|
||||||
|
impl EventInternalMetadata {
|
||||||
|
#[new]
|
||||||
|
fn new(dict: &PyDict) -> PyResult<Self> {
|
||||||
|
let mut data = Vec::with_capacity(dict.len());
|
||||||
|
|
||||||
|
for (key, value) in dict.iter() {
|
||||||
|
match EventInternalMetadataData::from_python_pair(key, value) {
|
||||||
|
Ok(Some(entry)) => data.push(entry),
|
||||||
|
Ok(None) => {}
|
||||||
|
Err(err) => {
|
||||||
|
warn!("Ignoring internal metadata field '{key}', as failed to convert to Rust due to {err}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
data.shrink_to_fit();
|
||||||
|
|
||||||
|
Ok(EventInternalMetadata {
|
||||||
|
data,
|
||||||
|
stream_ordering: None,
|
||||||
|
outlier: false,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fn copy(&self) -> Self {
|
||||||
|
self.clone()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_dict(&self, py: Python<'_>) -> PyResult<PyObject> {
|
||||||
|
let dict = PyDict::new(py);
|
||||||
|
|
||||||
|
for entry in &self.data {
|
||||||
|
let (key, value) = entry.to_python_pair(py);
|
||||||
|
dict.set_item(key, value)?;
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(dict.into())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn is_outlier(&self) -> bool {
|
||||||
|
self.outlier
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Whether this event is an out-of-band membership.
|
||||||
|
///
|
||||||
|
/// OOB memberships are a special case of outlier events: they are
|
||||||
|
/// membership events for federated rooms that we aren't full members of.
|
||||||
|
/// Examples include invites received over federation, and rejections for
|
||||||
|
/// such invites.
|
||||||
|
///
|
||||||
|
/// The concept of an OOB membership is needed because these events need to
|
||||||
|
/// be processed as if they're new regular events (e.g. updating membership
|
||||||
|
/// state in the database, relaying to clients via /sync, etc) despite being
|
||||||
|
/// outliers.
|
||||||
|
///
|
||||||
|
/// See also
|
||||||
|
/// https://element-hq.github.io/synapse/develop/development/room-dag-concepts.html#out-of-band-membership-events.
|
||||||
|
///
|
||||||
|
/// (Added in synapse 0.99.0, so may be unreliable for events received
|
||||||
|
/// before that)
|
||||||
|
fn is_out_of_band_membership(&self) -> bool {
|
||||||
|
get_property_opt!(self, OutOfBandMembership)
|
||||||
|
.copied()
|
||||||
|
.unwrap_or(false)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Whether this server should send the event on behalf of another server.
|
||||||
|
/// This is used by the federation "send_join" API to forward the initial
|
||||||
|
/// join event for a server in the room.
|
||||||
|
///
|
||||||
|
/// returns a str with the name of the server this event is sent on behalf
|
||||||
|
/// of.
|
||||||
|
fn get_send_on_behalf_of(&self) -> Option<&str> {
|
||||||
|
let s = get_property_opt!(self, SendOnBehalfOf);
|
||||||
|
s.map(|a| a.deref())
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Whether the redaction event needs to be rechecked when fetching
|
||||||
|
/// from the database.
|
||||||
|
///
|
||||||
|
/// Starting in room v3 redaction events are accepted up front, and later
|
||||||
|
/// checked to see if the redacter and redactee's domains match.
|
||||||
|
///
|
||||||
|
/// If the sender of the redaction event is allowed to redact any event
|
||||||
|
/// due to auth rules, then this will always return false.
|
||||||
|
fn need_to_check_redaction(&self) -> bool {
|
||||||
|
get_property_opt!(self, RecheckRedaction)
|
||||||
|
.copied()
|
||||||
|
.unwrap_or(false)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Whether the event has been soft failed.
|
||||||
|
///
|
||||||
|
/// Soft failed events should be handled as usual, except:
|
||||||
|
/// 1. They should not go down sync or event streams, or generally sent to
|
||||||
|
/// clients.
|
||||||
|
/// 2. They should not be added to the forward extremities (and therefore
|
||||||
|
/// not to current state).
|
||||||
|
fn is_soft_failed(&self) -> bool {
|
||||||
|
get_property_opt!(self, SoftFailed)
|
||||||
|
.copied()
|
||||||
|
.unwrap_or(false)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Whether the event, if ours, should be sent to other clients and servers.
|
||||||
|
///
|
||||||
|
/// This is used for sending dummy events internally. Servers and clients
|
||||||
|
/// can still explicitly fetch the event.
|
||||||
|
fn should_proactively_send(&self) -> bool {
|
||||||
|
get_property_opt!(self, ProactivelySend)
|
||||||
|
.copied()
|
||||||
|
.unwrap_or(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Whether the event has been redacted.
|
||||||
|
///
|
||||||
|
/// This is used for efficiently checking whether an event has been marked
|
||||||
|
/// as redacted without needing to make another database call.
|
||||||
|
fn is_redacted(&self) -> bool {
|
||||||
|
get_property_opt!(self, Redacted).copied().unwrap_or(false)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Whether this event can trigger a push notification
|
||||||
|
fn is_notifiable(&self) -> bool {
|
||||||
|
!self.outlier || self.is_out_of_band_membership()
|
||||||
|
}
|
||||||
|
|
||||||
|
// ** The following are the getters and setters of the various properties **
|
||||||
|
|
||||||
|
#[getter]
|
||||||
|
fn get_out_of_band_membership(&self) -> PyResult<bool> {
|
||||||
|
let bool = get_property!(self, OutOfBandMembership)?;
|
||||||
|
Ok(*bool)
|
||||||
|
}
|
||||||
|
#[setter]
|
||||||
|
fn set_out_of_band_membership(&mut self, obj: bool) {
|
||||||
|
set_property!(self, OutOfBandMembership, obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[getter(send_on_behalf_of)]
|
||||||
|
fn getter_send_on_behalf_of(&self) -> PyResult<&str> {
|
||||||
|
let s = get_property!(self, SendOnBehalfOf)?;
|
||||||
|
Ok(s)
|
||||||
|
}
|
||||||
|
#[setter]
|
||||||
|
fn set_send_on_behalf_of(&mut self, obj: String) {
|
||||||
|
set_property!(self, SendOnBehalfOf, obj.into_boxed_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[getter]
|
||||||
|
fn get_recheck_redaction(&self) -> PyResult<bool> {
|
||||||
|
let bool = get_property!(self, RecheckRedaction)?;
|
||||||
|
Ok(*bool)
|
||||||
|
}
|
||||||
|
#[setter]
|
||||||
|
fn set_recheck_redaction(&mut self, obj: bool) {
|
||||||
|
set_property!(self, RecheckRedaction, obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[getter]
|
||||||
|
fn get_soft_failed(&self) -> PyResult<bool> {
|
||||||
|
let bool = get_property!(self, SoftFailed)?;
|
||||||
|
Ok(*bool)
|
||||||
|
}
|
||||||
|
#[setter]
|
||||||
|
fn set_soft_failed(&mut self, obj: bool) {
|
||||||
|
set_property!(self, SoftFailed, obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[getter]
|
||||||
|
fn get_proactively_send(&self) -> PyResult<bool> {
|
||||||
|
let bool = get_property!(self, ProactivelySend)?;
|
||||||
|
Ok(*bool)
|
||||||
|
}
|
||||||
|
#[setter]
|
||||||
|
fn set_proactively_send(&mut self, obj: bool) {
|
||||||
|
set_property!(self, ProactivelySend, obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[getter]
|
||||||
|
fn get_redacted(&self) -> PyResult<bool> {
|
||||||
|
let bool = get_property!(self, Redacted)?;
|
||||||
|
Ok(*bool)
|
||||||
|
}
|
||||||
|
#[setter]
|
||||||
|
fn set_redacted(&mut self, obj: bool) {
|
||||||
|
set_property!(self, Redacted, obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// The transaction ID, if it was set when the event was created.
|
||||||
|
#[getter]
|
||||||
|
fn get_txn_id(&self) -> PyResult<&str> {
|
||||||
|
let s = get_property!(self, TxnId)?;
|
||||||
|
Ok(s)
|
||||||
|
}
|
||||||
|
#[setter]
|
||||||
|
fn set_txn_id(&mut self, obj: String) {
|
||||||
|
set_property!(self, TxnId, obj.into_boxed_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
/// The access token ID of the user who sent this event, if any.
|
||||||
|
#[getter]
|
||||||
|
fn get_token_id(&self) -> PyResult<i64> {
|
||||||
|
let r = get_property!(self, TokenId)?;
|
||||||
|
Ok(*r)
|
||||||
|
}
|
||||||
|
#[setter]
|
||||||
|
fn set_token_id(&mut self, obj: i64) {
|
||||||
|
set_property!(self, TokenId, obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// The device ID of the user who sent this event, if any.
|
||||||
|
#[getter]
|
||||||
|
fn get_device_id(&self) -> PyResult<&str> {
|
||||||
|
let s = get_property!(self, DeviceId)?;
|
||||||
|
Ok(s)
|
||||||
|
}
|
||||||
|
#[setter]
|
||||||
|
fn set_device_id(&mut self, obj: String) {
|
||||||
|
set_property!(self, DeviceId, obj.into_boxed_str());
|
||||||
|
}
|
||||||
|
}
|
41
rust/src/events/mod.rs
Normal file
41
rust/src/events/mod.rs
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
/*
|
||||||
|
* This file is licensed under the Affero General Public License (AGPL) version 3.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2024 New Vector, Ltd
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as
|
||||||
|
* published by the Free Software Foundation, either version 3 of the
|
||||||
|
* License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* See the GNU Affero General Public License for more details:
|
||||||
|
* <https://www.gnu.org/licenses/agpl-3.0.html>.
|
||||||
|
*
|
||||||
|
* Originally licensed under the Apache License, Version 2.0:
|
||||||
|
* <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||||
|
*
|
||||||
|
* [This file includes modifications made by New Vector Limited]
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
//! Classes for representing Events.
|
||||||
|
|
||||||
|
use pyo3::{types::PyModule, PyResult, Python};
|
||||||
|
|
||||||
|
mod internal_metadata;
|
||||||
|
|
||||||
|
/// Called when registering modules with python.
|
||||||
|
pub fn register_module(py: Python<'_>, m: &PyModule) -> PyResult<()> {
|
||||||
|
let child_module = PyModule::new(py, "events")?;
|
||||||
|
child_module.add_class::<internal_metadata::EventInternalMetadata>()?;
|
||||||
|
|
||||||
|
m.add_submodule(child_module)?;
|
||||||
|
|
||||||
|
// We need to manually add the module to sys.modules to make `from
|
||||||
|
// synapse.synapse_rust import events` work.
|
||||||
|
py.import("sys")?
|
||||||
|
.getattr("modules")?
|
||||||
|
.set_item("synapse.synapse_rust.events", child_module)?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
|
@ -3,6 +3,7 @@ use pyo3::prelude::*;
|
||||||
use pyo3_log::ResetHandle;
|
use pyo3_log::ResetHandle;
|
||||||
|
|
||||||
pub mod acl;
|
pub mod acl;
|
||||||
|
pub mod events;
|
||||||
pub mod push;
|
pub mod push;
|
||||||
|
|
||||||
lazy_static! {
|
lazy_static! {
|
||||||
|
@ -41,6 +42,7 @@ fn synapse_rust(py: Python<'_>, m: &PyModule) -> PyResult<()> {
|
||||||
|
|
||||||
acl::register_module(py, m)?;
|
acl::register_module(py, m)?;
|
||||||
push::register_module(py, m)?;
|
push::register_module(py, m)?;
|
||||||
|
events::register_module(py, m)?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,16 +1,22 @@
|
||||||
// Copyright 2022, 2023 The Matrix.org Foundation C.I.C.
|
/*
|
||||||
//
|
* This file is licensed under the Affero General Public License (AGPL) version 3.
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
*
|
||||||
// you may not use this file except in compliance with the License.
|
* Copyright (C) 2023 New Vector, Ltd
|
||||||
// You may obtain a copy of the License at
|
*
|
||||||
//
|
* This program is free software: you can redistribute it and/or modify
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
* it under the terms of the GNU Affero General Public License as
|
||||||
//
|
* published by the Free Software Foundation, either version 3 of the
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
* License, or (at your option) any later version.
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
*
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* See the GNU Affero General Public License for more details:
|
||||||
// See the License for the specific language governing permissions and
|
* <https://www.gnu.org/licenses/agpl-3.0.html>.
|
||||||
// limitations under the License.
|
*
|
||||||
|
* Originally licensed under the Apache License, Version 2.0:
|
||||||
|
* <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||||
|
*
|
||||||
|
* [This file includes modifications made by New Vector Limited]
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
//! Contains the definitions of the "base" push rules.
|
//! Contains the definitions of the "base" push rules.
|
||||||
|
|
||||||
|
|
|
@ -1,16 +1,22 @@
|
||||||
// Copyright 2022 The Matrix.org Foundation C.I.C.
|
/*
|
||||||
//
|
* This file is licensed under the Affero General Public License (AGPL) version 3.
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
*
|
||||||
// you may not use this file except in compliance with the License.
|
* Copyright (C) 2023 New Vector, Ltd
|
||||||
// You may obtain a copy of the License at
|
*
|
||||||
//
|
* This program is free software: you can redistribute it and/or modify
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
* it under the terms of the GNU Affero General Public License as
|
||||||
//
|
* published by the Free Software Foundation, either version 3 of the
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
* License, or (at your option) any later version.
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
*
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* See the GNU Affero General Public License for more details:
|
||||||
// See the License for the specific language governing permissions and
|
* <https://www.gnu.org/licenses/agpl-3.0.html>.
|
||||||
// limitations under the License.
|
*
|
||||||
|
* Originally licensed under the Apache License, Version 2.0:
|
||||||
|
* <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||||
|
*
|
||||||
|
* [This file includes modifications made by New Vector Limited]
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
use std::borrow::Cow;
|
use std::borrow::Cow;
|
||||||
use std::collections::BTreeMap;
|
use std::collections::BTreeMap;
|
||||||
|
|
|
@ -1,16 +1,22 @@
|
||||||
// Copyright 2022 The Matrix.org Foundation C.I.C.
|
/*
|
||||||
//
|
* This file is licensed under the Affero General Public License (AGPL) version 3.
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
*
|
||||||
// you may not use this file except in compliance with the License.
|
* Copyright (C) 2023 New Vector, Ltd
|
||||||
// You may obtain a copy of the License at
|
*
|
||||||
//
|
* This program is free software: you can redistribute it and/or modify
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
* it under the terms of the GNU Affero General Public License as
|
||||||
//
|
* published by the Free Software Foundation, either version 3 of the
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
* License, or (at your option) any later version.
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
*
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* See the GNU Affero General Public License for more details:
|
||||||
// See the License for the specific language governing permissions and
|
* <https://www.gnu.org/licenses/agpl-3.0.html>.
|
||||||
// limitations under the License.
|
*
|
||||||
|
* Originally licensed under the Apache License, Version 2.0:
|
||||||
|
* <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||||
|
*
|
||||||
|
* [This file includes modifications made by New Vector Limited]
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
//! An implementation of Matrix push rules.
|
//! An implementation of Matrix push rules.
|
||||||
//!
|
//!
|
||||||
|
|
|
@ -1,16 +1,22 @@
|
||||||
// Copyright 2022 The Matrix.org Foundation C.I.C.
|
/*
|
||||||
//
|
* This file is licensed under the Affero General Public License (AGPL) version 3.
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
*
|
||||||
// you may not use this file except in compliance with the License.
|
* Copyright (C) 2023 New Vector, Ltd
|
||||||
// You may obtain a copy of the License at
|
*
|
||||||
//
|
* This program is free software: you can redistribute it and/or modify
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
* it under the terms of the GNU Affero General Public License as
|
||||||
//
|
* published by the Free Software Foundation, either version 3 of the
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
* License, or (at your option) any later version.
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
*
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* See the GNU Affero General Public License for more details:
|
||||||
// See the License for the specific language governing permissions and
|
* <https://www.gnu.org/licenses/agpl-3.0.html>.
|
||||||
// limitations under the License.
|
*
|
||||||
|
* Originally licensed under the Apache License, Version 2.0:
|
||||||
|
* <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||||
|
*
|
||||||
|
* [This file includes modifications made by New Vector Limited]
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
use anyhow::bail;
|
use anyhow::bail;
|
||||||
use anyhow::Context;
|
use anyhow::Context;
|
||||||
|
|
|
@ -19,7 +19,7 @@ if ! git diff --quiet FETCH_HEAD... -- debian; then
|
||||||
if git diff --quiet FETCH_HEAD... -- debian/changelog; then
|
if git diff --quiet FETCH_HEAD... -- debian/changelog; then
|
||||||
echo "Updates to debian directory, but no update to the changelog." >&2
|
echo "Updates to debian directory, but no update to the changelog." >&2
|
||||||
echo "!! Please see the contributing guide for help writing your changelog entry:" >&2
|
echo "!! Please see the contributing guide for help writing your changelog entry:" >&2
|
||||||
echo "https://matrix-org.github.io/synapse/latest/development/contributing_guide.html#debian-changelog" >&2
|
echo "https://element-hq.github.io/synapse/latest/development/contributing_guide.html#debian-changelog" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
@ -32,7 +32,7 @@ fi
|
||||||
|
|
||||||
# Print a link to the contributing guide if the user makes a mistake
|
# Print a link to the contributing guide if the user makes a mistake
|
||||||
CONTRIBUTING_GUIDE_TEXT="!! Please see the contributing guide for help writing your changelog entry:
|
CONTRIBUTING_GUIDE_TEXT="!! Please see the contributing guide for help writing your changelog entry:
|
||||||
https://matrix-org.github.io/synapse/latest/development/contributing_guide.html#changelog"
|
https://element-hq.github.io/synapse/latest/development/contributing_guide.html#changelog"
|
||||||
|
|
||||||
# If check-newsfragment returns a non-zero exit code, print the contributing guide and exit
|
# If check-newsfragment returns a non-zero exit code, print the contributing guide and exit
|
||||||
python -m towncrier.check --compare-with=origin/develop || (echo -e "$CONTRIBUTING_GUIDE_TEXT" >&2 && exit 1)
|
python -m towncrier.check --compare-with=origin/develop || (echo -e "$CONTRIBUTING_GUIDE_TEXT" >&2 && exit 1)
|
||||||
|
|
|
@ -1,28 +1,23 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
#
|
##
|
||||||
# Copyright 2020 The Matrix.org Foundation C.I.C.
|
## This file is licensed under the Affero General Public License (AGPL) version 3.
|
||||||
#
|
##
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
## Copyright (C) 2023 New Vector, Ltd
|
||||||
# you may not use this file except in compliance with the License.
|
##
|
||||||
# You may obtain a copy of the License at
|
## This program is free software: you can redistribute it and/or modify
|
||||||
#
|
## it under the terms of the GNU Affero General Public License as
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
## published by the Free Software Foundation, either version 3 of the
|
||||||
#
|
## License, or (at your option) any later version.
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
##
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
## See the GNU Affero General Public License for more details:
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
## <https://www.gnu.org/licenses/agpl-3.0.html>.
|
||||||
# See the License for the specific language governing permissions and
|
##
|
||||||
# limitations under the License.
|
## Originally licensed under the Apache License, Version 2.0:
|
||||||
#
|
## <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||||
# This script checks that line terminators in all repository files (excluding
|
##
|
||||||
# those in the .git directory) feature unix line terminators.
|
## [This file includes modifications made by New Vector Limited]
|
||||||
#
|
##
|
||||||
# Usage:
|
##
|
||||||
#
|
|
||||||
# ./check_line_terminators.sh
|
|
||||||
#
|
|
||||||
# The script will emit exit code 1 if any files that do not use unix line
|
|
||||||
# terminators are found, 0 otherwise.
|
|
||||||
|
|
||||||
# cd to the root of the repository
|
# cd to the root of the repository
|
||||||
cd "$(dirname "$0")/.." || exit
|
cd "$(dirname "$0")/.." || exit
|
||||||
|
|
|
@ -1,17 +1,23 @@
|
||||||
#! /usr/bin/env python
|
#! /usr/bin/env python
|
||||||
# Copyright 2022 The Matrix.org Foundation C.I.C.
|
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# This file is licensed under the Affero General Public License (AGPL) version 3.
|
||||||
# you may not use this file except in compliance with the License.
|
#
|
||||||
# You may obtain a copy of the License at
|
# Copyright (C) 2023 New Vector, Ltd
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# See the GNU Affero General Public License for more details:
|
||||||
|
# <https://www.gnu.org/licenses/agpl-3.0.html>.
|
||||||
|
#
|
||||||
|
# Originally licensed under the Apache License, Version 2.0:
|
||||||
|
# <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||||
|
#
|
||||||
|
# [This file includes modifications made by New Vector Limited]
|
||||||
#
|
#
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
#
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
import sys
|
import sys
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Dict, List
|
from typing import Dict, List
|
||||||
|
|
|
@ -1,17 +1,23 @@
|
||||||
#! /usr/bin/env python
|
#! /usr/bin/env python
|
||||||
# Copyright 2022 The Matrix.org Foundation C.I.C.
|
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# This file is licensed under the Affero General Public License (AGPL) version 3.
|
||||||
# you may not use this file except in compliance with the License.
|
#
|
||||||
# You may obtain a copy of the License at
|
# Copyright (C) 2023 New Vector, Ltd
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# See the GNU Affero General Public License for more details:
|
||||||
|
# <https://www.gnu.org/licenses/agpl-3.0.html>.
|
||||||
|
#
|
||||||
|
# Originally licensed under the Apache License, Version 2.0:
|
||||||
|
# <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||||
|
#
|
||||||
|
# [This file includes modifications made by New Vector Limited]
|
||||||
#
|
#
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
#
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
"""
|
"""
|
||||||
A script which enforces that Synapse always uses strict types when defining a Pydantic
|
A script which enforces that Synapse always uses strict types when defining a Pydantic
|
||||||
model.
|
model.
|
||||||
|
|
|
@ -1,17 +1,23 @@
|
||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
# Copyright 2021 The Matrix.org Foundation C.I.C.
|
##
|
||||||
#
|
## This file is licensed under the Affero General Public License (AGPL) version 3.
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
##
|
||||||
# you may not use this file except in compliance with the License.
|
## Copyright (C) 2023 New Vector, Ltd
|
||||||
# You may obtain a copy of the License at
|
##
|
||||||
#
|
## This program is free software: you can redistribute it and/or modify
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
## it under the terms of the GNU Affero General Public License as
|
||||||
#
|
## published by the Free Software Foundation, either version 3 of the
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
## License, or (at your option) any later version.
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
##
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
## See the GNU Affero General Public License for more details:
|
||||||
# See the License for the specific language governing permissions and
|
## <https://www.gnu.org/licenses/agpl-3.0.html>.
|
||||||
# limitations under the License.
|
##
|
||||||
|
## Originally licensed under the Apache License, Version 2.0:
|
||||||
|
## <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||||
|
##
|
||||||
|
## [This file includes modifications made by New Vector Limited]
|
||||||
|
##
|
||||||
|
##
|
||||||
|
|
||||||
# This script is meant to be used inside a Docker container to run the `dch` incantations
|
# This script is meant to be used inside a Docker container to run the `dch` incantations
|
||||||
# needed to release Synapse. This is useful on systems like macOS where such scripts are
|
# needed to release Synapse. This is useful on systems like macOS where such scripts are
|
||||||
|
|
|
@ -1,19 +1,23 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
#
|
#
|
||||||
# Copyright 2015, 2016 OpenMarket Ltd
|
# This file is licensed under the Affero General Public License (AGPL) version 3.
|
||||||
# Copyright 2017 New Vector Ltd
|
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# Copyright (C) 2023 New Vector, Ltd
|
||||||
# you may not use this file except in compliance with the License.
|
#
|
||||||
# You may obtain a copy of the License at
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# See the GNU Affero General Public License for more details:
|
||||||
|
# <https://www.gnu.org/licenses/agpl-3.0.html>.
|
||||||
|
#
|
||||||
|
# Originally licensed under the Apache License, Version 2.0:
|
||||||
|
# <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||||
|
#
|
||||||
|
# [This file includes modifications made by New Vector Limited]
|
||||||
#
|
#
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
#
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -1,16 +1,22 @@
|
||||||
# Copyright 2020 The Matrix.org Foundation C.I.C.
|
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# This file is licensed under the Affero General Public License (AGPL) version 3.
|
||||||
# you may not use this file except in compliance with the License.
|
#
|
||||||
# You may obtain a copy of the License at
|
# Copyright (C) 2023 New Vector, Ltd
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# See the GNU Affero General Public License for more details:
|
||||||
|
# <https://www.gnu.org/licenses/agpl-3.0.html>.
|
||||||
|
#
|
||||||
|
# Originally licensed under the Apache License, Version 2.0:
|
||||||
|
# <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||||
|
#
|
||||||
|
# [This file includes modifications made by New Vector Limited]
|
||||||
#
|
#
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
#
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
"""This is a mypy plugin for Synpase to deal with some of the funky typing that
|
"""This is a mypy plugin for Synpase to deal with some of the funky typing that
|
||||||
can crop up, e.g the cache descriptors.
|
can crop up, e.g the cache descriptors.
|
||||||
|
|
|
@ -4,6 +4,6 @@ set -e
|
||||||
|
|
||||||
# Fetch the current GitHub issue number, add one to it -- presto! The likely
|
# Fetch the current GitHub issue number, add one to it -- presto! The likely
|
||||||
# next PR number.
|
# next PR number.
|
||||||
CURRENT_NUMBER=$(curl -s "https://api.github.com/repos/matrix-org/synapse/issues?state=all&per_page=1" | jq -r ".[0].number")
|
CURRENT_NUMBER=$(curl -s "https://api.github.com/repos/element-hq/synapse/issues?state=all&per_page=1" | jq -r ".[0].number")
|
||||||
CURRENT_NUMBER=$((CURRENT_NUMBER+1))
|
CURRENT_NUMBER=$((CURRENT_NUMBER+1))
|
||||||
echo $CURRENT_NUMBER
|
echo $CURRENT_NUMBER
|
||||||
|
|
|
@ -1,17 +1,23 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
# Copyright 2020 The Matrix.org Foundation C.I.C.
|
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# This file is licensed under the Affero General Public License (AGPL) version 3.
|
||||||
# you may not use this file except in compliance with the License.
|
#
|
||||||
# You may obtain a copy of the License at
|
# Copyright (C) 2023 New Vector, Ltd
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# See the GNU Affero General Public License for more details:
|
||||||
|
# <https://www.gnu.org/licenses/agpl-3.0.html>.
|
||||||
|
#
|
||||||
|
# Originally licensed under the Apache License, Version 2.0:
|
||||||
|
# <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||||
|
#
|
||||||
|
# [This file includes modifications made by New Vector Limited]
|
||||||
#
|
#
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
#
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
"""An interactive script for doing a release. See `cli()` below.
|
"""An interactive script for doing a release. See `cli()` below.
|
||||||
"""
|
"""
|
||||||
|
@ -287,7 +293,7 @@ def _prepare() -> None:
|
||||||
print("Opening the changelog in your browser...")
|
print("Opening the changelog in your browser...")
|
||||||
print("Please ask #synapse-dev to give it a check.")
|
print("Please ask #synapse-dev to give it a check.")
|
||||||
click.launch(
|
click.launch(
|
||||||
f"https://github.com/matrix-org/synapse/blob/{synapse_repo.active_branch.name}/CHANGES.md"
|
f"https://github.com/element-hq/synapse/blob/{synapse_repo.active_branch.name}/CHANGES.md"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -355,18 +361,18 @@ def _tag(gh_token: Optional[str]) -> None:
|
||||||
print("As this is an RC, remember to mark it as a pre-release!")
|
print("As this is an RC, remember to mark it as a pre-release!")
|
||||||
print("(by the way, this step can be automated by passing --gh-token,")
|
print("(by the way, this step can be automated by passing --gh-token,")
|
||||||
print("or one of the GH_TOKEN or GITHUB_TOKEN env vars.)")
|
print("or one of the GH_TOKEN or GITHUB_TOKEN env vars.)")
|
||||||
click.launch(f"https://github.com/matrix-org/synapse/releases/edit/{tag_name}")
|
click.launch(f"https://github.com/element-hq/synapse/releases/edit/{tag_name}")
|
||||||
|
|
||||||
print("Once done, you need to wait for the release assets to build.")
|
print("Once done, you need to wait for the release assets to build.")
|
||||||
if click.confirm("Launch the release assets actions page?", default=True):
|
if click.confirm("Launch the release assets actions page?", default=True):
|
||||||
click.launch(
|
click.launch(
|
||||||
f"https://github.com/matrix-org/synapse/actions?query=branch%3A{tag_name}"
|
f"https://github.com/element-hq/synapse/actions?query=branch%3A{tag_name}"
|
||||||
)
|
)
|
||||||
return
|
return
|
||||||
|
|
||||||
# Create a new draft release
|
# Create a new draft release
|
||||||
gh = Github(gh_token)
|
gh = Github(gh_token)
|
||||||
gh_repo = gh.get_repo("matrix-org/synapse")
|
gh_repo = gh.get_repo("element-hq/synapse")
|
||||||
release = gh_repo.create_git_release(
|
release = gh_repo.create_git_release(
|
||||||
tag=tag_name,
|
tag=tag_name,
|
||||||
name=tag_name,
|
name=tag_name,
|
||||||
|
@ -379,7 +385,7 @@ def _tag(gh_token: Optional[str]) -> None:
|
||||||
print("Launching the release page and the actions page.")
|
print("Launching the release page and the actions page.")
|
||||||
click.launch(release.html_url)
|
click.launch(release.html_url)
|
||||||
click.launch(
|
click.launch(
|
||||||
f"https://github.com/matrix-org/synapse/actions?query=branch%3A{tag_name}"
|
f"https://github.com/element-hq/synapse/actions?query=branch%3A{tag_name}"
|
||||||
)
|
)
|
||||||
|
|
||||||
click.echo("Wait for release assets to be built")
|
click.echo("Wait for release assets to be built")
|
||||||
|
@ -405,7 +411,7 @@ def _publish(gh_token: str) -> None:
|
||||||
|
|
||||||
# Publish the draft release
|
# Publish the draft release
|
||||||
gh = Github(gh_token)
|
gh = Github(gh_token)
|
||||||
gh_repo = gh.get_repo("matrix-org/synapse")
|
gh_repo = gh.get_repo("element-hq/synapse")
|
||||||
for release in gh_repo.get_releases():
|
for release in gh_repo.get_releases():
|
||||||
if release.title == tag_name:
|
if release.title == tag_name:
|
||||||
break
|
break
|
||||||
|
@ -448,7 +454,7 @@ def _upload(gh_token: Optional[str]) -> None:
|
||||||
|
|
||||||
# Query all the assets corresponding to this release.
|
# Query all the assets corresponding to this release.
|
||||||
gh = Github(gh_token)
|
gh = Github(gh_token)
|
||||||
gh_repo = gh.get_repo("matrix-org/synapse")
|
gh_repo = gh.get_repo("element-hq/synapse")
|
||||||
gh_release = gh_repo.get_release(tag_name)
|
gh_release = gh_repo.get_release(tag_name)
|
||||||
|
|
||||||
all_assets = set(gh_release.get_assets())
|
all_assets = set(gh_release.get_assets())
|
||||||
|
@ -537,7 +543,7 @@ def _wait_for_actions(gh_token: Optional[str]) -> None:
|
||||||
|
|
||||||
# Authentication is optional on this endpoint,
|
# Authentication is optional on this endpoint,
|
||||||
# but use a token if we have one to reduce the chance of being rate-limited.
|
# but use a token if we have one to reduce the chance of being rate-limited.
|
||||||
url = f"https://api.github.com/repos/matrix-org/synapse/actions/runs?branch={tag_name}"
|
url = f"https://api.github.com/repos/element-hq/synapse/actions/runs?branch={tag_name}"
|
||||||
headers = {"Accept": "application/vnd.github+json"}
|
headers = {"Accept": "application/vnd.github+json"}
|
||||||
if gh_token is not None:
|
if gh_token is not None:
|
||||||
headers["authorization"] = f"token {gh_token}"
|
headers["authorization"] = f"token {gh_token}"
|
||||||
|
@ -652,8 +658,8 @@ def _announce() -> None:
|
||||||
f"""
|
f"""
|
||||||
Hi everyone. Synapse {current_version} has just been released.
|
Hi everyone. Synapse {current_version} has just been released.
|
||||||
|
|
||||||
[notes](https://github.com/matrix-org/synapse/releases/tag/{tag_name}) | \
|
[notes](https://github.com/element-hq/synapse/releases/tag/{tag_name}) | \
|
||||||
[docker](https://hub.docker.com/r/matrixdotorg/synapse/tags?name={tag_name}) | \
|
[docker](https://hub.docker.com/r/vectorim/synapse/tags?name={tag_name}) | \
|
||||||
[debs](https://packages.matrix.org/debian/) | \
|
[debs](https://packages.matrix.org/debian/) | \
|
||||||
[pypi](https://pypi.org/project/matrix-synapse/{current_version}/)"""
|
[pypi](https://pypi.org/project/matrix-synapse/{current_version}/)"""
|
||||||
)
|
)
|
||||||
|
@ -683,7 +689,7 @@ Ask the designated people to do the blog and tweets."""
|
||||||
def full(gh_token: str) -> None:
|
def full(gh_token: str) -> None:
|
||||||
click.echo("1. If this is a security release, read the security wiki page.")
|
click.echo("1. If this is a security release, read the security wiki page.")
|
||||||
click.echo("2. Check for any release blockers before proceeding.")
|
click.echo("2. Check for any release blockers before proceeding.")
|
||||||
click.echo(" https://github.com/matrix-org/synapse/labels/X-Release-Blocker")
|
click.echo(" https://github.com/element-hq/synapse/labels/X-Release-Blocker")
|
||||||
click.echo(
|
click.echo(
|
||||||
"3. Check for any other special release notes, including announcements to add to the changelog or special deployment instructions."
|
"3. Check for any other special release notes, including announcements to add to the changelog or special deployment instructions."
|
||||||
)
|
)
|
||||||
|
@ -887,7 +893,7 @@ def build_dependabot_changelog(repo: Repo, current_version: version.Version) ->
|
||||||
def replacer(match: Match[str]) -> str:
|
def replacer(match: Match[str]) -> str:
|
||||||
desc = match.group(1)
|
desc = match.group(1)
|
||||||
number = match.group(2)
|
number = match.group(2)
|
||||||
return f"* {desc}. ([\\#{number}](https://github.com/matrix-org/synapse/issues/{number}))"
|
return f"* {desc}. ([\\#{number}](https://github.com/element-hq/synapse/issues/{number}))"
|
||||||
|
|
||||||
for i, message in enumerate(messages):
|
for i, message in enumerate(messages):
|
||||||
messages[i] = re.sub(r"(.*) \(#(\d+)\)$", replacer, message)
|
messages[i] = re.sub(r"(.*) \(#(\d+)\)$", replacer, message)
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue