Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Start fewer opentracing spans (#8640) | Erik Johnston | 2020-10-26 | 1 | -12/+8 |
| | | | | | | | #8567 started a span for every background process. This is good as it means all Synapse code that gets run should be in a span (unless in the sentinel logging context), but it means we generate about 15x the number of spans as we did previously. This PR attempts to reduce that number by a) not starting one for send commands to Redis, and b) deferring starting background processes until after we're sure they're necessary. I don't really know how much this will help. | ||||
* | Fix handling of User-Agent headers with bad utf-8. (#8632) | Erik Johnston | 2020-10-23 | 1 | -6/+18 |
| | |||||
* | Merge pull request #8537 from matrix-org/rav/simplify_locally_reject_invite | Richard van der Hoff | 2020-10-15 | 2 | -2/+1 |
|\ | | | | | Simplify `_locally_reject_invite` | ||||
| * | Simplify `_locally_reject_invite` | Richard van der Hoff | 2020-10-13 | 1 | -1/+1 |
| | | | | | | | | | | Update `EventCreationHandler.create_event` to accept an auth_events param, and use it in `_locally_reject_invite` instead of reinventing the wheel. | ||||
| * | Remove redundant `token_id` parameter to create_event | Richard van der Hoff | 2020-10-13 | 1 | -1/+0 |
| | | | | | | | | this is always the same as requester.access_token_id. | ||||
* | | Fix not sending events over federation when using sharded event persisters ↵ | Erik Johnston | 2020-10-14 | 1 | -3/+10 |
|/ | | | | | | | | | | | | | | | | | (#8536) * Fix outbound federaion with multiple event persisters. We incorrectly notified federation senders that the minimum persisted stream position had advanced when we got an `RDATA` from an event persister. Notifying of federation senders already correctly happens in the notifier, so we just delete the offending line. * Change some interfaces to use RoomStreamToken. By enforcing use of `RoomStreamTokens` we make it less likely that people pass in random ints that they got from somewhere random. | ||||
* | Move additional tasks to the background worker, part 4 (#8513) | Patrick Cloke | 2020-10-13 | 1 | -34/+14 |
| | |||||
* | Fix message duplication if something goes wrong after persisting the event ↵ | Erik Johnston | 2020-10-13 | 1 | -0/+157 |
| | | | | | (#8476) Should fix #3365. | ||||
* | Remove the deprecated Handlers object (#8494) | Patrick Cloke | 2020-10-09 | 9 | -40/+20 |
| | | | All handlers now available via get_*_handler() methods on the HomeServer. | ||||
* | Invalidate the cache when an olm fallback key is uploaded (#8501) | Hubert Chathi | 2020-10-08 | 1 | -0/+20 |
| | |||||
* | Add support for MSC2697: Dehydrated devices (#8380) | Hubert Chathi | 2020-10-07 | 1 | -0/+82 |
| | | | | This allows a user to store an offline device on the server and then restore it at a subsequent login. | ||||
* | Merge pull request #8463 from matrix-org/rav/clean_up_event_handling | Richard van der Hoff | 2020-10-07 | 1 | -1/+1 |
|\ | | | | | Reduce inconsistencies between codepaths for membership and non-membership events. | ||||
| * | kill off `send_nonmember_event` | Richard van der Hoff | 2020-10-05 | 1 | -1/+1 |
| | | | | | | | | This is now redundant, and we can just call `handle_new_client_event` directly. | ||||
* | | Add support for MSC2732: olm fallback keys (#8312) | Hubert Chathi | 2020-10-06 | 1 | -0/+65 |
|/ | |||||
* | Add config option for always using "userinfo endpoint" for OIDC (#7658) | BBBSnowball | 2020-10-01 | 1 | -2/+8 |
| | | | This allows for connecting to certain IdPs, e.g. GitLab. | ||||
* | Allow additional SSO properties to be passed to the client (#8413) | Patrick Cloke | 2020-09-30 | 1 | -55/+105 |
| | |||||
* | Allow existing users to login via OpenID Connect. (#8345) | Tdxdxoz | 2020-09-25 | 1 | -0/+35 |
| | | | | | | | Co-authored-by: Benjamin Koch <bbbsnowball@gmail.com> This adds configuration flags that will match a user to pre-existing users when logging in via OpenID Connect. This is useful when switching to an existing SSO system. | ||||
* | Create function to check for long names in devices (#8364) | Dionysis Grigoropoulos | 2020-09-22 | 1 | -0/+11 |
| | | | | | | | | | * Create a new function to verify that the length of a device name is under a certain threshold. * Refactor old code and tests to use said function. * Verify device name length during registration of device * Add a test for the above Signed-off-by: Dionysis Grigoropoulos <dgrig@erethon.com> | ||||
* | Simplify super() calls to Python 3 syntax. (#8344) | Patrick Cloke | 2020-09-18 | 2 | -2/+2 |
| | | | | | | | This converts calls like super(Foo, self) -> super(). Generated with: sed -i "" -Ee 's/super\([^\(]+\)/super()/g' **/*.py | ||||
* | Catch-up after Federation Outage (split, 4): catch-up loop (#8272) | reivilibre | 2020-09-15 | 1 | -0/+5 |
| | |||||
* | Fixup pusher pool notifications (#8287) | Erik Johnston | 2020-09-09 | 1 | -0/+1 |
| | | | | | `pusher_pool.on_new_notifications` expected a min and max stream ID, however that was not what we were passing in. Instead, let's just pass it the current max stream ID and have it track the last stream ID it got passed. I believe that it mostly worked as we called the function for every event. However, it would break for events that got persisted out of order, i.e, that were persisted but the max stream ID wasn't incremented as not all preceding events had finished persisting, and push for that event would be delayed until another event got pushed to the effected users. | ||||
* | Revert "Fixup pusher pool notifications" | Erik Johnston | 2020-09-09 | 1 | -1/+0 |
| | | | | This reverts commit e7fd336a53a4ca489cdafc389b494d5477019dc0. | ||||
* | Fixup pusher pool notifications | Erik Johnston | 2020-09-09 | 1 | -0/+1 |
| | |||||
* | Allow for make_awaitable's return value to be re-used. (#8261) | Patrick Cloke | 2020-09-08 | 3 | -16/+16 |
| | |||||
* | Rename 'populate_stats_process_rooms_2' background job back to ↵ | Andrew Morgan | 2020-09-08 | 1 | -9/+6 |
| | | | | | | | 'populate_stats_process_rooms' again (#8243) Fixes https://github.com/matrix-org/synapse/issues/8238 Alongside the delta file, some changes were also necessary to the codebase to remove references to the now defunct `populate_stats_process_rooms_2` background job. Thankfully the latter doesn't seem to have made it into any documentation yet :) | ||||
* | Stop sub-classing object (#8249) | Patrick Cloke | 2020-09-04 | 2 | -2/+2 |
| | |||||
* | Ensure that the OpenID Connect remote ID is a string. (#8190) | Patrick Cloke | 2020-08-28 | 1 | -2/+39 |
| | |||||
* | Do not yield on awaitables in tests. (#8193) | Patrick Cloke | 2020-08-27 | 1 | -1/+3 |
| | |||||
* | Convert stats and related calls to async/await (#8192) | Patrick Cloke | 2020-08-27 | 2 | -17/+16 |
| | |||||
* | Convert simple_update* and simple_select* to async (#8173) | Patrick Cloke | 2020-08-27 | 1 | -2/+2 |
| | |||||
* | Reduce run-times of tests by advancing the reactor less (#7757) | Andrew Morgan | 2020-08-27 | 1 | -1/+1 |
| | |||||
* | Do not propagate typing notifications from shadow-banned users. (#8176) | Patrick Cloke | 2020-08-26 | 1 | -6/+20 |
| | |||||
* | Convert simple_select_one and simple_select_one_onecol to async (#8162) | Patrick Cloke | 2020-08-26 | 2 | -14/+46 |
| | |||||
* | Allow denying or shadow banning registrations via the spam checker (#8034) | Patrick Cloke | 2020-08-20 | 3 | -7/+69 |
| | |||||
* | Convert some of the general database methods to async (#8100) | Patrick Cloke | 2020-08-17 | 2 | -3/+3 |
| | |||||
* | Convert stream database to async/await. (#8074) | Patrick Cloke | 2020-08-17 | 1 | -1/+1 |
| | |||||
* | Convert devices database to async/await. (#8069) | Patrick Cloke | 2020-08-12 | 1 | -1/+1 |
| | |||||
* | Convert account data, device inbox, and censor events databases to ↵ | Patrick Cloke | 2020-08-12 | 1 | -1/+2 |
| | | | | async/await (#8063) | ||||
* | Converts event_federation and registration databases to async/await (#8061) | Patrick Cloke | 2020-08-11 | 1 | -5/+6 |
| | |||||
* | Convert directory, e2e_room_keys, end_to_end_keys, monthly_active_users ↵ | Patrick Cloke | 2020-08-07 | 1 | -1/+1 |
| | | | | database to async (#8042) | ||||
* | Convert synapse.api to async/await (#8031) | Patrick Cloke | 2020-08-06 | 1 | -2/+2 |
| | |||||
* | Rename database classes to make some sense (#8033) | Erik Johnston | 2020-08-05 | 2 | -42/+42 |
| | |||||
* | Prevent join->join membership transitions changing member count (#7977) | Andrew Morgan | 2020-08-03 | 1 | -6/+40 |
| | | | | | | | | | | | `StatsHandler` handles updates to the `current_state_delta_stream`, and updates room stats such as the amount of state events, joined users, etc. However, it counts every new join membership as a new user entering a room (and that user being in another room), whereas it's possible for a user's membership status to go from join -> join, for instance when they change their per-room profile information. This PR adds a check for join->join membership transitions, and bails out early, as none of the further checks are necessary at that point. Due to this bug, membership stats in many rooms have ended up being wildly larger than their true values. I am not sure if we also want to include a migration step which recalculates these statistics (possibly using the `_populate_stats_process_rooms` bg update). Bug introduced in the initial implementation https://github.com/matrix-org/synapse/pull/4338. | ||||
* | Convert federation client to async/await. (#7975) | Patrick Cloke | 2020-07-30 | 2 | -4/+4 |
| | |||||
* | Convert appservice to async. (#7973) | Patrick Cloke | 2020-07-30 | 1 | -2/+3 |
| | |||||
* | Convert device handler to async/await (#7871) | Patrick Cloke | 2020-07-17 | 2 | -12/+11 |
| | |||||
* | Convert _base, profile, and _receipts handlers to async/await (#7860) | Patrick Cloke | 2020-07-17 | 1 | -6/+11 |
| | |||||
* | Fix tests | Erik Johnston | 2020-07-15 | 1 | -2/+2 |
| | |||||
* | Convert E2E key and room key handlers to async/await. (#7851) | Patrick Cloke | 2020-07-15 | 2 | -237/+422 |
| | |||||
* | Convert the appservice handler to async/await. (#7775) | Patrick Cloke | 2020-07-06 | 1 | -33/+35 |
| | |||||
* | isort 5 compatibility (#7786) | Will Hunt | 2020-07-05 | 1 | -3/+1 |
| | | | The CI appears to use the latest version of isort, which is a problem when isort gets a major version bump. Rather than try to pin the version, I've done the necessary to make isort5 happy with synapse. | ||||
* | Additional configuration options for auto-join rooms (#7763) | Patrick Cloke | 2020-06-30 | 1 | -2/+210 |
| | |||||
* | Convert the typing handler to async/await. (#7679) | Patrick Cloke | 2020-06-17 | 1 | -6/+7 |
| | |||||
* | Ensure etag is a string for GET room_keys/version response (#7691) | Hubert Chathi | 2020-06-15 | 1 | -0/+1 |
| | |||||
* | Add option to enable encryption by default for new rooms (#7639) | Andrew Morgan | 2020-06-10 | 2 | -5/+104 |
| | | | | | | | | | Fixes https://github.com/matrix-org/synapse/issues/2431 Adds config option `encryption_enabled_by_default_for_room_type`, which determines whether encryption should be enabled with the default encryption algorithm in private or public rooms upon creation. Whether the room is private or public is decided based upon the room creation preset that is used. Part of this PR is also pulling out all of the individual instances of `m.megolm.v1.aes-sha2` into a constant variable to eliminate typos ala https://github.com/matrix-org/synapse/pull/7637 Based on #7637 | ||||
* | Convert user directory handler and related classes to async/await. (#7640) | Patrick Cloke | 2020-06-05 | 1 | -4/+4 |
| | |||||
* | Add an option to disable autojoin for guest accounts (#6637) | Travis Ralston | 2020-06-05 | 1 | -0/+10 |
| | | | | Fixes https://github.com/matrix-org/synapse/issues/3177 | ||||
* | Performance improvements and refactor of Ratelimiter (#7595) | Andrew Morgan | 2020-06-05 | 1 | -5/+1 |
| | | | | | | | | | | While working on https://github.com/matrix-org/synapse/issues/5665 I found myself digging into the `Ratelimiter` class and seeing that it was both: * Rather undocumented, and * causing a *lot* of config checks This PR attempts to refactor and comment the `Ratelimiter` class, as well as encourage config file accesses to only be done at instantiation. Best to be reviewed commit-by-commit. | ||||
* | Fix encryption algorithm typos in tests/comments (#7637) | Andrew Morgan | 2020-06-04 | 1 | -5/+5 |
| | | | | | | | | @uhoreg has confirmed these were both typos. They are only in comments and tests though, rather than anything critical. Introduced in: * https://github.com/matrix-org/synapse/pull/7157 * https://github.com/matrix-org/synapse/pull/5726 | ||||
* | Add ability to wait for replication streams (#7542) | Erik Johnston | 2020-05-22 | 1 | -1/+4 |
| | | | | | | | 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. | ||||
* | Support UI Authentication for OpenID Connect accounts (#7457) | Patrick Cloke | 2020-05-15 | 1 | -5/+10 |
| | |||||
* | Implement room version 6 (MSC2240). (#7506) | Patrick Cloke | 2020-05-15 | 1 | -3/+3 |
| | |||||
* | Strictly enforce canonicaljson requirements in a new room version (#7381) | Patrick Cloke | 2020-05-14 | 1 | -1/+66 |
| | |||||
* | Extend spam checker to allow for multiple modules (#7435) | Andrew Morgan | 2020-05-08 | 1 | -2/+2 |
| | |||||
* | Implement OpenID Connect-based login (#7256) | Quentin Gliech | 2020-05-08 | 1 | -0/+565 |
| | |||||
* | Stop Auth methods from polling the config on every req. (#7420) | Andrew Morgan | 2020-05-06 | 2 | -14/+22 |
| | |||||
* | async/await is_server_admin (#7363) | Andrew Morgan | 2020-05-01 | 2 | -36/+53 |
| | |||||
* | Convert auth handler to async/await (#7261) | Patrick Cloke | 2020-04-15 | 2 | -29/+55 |
| | |||||
* | Allow admins to create aliases when they are not in the room (#7191) | Patrick Cloke | 2020-04-01 | 1 | -0/+62 |
| | |||||
* | Merge pull request #7157 from matrix-org/rev.outbound_device_pokes_tests | Richard van der Hoff | 2020-03-30 | 1 | -1/+1 |
|\ | | | | | Add tests for outbound device pokes | ||||
| * | Remove spurious "name" parameter to `default_config` | Richard van der Hoff | 2020-03-24 | 1 | -1/+1 |
| | | | | | | | | | | this is never set to anything other than "test", and is a source of unnecessary boilerplate. | ||||
* | | Add options to prevent users from changing their profile. (#7096) | Dirk Klimpel | 2020-03-27 | 1 | -1/+64 |
|/ | |||||
* | Revert "Add options to disable setting profile info for prevent changes. ↵ | Richard van der Hoff | 2020-03-17 | 1 | -32/+1 |
| | | | | | | | (#7053)" This reverts commit 54dd28621b070ca67de9f773fe9a89e1f4dc19da, reversing changes made to 6640460d054e8f4444046a34bdf638921b31c01e. | ||||
* | Add options to disable setting profile info for prevent changes. (#7053) | Brendan Abolivier | 2020-03-10 | 1 | -1/+32 |
|\ | |||||
| * | updates after review | dklimpel | 2020-03-09 | 1 | -3/+3 |
| | | |||||
| * | fix tests | dklimpel | 2020-03-09 | 1 | -2/+2 |
| | | |||||
| * | add tests | dklimpel | 2020-03-09 | 1 | -3/+3 |
| | | |||||
| * | Add options to disable setting profile info for prevent changes. | dklimpel | 2020-03-08 | 1 | -1/+32 |
| | | |||||
* | | Allow deleting an alias if the user has sufficient power level (#6986) | Patrick Cloke | 2020-03-04 | 1 | -24/+104 |
| | | |||||
* | | Validate the alt_aliases property of canonical alias events (#6971) | Patrick Cloke | 2020-03-03 | 1 | -36/+30 |
|/ | |||||
* | Store room version on invite (#6983) | Richard van der Hoff | 2020-02-26 | 1 | -0/+1 |
| | | | | | When we get an invite over federation, store the room version in the rooms table. The general idea here is that, when we pull the invite out again, we'll want to know what room_version it belongs to (so that we can later redact it if need be). So we need to store it somewhere... | ||||
* | Port PresenceHandler to async/await (#6991) | Erik Johnston | 2020-02-26 | 1 | -6/+12 |
| | |||||
* | Clarify list/set/dict/tuple comprehensions and enforce via flake8 (#6957) | Patrick Cloke | 2020-02-21 | 3 | -11/+11 |
| | | | | Ensure good comprehension hygiene using flake8-comprehensions. | ||||
* | Refactor the membership check methods in Auth | Richard van der Hoff | 2020-02-18 | 1 | -2/+2 |
| | | | | | these were getting a bit unwieldy, so let's combine `check_joined_room` and `check_user_was_in_room` into a single `check_user_in_room`. | ||||
* | Stop sending events when creating or deleting aliases (#6904) | Patrick Cloke | 2020-02-18 | 1 | -2/+152 |
| | | | Stop sending events when creating or deleting associations (room aliases). Send an updated canonical alias event if one of the alt_aliases is deleted. | ||||
* | Convert the directory handler tests to use HomeserverTestCase (#6919) | Patrick Cloke | 2020-02-14 | 1 | -24/+17 |
| | | | Convert directory handler tests to use HomeserverTestCase. | ||||
* | Filter the results of user directory searching via the spam checker (#6888) | Patrick Cloke | 2020-02-14 | 1 | -0/+92 |
| | | | Add a method to the spam checker to filter the user directory results. | ||||
* | Reject device display names that are too long (#6882) | Patrick Cloke | 2020-02-10 | 1 | -0/+18 |
| | | | | | | | | * Reject device display names that are too long. Too long is currently defined as 100 characters in length. * Add a regression test for rejecting a too long device display name. | ||||
* | Add typing to synapse.federation.sender (#6871) | Erik Johnston | 2020-02-07 | 1 | -2/+6 |
| | |||||
* | Pass room_version into `event_from_pdu_json` | Richard van der Hoff | 2020-02-06 | 1 | -2/+4 |
| | | | | It's called from all over the shop, so this one's a bit messy. | ||||
* | Merge pull request #6806 from matrix-org/rav/redact_changes/3 | Richard van der Hoff | 2020-01-31 | 1 | -2/+2 |
|\ | | | | | Pass room_version into add_hashes_and_signatures | ||||
| * | Store the room version in EventBuilder | Richard van der Hoff | 2020-01-30 | 1 | -2/+2 |
| | | |||||
* | | s/get_room_version/get_room_version_id/ | Richard van der Hoff | 2020-01-31 | 1 | -1/+1 |
|/ | | | | | ... to make way for a forthcoming get_room_version which returns a RoomVersion object. | ||||
* | Resync remote device list when detected as stale. (#6786) | Erik Johnston | 2020-01-30 | 1 | -3/+3 |
| | |||||
* | Add `local_current_membership` table (#6655) | Erik Johnston | 2020-01-15 | 1 | -2/+2 |
| | | | | | | | Currently we rely on `current_state_events` to figure out what rooms a user was in and their last membership event in there. However, if the server leaves the room then the table may be cleaned up and that information is lost. So lets add a table that separately holds that information. | ||||
* | Kill off RegistrationError (#6691) | Richard van der Hoff | 2020-01-13 | 1 | -2/+0 |
| | | | This is pretty pointless. Let's just use SynapseError. | ||||
* | Add database config class (#6513) | Erik Johnston | 2019-12-18 | 1 | -19/+20 |
| | | | | | This encapsulates config for a given database and is the way to get new connections. | ||||
* | look up cross-signing keys from the DB in bulk (#6486) | Hubert Chathi | 2019-12-12 | 1 | -8/+0 |
| | |||||
* | Back out perf regression from get_cross_signing_keys_from_cache. (#6494) | Neil Johnson | 2019-12-09 | 1 | -0/+8 |
| | | | Back out cross-signing code added in Synapse 1.5.0, which caused a performance regression. | ||||
* | Merge pull request #6484 from matrix-org/erikj/port_sync_handler | Erik Johnston | 2019-12-09 | 2 | -23/+34 |
|\ | | | | | Port SyncHandler to async/await | ||||
| * | Fixup functions to consistently return deferreds | Erik Johnston | 2019-12-06 | 1 | -6/+18 |
| | | |||||
| * | Port SyncHandler to async/await | Erik Johnston | 2019-12-05 | 1 | -17/+16 |
| | | |||||
* | | Move background update handling out of store | Erik Johnston | 2019-12-05 | 2 | -20/+48 |
| | | |||||
* | | Move DB pool and helper functions into dedicated Database class | Erik Johnston | 2019-12-05 | 2 | -21/+21 |
|/ | |||||
* | Remove underscore from SQLBaseStore functions | Erik Johnston | 2019-12-04 | 2 | -21/+21 |
| | |||||
* | Implementation of MSC2314 (#6176) | Amber Brown | 2019-11-28 | 1 | -0/+3 |
| | |||||
* | add etag and count to key backup endpoints (#5858) | Hubert Chathi | 2019-11-27 | 1 | -0/+31 |
| | |||||
* | Fix bug which caused rejected events to be stored with the wrong room state ↵ | Richard van der Hoff | 2019-11-06 | 1 | -0/+126 |
| | | | | | | | | | | | | (#6320) Fixes a bug where rejected events were persisted with the wrong state group. Also fixes an occasional internal-server-error when receiving events over federation which are rejected and (possibly because they are backwards-extremities) have no prev_group. Fixes #6289. | ||||
* | rename get_devices_by_remote to get_device_updates_by_remote | Hubert Chathi | 2019-10-30 | 1 | -2/+2 |
| | |||||
* | Port federation_server to async/await | Erik Johnston | 2019-10-29 | 1 | -0/+3 |
| | |||||
* | Fix tests | Erik Johnston | 2019-10-25 | 1 | -0/+2 |
| | |||||
* | Merge branch 'develop' of github.com:matrix-org/synapse into ↵ | Erik Johnston | 2019-10-22 | 1 | -1/+294 |
|\ | | | | | | | erikj/refactor_stores | ||||
| * | Merge branch 'develop' into cross-signing_sig_upload | Hubert Chathi | 2019-10-18 | 6 | -59/+185 |
| |\ | |||||
| * | | use something that's the right type for user_id | Hubert Chathi | 2019-09-06 | 1 | -1/+1 |
| | | | |||||
| * | | fix test | Hubert Chathi | 2019-09-05 | 1 | -1/+3 |
| | | | |||||
| * | | add test | Hubert Chathi | 2019-09-04 | 1 | -0/+88 |
| | | | |||||
| * | | make isort happy | Hubert Chathi | 2019-09-04 | 1 | -0/+1 |
| | | | |||||
| * | | make black happy | Hubert Chathi | 2019-09-04 | 1 | -85/+62 |
| | | | |||||
| * | | allow uploading signatures of master key signed by devices | Hubert Chathi | 2019-09-04 | 1 | -1/+226 |
| | | | |||||
* | | | Merge branch 'develop' of github.com:matrix-org/synapse into ↵ | Erik Johnston | 2019-10-22 | 1 | -0/+65 |
|\ \ \ | | |/ | |/| | | | | erikj/refactor_stores | ||||
| * | | Merge branch 'develop' into uhoreg/e2e_cross-signing_merged | Hubert Chathi | 2019-10-18 | 6 | -59/+185 |
| |\ \ | | |/ | |/| | |||||
| * | | Merge branch 'develop' into cross-signing_keys | Hubert Chathi | 2019-09-04 | 2 | -112/+533 |
| |\ \ | |||||
| * | | | fix formatting | Hubert Chathi | 2019-08-01 | 1 | -1/+3 |
| | | | | |||||
| * | | | Merge branch 'cross-signing_hidden' into cross-signing_keys | Hubert Chathi | 2019-08-01 | 1 | -2/+2 |
| |\ \ \ | |||||
| * | | | | allow uploading keys for cross-signing | Hubert Chathi | 2019-07-25 | 1 | -0/+63 |
| | | | | | |||||
* | | | | | Move storage classes into a main "data store". | Erik Johnston | 2019-10-21 | 1 | -4/+4 |
| |_|_|/ |/| | | | | | | | | | | | | | | | This is in preparation for having multiple data stores that offer different functionality, e.g. splitting out state or event storage. | ||||
* | | | | Fix presence timeouts when synchrotron restarts. (#6212) | Erik Johnston | 2019-10-18 | 1 | -0/+39 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Fix presence timeouts when synchrotron restarts. Handling timeouts would fail if there was an external process that had timed out, e.g. a synchrotron restarting. This was due to a couple of variable name typoes. Fixes #3715. | ||||
* | | | | Merge pull request #6189 from matrix-org/uhoreg/e2e_backup_optional_version | Hubert Chathi | 2019-10-11 | 1 | -16/+31 |
|\ \ \ \ | | | | | | | | | | | make version optional in body of e2e backup version update | ||||
| * | | | | change test name to be unique | Hubert Chathi | 2019-10-10 | 1 | -1/+1 |
| | | | | | |||||
| * | | | | make version optional in body of e2e backup version update | Hubert Chathi | 2019-10-09 | 1 | -16/+31 |
| | | | | | | | | | | | | | | | | | | | | to agree with latest version of the MSC | ||||
* | | | | | Fix races in room stats (and other) updates. (#6187) | Richard van der Hoff | 2019-10-10 | 1 | -1/+1 |
|/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | Hopefully this will fix the occasional failures we were seeing in the room directory. The problem was that events are not necessarily persisted (and `current_state_delta_stream` updated) in the same order as their stream_id. So for instance current_state_delta 9 might be persisted *before* current_state_delta 8. Then, when the room stats saw stream_id 9, it assumed it had done everything up to 9, and never came back to do stream_id 8. We can solve this easily by only processing up to the stream_id where we know all events have been persisted. | ||||
* | | | | Merge pull request #6147 from matrix-org/babolivier/3pid-invite-revoked | Brendan Abolivier | 2019-10-04 | 1 | -0/+81 |
|\ \ \ \ | | | | | | | | | | | Don't 500 when trying to exchange a revoked 3PID invite | ||||
| * | | | | Lint (again) | Brendan Abolivier | 2019-10-03 | 1 | -3/+1 |
| | | | | | |||||
| * | | | | Lint | Brendan Abolivier | 2019-10-03 | 1 | -5/+5 |
| | | | | | |||||
| * | | | | Add test case | Brendan Abolivier | 2019-10-03 | 1 | -0/+83 |
| | | | | | |||||
* | | | | | Land improved room list based on room stats (#6019) | Erik Johnston | 2019-10-02 | 1 | -39/+0 |
|/ / / / | | | | | | | | | | | | | Use room_stats and room_state for room directory search | ||||
* | | | | Add 'failure_ts' column to 'destinations' table (#6016) | Richard van der Hoff | 2019-09-17 | 1 | -1/+6 |
| | | | | | | | | | | | | | | | | Track the time that a server started failing at, for general analysis purposes. | ||||
* | | | | Only count real users when checking for auto-creation of auto-join room | Jason Robinson | 2019-09-09 | 1 | -2/+27 |
| |_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously if the first registered user was a "support" or "bot" user, when the first real user registers, the auto-join rooms were not created. Fix to exclude non-real (ie users with a special user type) users when counting how many users there are to determine whether we should auto-create a room. Signed-off-by: Jason Robinson <jasonr@matrix.org> | ||||
* | | | Fix and refactor room and user stats (#5971) | Erik Johnston | 2019-09-04 | 1 | -111/+532 |
| | | | | | | | | | Previously the stats were not being correctly populated. | ||||
* | | | Remove unnecessary parentheses around return statements (#5931) | Andrew Morgan | 2019-08-30 | 1 | -1/+1 |
| |/ |/| | | | | | | | 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 :) | ||||
* | | Remove non-functional 'expire_access_token' setting (#5782) | Richard van der Hoff | 2019-07-30 | 1 | -1/+1 |
| | | | | | | | | | | | | | | | | The `expire_access_token` didn't do what it sounded like it should do. What it actually did was make Synapse enforce the 'time' caveat on macaroons used as access tokens, but since our access token macaroons never contained such a caveat, it was always a no-op. (The code to add 'time' caveats was removed back in v0.18.5, in #1656) | ||||
* | | Replace returnValue with return (#5736) | Amber Brown | 2019-07-23 | 1 | -1/+1 |
|/ | |||||
* | Merge pull request #5589 from matrix-org/erikj/admin_exfiltrate_data | Erik Johnston | 2019-07-15 | 1 | -0/+210 |
|\ | | | | | Add basic function to get all data for a user out of synapse | ||||
| * | Fixup from review comments. | Erik Johnston | 2019-07-04 | 1 | -5/+5 |
| | | |||||
| * | Add basic function to get all data for a user out of synapse | Erik Johnston | 2019-07-02 | 1 | -0/+210 |
| | | |||||
* | | Implement access token expiry (#5660) | Richard van der Hoff | 2019-07-12 | 2 | -6/+19 |
| | | | | | | | | Record how long an access token is valid for, and raise a soft-logout once it expires. | ||||
* | | Remove access-token support from RegistrationStore.register (#5642) | Richard van der Hoff | 2019-07-10 | 2 | -16/+6 |
| | | | | | | | | | | The 'token' param is no longer used anywhere except the tests, so let's kill that off too. | ||||
* | | Remove access-token support from RegistrationHandler.register (#5641) | Richard van der Hoff | 2019-07-08 | 1 | -25/+28 |
| | | | | | | | | | | | | | | | | 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. | ||||
* | | Move get_or_create_user to test code (#5628) | Richard van der Hoff | 2019-07-08 | 1 | -9/+59 |
|/ | | | This is only used in tests, so... | ||||
* | Run Black. (#5482) | Amber Brown | 2019-06-20 | 7 | -51/+45 |
| | |||||
* | Fix background updates to handle redactions/rejections (#5352) | Erik Johnston | 2019-06-06 | 1 | -3/+59 |
| | | | | | | | | * Fix background updates to handle redactions/rejections In background updates based on current state delta stream we need to handle that we may not have all the events (or at least that `get_events` may raise an exception). | ||||
* | Room Statistics (#4338) | Amber Brown | 2019-05-21 | 1 | -0/+251 |
| | |||||
* | Limit UserIds to a length that fits in a state key (#5198) | ReidAnderson | 2019-05-20 | 1 | -0/+7 |
| | |||||
* | Migrate all tests to use the dict-based config format instead of hanging ↵ | Amber Brown | 2019-05-13 | 2 | -4/+8 |
| | | | | items off HomeserverConfig (#5171) | ||||
* | Run Black on the tests again (#5170) | Amber Brown | 2019-05-10 | 5 | -262/+213 |
| | |||||
* | Add admin api for sending server_notices (#5121) | Richard van der Hoff | 2019-05-02 | 1 | -2/+2 |
| | |||||
* | Move admin api impl to its own package | Richard van der Hoff | 2019-05-01 | 1 | -3/+4 |
| | | | | It doesn't really belong under rest/client/v1 any more. | ||||
* | Fix grammar and document get_current_users_in_room (#4998) | Andrew Morgan | 2019-04-03 | 1 | -2/+2 |
| | |||||
* | Review comments | Erik Johnston | 2019-03-28 | 1 | -5/+9 |
| | |||||
* | Add unit tests | Erik Johnston | 2019-03-27 | 1 | -1/+171 |
| | |||||
* | Make federation endpoints more tolerant of trailing slashes v2 (#4935) | Andrew Morgan | 2019-03-26 | 1 | -3/+3 |
| | | | Redo of https://github.com/matrix-org/synapse/pull/4840 | ||||
* | Some more porting to HomeserverTestCase and remove old RESTHelper (#4913) | Amber Brown | 2019-03-22 | 1 | -66/+58 |
| | |||||
* | Remove trailing slashes from outbound federation requests and retry on 400 ↵ | Andrew Morgan | 2019-03-21 | 1 | -0/+2 |
|\ | | | | | | | | | (#4840) As per #3622, we remove trailing slashes from outbound federation requests. However, to ensure that we remain backwards compatible with previous versions of Synapse, if we receive a HTTP 400 with `M_UNRECOGNIZED`, then we are likely talking to an older version of Synapse in which case we retry with a trailing slash appended to the request path. | ||||
| * | Switch to wrapper function around _send_request | Andrew Morgan | 2019-03-13 | 1 | -2/+2 |
| | | |||||
| * | Correct argument name | Andrew Morgan | 2019-03-12 | 1 | -2/+2 |
| | | |||||
| * | Cleaner way of implementing trailing slashes | Andrew Morgan | 2019-03-12 | 1 | -2/+4 |
| | | |||||
| * | and again | Andrew Morgan | 2019-03-11 | 1 | -1/+1 |
| | | |||||
| * | Fix syntax error | Andrew Morgan | 2019-03-11 | 1 | -1/+1 |
| | | |||||
| * | We're calling different functions now | Andrew Morgan | 2019-03-11 | 1 | -2/+2 |
| | | |||||
* | | Merge pull request #4896 from matrix-org/erikj/disable_room_directory | Erik Johnston | 2019-03-21 | 1 | -1/+58 |
|\ \ | | | | | | | Add option to disable search room lists | ||||
| * | | Add test | Erik Johnston | 2019-03-20 | 1 | -1/+58 |
| | | | |||||
* | | | Add test | Erik Johnston | 2019-03-20 | 1 | -0/+52 |
|/ / | |||||
* | | Fix RegistrationTestCase | Richard van der Hoff | 2019-03-19 | 1 | -2/+9 |
| | | | | | | | | turns out this relies on there being a `user_consent_version` set. | ||||
* | | fix test_auto_create_auto_join_where_no_consent (#4886) | Neil Johnson | 2019-03-19 | 1 | -2/+22 |
| | | |||||
* | | Migrate the user directory initial population to a background task (#4864) | Amber Brown | 2019-03-19 | 1 | -35/+74 |
| | | |||||
* | | Revert "Make federation endpoints more tolerant of trailing slashes for some ↵ | Erik Johnston | 2019-03-14 | 1 | -3/+3 |
| | | | | | | | | | | | | endpoints (#4793)" This reverts commit 290552fd836f4ae2dc1d893a7f72f7fff85365d3. | ||||
* | | Merge pull request #4846 from matrix-org/hawkowl/userdir-search | Erik Johnston | 2019-03-14 | 1 | -13/+18 |
|\ \ | |/ |/| | Improve searching in the userdir | ||||
| * | fixup | Amber Brown | 2019-03-13 | 1 | -20/+1 |
| | | |||||
| * | fixup | Amber Brown | 2019-03-12 | 1 | -16/+20 |
| | | |||||
| * | fixes | Amber Brown | 2019-03-12 | 1 | -4/+12 |
| | | |||||
| * | initial | Amber Brown | 2019-03-11 | 1 | -0/+12 |
| | | |||||
* | | Make federation endpoints more tolerant of trailing slashes for some ↵ | Andrew Morgan | 2019-03-11 | 1 | -3/+3 |
|/ | | | | | endpoints (#4793) Server side of a solution towards #3622. | ||||
* | Rewrite userdir to be faster (#4537) | Amber Brown | 2019-03-07 | 1 | -41/+225 |
| | |||||
* | Add rate-limiting on registration (#4735) | Brendan Abolivier | 2019-03-05 | 1 | -2/+2 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Rate-limiting for registration * Add unit test for registration rate limiting * Add config parameters for rate limiting on auth endpoints * Doc * Fix doc of rate limiting function Co-Authored-By: babolivier <contact@brendanabolivier.com> * Incorporate review * Fix config parsing * Fix linting errors * Set default config for auth rate limiting * Fix tests * Add changelog * Advance reactor instead of mocked clock * Move parameters to registration specific config and give them more sensible default values * Remove unused config options * Don't mock the rate limiter un MAU tests * Rename _register_with_store into register_with_store * Make CI happy * Remove unused import * Update sample config * Fix ratelimiting test for py2 * Add non-guest test | ||||
* | Update test_typing to use HomeserverTestCase. (#4771) | Richard van der Hoff | 2019-03-04 | 1 | -157/+133 |
| | |||||
* | Fix registration on workers (#4682) | Erik Johnston | 2019-02-20 | 1 | -1/+1 |
| | | | | | | | | | | * Move RegistrationHandler init to HomeServer * Move post registration actions to RegistrationHandler * Add post regisration replication endpoint * Newsfile | ||||
* | Add configurable room list publishing rules | Erik Johnston | 2019-02-14 | 1 | -0/+1 |
| | | | | | This allows specifying who and what is allowed to be published onto the public room list | ||||
* | make sure version is in body and wrap in linearizer queue | Hubert Chathi | 2019-02-08 | 1 | -0/+72 |
| | | | | also add tests | ||||
* | create support user (#4141) | Neil Johnson | 2018-12-14 | 2 | -2/+119 |
| | | | | | | Allow for the creation of a support user. A support user can access the server, join rooms, interact with other users, but does not appear in the user directory nor does it contribute to monthly active user limits. | ||||
* | Rip out half-implemented m.login.saml2 support (#4265) | Richard van der Hoff | 2018-12-06 | 1 | -15/+0 |
| | | | | | | | | | | | | | * Rip out half-implemented m.login.saml2 support This was implemented in an odd way that left most of the work to the client, in a way that I really didn't understand. It's going to be a pain to maintain, so let's start by ripping it out. * drop undocumented dependency on dateutil It turns out we were relying on dateutil being pulled in transitively by pysaml2. There's no need for that bloat. | ||||
* | Neilj/fix autojoin (#4223) | Neil Johnson | 2018-11-28 | 1 | -1/+11 |
| | | | | | | * Fix auto join failures for servers that require user consent * Fix auto join failures for servers that require user consent | ||||
* | handle empty backups according to latest spec proposal (#4123) | Hubert Chathi | 2018-11-05 | 1 | -42/+37 |
| | | | fixes #4056 | ||||
* | Merge branch 'develop' of github.com:matrix-org/synapse into ↵ | Erik Johnston | 2018-10-25 | 1 | -19/+56 |
|\ | | | | | | | erikj/alias_disallow_list | ||||
| * | Merge branch 'develop' of github.com:matrix-org/synapse into ↵ | Neil Johnson | 2018-10-25 | 2 | -0/+436 |
| |\ | | | | | | | | | | matthew/autocreate_autojoin | ||||
| * | | improve auto room join logic, comments and tests | Neil Johnson | 2018-10-12 | 1 | -4/+17 |
| | | | |||||
| * | | move logic into register, fix room alias localpart bug, tests | Neil Johnson | 2018-10-04 | 1 | -19/+43 |
| | | | |||||
* | | | Use allow/deny | Erik Johnston | 2018-10-25 | 1 | -1/+1 |
| | | | |||||
* | | | Add tests for alias creation rules | Erik Johnston | 2018-10-19 | 1 | -0/+48 |
| |/ |/| | |||||
* | | Fix roomlist since tokens on Python 3 (#4046) | Will Hunt | 2018-10-17 | 1 | -0/+39 |
| | | | | | | Thanks @Half-Shot !!! | ||||
* | | Merge remote-tracking branch 'origin/develop' into dbkr/e2e_backups | David Baker | 2018-10-09 | 2 | -81/+83 |
|\| | |||||
| * | Port tests/ to Python 3 (#3808) | Amber Brown | 2018-09-07 | 1 | -3/+1 |
| | | |||||
| * | Merge branch 'master' into develop | Richard van der Hoff | 2018-09-06 | 1 | -11/+8 |
| |\ | |||||
| | * | Fix origin handling for pushed transactions | Richard van der Hoff | 2018-09-05 | 1 | -11/+8 |
| | | | | | | | | | | | | | | | Use the actual origin for push transactions, rather than whatever the remote server claimed. | ||||
| * | | Fix tests on postgresql (#3740) | Amber Brown | 2018-09-04 | 1 | -68/+75 |
| | | | |||||
* | | | try to make flake8 and isort happy | Hubert Chathi | 2018-09-06 | 1 | -4/+5 |
| | | | |||||
* | | | update to newer Synapse APIs | Hubert Chathi | 2018-08-24 | 1 | -0/+1 |
| | | | |||||
* | | | Merge branch 'develop' into e2e_backups | Hubert Chathi | 2018-08-24 | 10 | -469/+514 |
|\| | | |||||
| * | | Merge branch 'develop' of github.com:matrix-org/synapse into ↵ | Erik Johnston | 2018-08-22 | 1 | -2/+2 |
| |\ \ | | | | | | | | | | | | | neilj/server_notices_on_blocking | ||||
| | * \ | Merge pull request #3659 from matrix-org/erikj/split_profiles | Erik Johnston | 2018-08-22 | 1 | -2/+2 |
| | |\ \ | | | |/ | | |/| | Allow profile updates to happen on workers | ||||
| | | * | Merge branch 'develop' of github.com:matrix-org/synapse into ↵ | Erik Johnston | 2018-08-17 | 10 | -428/+475 |
| | | |\ | | | | | | | | | | | | | | | | erikj/split_profiles | ||||
| | | * | | Split ProfileHandler into master and worker | Erik Johnston | 2018-08-17 | 1 | -2/+2 |
| | | | | | |||||
| * | | | | rename error code | Neil Johnson | 2018-08-18 | 1 | -2/+2 |
| |/ / / | |||||
| * | / | add new error type ResourceLimit | Neil Johnson | 2018-08-16 | 3 | -15/+15 |
| | |/ | |/| | |||||
| * | | Merge branch 'develop' of github.com:matrix-org/synapse into ↵ | Neil Johnson | 2018-08-15 | 1 | -2/+2 |
| |\ \ | | | | | | | | | | | | | neilj/fix_off_by_1+maus | ||||
| | * | | update error codes | Neil Johnson | 2018-08-15 | 1 | -2/+2 |
| | | | | |||||
| | * | | Merge branch 'develop' of github.com:matrix-org/synapse into neilj/admin_email | Neil Johnson | 2018-08-14 | 1 | -0/+71 |
| | |\ \ | |||||
| * | \ \ | Merge branch 'develop' of github.com:matrix-org/synapse into ↵ | Neil Johnson | 2018-08-14 | 1 | -1/+1 |
| |\ \ \ \ | | | |/ / | | |/| | | | | | | | neilj/fix_off_by_1+maus | ||||
| | * | | | fix setup_test_homeserver to be postgres compatible | Neil Johnson | 2018-08-14 | 1 | -1/+1 |
| | | | | | |||||
| | * | | | Merge pull request #3670 from matrix-org/neilj/mau_sync_block | Neil Johnson | 2018-08-14 | 1 | -0/+71 |
| | |\ \ \ | | | | | | | | | | | | | Block ability to read via sync if mau limit exceeded | ||||
| * | | | | | fix off by 1 errors | Neil Johnson | 2018-08-14 | 2 | -3/+14 |
| | | | | | | |||||
| * | | | | | support admin_email config and pass through into blocking errors, return ↵ | Neil Johnson | 2018-08-14 | 1 | -4/+4 |
| | | | | | | | | | | | | | | | | | | | | | | | | AuthError in all cases | ||||
| * | | | | | fix off by 1s on mau | Neil Johnson | 2018-08-14 | 2 | -5/+48 |
| | | | | | | |||||
| * | | | | | Merge branch 'neilj/admin_email' of github.com:matrix-org/synapse into ↵ | Neil Johnson | 2018-08-14 | 1 | -4/+4 |
| |\ \ \ \ \ | | | |_|/ / | | |/| | | | | | | | | | neilj/fix_off_by_1+maus | ||||
| | * | | | | support admin_email config and pass through into blocking errors, return ↵ | Neil Johnson | 2018-08-13 | 1 | -4/+4 |
| | |/ / / | | | | | | | | | | | | | | | | AuthError in all cases | ||||
| * | | | | Merge branch 'neilj/mau_sync_block' of github.com:matrix-org/synapse into ↵ | Neil Johnson | 2018-08-14 | 1 | -0/+71 |
| |\ \ \ \ | | |/ / / | |/| / / | | |/ / | neilj/fix_off_by_1+maus | ||||
| | * | | fix imports | Neil Johnson | 2018-08-09 | 1 | -1/+1 |
| | | | | |||||
| | * | | only block on sync where user is not part of the mau cohort | Neil Johnson | 2018-08-09 | 1 | -9/+31 |
| | | | | |||||
| | * | | block sync if auth checks fail | Neil Johnson | 2018-08-09 | 1 | -6/+13 |
| | | | | |||||
| | * | | Merge branch 'develop' of github.com:matrix-org/synapse into ↵ | Neil Johnson | 2018-08-09 | 1 | -1/+3 |
| | |\| | | | | | | | | | | | | | neilj/mau_sync_block | ||||
| | * | | sync auth blocking | Neil Johnson | 2018-08-08 | 1 | -0/+42 |
| | | | | |||||
| * | | | Revert "support admin_email config and pass through into blocking errors, ↵ | Neil Johnson | 2018-08-13 | 1 | -4/+4 |
| | | | | | | | | | | | | | | | | | | | | | | | | return AuthError in all cases" This reverts commit 0d43f991a19840a224d3dac78d79f13d78212ee6. | ||||
| * | | | support admin_email config and pass through into blocking errors, return ↵ | Neil Johnson | 2018-08-13 | 1 | -4/+4 |
| | | | | | | | | | | | | | | | | AuthError in all cases | ||||
| * | | | Run tests under PostgreSQL (#3423) | Amber Brown | 2018-08-13 | 7 | -3/+7 |
| | | | | |||||
| * | | | Run black. | black | 2018-08-10 | 9 | -420/+338 |
| | |/ | |/| | |||||
| * | | Test fixes for Python 3 (#3647) | Amber Brown | 2018-08-09 | 1 | -1/+3 |
| |/ | |||||
| * | bug fixes | Neil Johnson | 2018-08-03 | 1 | -1/+0 |
| | | |||||
| * | do mau checks based on monthly_active_users table | Neil Johnson | 2018-08-02 | 2 | -41/+38 |
| | | |||||
* | | 404 nicely if you try to interact with a missing current version | Matthew Hodgson | 2018-08-12 | 1 | -0/+22 |
| | | |||||
* | | flake8 | Matthew Hodgson | 2018-08-12 | 1 | -8/+13 |
| | | |||||
* | | implement remaining tests and make them work | Matthew Hodgson | 2018-08-12 | 1 | -25/+251 |
| | | |||||
* | | linting | Matthew Hodgson | 2018-08-12 | 1 | -25/+23 |
| | | |||||
* | | fix idiocies and so make tests pass | Matthew Hodgson | 2018-08-12 | 1 | -8/+11 |
| | | |||||
* | | first cut at a UT | Matthew Hodgson | 2018-08-12 | 1 | -0/+141 |
|/ | |||||
* | fix test for py3 | Neil Johnson | 2018-08-01 | 1 | -0/+4 |
| | |||||
* | Merge branch 'develop' of github.com:matrix-org/synapse into ↵ | Neil Johnson | 2018-08-01 | 1 | -1/+0 |
|\ | | | | | | | neilj/mau_sign_in_log_in_limits | ||||
| * | Remove pdu_failures from transactions | Travis Ralston | 2018-07-30 | 1 | -1/+0 |
| | | | | | | The field is never read from, and all the opportunities given to populate it are not utilized. It should be very safe to remove this. | ||||
* | | make count_monthly_users async synapse/handlers/auth.py | Neil Johnson | 2018-08-01 | 2 | -21/+28 |
| | | |||||
* | | coding style | Neil Johnson | 2018-07-31 | 1 | -2/+2 |
| | | |||||
* | | limit register and sign in on number of monthly users | Neil Johnson | 2018-07-30 | 2 | -1/+97 |
|/ | |||||
* | run isort | Amber Brown | 2018-07-09 | 9 | -25/+40 |
| |