summary refs log tree commit diff
path: root/synapse/rest (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Add option to move event persistence off master (#7517)Erik Johnston2020-05-221-2/+9
|
* Add ability to wait for replication streams (#7542)Erik Johnston2020-05-223-10/+22
| | | | | | | The idea here is that if an instance persists an event via the replication HTTP API it can return before we receive that event over replication, which can lead to races where code assumes that persisting an event immediately updates various caches (e.g. current state of the room). Most of Synapse doesn't hit such races, so we don't do the waiting automagically, instead we do so where necessary to avoid unnecessary delays. We may decide to change our minds here if it turns out there are a lot of subtle races going on. People probably want to look at this commit by commit.
* Use a non-empty RelayState for user interactive auth with SAML. (#7552)Patrick Cloke2020-05-221-1/+4
|
* Hash passwords earlier in the password reset process (#7538)Patrick Cloke2020-05-203-7/+31
| | | | This now matches the logic of the registration process as modified in 56db0b1365965c02ff539193e26c333b7f70d101 / #7523.
* Merge tag 'v1.13.0rc3' into developPatrick Cloke2020-05-182-24/+28
|\ | | | | | | | | | | | | | | Synapse 1.13.0rc3 (2020-05-18) Bugfixes: - Hash passwords as early as possible during registration. #7523
| * Hash passwords earlier in the registration process (#7523)Patrick Cloke2020-05-182-24/+28
| |
* | Merge pull request #7519 from matrix-org/rav/kill_py2_codeRichard van der Hoff2020-05-181-18/+9
|\ \ | | | | | | Kill off some old python 2 code
| * | remove miscellaneous PY2 codeRichard van der Hoff2020-05-151-18/+9
| | |
* | | Support UI Authentication for OpenID Connect accounts (#7457)Patrick Cloke2020-05-152-16/+34
|/ /
* | Allow expired accounts to logout (#7443)Andrew Morgan2020-05-141-3/+3
| |
* | Merge tag 'v1.13.0rc2' into developRichard van der Hoff2020-05-141-1/+0
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Synapse 1.13.0rc2 (2020-05-14) ============================== Bugfixes -------- - Fix a long-standing bug which could cause messages not to be sent over federation, when state events with state keys matching user IDs (such as custom user statuses) were received. ([\#7376](https://github.com/matrix-org/synapse/issues/7376)) - Restore compatibility with non-compliant clients during the user interactive authentication process, fixing a problem introduced in v1.13.0rc1. ([\#7483](https://github.com/matrix-org/synapse/issues/7483)) Internal Changes ---------------- - Fix linting errors in new version of Flake8. ([\#7470](https://github.com/matrix-org/synapse/issues/7470))
| * Do not validate that the client dict is stable during UI Auth. (#7483)Patrick Cloke2020-05-131-1/+0
| | | | | | | | This backs out some of the validation for the client dictionary and logs if this changes during a user interactive authentication session instead.
* | Merge branch 'release-v1.13.0' into developAndrew Morgan2020-05-111-0/+1
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * release-v1.13.0: Don't UPGRADE database rows RST indenting Put rollback instructions in upgrade notes Fix changelog typo Oh yeah, RST Absolute URL it is then Fix upgrade notes link Provide summary of upgrade issues in changelog. Fix ) Move next version notes from changelog to upgrade notes Changelog fixes 1.13.0rc1 Documentation on setting up redis (#7446) Rework UI Auth session validation for registration (#7455) Fix errors from malformed log line (#7454) Drop support for redis.dbid (#7450)
| * Rework UI Auth session validation for registration (#7455)Patrick Cloke2020-05-081-0/+1
| | | | | | | | Be less strict about validation of UI authentication sessions during registration to match client expecations.
* | Implement OpenID Connect-based login (#7256)Quentin Gliech2020-05-083-3/+83
| |
* | Add room details admin endpoint (#7317)Manuel Stahl2020-05-072-1/+27
|/
* Persist user interactive authentication sessions (#7302)Patrick Cloke2020-04-302-4/+4
| | | | | By persisting the user interactive authentication sessions to the database, this fixes situations where a user hits different works throughout their auth session and also allows sessions to persist through restarts of Synapse.
* Return total number of users and profile attributes in admin users endpoint ↵Manuel Stahl2020-04-281-4/+4
| | | | | (#6881) Signed-off-by: Manuel Stahl <manuel.stahl@awesome-technologies.de>
* Revert "Revert "Merge pull request #7315 from ↵Brendan Abolivier2020-04-232-2/+27
| | | | | | matrix-org/babolivier/request_token"" This reverts commit 1adf6a55870aa08de272591ff49db9dc49738076.
* Extend room admin api with additional attributes (#7225)Dirk Klimpel2020-04-221-1/+14
|
* Merge branch 'release-v1.12.4' into developRichard van der Hoff2020-04-221-0/+8
|\
| * Support GET account_data requests on a worker (#7311)Richard van der Hoff2020-04-211-0/+8
| |
* | Reduce logging verbosity of URL cache cleanup. (#7295)Michael Kaye2020-04-221-2/+7
| |
* | Use a template for the SSO success page to allow for customization. (#7279)Patrick Cloke2020-04-171-1/+24
| |
* | Allow specifying the value of Accept-Language header for URL previews (#7265)Andrew Morgan2020-04-151-2/+6
| |
* | Improve error responses when a remote server doesn't allow you to access its ↵Andrew Morgan2020-04-061-13/+20
| | | | | | | | public rooms list (#6899)
* | Support CAS in UI Auth flows. (#7186)Patrick Cloke2020-04-032-9/+39
| |
* | Support SAML in the user interactive authentication workflow. (#7102)Patrick Cloke2020-04-015-30/+50
| |
* | Admin API to join users to a room. (#7051)Dirk Klimpel2020-03-272-4/+82
| |
* | Add options to prevent users from changing their profile. (#7096)Dirk Klimpel2020-03-271-0/+16
| |
* | Ensure is_verified on /_matrix/client/r0/room_keys/keys is a boolean (#7150)Andrew Morgan2020-03-271-1/+1
| |
* | Refactor the CAS code (move the logic out of the REST layer to a handler) ↵Patrick Cloke2020-03-261-155/+16
| | | | | | | | (#7136)
* | Allow server admins to define and enforce a password policy (MSC2000). (#7118)Dirk Klimpel2020-03-263-0/+62
| |
* | Validate that the session is not modified during UI-Auth (#7068)Patrick Cloke2020-03-264-8/+14
| |
* | Fix CAS redirect url (#6634)Naugrimm2020-03-241-11/+16
| | | | | | Build the same service URL when requesting the CAS ticket and when calling the proxyValidate URL.
* | Set Referrer-Policy to no-referrer for media (#7009)Dionysis Grigoropoulos2020-03-231-0/+3
| |
* | Clean-up some auth/login REST code (#7115)Patrick Cloke2020-03-202-41/+20
| |
* | Convert some of the media REST code to async/await (#7110)Patrick Cloke2020-03-203-111/+90
|/
* Add an option to the set password API to choose whether to logout other ↵Patrick Cloke2020-03-182-3/+8
| | | | devices. (#7085)
* Set charset to utf-8 when adding headers for certain text content types (#7044)The Stranjer2020-03-171-1/+24
| | | | Fixes #7043
* Remove special casing of `m.room.aliases` events (#7034)Patrick Cloke2020-03-171-12/+0
|
* Revert "Add options to disable setting profile info for prevent changes. ↵Richard van der Hoff2020-03-171-16/+0
| | | | | | | (#7053)" This reverts commit 54dd28621b070ca67de9f773fe9a89e1f4dc19da, reversing changes made to 6640460d054e8f4444046a34bdf638921b31c01e.
* Add options to disable setting profile info for prevent changes. (#7053)Brendan Abolivier2020-03-101-0/+16
|\
| * updates after reviewdklimpel2020-03-091-6/+12
| |
| * add disable_3pid_changesdklimpel2020-03-081-0/+10
| |
* | SAML2: render a comprehensible error page if something goes wrongBrendan Abolivier2020-03-101-1/+17
| | | | | | | | | | | | If an error happened while processing a SAML AuthN response, or a client ends up doing a `GET` request to `/authn_response`, then render a customisable error page rather than a confusing error.
* | Convert remote key resource REST layer to async/await. (#7020)Patrick Cloke2020-03-051-7/+4
| |
* | Merge branch 'master' into developBrendan Abolivier2020-03-031-30/+13
|\ \ | |/ |/|
| * Factor out complete_sso_login and expose it to the Module APIBrendan Abolivier2020-03-031-56/+2
| |
| * Add a whitelist for the SSO confirmation step.Richard van der Hoff2020-03-021-8/+18
| |
| * Merge remote-tracking branch 'origin/release-v1.11.1' into release-v1.11.1Richard van der Hoff2020-03-021-4/+2
| |\
| | * Fixed set a user as an admin with the new API (#6928)Dirk Klimpel2020-03-021-4/+2
| | | | | | | | | | | | Fix #6910
| * | Add a confirmation step to the SSO login flowBrendan Abolivier2020-03-021-6/+34
| |/
* | Fixed set a user as an admin with the new API (#6928)Dirk Klimpel2020-02-281-4/+2
| | | | | | Fix #6910
* | Ensure 'deactivated' parameter is a boolean on user admin API, Fix error ↵Andrew Morgan2020-02-262-4/+8
| | | | | | | | handling of call to deactivate user (#6990)
* | Clarify list/set/dict/tuple comprehensions and enforce via flake8 (#6957)Patrick Cloke2020-02-216-30/+28
|/ | | | Ensure good comprehension hygiene using flake8-comprehensions.
* Merge pull request #6949 from matrix-org/rav/list_room_aliases_peekableRichard van der Hoff2020-02-191-6/+6
|\ | | | | Make room alias lists peekable
| * Add `allow_departed_users` param to `check_in_room_or_world_readable`Richard van der Hoff2020-02-191-6/+6
| | | | | | | | | | | | | | ... and set it everywhere it's called. while we're here, rename it for consistency with `check_user_in_room` (and to help check that I haven't missed any instances)
* | Move MSC2432 stuff onto unstable prefix (#6948)Richard van der Hoff2020-02-192-1/+9
|/ | | it's not in the spec yet, so needs to be unstable. Also add a feature flag for it. Also add a test for admin users.
* Implement GET /_matrix/client/r0/rooms/{roomId}/aliases (#6939)Richard van der Hoff2020-02-181-0/+23
| | | | | per matrix-org/matrix-doc#2432
* Remove m.lazy_load_members from unstable features since it is in CS r0.5.0 ↵Aaron Raimist2020-02-131-1/+0
| | | | | | | (#6877) Fixes #5528
* Return a 404 for admin api user lookup if user not found (#6901)Andrew Morgan2020-02-121-1/+4
|
* Admin api to add an email address (#6789)Dirk Klimpel2020-02-071-0/+39
|
* Allow URL-encoded user IDs on user admin api paths (#6825)Andrew Morgan2020-02-031-2/+2
|
* MSC2260: Block direct sends of m.room.aliases events (#6794)Richard van der Hoff2020-01-301-0/+12
| | | | | as per MSC2260
* Add `rooms.room_version` column (#6729)Erik Johnston2020-01-271-1/+2
| | | This is so that we don't have to rely on pulling it out from `current_state_events` table.
* Validate client_secret parameter (#6767)Andrew Morgan2020-01-242-5/+21
|
* a bit of debugging for media storage providers (#6757)Richard van der Hoff2020-01-232-0/+7
| | | | | | * a bit of debugging for media storage providers * changelog
* Minor fixes to user admin api (#6761)Richard van der Hoff2020-01-231-9/+5
| | | | * don't insist on a password (this is valid if you have an SSO login) * fix reference to undefined `requester`
* Remove unnecessary abstractions in admin handler (#6751)Andrew Morgan2020-01-221-10/+9
|
* Admin API to list, filter and sort rooms (#6720)Andrew Morgan2020-01-224-2/+100
|
* Fix typo in _select_thumbnailBrendan Abolivier2020-01-221-1/+1
|
* Fix and add test to deprecated quarantine media admin api (#6756)Andrew Morgan2020-01-221-1/+1
|
* Fixup synapse.rest to pass mypy (#6732)Erik Johnston2020-01-209-33/+45
|
* Fix `/events/:event_id` deprecated API. (#6731)Erik Johnston2020-01-201-1/+1
|
* Fix changing password via user admin API. (#6730)Erik Johnston2020-01-201-2/+2
|
* Merge pull request #6714 from matrix-org/babolivier/retention_select_eventBrendan Abolivier2020-01-171-1/+1
|\ | | | | Fix instantiation of message retention purge jobs
| * Remove get_room_event_after_stream_ordering entirelyBrendan Abolivier2020-01-161-1/+1
| |
* | Add org.matrix.e2e_cross_signing to unstable_features in /versions as per ↵Neil Johnson2020-01-161-0/+2
| | | | | | | | MSC1756 (#6712)
* | Remove duplicate session check in web fallback servlet (#6702)Andrew Morgan2020-01-151-4/+0
|/
* Quarantine media by ID or user ID (#6681)Andrew Morgan2020-01-131-2/+66
|
* Allow admin users to create or modify users without a shared secret (#6495)Manuel Stahl2020-01-092-0/+144
| | | Signed-off-by: Manuel Stahl <manuel.stahl@awesome-technologies.de>
* Back out ill-advised notary server hackery (#6657)Richard van der Hoff2020-01-081-22/+8
| | | | | | | | | | | This was ill-advised. We can't modify verify_keys here, because the response object has already been signed by the requested key. Furthermore, it's somewhat unnecessary because existing versions of Synapse (which get upset that the notary key isn't present in verify_keys) will fall back to a direct fetch via `/key/v2/server`. Also: more tests for fetching keys via perspectives: it would be nice if we actually tested when our fetcher can't talk to our notary impl.
* Workaround for error when fetching notary's own key (#6620)Richard van der Hoff2020-01-061-8/+22
| | | | | | | | | | | | | | * Kill off redundant SynapseRequestFactory We already get the Site via the Channel, so there's no need for a dedicated RequestFactory: we can just use the right constructor. * Workaround for error when fetching notary's own key As a notary server, when we return our own keys, include all of our signing keys in verify_keys. This is a workaround for #6596.
* Remove unused, undocumented "content repo" resource (#6628)Richard van der Hoff2020-01-032-103/+0
| | | | | | This looks like it got half-killed back in #888. Fixes #6567.
* Clean up startup for the pusher (#6558)Richard van der Hoff2019-12-181-17/+16
| | | | | | | | | | | | | | | | | | | | | | | * Remove redundant python2 support code `str.decode()` doesn't exist on python3, so presumably this code was doing nothing * Filter out pushers with corrupt data When we get a row with unparsable json, drop the row, rather than returning a row with null `data`, which will then cause an explosion later on. * Improve logging when we can't start a pusher Log the ID to help us understand the problem * Make email pusher setup more robust We know we'll have a `data` member, since that comes from the database. What we *don't* know is if that is a dict, and if that has a `brand` member, and if that member is a string.
* Back out change preventing setting null avatar URLsErik Johnston2019-12-111-6/+6
|
* Better errors regarding changing avatar_url (#6497)Andrew Morgan2019-12-091-3/+8
|
* Merge branch 'develop' of github.com:matrix-org/synapse into ↵Erik Johnston2019-12-0635-727/+509
|\ | | | | | | erikj/make_database_class
| * Replace /admin/v1/users_paginate endpoint with /admin/v2/users (#5925)Manuel Stahl2019-12-052-56/+31
| |
| * Port rest.client.v2Erik Johnston2019-12-0523-505/+361
| |
| * Port rest/v1 to async/awaitErik Johnston2019-12-0510-166/+117
| |
* | Move background update handling out of storeErik Johnston2019-12-051-1/+1
|/
* Merge branch 'develop' into babolivier/context_filtersBrendan Abolivier2019-12-0410-582/+752
|\
| * Fix: Pillow error when uploading RGBA image (#3325) (#6241)Filip Štědronský2019-12-021-1/+4
| | | | | | Signed-Off-By: Filip Štědronský <g@regnarg.cz>
| * Add User-Interactive Auth to /account/3pid/add (#6119)Andrew Morgan2019-11-291-0/+5
| |
| * MSC2367 Allow reason field on all member eventsErik Johnston2019-11-281-1/+1
| |
| * add etag and count to key backup endpoints (#5858)Hubert Chathi2019-11-271-4/+4
| |
| * Fix startup error when http proxy is defined. (#6421)Richard van der Hoff2019-11-261-2/+2
| | | | | | | | | | Guess I only tested this on python 2 :/ Fixes #6419.
| * Clean up newline quote marks around the codebase (#6362)Andrew Morgan2019-11-211-1/+1
| |
| * Move admin endpoints into separate files (#6308)Manuel Stahl2019-11-204-555/+621
| |
| * Merge pull request #6335 from matrix-org/erikj/rc_login_cleanupsBrendan Abolivier2019-11-201-17/+94
| |\ | | | | | | Only do `rc_login` ratelimiting on succesful login.
| | * LintBrendan Abolivier2019-11-201-1/+3
| | |
| | * Apply suggestions from code reviewErik Johnston2019-11-181-1/+1
| | | | | | | | | | | | Co-Authored-By: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com> Co-Authored-By: Brendan Abolivier <babolivier@matrix.org>
| | * Only do `rc_login` ratelimiting on succesful login.Erik Johnston2019-11-061-18/+93
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We were doing this in a number of places which meant that some login code paths incremented the counter multiple times. It was also applying ratelimiting to UIA endpoints, which was probably not intentional. In particular, some custom auth modules were calling `check_user_exists`, which incremented the counters, meaning that people would fail to login sometimes.
| * | Merge pull request #6334 from matrix-org/rav/url_preview_limit_title_2Richard van der Hoff2019-11-051-1/+2
| |\ \ | | | | | | | | Fix exception when OpenGraph tag values are ints
| | * | Fix exception when OpenGraph tag values are intsRichard van der Hoff2019-11-051-1/+2
| | | |
| * | | Merge branch 'develop' into rav/url_preview_limit_titleRichard van der Hoff2019-11-0513-159/+146
| |\ \ \ | | |/ / | |/| / | | |/
| * | Apply suggestions from code reviewRichard van der Hoff2019-11-051-1/+1
| | | | | | | | | | | | Co-Authored-By: Brendan Abolivier <babolivier@matrix.org> Co-Authored-By: Erik Johnston <erik@matrix.org>
| * | Strip overlong OpenGraph data from url previewRichard van der Hoff2019-11-051-1/+19
| | | | | | | | | | | | ... to stop people causing DoSes with malicious web pages
* | | Update copyrightsBrendan Abolivier2019-11-051-0/+3
| |/ |/|
* | Merge pull request #6301 from matrix-org/babolivier/msc2326Brendan Abolivier2019-11-011-0/+3
|\ \ | | | | | | Implement MSC2326 (label based filtering)
| * | Add unstable feature flagBrendan Abolivier2019-11-011-0/+3
| | |
* | | Support for routing outbound HTTP requests via a proxy (#6239)Richard van der Hoff2019-11-012-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The `http_proxy` and `HTTPS_PROXY` env vars can be set to a `host[:port]` value which should point to a proxy. The address of the proxy should be excluded from IP blacklists such as the `url_preview_ip_range_blacklist`. The proxy will then be used for * push * url previews * phone-home stats * recaptcha validation * CAS auth validation It will *not* be used for: * Application Services * Identity servers * Outbound federation * In worker configurations, connections from workers to masters Fixes #4198.
* | | Update black to 19.10b0 (#6304)Amber Brown2019-11-014-11/+12
| | | | | | | | | * update version of black and also fix the mypy config being overridden
* | | Remove usage of deprecated logger.warn method from codebase (#6271)Andrew Morgan2019-10-318-30/+32
| | | | | | | | | Replace every instance of `logger.warn` with `logger.warning` as the former is deprecated.
* | | Merge pull request #6280 from matrix-org/erikj/receipts_async_awaitErik Johnston2019-10-302-15/+9
|\ \ \ | | | | | | | | Port receipt and read markers to async/wait
| * | | Port receipt and read markers to async/waitErik Johnston2019-10-292-15/+9
| |/ /
* / / Port room rest handlers to async/awaitErik Johnston2019-10-291-94/+72
|/ /
* | Address codestyle concernsMichael Kaye2019-10-242-2/+9
| |
* | Delay printf until logging is required.Michael Kaye2019-10-242-9/+9
|/ | | | | Using % will cause the string to be generated even if debugging is off.
* Merge branch 'develop' into cross-signing_sig_uploadHubert Chathi2019-10-1817-346/+585
|\
| * Merge branch 'develop' into uhoreg/e2e_cross-signing_mergedHubert Chathi2019-10-1817-346/+585
| |\
| | * Merge pull request #6196 from matrix-org/erikj/awaitErik Johnston2019-10-185-114/+84
| | |\ | | | | | | | | Move rest/admin to use async/await.
| | | * Port synapse/rest/client/_base.py to async/awaitErik Johnston2019-10-111-9/+5
| | | |
| | | * Add maybe_awaitable and fix __init__ bugsErik Johnston2019-10-111-2/+5
| | | |
| | | * Port synaps/rest/client/users.py to async/awaitErik Johnston2019-10-111-11/+7
| | | |
| | | * Port synaps/rest/client/server_notice_servlet.py to async/awaitErik Johnston2019-10-111-6/+3
| | | |
| | | * Port synaps/rest/client/media.py to async/awaitErik Johnston2019-10-111-16/+11
| | | |
| | | * Port rest/admin/__init__.py to async/awaitErik Johnston2019-10-111-72/+55
| | | |
| | * | Merge pull request #6189 from matrix-org/uhoreg/e2e_backup_optional_versionHubert Chathi2019-10-111-1/+1
| | |\ \ | | | | | | | | | | make version optional in body of e2e backup version update
| | | * | make version optional in body of e2e backup version updateHubert Chathi2019-10-091-1/+1
| | | | | | | | | | | | | | | | | | | | to agree with latest version of the MSC
| | * | | cas: support setting display name (#6114)Valérian Rousset2019-10-111-1/+3
| | | |/ | | |/| | | | | Now, the CAS server can return an attribute stating what's the desired displayname, instead of using the username directly.
| | * | Fix store_url_cache using bytesErik Johnston2019-10-101-2/+2
| | | |
| | * | send 404 as http-status when filter-id is unknown to the server (#2380)krombel2019-10-102-22/+31
| | |/ | | | | | | | | | | | | | | | | | | This fixed the weirdness of 400 vs 404 as http status code in the case the filter id is not known by the server. As e.g. matrix-js-sdk expects 404 to catch this situation this leads to unwanted behaviour.
| | * add M_TOO_LARGE error code for uploading a too large file (#6151)Anshul Angaria2019-10-081-2/+6
| | | | | | | | | Fixes #6109
| | * Log responder we are using. (#6139)Michael Kaye2019-10-071-1/+1
| | | | | | | | | This prevents us logging "Responding to media request with responder %s".
| | * media/thumbnailer: Better quality for 1-bit / 8-bit color palette images (#2142)Robert Swain2019-10-041-3/+11
| | | | | | | | | | | | | | | | | | Pillow will use nearest neighbour as the resampling algorithm if the source image is either 1-bit or a color palette using 8 bits. If we convert to RGB before scaling, we'll probably get a better result.
| | * Land improved room list based on room stats (#6019)Erik Johnston2019-10-021-0/+8
| | | | | | | | | | | | Use room_stats and room_state for room directory search
| | * Merge pull request #6108 from matrix-org/erikj/remove_get_user_by_req-spanErik Johnston2019-09-271-0/+18
| | |\ | | | | | | | | Add some helpful opentracing tags and remove get_user_by_req span
| | | * isortErik Johnston2019-09-251-1/+1
| | | |
| | | * Add tags for event_id and txn_id in event sendingErik Johnston2019-09-251-0/+18
| | | | | | | | | | | | | | | | This will make it easier to search for sending event requests.
| | * | Kill off half-implemented password-reset via sms (#6101)Richard van der Hoff2019-09-261-64/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Doing a password reset via SMS has never worked, and in any case is a silly idea because msisdn recycling is a thing. See also matrix-org/matrix-doc#2303.
| | * | Stop advertising unsupported flows for registration (#6107)Richard van der Hoff2019-09-251-3/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | If email or msisdn verification aren't supported, let's stop advertising them for registration. Fixes #6100.
| | * | Refactor code for calculating registration flows (#6106)Richard van der Hoff2019-09-251-62/+62
| | |/ | | | | | | | | | | | | | | | | | | | | | | | | because, frankly, it looked like it was written by an axe-murderer. This should be a non-functional change, except that where `m.login.dummy` was previously advertised *before* `m.login.terms`, it will now be advertised afterwards. AFAICT that should have no effect, and will be more consistent with the flows that involve passing a 3pid.
| | * Merge remote-tracking branch 'origin/develop' into rav/saml_mapping_workRichard van der Hoff2019-09-243-75/+316
| | |\
| | | * Add an unstable feature flag for separate add/bind 3pid APIs (#6044)Andrew Morgan2019-09-231-0/+2
| | | | | | | | | | | | Add a m.separate_add_and_bind flag set to True. See MSC2290's Backward Compatibility section for details.
| | | * Add m.id_access_token to /versions unstable_features (MSC2264) (#5974)Andrew Morgan2019-09-231-0/+3
| | | | | | | | | | | | | | | | | | | | Adds a flag to /versions' unstable_features section indicating that this Synapse understands what an id_access_token is, as per MSC2264. Fixes #5927
| | | * Add m.require_identity_server to /versions unstable_flags (#5972)Andrew Morgan2019-09-231-1/+13
| | | | | | | | | | | | | | | | | | | | As MSC2263 states, m.require_identity_server must be set to false when it does not require an identity server to be provided by the client for the purposes of email registration or password reset. Adds an m.require_identity_server flag to /versionss unstable_flags section. This will advertise that Synapse no longer needs id_server as a parameter.
| | | * Add POST submit_token endpoint for MSISDN (#6078)Andrew Morgan2019-09-231-2/+45
| | | | | | | | | | | | First part of solving #6076
| | | * Implement MSC2290 (#6043)Andrew Morgan2019-09-232-72/+95
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Implements MSC2290. This PR adds two new endpoints, /unstable/account/3pid/add and /unstable/account/3pid/bind. Depending on the progress of that MSC the unstable prefix may go away. This PR also removes the blacklist on some 3PID tests which occurs in #6042, as the corresponding Sytest PR changes them to use the new endpoints. Finally, it also modifies the account deactivation code such that it doesn't just try to deactivate 3PIDs that were bound to the user's account, but any 3PIDs that were bound through the homeserver on that user's account.
| | | * Disable /register/available if registration is disabled (#6082)Andrew Morgan2019-09-231-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes #6066 This register endpoint should be disabled if registration is disabled, otherwise we're giving anyone the ability to check if a username exists on a server when we don't need to be. Error code is 403 (Forbidden) as that's the same returned by /register when registration is disabled.
| | | * Allow HS to send emails when adding an email to the HS (#6042)Andrew Morgan2019-09-202-51/+225
| | | |
| | | * Remove trailing slash ability from password reset's submit_token endpoint ↵Andrew Morgan2019-09-201-1/+1
| | | | | | | | | | | | | | | | | | | | (#6074) Remove trailing slash ability from the password reset submit_token endpoint. Since we provide the link in an email, and have never sent it with a trailing slash, there's no point for us to accept them on the endpoint.
| | | * Drop support for bind param on POST /account/3pid (MSC2290) (#6067)Andrew Morgan2019-09-201-4/+0
| | | | | | | | | | | | As per [MSC2290](https://github.com/matrix-org/matrix-doc/pull/2290/files#diff-05cde9463e9209b701312b3baf2fb2ebR151), we're dropping the bind parameter from `/account/3pid`. This endpoint can now only be used for adding threepid's to the user's account on the homeserver.
| | | * Use unstable prefix for 3PID unbind API (#6062)J. Ryan Stinnett2019-09-191-1/+1
| | | |
| | | * Remove POST method from password reset submit_token endpoint (#6056)Andrew Morgan2019-09-191-17/+0
| | | | | | | | | | | | Removes the POST method from `/password_reset/<medium>/submit_token/` as it's only used by phone number verification which Synapse does not support yet.
| | * | Merge branch 'develop' into rav/saml_mapping_workRichard van der Hoff2019-09-1944-425/+732
| | |\|
| | | * Use the v2 Identity Service API for lookups (MSC2134 + MSC2140) (#5976)Andrew Morgan2019-09-111-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a redo of https://github.com/matrix-org/synapse/pull/5897 but with `id_access_token` accepted. Implements [MSC2134](https://github.com/matrix-org/matrix-doc/pull/2134) plus Identity Service v2 authentication ala [MSC2140](https://github.com/matrix-org/matrix-doc/pull/2140). Identity lookup-related functions were also moved from `RoomMemberHandler` to `IdentityHandler`.
| | | * Add changelogAndrew Morgan2019-09-101-1/+1
| | | |
| | | * Use account_threepid_delegate for 3pid validationAndrew Morgan2019-09-101-1/+2
| | | |
| | * | Record mappings from saml users in an external tableRichard van der Hoff2019-09-131-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | We want to assign unique mxids to saml users based on an incrementing suffix. For that to work, we need to record the allocated mxid in a separate table.
| * | | Merge branch 'develop' into uhoreg/e2e_cross-signing_mergedHubert Chathi2019-09-075-168/+346
| |\ \ \ | | | |/ | | |/|
* | | | Merge branch 'develop' into cross-signing_sig_uploadHubert Chathi2019-09-075-168/+346
|\ \ \ \ | | |/ / | |/| |
| * | | Apply suggestions from code reviewAndrew Morgan2019-09-062-2/+2
| | | | | | | | | | | | Co-Authored-By: Erik Johnston <erik@matrix.org>
| * | | Fix destructuring assumption bugAndrew Morgan2019-09-062-2/+2
| | | |
| * | | Allow Synapse to send registration emails + choose Synapse or an external ↵Andrew Morgan2019-09-065-162/+306
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | server to handle 3pid validation (#5987) This is a combination of a few different PRs, finally all being merged into `develop`: * #5875 * #5876 * #5868 (This one added the `/versions` flag but the flag itself was actually [backed out](https://github.com/matrix-org/synapse/commit/891afb57cbdf9867f2848341b29c75d6f35eef5a#diff-e591d42d30690ffb79f63bb726200891) in #5969. What's left is just giving /versions access to the config file, which could be useful in the future) * #5835 * #5969 * #5940 Clients should not actually use the new registration functionality until https://github.com/matrix-org/synapse/pull/5972 is merged. UPGRADE.rst, changelog entries and config file changes should all be reviewed closely before this PR is merged.
| * | | Switch to using v2 Identity Service APIs other than lookup (MSC 2140) (#5892)Andrew Morgan2019-09-051-6/+7
| | | |
| * | | Add POST /_matrix/client/r0/account/3pid/unbind (MSC2140) (#5980)Andrew Morgan2019-09-051-0/+33
| | | | | | | | | | | | Implements `POST /_matrix/client/r0/account/3pid/unbind` from [MSC2140](https://github.com/matrix-org/matrix-doc/blob/dbkr/tos_2/proposals/2140-terms-of-service-2.md#post-_matrixclientr0account3pidunbind).
* | | | update with newer coding styleHubert Chathi2019-09-041-2/+2
| | | |
* | | | make black happyHubert Chathi2019-09-041-0/+1
| | | |
* | | | allow uploading signatures of master key signed by devicesHubert Chathi2019-09-041-1/+1
| | | |
* | | | implement device signature uploading/fetchingHubert Chathi2019-09-041-0/+50
| |/ / |/| |
* | | Merge branch 'develop' into cross-signing_keysHubert Chathi2019-09-0439-193/+195
|\| |
| * | Remove bind_email and bind_msisdn (#5964)Andrew Morgan2019-09-041-2/+0
| | | | | | | | | Removes the `bind_email` and `bind_msisdn` parameters from the `/register` C/S API endpoint as per [MSC2140: Terms of Service for ISes and IMs](https://github.com/matrix-org/matrix-doc/pull/2140/files#diff-c03a26de5ac40fb532de19cb7fc2aaf7R107).
| * | Ensure the list media admin API is always available (#5966)Travis Ralston2019-09-031-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | * Ensure the list media admin API is always available This API is required for some external media repo implementations to operate (mostly for doing quarantine operations on a room). * changelog
| * | Ensure an auth instance is available to ListMediaInRoom (#5967)Travis Ralston2019-09-031-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | * Ensure an auth instance is available to ListMediaInRoom Fixes https://github.com/matrix-org/synapse/issues/5737 * Changelog
| * | Remove double return statements (#5962)Andrew Morgan2019-09-033-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove all the "double return" statements which were a result of us removing all the instances of ``` defer.returnValue(...) return ``` statements when we switched to python3 fully.
| * | Opentrace device lists (#5853)Jorik Schellekens2019-09-032-2/+6
| | | | | | | | | Trace device list changes.
| * | fix thumbnail storage location (#5915)L0ric02019-09-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * fix thumbnail storage location Signed-off-by: Lorenz Steinert <lorenz@steinerts.de> * Add changelog file. Signed-off-by: Lorenz Steinert <lorenz@steinerts.de> * Update Changelog Signed-off-by: Lorenz Steinert <lorenz@steinerts.de>
| * | Revert "Add m.id_access_token flag (#5930)" (#5945)Andrew Morgan2019-08-301-6/+1
| | | | | | | | | This reverts commit 4765f0cfd95f6160f32c75481651d125f343cd58.
| * | Remove unnecessary parentheses around return statements (#5931)Andrew Morgan2019-08-3037-182/+182
| | | | | | | | | | | | | | | Python will return a tuple whether there are parentheses around the returned values or not. I'm just sick of my editor complaining about this all over the place :)
| * | Add m.id_access_token flag (#5930)Andrew Morgan2019-08-301-1/+6
| | | | | | | | | | | | | | | Adds a flag to `/versions`' `unstable_features` section indicating that this Synapse understands what an `id_access_token` is, as per https://github.com/matrix-org/synapse/issues/5927#issuecomment-523566043 Fixes #5927
* | | Merge branch 'uhoreg/e2e_cross-signing_merged' into cross-signing_keysHubert Chathi2019-08-2813-173/+367
|\| |
| * | Merge pull request #5914 from matrix-org/rei/admin_getadminreivilibre2019-08-282-9/+33
| |\ \ | | | | | | | | Add GET method to admin API /users/@user:dom/admin
| | * | Add GET method to admin API /users/@user:dom/adminOlivier Wilkinson (reivilibre)2019-08-272-9/+33
| | | | | | | | | | | | | | | | Signed-off-by: Olivier Wilkinson (reivilibre) <olivier@librepush.net>
| * | | Merge pull request #5895 from matrix-org/erikj/notary_keyErik Johnston2019-08-271-13/+15
| |\ \ \ | | | | | | | | | | Add config option to sign remote key query responses with a separate key.
| | * | | Fixup review commentsErik Johnston2019-08-231-2/+2
| | | | |
| | * | | Only sign when we respond to remote key requestsErik Johnston2019-08-211-13/+15
| | | | |
| * | | | Merge pull request #5909 from aaronraimist/public_base_urlRichard van der Hoff2019-08-271-1/+1
| |\ \ \ \ | | |_|/ / | |/| | | public_base_url is actually public_baseurl
| | * | | public_base_url is actually public_baseurlAaron Raimist2019-08-261-1/+1
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Aaron Raimist <aaron@raim.ist>
| * | | | Add Admin API capability to set adminship of a user (#5878)reivilibre2019-08-272-0/+78
| |/ / / | | | | | | | | Admin API: Set adminship of a user
| * | | Merge pull request #5877 from ↵Richard van der Hoff2019-08-221-53/+4
| |\ \ \ | | | | | | | | | | | | | | | | | | | | Awesome-Technologies/remove_shared_secret_registration Remove shared secret registration
| | * | | Remove shared secret registration from client/r0/register endpointManuel Stahl2019-08-221-53/+4
| | |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This type of registration was probably never used. It only includes the user name in the HMAC but not the password. Shared secret registration is still available via client/r0/admin/register. Signed-off-by: Manuel Stahl <manuel.stahl@awesome-technologies.de>
| * | | Revert "Add "require_consent" parameter for registration"Brendan Abolivier2019-08-221-4/+1
| | | | | | | | | | | | | | | | This reverts commit 3320aaab3a9bba3f5872371aba7053b41af9d0a0.
| * | | Add "require_consent" parameter for registrationHalf-Shot2019-08-221-1/+4
| | | |
| * | | Opentrace e2e keys (#5855)Jorik Schellekens2019-08-221-1/+12
| | | | | | | | | | | | Add opentracing tags and logs for e2e keys
| * | | Servlet to purge old rooms (#5845)Richard van der Hoff2019-08-222-0/+59
| |/ /
| * / Fix up password reset template config names (#5863)Andrew Morgan2019-08-151-2/+2
| |/ | | | | | | | | Fixes #5833 The emailconfig code was attempting to pull incorrect config file names. This corrects that, while also marking a difference between a config file variable that's a filepath versus a str containing HTML.
| * Don't load the media repo when configured to use an external media repo (#5754)Amber Brown2019-08-134-91/+143
| |
| * Return 404 instead of 403 when retrieving an event without perms (#5798)Andrew Morgan2019-08-061-3/+11
| | | | | | | | | | Part of fixing matrix-org/sytest#652 Sytest PR: matrix-org/sytest#667
| * LintBrendan Abolivier2019-08-011-4/+2
| |
| * Allow defining HTML templates to serve the user on account renewalBrendan Abolivier2019-08-011-6/+17
| |
* | apply PR review suggestionsHubert Chathi2019-08-211-1/+1
| |
* | Merge branch 'cross-signing_hidden' into cross-signing_keysHubert Chathi2019-08-0139-297/+309
|\|
| * Merge tag 'v1.2.0rc2' into developAndrew Morgan2019-07-243-9/+39
| |\ | | | | | | | | | | | | | | | | | | Bugfixes -------- - Fix a regression introduced in v1.2.0rc1 which led to incorrect labels on some prometheus metrics. ([\#5734](https://github.com/matrix-org/synapse/issues/5734))
| | * Fix servlet metric names (#5734)Jorik Schellekens2019-07-243-9/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Fix servlet metric names Co-Authored-By: Richard van der Hoff <1389908+richvdh@users.noreply.github.com> * Remove redundant check * Cover all return paths
| * | Replace returnValue with return (#5736)Amber Brown2019-07-2339-288/+270
| |/
* / allow uploading keys for cross-signingHubert Chathi2019-07-251-3/+43
|/
* Remove the ability to query relations when the original event was redacted. ↵Andrew Morgan2019-07-181-32/+43
| | | | | | | (#5629) Fixes #5594 Forbid viewing relations on an event once it has been redacted.
* fix typo: backgroud -> backgroundAndrew Morgan2019-07-121-1/+1
|
* Clean up exception handling for access_tokens (#5656)Richard van der Hoff2019-07-112-4/+15
| | | | | | | | | | | | | | | | First of all, let's get rid of `TOKEN_NOT_FOUND_HTTP_STATUS`. It was a hack we did at one point when it was possible to return either a 403 or a 401 if the creds were missing. We always return a 401 in these cases now (thankfully), so it's not needed. Let's also stop abusing `AuthError` for these cases. Honestly they have nothing that relates them to the other places that `AuthError` is used, other than the fact that they are loosely under the 'Auth' banner. It makes no sense for them to share exception classes. Instead, let's add a couple of new exception classes: `InvalidClientTokenError` and `MissingClientTokenError`, for the `M_UNKNOWN_TOKEN` and `M_MISSING_TOKEN` cases respectively - and an `InvalidClientCredentialsError` base class for the two of them.
* Don't bundle aggregations when retrieving the original event (#5654)Andrew Morgan2019-07-101-2/+12
| | | | | | | A fix for PR #5626, which returned the original event content as part of a call to /relations. Only problem was that we were attempting to aggregate the relations on top of it when we did so. We now set bundle_aggregations to False in the get_event call. We also do this when pulling the relation events as well, because edits of edits are not something we'd like to support here.
* Include the original event in /relations (#5626)Andrew Morgan2019-07-091-3/+5
| | | When asking for the relations of an event, include the original event in the response. This will mostly be used for efficiently showing edit history, but could be useful in other circumstances.
* Remove access-token support from RegistrationHandler.register (#5641)Richard van der Hoff2019-07-083-18/+10
| | | | | | | | Nothing uses this now, so we can remove the dead code, and clean up the API. Since we're changing the shape of the return value anyway, we take the opportunity to give the method a better name.
* Factor out some redundant code in the login impl (#5639)Richard van der Hoff2019-07-081-39/+10
| | | | | | | | * Factor out some redundant code in the login impl Also fixes a redundant access_token which was generated during jwt login. * changelog
* Move logging utilities out of the side drawer of util/ and into logging/ (#5606)Amber Brown2019-07-046-18/+14
|
* Fix media repo breaking (#5593)Amber Brown2019-07-021-0/+1
|
* Complete the SAML2 implementation (#5422)Richard van der Hoff2019-07-022-43/+48
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * SAML2 Improvements and redirect stuff Signed-off-by: Alexander Trost <galexrt@googlemail.com> * Code cleanups and simplifications. Also: share the saml client between redirect and response handlers. * changelog * Revert redundant changes to static js * Move all the saml stuff out to a centralised handler * Add support for tracking SAML2 sessions. This allows us to correctly handle `allow_unsolicited: False`. * update sample config * cleanups * update sample config * rename BaseSSORedirectServlet for consistency * Address review comments
| * Merge branch 'develop' into rav/saml2_clientRichard van der Hoff2019-07-019-122/+75
| |\
| * | rename BaseSSORedirectServlet for consistencyRichard van der Hoff2019-06-271-3/+3
| | |
| * | Move all the saml stuff out to a centralised handlerRichard van der Hoff2019-06-262-44/+4
| | |
| * | Merge branch 'develop' into rav/saml2_clientRichard van der Hoff2019-06-2657-1432/+1275
| |\ \
| * | | Code cleanups and simplifications.Richard van der Hoff2019-06-112-45/+42
| | | | | | | | | | | | | | | | Also: share the saml client between redirect and response handlers.
| * | | Merge remote-tracking branch 'origin/develop' into rav/saml2_clientRichard van der Hoff2019-06-1039-321/+531
| |\ \ \
| * | | | SAML2 Improvements and redirect stuffAlexander Trost2019-06-021-0/+46
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Alexander Trost <galexrt@googlemail.com>
* | | | | Fix JWT login with new users (#5586)PauRE2019-07-021-6/+3
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Pau Rodriguez-Estivill <prodrigestivill@gmail.com>
* | | | | fix async/await consentresource (#5585)Amber Brown2019-07-011-1/+3
| |_|_|/ |/| | | | | | | Fixes #5582
* | | | Make the http server handle coroutine-making REST servlets (#5475)Amber Brown2019-06-298-120/+73
| | | |
* | | | Fix JWT login (#5555)PauRE2019-06-271-1/+1
| |_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Fix JWT login with register Signed-off-by: Pau Rodriguez-Estivill <prodrigestivill@gmail.com> * Add pyjwt conditional dependency Signed-off-by: Pau Rodriguez-Estivill <prodrigestivill@gmail.com> * Added changelog file Signed-off-by: Pau Rodriguez-Estivill <prodrigestivill@gmail.com> * Improved changelog description Signed-off-by: Pau Rodriguez-Estivill <prodrigestivill@gmail.com>
* | | Split public rooms directory auth config in twoBrendan Abolivier2019-06-241-1/+1
| | |
* | | Run Black. (#5482)Amber Brown2019-06-2057-1426/+1254
| | |
* | | Merge pull request #5390 from matrix-org/erikj/dont_log_on_fail_to_get_fileErik Johnston2019-06-141-2/+4
|\ \ \ | | | | | | | | Don't log exception when failing to fetch remote content.
| * | | Don't log exception when failing to fetch remote content.Erik Johnston2019-06-071-2/+4
| | | | | | | | | | | | | | | | | | | | In particular, let's not log stack traces when we stop processing becuase the response body was too large.
* | | | Merge branch 'master' of github.com:matrix-org/synapse into developErik Johnston2019-06-111-4/+5
|\ \ \ \
| * | | | Change password reset links to /_matrix.Erik Johnston2019-06-111-4/+5
| |/ / /
* | | / Don't warn user about password reset disabling through config code (#5387)Andrew Morgan2019-06-111-4/+15
| |_|/ |/| | | | | | | | | | | | | | | | | Moves the warning about password resets being disabled to the point where a user actually tries to reset their password. Is this an appropriate place for it to happen? Also removed the disabling of msisdn password resets when you don't have an email config, as that just doesn't make sense. Also change the error a user receives upon disabled passwords to specify that only email-based password reset is disabled.
* | | Merge pull request #5363 from ↵Brendan Abolivier2019-06-101-1/+1
|\ \ \ | |/ / |/| | | | | | | | matrix-org/babolivier/account_validity_send_mail_auth Don't check whether the user's account is expired on /send_mail requests
| * | Don't check whether the user's account is expired on /send_mail requestsBrendan Abolivier2019-06-051-1/+1
| | |
* | | Add ability to perform password reset via email without trusting the ↵Andrew Morgan2019-06-061-5/+238
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | identity server (#5377) Sends password reset emails from the homeserver instead of proxying to the identity server. This is now the default behaviour for security reasons. If you wish to continue proxying password reset requests to the identity server you must now enable the email.trust_identity_server_for_password_resets option. This PR is a culmination of 3 smaller PRs which have each been separately reviewed: * #5308 * #5345 * #5368
* | | Neilj/add r0.5 to versions (#5360)Neil Johnson2019-06-051-0/+1
| | | | | | | | | * Update _matrix/client/versions to reference support for r0.5.0
* | | Merge pull request #5333 from ↵Richard van der Hoff2019-06-041-10/+2
|\ \ \ | | | | | | | | | | | | | | | | matrix-org/rav/server_keys/09_improve_notary_server Fixes for the key-notary server
| * | | Notary server: make requests to origins in parallelRichard van der Hoff2019-06-041-10/+2
| | | | | | | | | | | | | | | | ... else we're guaranteed to time out.
* | | | Hawkowl/fix missing auth (#5328)Amber Brown2019-06-041-0/+1
|/ / /
* | / Unify v1 and v2 REST client APIs (#5226)Amber Brown2019-06-0337-305/+287
| |/ |/|
* | Fix ignored filter field in `/messages` endpointEisha Chen-yen-su2019-05-301-0/+2
| | | | | | | | | | | | | | | | This fixes a bug which were causing the "event_format" field to be ignored in the filter of requests to the `/messages` endpoint of the CS API. Signed-off-by: Eisha Chen-yen-su <chenyensu0@gmail.com>
* | Merge pull request #5256 from aaronraimist/logout-correct-errorErik Johnston2019-05-301-18/+9
|\ \ | | | | | | Show correct error when logging out and access token is missing
| * | LintAaron Raimist2019-05-291-2/+0
| | | | | | | | | | | | Signed-off-by: Aaron Raimist <aaron@raim.ist>
| * | Get rid of try exceptAaron Raimist2019-05-271-16/+9
| | | | | | | | | | | | Signed-off-by: Aaron Raimist <aaron@raim.ist>
| * | Show correct error when logging out and access token is missingAaron Raimist2019-05-241-4/+4
| | | | | | | | | | | | Signed-off-by: Aaron Raimist <aaron@raim.ist>