Skip to main content

A module that checks whether a 3PID (email address, phone number) can be allowed to register by querying a remote backend.

Project description

3PID checker for Synapse

A module that checks whether a 3PID (email address, phone number) can be allowed to be registered on the local homeserver by querying a remote backend.

Installation

From the virtual environment that you use for Synapse, install this module with:

pip install path/to/synapse-3pid-checker

(If you run into issues, you may need to upgrade pip first, e.g. by running pip install --upgrade pip)

Then alter your homeserver configuration, adding to your modules configuration:

modules:
  - module: threepid_checker.ThreepidChecker
    config:
      # The URL to send requests to when checking if a 3PID can be associated to an account.
      # See below for more information.
      # Required.
      url: https://foo/bar

      # If true, the module will only send requests to the URL as part of registering a
      # new user. This means no request will be sent to the URL when associating a 3PID with
      # an already existing account.
      # Optional, defaults to false.
      only_check_at_registration: false

The configured URL will be hit by a GET HTTP request. Note that this is not subject to Synapse's IP blacklist, with 2 parameters to qualify the 3PID:

  • medium: The 3PID's medium (email for an email address, msisdn for a phone number)
  • address: The 3PID's address

The server at that URL is expected to respond with a JSON object that contains the following keys:

  • hs (string): Required. The name of the homeserver the 3PID is allowed to be associated on. This is the server_name variable in Synapse's configuration file. The 3PID will be denied if this is absent from the response's body.
  • requires_invite (bool): Optional. Whether an invite is required for this 3PID to be associated with an account on this homeserver. What qualifies as an invite is left to the server serving the configured URL to define. Defaults to false.
  • invited (bool): Optional. Whether there is a pending invite for the 3PID. Defaults to false.

The module will deny the 3PID's association based on the response if:

  • hs does not match the homeserver's configured server name, or is missing, or
  • requires_invite is true and invited is false or missing

The 3PID will be allowed to be associated with a local user otherwise.

Development

In a virtual environment with pip ≥ 21.1, run

pip install -e .[dev]

To run the unit tests, you can either use:

tox -e py

or

trial tests

To run the linters and mypy type checker, use ./scripts-dev/lint.sh.

Releasing

The exact steps for releasing will vary; but this is an approach taken by the Synapse developers (assuming a Unix-like shell):

  1. Set a shell variable to the version you are releasing (this just makes subsequent steps easier):

    version=X.Y.Z
    
  2. Update setup.cfg so that the version is correct.

  3. Stage the changed files and commit.

    git add -u
    git commit -m v$version -n
    
  4. Push your changes.

    git push
    
  5. When ready, create a signed tag for the release:

    git tag -s v$version
    

    Base the tag message on the changelog.

  6. Push the tag.

    git push origin tag v$version
    
  7. Create a source distribution and upload it to PyPI:

    python -m build
    twine upload dist/threepid_checker-$version*
    

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

threepid_checker-1.0.1.tar.gz (7.6 kB view details)

Uploaded Source

Built Distribution

threepid_checker-1.0.1-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

File details

Details for the file threepid_checker-1.0.1.tar.gz.

File metadata

  • Download URL: threepid_checker-1.0.1.tar.gz
  • Upload date:
  • Size: 7.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.8.10

File hashes

Hashes for threepid_checker-1.0.1.tar.gz
Algorithm Hash digest
SHA256 8a0e95ed229010baa320f19266a6783bbfa1e36c07ba806b1d207d54a7636f6d
MD5 0ff5dc14990b9a366cb9768b5836010c
BLAKE2b-256 11be46635232adf26f7261cff7fde9cd2ca59c081f8a459aafee5d2b1da78a1c

See more details on using hashes here.

Provenance

File details

Details for the file threepid_checker-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: threepid_checker-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 8.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.8.10

File hashes

Hashes for threepid_checker-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 720aab00fc9e7709945d5b25da9944e660dc260b50ccb888c9b51d687d9db131
MD5 ee6678eb91e131ac6bf81765269fa21f
BLAKE2b-256 f9410a2372b5a9c4926edbb06e4d6d5ba7f38cb220329e87fd163c3d3549ba58

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page