summary refs log tree commit diff
path: root/synapse (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #5251 from matrix-org/rav/server_keys/01-check_sigRichard van der Hoff2019-05-281-41/+92
|\ | | | | Ensure that server_keys fetched via a notary server are correctly signed.
| * Improve error handling/logging for perspectives-key fetching.Richard van der Hoff2019-05-241-28/+77
| | | | | | | | In particular, don't give up on the first failure.
| * Require sig from origin server on perspectives responsesRichard van der Hoff2019-05-231-13/+15
| |
* | Fix "db txn 'update_presence' from sentinel context" log messages (#5275)Richard van der Hoff2019-05-281-52/+47
| | | | | | | | | | Fixes #4414.
* | Merge pull request #5268 from matrix-org/babolivier/account_validity_fix_schemaBrendan Abolivier2019-05-281-0/+3
|\ \ | | | | | | Fix schema update for account validity
| * | Fix schema update for account validityBrendan Abolivier2019-05-281-0/+3
| | |
* | | Merge pull request #5260 from matrix-org/travis/fix-room-bg-taskErik Johnston2019-05-251-1/+1
|\ \ \ | | | | | | | | Fix logging for room stats background update
| * | | Fix logging for room stats background updateTravis Ralston2019-05-251-1/+1
| | | |
* | | | Merge pull request #5257 from aaronraimist/fix-error-code-publicroomsErik Johnston2019-05-251-1/+1
|\ \ \ \ | | | | | | | | | | Fix error code for invalid parameter
| * | | | Fix error code for invalid parameterAaron Raimist2019-05-241-1/+1
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Aaron Raimist <aaron@raim.ist>
* | | | | Simplification to Keyring.wait_for_previous_lookups. (#5250)Richard van der Hoff2019-05-241-7/+4
|/ / / / | | | | | | | | | | | | | | | | | | | | The list of server names was redundant, since it was equivalent to the keys on the server_to_deferred map. This reduces the number of large lists being passed around, and has the benefit of deduplicating the entries in `wait_on`.
* | | | Fix appservice timestamp massaging (#5233)Tulir Asokan2019-05-241-1/+6
| | | | | | | | | | | | Signed-off-by: Tulir Asokan <tulir@maunium.net>
* | | | Add missing blank line in config (#5249)Richard van der Hoff2019-05-241-0/+1
| | | |
* | | | Merge pull request #5220 from matrix-org/erikj/dont_bundle_live_eventsErik Johnston2019-05-244-2/+12
|\ \ \ \ | |/ / / |/| | | Don't bundle aggregations with events in /sync or /events or state queries
| * | | Don't bundle aggs for /state and /members etc APIsErik Johnston2019-05-241-0/+3
| | | |
| * | | Don't bundle events in /sync or /eventsErik Johnston2019-05-213-2/+9
| | | | | | | | | | | | | | | | | | | | As we'll send down the annotations too anyway, so this just ends up confusing clients.
* | | | Merge pull request #5244 from matrix-org/rav/server_keys/00-factor-out-fetchersErik Johnston2019-05-232-143/+178
|\ \ \ \ | | |_|/ | |/| | Factor out KeyFetchers from KeyRing
| * | | Fix remote_key_resourceRichard van der Hoff2019-05-231-3/+3
| | | |
| * | | Factor out KeyFetchers from KeyRingRichard van der Hoff2019-05-231-140/+175
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Rather than have three methods which have to have the same interface, factor out a separate interface which is provided by three implementations. I find it easier to grok the code this way.
* | | | Add config option for setting homeserver's default room version (#5223)Andrew Morgan2019-05-234-8/+42
|/ / / | | | | | | | | | | | | Replaces DEFAULT_ROOM_VERSION constant with a method that first checks the config, then returns a hardcoded value if the option is not present. That hardcoded value is now located in the server.py config file.
* | | Store key validity time in the storage layerRichard van der Hoff2019-05-233-24/+77
| | | | | | | | | | | | | | | | | | | | | | | | This is a first step to checking that the key is valid at the required moment. The idea here is that, rather than passing VerifyKey objects in and out of the storage layer, we instead pass FetchKeyResult objects, which simply wrap the VerifyKey and add a valid_until_ts field.
* | | Simplify process_v2_response (#5236)Richard van der Hoff2019-05-231-21/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | * Pass time_added_ms into process_v2_response * Simplify process_v2_response We can merge old_verify_keys into verify_keys, and reduce the number of dicts flying around.
* | | Remove unused VerifyKey.expired and .time_added fields (#5235)Richard van der Hoff2019-05-231-3/+0
| | | | | | | | | | | | | | | These were never used, and poking arbitary data into objects from other packages seems confusing at best.
* | | Rewrite store_server_verify_key to store several keys at once (#5234)Richard van der Hoff2019-05-232-71/+53
| | | | | | | | | | | | | | | Storing server keys hammered the database a bit. This replaces the implementation which stored a single key, with one which can do many updates at once.
* | | Simplifications and comments in do_auth (#5227)Richard van der Hoff2019-05-232-121/+182
| | | | | | | | | | | | | | | I was staring at this function trying to figure out wtf it was actually doing. This is (hopefully) a non-functional refactor which makes it a bit clearer.
* | | Run black on synapse.crypto.keyring (#5232)Richard van der Hoff2019-05-221-149/+137
| | |
* | | Merge branch 'master' into developNeil Johnson2019-05-221-1/+1
|\ \ \
| * | | 0.99.5.1 v0.99.5.1Neil Johnson2019-05-221-1/+1
| | | |
| * | | Revert "0.99.5"Neil Johnson2019-05-221-1/+1
| | | | | | | | | | | | | | | | This reverts commit c31e375ade1b59a7fe38628337e9e1aa3de91feb.
| * | | 0.99.5Neil Johnson2019-05-221-1/+1
| | | |
* | | | remove urllib3 pin (#5230)Marcus Hoffmann2019-05-221-8/+0
| | | | | | | | | | | | | | | | | | | | | | | | requests 2.22.0 as been released supporting urllib3 1.25.2 Signed-off-by: Marcus Hoffmann <bubu@bubu1.eu>
* | | | Merge branch 'master' into developNeil Johnson2019-05-221-1/+1
|\| | |
| * | | 0.99.5 v0.99.5Neil Johnson2019-05-221-1/+1
| | | |
* | | | Neilj/ensure get profileinfo available in client reader slaved store (#5213)Neil Johnson2019-05-221-0/+2
| | | | | | | | | | | | * expose SlavedProfileStore to ClientReaderSlavedStore
* | | | Merge branch 'master' into developRichard van der Hoff2019-05-221-1/+1
|\| | |
| * | | Merge commit 'f4c80d70f' into release-v0.99.5Richard van der Hoff2019-05-212-5/+61
| |\ \ \
| * | | | 0.99.5rc1Richard van der Hoff2019-05-211-1/+1
| | | | |
* | | | | Room Statistics (#4338)Amber Brown2019-05-2111-13/+1021
| |/ / / |/| | |
* | | | Merge pull request #5203 from matrix-org/erikj/aggregate_by_senderErik Johnston2019-05-211-1/+1
|\ \ \ \ | | | | | | | | | | Only count aggregations from distinct senders
| * | | | Only count aggregations from distinct sendersErik Johnston2019-05-171-1/+1
| | | | | | | | | | | | | | | | | | | | As a user isn't allowed to send a single emoji more than once.
* | | | | Merge pull request #5212 from matrix-org/erikj/deny_multiple_reactionsErik Johnston2019-05-212-4/+60
|\ \ \ \ \ | |_|/ / / |/| | | | Block attempts to annotate the same event twice
| * | | | Fix wordsErik Johnston2019-05-211-3/+3
| | | | |
| * | | | Block attempts to annotate the same event twiceErik Johnston2019-05-202-4/+60
| | | | |
* | | | | Introduce room v4 which updates event ID format. (#5217)Richard van der Hoff2019-05-211-4/+4
| | | | | | | | | | | | | | | Implements https://github.com/matrix-org/matrix-doc/pull/2002.
* | | | | Exclude soft-failed events from fwd-extremity candidates. (#5146)Richard van der Hoff2019-05-212-3/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When considering the candidates to be forward-extremities, we must exclude soft failures. Hopefully fixes #5090.
* | | | | Pin eliot to <1.8 on python 3.5.2 (#5218)Richard van der Hoff2019-05-211-6/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Pin eliot to <1.8 on python 3.5.2 Fixes https://github.com/matrix-org/synapse/issues/5199 * Add support for 'markers' to python_dependencies * tell xargs not to strip quotes
* | | | | Merge pull request #5204 from ↵Brendan Abolivier2019-05-213-12/+70
|\ \ \ \ \ | |_|_|/ / |/| | | / | | |_|/ | |/| | matrix-org/babolivier/account_validity_expiration_date Add startup background job for account validity
| * | | DocBrendan Abolivier2019-05-211-0/+8
| | | |
| * | | Do the select and insert in a single transactionBrendan Abolivier2019-05-211-10/+6
| | | |
| * | | Add startup background job for account validityBrendan Abolivier2019-05-172-12/+66
| | | | | | | | | | | | | | | | If account validity is enabled in the server's configuration, this job will run at startup as a background job and will stick an expiration date to any registered account missing one.
* | | | Fix error handling for rooms whose versions are unknown. (#5219)Richard van der Hoff2019-05-214-7/+37
| |/ / |/| | | | | | | | | | | | | | | | | If we remove support for a particular room version, we should behave more gracefully. This should make client requests fail with a 400 rather than a 500, and will ignore individiual PDUs in a federation transaction, rather than the whole transaction.
* | | Revert "expose SlavedProfileStore to ClientReaderSlavedStore (#5200)"Richard van der Hoff2019-05-201-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit ce5bcefc609db40740c692bd53a1ef84ab675e8c. This caused: ``` Traceback (most recent call last): File "/usr/local/lib/python3.7/runpy.py", line 193, in _run_module_as_main "__main__", mod_spec) File "/usr/local/lib/python3.7/runpy.py", line 85, in _run_code exec(code, run_globals) File "/home/synapse/src/synapse/app/client_reader.py", line 32, in <module> from synapse.replication.slave.storage import SlavedProfileStore ImportError: cannot import name 'SlavedProfileStore' from 'synapse.replication.slave.storage' (/home/synapse/src/synapse/replication/slave/storage/__init__.py) error starting synapse.app.client_reader('/home/synapse/config/workers/client_reader.yaml') (exit code: 1); see above for logs ```
* | | Add a test room version which updates event ID format (#5210)Richard van der Hoff2019-05-202-3/+33
| | | | | | | | | Implements MSC1884
* | | Rename relation types to match MSCErik Johnston2019-05-203-9/+9
| | |
* | | Merge pull request #5209 from matrix-org/erikj/reactions_baseErik Johnston2019-05-2012-16/+899
|\ \ \ | | | | | | | | Land basic reaction and edit support.
| * | | Correctly update aggregation counts after redactionErik Johnston2019-05-202-0/+20
| | |/ | |/|
| * | Fixup bsaed on review commentsErik Johnston2019-05-173-19/+19
| | |
| * | Add basic editing supportErik Johnston2019-05-163-6/+85
| | |
| * | Move parsing of tokens out of storage layerErik Johnston2019-05-162-14/+21
| | |
| * | Indirect tuple conversionErik Johnston2019-05-161-0/+6
| | |
| * | Check that event is visible in new APIsErik Johnston2019-05-161-2/+15
| | |
| * | Fix relations in worker modeErik Johnston2019-05-165-13/+28
| | |
| * | Add cache to relationsErik Johnston2019-05-161-0/+8
| | |
| * | Add aggregations APIErik Johnston2019-05-164-10/+395
| | |
| * | Actually check for None rather falseyErik Johnston2019-05-151-2/+2
| | |
| * | Actually implement idempotencyErik Johnston2019-05-151-1/+8
| | |
| * | Add simple pagination APIErik Johnston2019-05-152-0/+130
| | |
| * | Add simple send_relation API and track in DBErik Johnston2019-05-157-0/+213
| | |
* | | Limit UserIds to a length that fits in a state key (#5198)ReidAnderson2019-05-202-1/+13
| | |
* | | fix mapping of return values for get_or_register_3pid_guest (#5177)bytepoets-blo2019-05-171-1/+1
| | | | | | | | | * fix mapping of return values for get_or_register_3pid_guest
* | | Merge pull request #5191 from matrix-org/erikj/refactor_pagination_boundsErik Johnston2019-05-171-61/+133
|\ \ \ | | | | | | | | Make generating SQL bounds for pagination generic
| * | | Spelling and clarificationsErik Johnston2019-05-171-5/+9
| | | |
| * | | Update docstringErik Johnston2019-05-161-1/+12
| |/ /
| * | Make generating SQL bounds for pagination genericErik Johnston2019-05-151-61/+118
| | | | | | | | | | | | | | | This will allow us to reuse the same structure when we paginate e.g. relations
* | | expose SlavedProfileStore to ClientReaderSlavedStore (#5200)Neil Johnson2019-05-171-0/+2
| | | | | | | | | * expose SlavedProfileStore to ClientReaderSlavedStore
* | | Merge pull request #5196 from matrix-org/babolivier/per_room_profilesBrendan Abolivier2019-05-172-0/+20
|\ \ \ | | |/ | |/| Add an option to disable per-room profiles
| * | Add option to disable per-room profilesBrendan Abolivier2019-05-162-0/+20
| | |
* | | Fix image orientation when generating thumbnail (#5039)PauRE2019-05-163-1/+45
| | |
* | | Merge pull request #5174 from matrix-org/dbkr/add_dummy_flow_to_recaptcha_onlyDavid Baker2019-05-161-5/+17
|\ \ \ | |/ / |/| | Re-order registration stages to do msisdn & email auth last
| * | Merge remote-tracking branch 'origin/develop' into ↵David Baker2019-05-131-1/+0
| |\ \ | | | | | | | | | | | | dbkr/add_dummy_flow_to_recaptcha_only
| * \ \ Merge remote-tracking branch 'origin/develop' into ↵David Baker2019-05-132-20/+35
| |\ \ \ | | | | | | | | | | | | | | | dbkr/add_dummy_flow_to_recaptcha_only
| * | | | Re-order flows so that email auth is done lastDavid Baker2019-05-101-4/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's more natural for the user if the bit that takes them away from the registration flow comes last. Adding the dummy stage allows us to do the stages in this order without the ambiguity.
| * | | | CommentDavid Baker2019-05-101-0/+4
| | | | |
| * | | | Add a DUMMY stage to captcha-only registration flowDavid Baker2019-05-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows the client to complete the email last which is more natual for the user. Without this stage, if the client would complete the recaptcha (and terms, if enabled) stages and then the registration request would complete because you've now completed a flow, even if you were intending to complete the flow that's the same except has email auth at the end. Adding a dummy auth stage to the recaptcha-only flow means it's always unambiguous which flow the client was trying to complete. Longer term we should think about changing the protocol so the client explicitly says which flow it's trying to complete. vector-im/riot-web#9586
* | | | | Make /sync attempt to return device updates for both joined and invited ↵Matthew Hodgson2019-05-161-19/+25
| | | | | | | | | | | | | | | | | | | | users (#3484)
* | | | | Merge pull request #5187 from ↵David Baker2019-05-161-18/+22
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | matrix-org/dbkr/only_check_threepid_not_in_use_if_actually_registering Only check 3pids not in use when registering
| * | | | | Only check 3pids not in use when registeringDavid Baker2019-05-141-18/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We checked that 3pids were not already in use before we checked if we were going to return the account previously registered in the same UI auth session, in which case the 3pids will definitely be in use. https://github.com/vector-im/riot-web/issues/9586
* | | | | | Make all the rate limiting options more consistent (#5181)Amber Brown2019-05-155-91/+104
| | | | | |
* | | | | | Drop support for v2_alpha API prefix (#5190)Richard van der Hoff2019-05-157-26/+20
| | | | | |
* | | | | | Merge branch 'master' into developRichard van der Hoff2019-05-151-1/+1
|\ \ \ \ \ \ | |_|_|_|_|/ |/| | | | |
| * | | | | 0.99.4Richard van der Hoff2019-05-151-1/+1
| | | | | |
* | | | | | Merge pull request #5183 from matrix-org/erikj/async_serialize_eventErik Johnston2019-05-1512-101/+193
|\ \ \ \ \ \ | | | | | | | | | | | | | | Allow client event serialization to be async
| * | | | | | Update docstring with correct return typeErik Johnston2019-05-151-1/+1
| | | | | | | | | | | | | | | | | | | | | Co-Authored-By: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
| * | | | | | NewsfileErik Johnston2019-05-141-6/+6
| | | | | | |
| * | | | | | Allow client event serialization to be asyncErik Johnston2019-05-1412-95/+187
| | |/ / / / | |/| | | |
* | | | | | Merge pull request #5184 from matrix-org/erikj/expose_get_events_as_arrayErik Johnston2019-05-155-29/+53
|\ \ \ \ \ \ | | | | | | | | | | | | | | Expose DataStore._get_events as get_events_as_list
| * | | | | | Update docstring with correct typeErik Johnston2019-05-151-1/+1
| | | | | | | | | | | | | | | | | | | | | Co-Authored-By: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
| * | | | | | Expose DataStore._get_events as get_events_as_listErik Johnston2019-05-145-29/+53
| |/ / / / / | | | | | | | | | | | | | | | | | | This is in preparation for reaction work which requires it.
* / / / / / comment about user_joined_roomRichard van der Hoff2019-05-141-0/+1
|/ / / / /
* | | | | Migrate all tests to use the dict-based config format instead of hanging ↵Amber Brown2019-05-131-0/+1
| | | | | | | | | | | | | | | | | | | | items off HomeserverConfig (#5171)
* | | | | Add ability to blacklist ip ranges for federation traffic (#5043)Andrew Morgan2019-05-133-14/+78
|/ / / /
* | | / 0.99.4rc1 v0.99.4rc1Brendan Abolivier2019-05-131-1/+1
| |_|/ |/| |
* | | Fix CI after new release of isortBrendan Abolivier2019-05-131-1/+0
| |/ |/|
* | URL preview blacklisting fixes (#5155)Andrew Morgan2019-05-102-20/+35
|/ | | Prevents a SynapseError being raised inside of a IResolutionReceiver and instead opts to just return 0 results. This thus means that we have to lump a failed lookup and a blacklisted lookup together with the same error message, but the substitute should be generic enough to cover both cases.
* Revert 085ae346ace418e0fc043ac5f568f85ebf80038eDavid Baker2019-05-101-1/+1
| | | | Accidentally went straight to develop
* Add a DUMMY stage to captcha-only registration flowDavid Baker2019-05-101-1/+1
| | | | | | | | | | | | | | | | This allows the client to complete the email last which is more natual for the user. Without this stage, if the client would complete the recaptcha (and terms, if enabled) stages and then the registration request would complete because you've now completed a flow, even if you were intending to complete the flow that's the same except has email auth at the end. Adding a dummy auth stage to the recaptcha-only flow means it's always unambiguous which flow the client was trying to complete. Longer term we should think about changing the protocol so the client explicitly says which flow it's trying to complete. https://github.com/vector-im/riot-web/issues/9586
* Run `black` on per_destination_queueRichard van der Hoff2019-05-091-35/+39
| | | | ... mostly to fix pep8 fails
* Limit the number of EDUs in transactions to 100 as expected by receiver (#5138)Quentin Dufour2019-05-092-27/+31
| | | Fixes #3951.
* add options to require an access_token to GET /profile and /publicRooms on ↵Matthew Hodgson2019-05-085-12/+114
| | | | | | | | | | | | | | | | | CS API (#5083) This commit adds two config options: * `restrict_public_rooms_to_local_users` Requires auth to fetch the public rooms directory through the CS API and disables fetching it through the federation API. * `require_auth_for_profile_requests` When set to `true`, requires that requests to `/profile` over the CS API are authenticated, and only returns the user's profile if the requester shares a room with the profile's owner, as per MSC1301. MSC1301 also specifies a behaviour for federation (only returning the profile if the server asking for it shares a room with the profile's owner), but that's currently really non-trivial to do in a not too expensive way. Next step is writing down a MSC that allows a HS to specify which user sent the profile query. In this implementation, Synapse won't send a profile query over federation if it doesn't believe it already shares a room with the profile's owner, though. Groups have been intentionally omitted from this commit.
* Merge pull request #5037 from matrix-org/erikj/limit_inflight_dnsErik Johnston2019-05-081-1/+82
|\ | | | | Limit in flight DNS requests
| * Limit in flight DNS requestsErik Johnston2019-04-091-1/+82
| | | | | | | | | | | | | | This is to work around a bug in twisted where a large number of concurrent DNS requests cause it to tight loop forever. c.f. https://twistedmatrix.com/trac/ticket/9620#ticket
* | Do checks on aliases for incoming m.room.aliases events (#5128)Brendan Abolivier2019-05-085-8/+55
| | | | | | | | | | Follow-up to #5124 Also added a bunch of checks to make sure everything (both the stuff added on #5124 and this PR) works as intended.
* | Merge pull request #5104 from matrix-org/erikj/ratelimit_3pid_inviteErik Johnston2019-05-071-0/+11
|\ \ | | | | | | Ratelimit 3pid invites
| * | Rate limit earlyErik Johnston2019-05-021-2/+3
| | |
| * | Merge branch 'develop' of github.com:matrix-org/synapse into ↵Erik Johnston2019-04-2663-959/+1158
| |\ \ | | | | | | | | | | | | erikj/ratelimit_3pid_invite
| * | | Ratelimit 3pid invitesErik Johnston2019-04-261-0/+10
| | | | | | | | | | | | | | | | | | | | We do ratelimit sending the 3PID invite events, but that happens after spamming the identity server.
* | | | Remove the requirement to authenticate for /admin/server_version. (#5122)Richard van der Hoff2019-05-071-10/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This endpoint isn't much use for its intended purpose if you first need to get yourself an admin's auth token. I've restricted it to the `/_synapse/admin` path to make it a bit easier to lock down for those concerned about exposing this information. I don't imagine anyone is using it in anger currently.
* | | | Merge branch 'master' into developRichard van der Hoff2019-05-034-13/+37
|\ \ \ \
| * | | | 0.99.3.2 v0.99.3.2 release-v0.99.3.2Richard van der Hoff2019-05-031-1/+1
| | | | |
| * | | | pin urllib3 to <1.25Richard van der Hoff2019-05-031-0/+8
| | | | |
| * | | | 0.99.3.1Richard van der Hoff2019-05-031-1/+1
| | | | |
| * | | | Merge pull request #5134 from matrix-org/rav/url_preview_blacklistRichard van der Hoff2019-05-031-10/+21
| |\ \ \ \ | | | | | | | | | | | | Blacklist 0.0.0.0 and :: by default for URL previews
| | * | | | more config comment updatesRichard van der Hoff2019-05-031-2/+5
| | | | | |
| | * | | | Blacklist 0.0.0.0 and :: by default for URL previewsRichard van der Hoff2019-05-031-10/+18
| | | | | |
| * | | | | Merge pull request #5133 from matrix-org/rav/systemrandomRichard van der Hoff2019-05-031-2/+7
| |\ \ \ \ \ | | |/ / / / | |/| | | | Use SystemRandom for token generation.
| | * | | | Use SystemRandom for token generationRichard van der Hoff2019-05-031-2/+7
| | | | | |
* | | | | | Add admin api for sending server_notices (#5121)Richard van der Hoff2019-05-023-3/+118
| | | | | |
* | | | | | Merge pull request #5124 from matrix-org/babolivier/aliasesBrendan Abolivier2019-05-023-2/+34
|\ \ \ \ \ \ | | | | | | | | | | | | | | Add some limitations to alias creation
| * | | | | | Add some limitations to alias creationBrendan Abolivier2019-05-023-2/+34
| | | | | | |
* | | | | | | Factor out an "assert_requester_is_admin" function (#5120)Richard van der Hoff2019-05-023-76/+80
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Rather than copying-and-pasting the same four lines hundreds of times
* | | | | | | fix examplesRichard van der Hoff2019-05-011-4/+4
| | | | | | |
* | | | | | | Move admin api impl to its own packageRichard van der Hoff2019-05-013-5/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | It doesn't really belong under rest/client/v1 any more.
* | | | | | | Move admin API to a new prefixRichard van der Hoff2019-05-014-24/+64
| | | | | | |
* | | | | | | Move admin API away from ClientV1RestServletRichard van der Hoff2019-05-011-33/+33
|/ / / / / /
* | | | | | Add a default .m.rule.tombstone push rule (#4867)Travis Ralston2019-04-291-0/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Add a default .m.rule.tombstone push rule In support of MSC1930: https://github.com/matrix-org/matrix-doc/pull/1930 * changelog * Appease the changelog linter
* | | | | | Merge pull request #5100 from matrix-org/rav/verification_hackeryRichard van der Hoff2019-04-292-18/+54
|\ \ \ \ \ \ | |_|_|_|/ / |/| | | | | Improve logging when event-signature checking fails
| * | | | | more logging improvementsRichard van der Hoff2019-04-251-8/+11
| | | | | |
| * | | | | remove extraneous exception loggingRichard van der Hoff2019-04-252-18/+34
| | | | | |
| * | | | | Clarify logging when PDU signature checking failsRichard van der Hoff2019-04-252-3/+20
| | | | | |
* | | | | | Fix infinite loop in presence handlerRichard van der Hoff2019-04-262-0/+23
|/ / / / / | | | | | | | | | | | | | | | Fixes #5102
* | | | | Config option for verifying federation certificates (MSC 1711) (#4967)Andrew Morgan2019-04-254-15/+121
| | | | |
* | | | | Remove log error for .well-known/matrix/client (#4972)Michael Kaye2019-04-241-1/+1
| | | | |
* | | | | Prevent "producer not unregistered" message (#5009)Amber Brown2019-04-241-0/+4
| | | | |
* | | | | Don't crash on lack of expiry templatesBrendan Abolivier2019-04-181-2/+6
| | | | |
* | | | | Merge branch 'develop' of github.com:matrix-org/synapse into ↵Erik Johnston2019-04-17139-4477/+4027
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | babolivier/account_expiration
| * \ \ \ \ Merge pull request #5047 from matrix-org/babolivier/account_expirationBrendan Abolivier2019-04-1714-39/+573
| |\ \ \ \ \ | | | | | | | | | | | | | | Send out emails with links to extend an account's validity period
| * \ \ \ \ \ Merge pull request #5071 from matrix-org/babolivier/3pid-checkBrendan Abolivier2019-04-171-0/+18
| |\ \ \ \ \ \ | | | | | | | | | | | | | | | | Make sure we're not registering the same 3pid twice
| | * | | | | | Make sure we're not registering the same 3pid twiceBrendan Abolivier2019-04-171-0/+18
| | | |/ / / / | | |/| | | |
| * | | | | | Merge pull request #5070 from matrix-org/erikj/postpathErik Johnston2019-04-171-8/+8
| |\ \ \ \ \ \ | | | |_|_|/ / | | |/| | | | Remove usage of request.postpath
| | * | | | | Remove usage of request.postpathErik Johnston2019-04-161-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is an undocumented variable in twisted, and relies on the servlet being mounted in the right way. This also breaks getting push rules on workers.
| * | | | | | Merge pull request #5065 from matrix-org/erikj/fix_versionsErik Johnston2019-04-161-1/+1
| |\ \ \ \ \ \ | | | | | | | | | | | | | | | | VersionRestServlet doesn't take a param
| | * | | | | | VersionRestServlet doesn't take a paramErik Johnston2019-04-151-1/+1
| | | | | | | |
| * | | | | | | Add systemd-python to optional dependencies (#4339)Silke Hofstra2019-04-161-5/+9
| |/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Using systemd-python allows for logging to the systemd journal, as is documented in: `synapse/contrib/systemd/log_config.yaml`. Signed-off-by: Silke Hofstra <silke@slxh.eu>
| * | | | | | Merge pull request #5063 from matrix-org/erikj/move_endpointsErik Johnston2019-04-152-4/+14
| |\| | | | | | | | | | | | | | | | | | | Move some rest endpoints to client reader
| | * | | | | Only handle GET requests for /push_rulesErik Johnston2019-04-151-0/+7
| | | | | | |
| | * | | | | Move some rest endpoints to client readerErik Johnston2019-04-151-4/+7
| | | | | | |
| * | | | | | Remove periods from copyright headers (#5046)Andrew Morgan2019-04-119-9/+9
| | | | | | |
| * | | | | | Merge pull request #5033 from matrix-org/erikj/fix_schema_deltaErik Johnston2019-04-101-1/+3
| |\ \ \ \ \ \ | | | | | | | | | | | | | | | | Fix schema upgrade when dropping tables
| | * | | | | | Fix schema upgrade when dropping tablesErik Johnston2019-04-091-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We need to drop tables in the correct order due to foreign table constraints (on `application_services`), otherwise the DROP TABLE command will fail. Introduced in #4992.
| * | | | | | | Fix disappearing exceptions in manhole. (#5035)Richard van der Hoff2019-04-101-2/+57
| | |_|_|_|_|/ | |/| | | | | | | | | | | | Avoid sending syntax errors from the manhole to sentry.
| * | | | | | Merge pull request #5027 from matrix-org/babolivier/account_expirationBrendan Abolivier2019-04-095-0/+84
| |\ \ \ \ \ \ | | |/ / / / / | |/| | | | | Add time-based account expiration
| * | | | | | Merge pull request #5030 from matrix-org/rav/rewrite_g_s_v_kRichard van der Hoff2019-04-093-71/+72
| |\ \ \ \ \ \ | | | | | | | | | | | | | | | | Rewrite Datastore.get_server_verify_keys
| | * | | | | | Rewrite Datastore.get_server_verify_keysRichard van der Hoff2019-04-092-49/+63
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rewrite this so that it doesn't hammer the database.
| | * | | | | | Replace SlavedKeyStore with a shimRichard van der Hoff2019-04-081-14/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | since we're pulling everything out of KeyStore anyway, we may as well simplify it.
| | * | | | | | Remove redundant merged_keys dictRichard van der Hoff2019-04-081-8/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There's no point in collecting a merged dict of keys: it is sufficient to consider just the new keys which have been fetched by the most recent key_fetch_fns.
| * | | | | | | Bump psycopg requirement (#5032)Richard van der Hoff2019-04-091-1/+3
| |/ / / / / /
| * | | | | | Remove unused server_tls_certificates functions (#5028)Richard van der Hoff2019-04-084-62/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | These have been unused since #4120, and with the demise of perspectives, it is unlikely that they will ever be used again.
| * | | | | | add context to phonehome stats (#5020)Neil Johnson2019-04-082-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | add context to phonehome stats
| * | | | | | Merge pull request #5024 from matrix-org/rav/record_correct_server_in_serverkeysRichard van der Hoff2019-04-081-1/+1
| |\ \ \ \ \ \ | | | | | | | | | | | | | | | | Fix from_server buglet in get_keys_from_perspectives
| | * | | | | | Fix from_server buglet in get_keys_from_perspectivesRichard van der Hoff2019-04-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | make sure we store the name of the server the keys came from, rather than the origin server, after doing a fetch-from-perspectives.
| * | | | | | | drop tables listed in #1830 (#4992)Neil Johnson2019-04-0824-752/+42
| |/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Tables dropped: * application_services, * application_services_regex, * transaction_id_to_pdu, * stats_reporting * current_state_resets * event_content_hashes * event_destinations * event_edge_hashes * event_signatures * feedback * room_hosts * state_forward_extremities
| * | | | | | Merge pull request #5001 from matrix-org/rav/keyring_cleanupsRichard van der Hoff2019-04-082-33/+50
| |\ \ \ \ \ \ | | | | | | | | | | | | | | | | Cleanups in the Keyring
| | * | | | | | Hoist server_name check out of process_v2_responseRichard van der Hoff2019-04-041-13/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's easier to check it in the caller than to complicate the interface with an extra param.
| | * | | | | | Clean up Keyring.process_v2_responseRichard van der Hoff2019-04-041-23/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make this just return the key dict, rather than a single-entry dict mapping the server name to the key dict. It's easy for the caller to get the server name from from the response object anyway.
| | * | | | | | Fix docstring on get_server_keys_jsonRichard van der Hoff2019-04-041-2/+2
| | | | | | | |
| * | | | | | | Add config option to block users from looking up 3PIDs (#5010)Brendan Abolivier2019-04-042-0/+10
| | |_|/ / / / | |/| | | | |
| * | | | | | Clean up the database pagination code (#5007)Amber Brown2019-04-052-67/+63
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * rewrite & simplify * changelog * cleanup potential sql injection
| * | | | | | Merge pull request #5002 from matrix-org/erikj/delete_groupErik Johnston2019-04-043-0/+136
| |\ \ \ \ \ \ | | | | | | | | | | | | | | | | Add delete group admin API
| | * | | | | | Add admin API for group deletionErik Johnston2019-04-031-0/+26
| | | | | | | |
| | * | | | | | Add functions to delete a groupErik Johnston2019-04-032-0/+110
| | | | | | | |
| * | | | | | | Prevent kicking users who aren't in the room (#4999)Andrew Morgan2019-04-041-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | Prevent kick events from succeeding if the user is not currently in the room.
| * | | | | | | Avoid redundant URL encoding (#4555)Marcel Krüger2019-04-041-1/+1
| |/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Do not double encode fallback redirect URL Signed-off-by: Marcel Fabian Krüger <zauguin@gmail.com>
| * / / / / / Fix grammar and document get_current_users_in_room (#4998)Andrew Morgan2019-04-0311-18/+29
| |/ / / / /
| * | | | | Remove presence lists (#4989)Neil Johnson2019-04-037-338/+22
| | | | | | | | | | | | | | | | | | Remove presence list support as per MSC 1819
| * | | | | Merge pull request #4982 from matrix-org/erikj/msc1915Erik Johnston2019-04-036-17/+215
| |\ \ \ \ \ | | | | | | | | | | | | | | Implement MSC1915 - 3PID unbind APIs
| | * | | | | Correctly handle id_server paramErik Johnston2019-04-021-0/+1
| | | | | | |
| | * | | | | Remove threepid binding if id server returns 400/404/501Erik Johnston2019-04-021-9/+10
| | | | | | |
| | * | | | | Fixup docstringsErik Johnston2019-04-023-7/+9
| | | | | | |
| | * | | | | Add unbind API to /r0 as it is now stabalisedErik Johnston2019-04-011-1/+1
| | | | | | |
| | * | | | | Grandfather in existing user threepidsErik Johnston2019-04-012-0/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We assume, as we did before, that users bound their threepid to one of the trusted identity servers. So we simply fill the new table with all threepids in `user_threepids` joined with the trusted identity servers.
| | * | | | | Allowing specifying IS to use in unbind API.Erik Johnston2019-04-014-8/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | By default the homeserver will use the identity server used during the binding of the 3PID to unbind the 3PID. However, we need to allow clients to explicitly ask the homeserver to unbind via a particular identity server, for the case where the 3PID was bound out of band from the homeserver. Implements MSC915.
| | * | | | | For unbind poke IS used during binding of 3PIDErik Johnston2019-04-011-9/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This changes the behaviour from using the server specified trusted identity server to using the IS that used during the binding of the 3PID, if known. This is the behaviour specified by MSC1915.
| | * | | | | Track IS used to bind 3PIDsErik Johnston2019-04-013-0/+119
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This will then be used to know which IS to default to when unbinding the threepid.
| * | | | | | Run black on the rest of the storage module (#4996)Amber Brown2019-04-0341-2455/+2130
| | | | | | |
| * | | | | | Merge pull request #4991 from matrix-org/erikj/stagger_push_startupErik Johnston2019-04-024-8/+73
| |\ \ \ \ \ \ | | | | | | | | | | | | | | | | Make starting pushers faster during start up
| | * | | | | | Make starting pushers faster during start upErik Johnston2019-04-024-8/+73
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We start all pushers on start up and immediately start a background process to fetch push to send. This makes start up incredibly painful when dealing with many pushers. Instead, let's do a quick fast DB check to see if there *may* be push to send and only start the background processes for those pushers. We also stagger starting up and doing those checks so that we don't try and handle all pushers at once.
| * | | | | | | Transfer related groups on room upgrade (#4990)Andrew Morgan2019-04-022-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | Transfers the m.room.related_groups state event on room upgrade.
| * | | | | | | Add config.signing_key_path. (#4974)Richard van der Hoff2019-04-021-1/+2
| |/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As requested by @andrewshadura
| * | | | | | Fix sync bug when accepting invites (#4956)Richard van der Hoff2019-04-023-20/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Hopefully this time we really will fix #4422. We need to make sure that the cache on `get_rooms_for_user_with_stream_ordering` is invalidated *before* the SyncHandler is notified for the new events, and we can now do so reliably via the `events` stream.
| * | | | | | Merge branch 'master' into developNeil Johnson2019-04-011-1/+1
| |\ \ \ \ \ \ | | | |_|/ / / | | |/| | | |
| * | | | | | Collect room-version variations into one place (#4969)Richard van der Hoff2019-04-0118-142/+188
| | |/ / / / | |/| | | | | | | | | | | | | | | | Collect all the things that make room-versions different to one another into one place, so that it's easier to define new room versions.
| * | | | | Merge pull request #4955 from matrix-org/rav/merge_state_into_eventsRichard van der Hoff2019-03-288-49/+140
| |\ \ \ \ \ | | | | | | | | | | | | | | Combine the CurrentStateDeltaStream into the EventStream
| | * | | | | Combine the CurrentStateDeltaStream into the EventStreamRichard van der Hoff2019-03-275-33/+43
| | | | | | |
| | * | | | | Make EventStream rows have a typeRichard van der Hoff2019-03-274-17/+98
| | | | | | | | | | | | | | | | | | | | | | | | | | | | ... as a precursor to combining it with the CurrentStateDelta stream.
| * | | | | | Merge pull request #4954 from matrix-org/rav/refactor_parse_rowRichard van der Hoff2019-03-283-5/+21
| |\ \ \ \ \ \ | | | | | | | | | | | | | | | | Refactors to replication stream row update/parsing
| | * \ \ \ \ \ Merge remote-tracking branch 'origin/develop' into rav/refactor_parse_rowRichard van der Hoff2019-03-282-380/+335
| | |\ \ \ \ \ \ | | | |/ / / / / | | |/| | | | |
| | * | | | | | Skip building a ROW_TYPE when building updatesRichard van der Hoff2019-03-271-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We're about to turn it straight into a JSON object anyway so building a ROW_TYPE is a bit pointless, and reduces flexibility in the update_function.
| | * | | | | | Add parse_row method to replication stream classRichard van der Hoff2019-03-273-3/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This will allow individual stream classes to override how a row is parsed.
| * | | | | | | remove log line for password (#4965)Neil Johnson2019-03-281-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove log line for password.
| * | | | | | | Allow password providers to bind emails (#4947)Andrew Morgan2019-03-282-4/+22
| | | | | | | | | | | | | | | | | | | | | | | | This PR allows password provider modules to bind email addresses when a user is registering and is motivated by matrix-org/matrix-synapse-ldap3#58
| * | | | | | | Merge pull request #4942 from matrix-org/erikj/fix_presenceErik Johnston2019-03-283-32/+236
| |\ \ \ \ \ \ \ | | |_|/ / / / / | |/| | | | | | Use event streams to calculate presence
| | * | | | | | Use an assertErik Johnston2019-03-281-2/+1
| | | | | | | |
| | * | | | | | Review commentsErik Johnston2019-03-281-44/+62
| | | | | | | |
| | * | | | | | Use event streams to calculate presenceErik Johnston2019-03-273-32/+219
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Primarily this fixes a bug in the handling of remote users joining a room where the server sent out the presence for all local users in the room to all servers in the room. We also change to using the state delta stream, rather than the distributor, as it will make it easier to split processing out of the master process (as well as being more flexible). Finally, when sending presence states to newly joined servers we filter out old presence states to reduce the number sent. Initially we filter out states that are offline and have a last active more than a week ago, though this can be changed down the line. Fixes #3962
| * | | | | | | Merge pull request #4953 from matrix-org/rav/refactor_replication_streamsRichard van der Hoff2019-03-286-76/+133
| |\ \ \ \ \ \ \ | | | |/ / / / / | | |/| | | | | Split up replication.tcp.streams into smaller files
| | * | | | | | move FederationStream out to its own fileRichard van der Hoff2019-03-274-23/+43
| | | | | | | |
| | * | | | | | move EventsStream out to its own fileRichard van der Hoff2019-03-273-23/+42
| | | | | | | |
| | * | | | | | Move replication.tcp.streams into a packageRichard van der Hoff2019-03-273-34/+52
| | | | | | | |
| * | | | | | | Run `black` on some storage modules that the stats branch touches (#4959)Amber Brown2019-03-292-380/+335
| |/ / / / / /
| * / / / / / Fix/improve some docstrings in the replication code. (#4949)Richard van der Hoff2019-03-272-7/+19
| |/ / / / /
* | | | / / Add management endpoints for account validityBrendan Abolivier2019-04-175-18/+116
| |_|_|/ / |/| | | |
* | | | | Send out emails with links to extend an account's validity periodBrendan Abolivier2019-04-1714-39/+573
| |_|/ / |/| | |
* | | | Add account expiration featureBrendan Abolivier2019-04-096-1/+85
| |/ / |/| |
* | | 0.99.3 v0.99.3 release-v0.99.3Neil Johnson2019-04-011-1/+1
| | |
* | | bump versionNeil Johnson2019-03-271-1/+1
|/ /
* | Support 3PID login in password providers (#4931)Andrew Morgan2019-03-266-26/+122
| | | | | | | | | | Adds a new method, check_3pid_auth, which gives password providers the chance to allow authentication with third-party identifiers such as email or msisdn.
* | Use the state event amount for userdir import batching, not room count (#4944)Amber Brown2019-03-271-8/+20
| |
* | Make federation endpoints more tolerant of trailing slashes v2 (#4935)Andrew Morgan2019-03-263-8/+9
| | | | | | Redo of https://github.com/matrix-org/synapse/pull/4840
* | Fix ClientReplicationStreamProtocol.__str__ (#4929)Richard van der Hoff2019-03-252-4/+5
| | | | | | | | | | | | | | | | `__str__` depended on `self.addr`, which was absent from ClientReplicationStreamProtocol, so attempting to call str on such an object would raise an exception. We can calculate the peer addr from the transport, so there is no need for addr anyway.
* | Fix bug where read-receipts lost their timestamps (#4927)Richard van der Hoff2019-03-253-12/+30
| | | | | | | | | | Make sure that they are sent correctly over the replication stream. Fixes: #4898
* | Refactor out state delta handling into its own class (#4917)Amber Brown2019-03-254-110/+151
| |
* | Merge pull request #4869 from matrix-org/erikj/yaml_loadErik Johnston2019-03-223-5/+5
|\ \ | | | | | | Fix yaml warnings by using safe_load
| * | Use yaml safe_loadErik Johnston2019-03-223-5/+5
| | |
* | | Remove trailing slashes from outbound federation requests and retry on 400 ↵Andrew Morgan2019-03-212-17/+89
|\ \ \ | |/ / |/| | | | | | | | (#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.
| * | Clean up backoff_on_404 and metehod callsAndrew Morgan2019-03-211-9/+13
| | |
| * | kwargs doesn't like commas on calling funcs either. TILAndrew Morgan2019-03-201-2/+2
| | |
| * | lintAndrew Morgan2019-03-201-2/+6
| | |
| * | New test, fix issuesAndrew Morgan2019-03-201-49/+28
| | |
| * | Fix comments. v0.99.2 -> v0.99.3Andrew Morgan2019-03-201-5/+5
| | |
| * | Just return if not doing any trailing slash shennanigansAndrew Morgan2019-03-201-0/+2
| | |
| * | lintAndrew Morgan2019-03-181-1/+1
| | |
| * | Better exception handlingAndrew Morgan2019-03-181-16/+17
| | |
| * | Correct var nameAndrew Morgan2019-03-131-2/+2
| | |
| * | receiving a 400 caused an exception. handle itAndrew Morgan2019-03-131-5/+12
| | |
| * | is this what purgatory feels likeAndrew Morgan2019-03-131-3/+3
| | |
| * | i should have given up x2Andrew Morgan2019-03-131-18/+13
| | |
| * | i should have given upAndrew Morgan2019-03-131-1/+1
| | |
| * | there comes a time when you should give up. but you dontAndrew Morgan2019-03-131-1/+1
| | |
| * | as aboveAndrew Morgan2019-03-131-2/+4
| | |
| * | no kwargs todayAndrew Morgan2019-03-131-7/+12
| | |