summary refs log tree commit diff
path: root/synapse/appservice (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Fix a couple of small typosAndrew Morgan2020-05-151-1/+1
|
* Clean up newline quote marks around the codebase (#6362)Andrew Morgan2019-11-211-1/+1
|
* rstrip slashes from url on appservice (#6306)Will Hunt2019-10-311-1/+3
|
* Remove double return statements (#5962)Andrew Morgan2019-09-031-3/+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.
* Refactor the Appservice scheduler code (#5886)Richard van der Hoff2019-08-201-45/+65
|\ | | | | | | | | | | | | Get rid of the labyrinthine `recoverer_fn` code, and clean up the startup code (it seemed to be previously inexplicably split between `ApplicationServiceScheduler.start` and `_Recoverer.start`). Add some docstrings too.
| * Refactor the Appservice scheduler codeRichard van der Hoff2019-08-201-45/+65
| | | | | | | | | | | | | | | | Get rid of the labyrinthine `recoverer_fn` code, and clean up the startup code (it seemed to be previously inexplicably split between `ApplicationServiceScheduler.start` and `_Recoverer.start`). Add some docstrings too.
* | Avoid deep recursion in appservice recovery (#5885)Richard van der Hoff2019-08-201-18/+25
|/ | | | | | | | | | Hopefully, this will fix a stack overflow when recovering an appservice. The recursion here leads to a huge chain of deferred callbacks, which then overflows the stack when the chain completes. `inlineCallbacks` makes a better job of this if we use iteration instead. Clean up the code a bit too, while we're there.
* Replace returnValue with return (#5736)Amber Brown2019-07-233-35/+35
|
* Move logging utilities out of the side drawer of util/ and into logging/ (#5606)Amber Brown2019-07-041-1/+1
|
* Run Black. (#5482)Amber Brown2019-06-203-88/+67
|
* Run the AS senders as background processes (#4189)Richard van der Hoff2018-12-041-12/+24
| | | | This should fix some "Starting db connection from sentinel context" warnings, and will mean we get metrics for these processes.
* Port http/ to Python 3 (#3771)Amber Brown2018-09-061-6/+7
|
* run isortAmber Brown2018-07-093-15/+15
|
* add ip_range_whitelist parameter to limit where ASes can connect fromMatthew Hodgson2018-06-281-1/+3
|
* Merge pull request #3344 from Half-Shot/hs/as-metricsWill Hunt2018-06-071-0/+22
|\ | | | | Add metrics to track appservice transactions
| * Let's try labels instead of label, that might workWill Hunt2018-06-051-3/+3
| |
| * Add metrics to track appservice transactionsWill Hunt2018-06-051-0/+22
| |
* | also redact __str__ of ApplicationService used for loggingMichael Telatynski2018-06-061-1/+5
|/
* Merge remote-tracking branch 'origin/develop' into rav/use_run_in_backgroundRichard van der Hoff2018-04-271-11/+14
|\
| * Improve exception handling for background processesRichard van der Hoff2018-04-271-11/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There were a bunch of places where we fire off a process to happen in the background, but don't have any exception handling on it - instead relying on the unhandled error being logged when the relevent deferred gets garbage-collected. This is unsatisfactory for a number of reasons: - logging on garbage collection is best-effort and may happen some time after the error, if at all - it can be hard to figure out where the error actually happened. - it is logged as a scary CRITICAL error which (a) I always forget to grep for and (b) it's not really CRITICAL if a background process we don't care about fails. So this is an attempt to add exception handling to everything we fire off into the background.
* | Use run_in_background in preference to preserve_fnRichard van der Hoff2018-04-271-6/+6
|/ | | | | | While I was going through uses of preserve_fn for other PRs, I converted places which only use the wrapped function once to use run_in_background, to avoid creating the function object.
* Refactor ResponseCache usageRichard van der Hoff2018-04-121-7/+1
| | | | | | | | | | | | | | | Adds a `.wrap` method to ResponseCache which wraps up the boilerplate of a (get, set) pair, and then use it throughout the codebase. This will be largely non-functional, but does include the following functional changes: * federation_server.on_context_state_request: drops use of _server_linearizer which looked redundant and could cause incorrect cache misses by yielding between the get and the set. * RoomListHandler.get_remote_public_room_list(): fixes logcontext leaks * the wrap function includes some logging. I'm hoping this won't be too noisy on production.
* Add metrics for ResponseCacheRichard van der Hoff2018-04-101-1/+2
|
* Replace some type checks with six type checksAdrian Tschira2018-04-071-1/+3
| | | | Signed-off-by: Adrian Tschira <nota@notafile.com>
* Extract group_id from the dict for multiple useLuke Barnard2017-11-161-4/+5
|
* Remove unused GROUP_ID_REGEXLuke Barnard2017-11-161-2/+0
|
* Document get_groups_for_userLuke Barnard2017-11-161-0/+6
|
* Flake8Luke Barnard2017-11-161-1/+1
|
* Use a generator instead of a listLuke Barnard2017-11-161-2/+2
|
* Check group_id belongs to this domainLuke Barnard2017-11-161-3/+11
|
* Add automagical AS Publicised Group(s)Luke Barnard2017-11-161-0/+22
| | | | | | | | | | | | | | | | via registration file "users" namespace: ```YAML ... namespaces: users: - exclusive: true regex: '.*luke.*' group_id: '+all_the_lukes:hsdomain' ... ``` This is part of giving App Services their own groups for matching users. With this, ghost users will be given the appeareance that they are in a group and that they have publicised the fact, but _only_ from the perspective of the `get_publicised_groups_for_user` API.
* Do logcontexts outside ResponseCacheErik Johnston2017-10-251-3/+7
|
* replace 'except:' with 'except Exception:'Richard van der Hoff2017-10-231-1/+1
| | | | what could possibly go wrong
* Make get_if_app_services_interested_in_user fasterErik Johnston2017-05-181-0/+10
|
* Add commentErik Johnston2017-03-291-1/+1
|
* Cache whether an AS is interested based on membersErik Johnston2017-03-281-1/+9
|
* Remove param and cast at call siteErik Johnston2017-03-281-8/+6
|
* Compile the regex's used in ASesErik Johnston2017-03-281-9/+5
|
* Rename network_id to instance_id on client sideErik Johnston2016-12-121-1/+1
|
* Don't include appservice idErik Johnston2016-12-061-1/+0
|
* Add new API appservice specific public room listErik Johnston2016-12-062-0/+12
|
* Allow Configurable Rate Limiting Per ASLuke Barnard2016-10-181-1/+6
| | | | This adds a flag loaded from the registration file of an AS that will determine whether or not its users are rate limited (by ratelimit in _base.py). Needed for IRC bridge reasons - see https://github.com/matrix-org/matrix-appservice-irc/issues/240.
* Log if rejecting 3PE query metadata result due to type checkPaul "LeoNerd" Evans2016-09-091-4/+11
|
* Reject malformed 3PE query metadata results earlier in AS API handling codePaul "LeoNerd" Evans2016-09-091-2/+10
|
* Use None instead of the empty stringKegan Dougal2016-08-301-5/+5
| | | | Change how we validate the 'url' field as a result.
* Flake8Kegan Dougal2016-08-301-0/+1
|
* Allow application services to have an optional 'url'Kegan Dougal2016-08-301-0/+11
| | | | | | If 'url' is not specified, they will not be pushed for events or queries. This is useful for bots who simply wish to reserve large chunks of user/alias namespace, and don't care about being pushed for events.
* Just sprintf the 'kind' argument into uri directlyPaul "LeoNerd" Evans2016-08-251-3/+1
|
* Move ThirdPartyEntityKind into api.constants so the expectation becomes that ↵Paul "LeoNerd" Evans2016-08-251-1/+1
| | | | the value is significant
* Root the 3PE lookup API within /_matrix/app/unstable instead of at toplevelPaul "LeoNerd" Evans2016-08-251-3/+16
|
* Merge pull request #1041 from matrix-org/paul/third-party-lookupPaul Evans2016-08-252-2/+26
|\ | | | | Extend 3PE lookup APIs for metadata query
| * appease pep8Paul "LeoNerd" Evans2016-08-251-3/+2
| |
| * Implement a ResponseCache around 3PE lookup metadata lookupsPaul "LeoNerd" Evans2016-08-251-11/+21
| |
| * Kill PROTOCOL_META since I'm not using it any morePaul "LeoNerd" Evans2016-08-251-7/+0
| |
| * Actually query over AS API for 3PE lookup metadataPaul "LeoNerd" Evans2016-08-251-0/+20
| |
| * Initial hack at the 3PN protocols metadata lookup APIPaul "LeoNerd" Evans2016-08-241-0/+2
| |
| * Move 3PU/3PL lookup APIs into /thirdparty containing entityPaul "LeoNerd" Evans2016-08-241-2/+2
| |
* | Preserve some logcontextsErik Johnston2016-08-241-3/+3
|/
* Move validation logic for AS 3PE query response into ApplicationServiceApi ↵Paul "LeoNerd" Evans2016-08-181-1/+42
| | | | class, to keep the handler logic neater
* Avoid so much copypasta between 3PU and 3PL query by unifying around a ↵Paul "LeoNerd" Evans2016-08-181-14/+11
| | | | ThirdPartyEntityKind enumeration
* Minor syntax neateningsPaul "LeoNerd" Evans2016-08-181-2/+2
|
* Copypasta the 3PU support code to also do 3PLPaul "LeoNerd" Evans2016-08-181-0/+11
|
* Filter 3PU lookups by only ASes that declare knowledge of that protocolPaul "LeoNerd" Evans2016-08-181-1/+8
|
* Merge remote-tracking branch 'origin/develop' into paul/thirdpartylookupPaul "LeoNerd" Evans2016-08-182-70/+72
|\
| * Make notify_interested_services fasterErik Johnston2016-08-171-39/+42
| |
| * Change name of metricMatrix2016-08-171-1/+1
| |
| * Move Measure block inside loopErik Johnston2016-08-171-9/+9
| |
| * Clean up _ServiceQueuerErik Johnston2016-08-171-31/+30
| |
* | Since empty lookups now return 200/empty list not 404, we can safely log ↵Paul "LeoNerd" Evans2016-08-181-3/+2
| | | | | | | | failures as exceptions
* | Don't catch the return-value-as-exception that @defer.inlineCallbacks will usePaul "LeoNerd" Evans2016-08-181-1/+1
| |
* | Actually make 3PU lookup calls out to ASesPaul "LeoNerd" Evans2016-08-181-1/+10
| |
* | Thread 3PU lookup through as far as the AS API object; which currently noöps itPaul "LeoNerd" Evans2016-08-171-0/+3
|/
* Move the AS handler out of the Handlers object.Mark Haines2016-05-311-7/+7
| | | | | | Access it directly from the homeserver itself. It already wasn't inheriting from BaseHandler storing it on the Handlers object was already somewhat dubious.
* Remove some unused functions (#711)Mark Haines2016-04-081-5/+0
| | | | | | | | * Remove some unused functions * get_room_events_stream is only used in tests * is_exclusive_room might actually be something we want
* Fix flake8 warnings for new flake8Daniel Wagner-Hall2016-02-021-1/+1
|
* copyrightsMatthew Hodgson2016-01-073-3/+3
|
* Cap the time to retry txns to appservices to 8.5 minutesKegan Dougal2015-10-211-2/+2
| | | | | | | | | | | There's been numerous issues with people playing around with their application service and then not receiving events from their HS for ages due to backoff timers reaching crazy heights (albeit capped at < 1 day). Reduce the max time between pokes to be 8.5 minutes (2^9 secs) which is quick enough for people to wait it out (avg wait time being 4.25 min) but long enough to actually give the AS breathing room if it needs it.
* Make the appservice use 'users_in_room' rather than get_room_members since ↵Mark Haines2015-05-221-3/+3
| | | | it is cached
* Fix more AS sender ID thinkos.Kegan Dougal2015-04-011-1/+4
| | | | | | Specifically, the ASes own user ID wasn't being treated as 'exclusive' so a human could nab it. Also, the HS would needlessly send user queries to the AS for its own user ID.
* Merge branch 'develop' into application-services-registration-scriptKegan Dougal2015-04-011-1/+4
|\
| * Fix thinko whereby events *for the AS specifically* were not passed on.Kegan Dougal2015-03-311-1/+4
| | | | | | | | | | This was caused by not explicitly checking the service.sender field. This has now been fixed and a regression test has been added.
* | Fix tests and missing returns on deferreds.Kegan Dougal2015-03-311-1/+1
|/
* Fixes from PR commentsKegan Dougal2015-03-261-1/+2
|
* Implement ServiceQueuer with tests.Kegan Dougal2015-03-161-16/+30
|
* Replace EventGrouper for ServiceQueuer to move to push-based txns. Fix tests ↵Kegan Dougal2015-03-161-28/+33
| | | | and add stub tests for ServiceQueuer.
* Wrap polling/retry blocks in try/excepts to avoid sending to other ASes ↵Kegan Dougal2015-03-161-29/+39
| | | | breaking permanently should an error occur.
* Minor PR comment tweaks.Kegan Dougal2015-03-161-2/+2
|
* Fix remaining scheduler bugs. Add more informative logging.Kegan Dougal2015-03-102-35/+25
|
* Bug fixes whilst putting it all togetherKegan Dougal2015-03-092-1/+4
|
* Use seconds; start gluing in the AS scheduler into the AS handler.Kegan Dougal2015-03-091-2/+2
|
* Assign the AS ID from the database; replace old placeholder txn id.Kegan Dougal2015-03-061-2/+2
|
* Upper bound the backoff.Kegan Dougal2015-03-061-1/+3
|
* Apply clarity and docstringsKegan Dougal2015-03-061-1/+1
|
* Finish synapse.appservice.scheduler implementation.Kegan Dougal2015-03-062-51/+51
| | | | | With tests to assert behaviour. Not hooked up yet. Stub datastore methods not implemented yet.
* Add some loggersKegan Dougal2015-03-061-0/+10
|
* Flesh out more stub functions.Kegan Dougal2015-03-062-8/+34
|
* Add stub ApplicationServiceTransactionStore. Bootstrap Recoverers. Fill in ↵Kegan Dougal2015-03-061-7/+43
| | | | stub Transaction functions.
* Add more tests; fix bugs.Kegan Dougal2015-03-061-2/+2
|
* Start adding some testsKegan Dougal2015-03-061-10/+13
|
* Rejig structure given the appservice_handler already filters the correct ↵Kegan Dougal2015-03-061-59/+85
| | | | ASes to use.
* Minor tweaksKegan Dougal2015-03-051-7/+9
|
* Add stub architecture for txn reliability.Kegan Dougal2015-03-051-10/+111
|
* Add stub scheduler module for txn reliabilityKegan Dougal2015-03-051-0/+68
|
* Add txn_id kwarg to push methodsKegan Dougal2015-03-051-4/+9
|
* Add functions to return whether an AS has exclusively claimed a matching ↵Kegan Dougal2015-02-271-3/+20
| | | | namespace.
* Convert expected format for AS regex to include exclusivity.Kegan Dougal2015-02-271-7/+19
| | | | | Previously you just specified the regex as a string, now it expects a JSON object with a 'regex' key and an 'exclusive' boolean, as per spec.
* Minor tweaks based on PR feedback.Kegan Dougal2015-02-111-3/+3
|
* PEP8-ifyKegan Dougal2015-02-111-2/+0
|
* Notify ASes for events sent by other users in a room which an AS user is a ↵Kegan Dougal2015-02-111-4/+13
| | | | part of.
* Fix bugs so lazy room joining works as intended.Kegan Dougal2015-02-091-3/+3
|
* Register a user account for the AS when the AS registers. Add 'sender' ↵Kegan Dougal2015-02-091-1/+2
| | | | column to AS table.
* Fix user query checks. HS>AS pushing now works.Kegan Dougal2015-02-051-8/+13
|
* Serialize events before sending to ASesKegan Dougal2015-02-051-0/+10
|
* Glue AS work to general event notifications. Add more exception handling ↵Kegan Dougal2015-02-052-2/+11
| | | | when poking ASes.
* Add hs_token column and generate a different token f.e application service.Kegan Dougal2015-02-052-6/+8
|
* Impl push_bulk functionKegan Dougal2015-02-051-1/+18
|
* Update user/alias query APIs to use new format of SimpleHttpClient.get_jsonKegan Dougal2015-02-041-8/+7
|
* Add query_user/alias APIs.Kegan Dougal2015-02-041-4/+43
|
* Begin to add unit tests for appservice glue and regex testing.Kegan Dougal2015-02-041-2/+12
|
* Add stub ApplicationServiceApi and glue it with the handler.Kegan Dougal2015-02-042-1/+23
|
* Add appservice package and move ApplicationService into it.Kegan Dougal2015-02-032-0/+134