summary refs log tree commit diff
path: root/synapse/app (follow)
Commit message (Expand)AuthorAgeFilesLines
* Fix up some typechecking (#6150)Amber Brown2019-10-021-1/+3
* add report_stats_endpoint config option (#6012)Sorunome2019-09-121-2/+4
* Allow Synapse to send registration emails + choose Synapse or an external ser...Andrew Morgan2019-09-061-1/+1
* Remove unnecessary parentheses around return statements (#5931)Andrew Morgan2019-08-301-4/+4
* Implement a structured logging output system. (#5680)Amber Brown2019-08-2813-29/+31
* Drop dependency on sdnotify (#5871)Richard van der Hoff2019-08-171-10/+37
* Fix issue with Synapse not starting up. Fixes #5866.Chris Moos2019-08-161-1/+1
* Don't load the media repo when configured to use an external media repo (#5754)Amber Brown2019-08-131-0/+9
* Replace returnValue with return (#5736)Amber Brown2019-07-232-5/+5
* Call startup commands as system triggers.Erik Johnston2019-07-2211-11/+29
* Add process hooks to tell systemd our state.Erik Johnston2019-07-221-0/+29
* Support Prometheus_client 0.4.0+ (#5636)Amber Brown2019-07-1812-24/+12
* Remove pointless descriptionErik Johnston2019-07-161-1/+0
* Fix typo in synapse/app/admin_cmd.pyErik Johnston2019-07-161-1/+1
* s/exfiltrate_user_data/export_user_data/Erik Johnston2019-07-151-1/+1
* Add FileExfiltrationWriterErik Johnston2019-07-151-1/+69
* Merge branch 'develop' of github.com:matrix-org/synapse into erikj/admin_api_cmdErik Johnston2019-07-1512-40/+45
|\
| * Add basic opentracing support (#5544)Jorik Schellekens2019-07-111-0/+3
| * Move logging utilities out of the side drawer of util/ and into logging/ (#5606)Amber Brown2019-07-0412-12/+12
| * Fix 'utime went backwards' errors on daemonization. (#5609)Richard van der Hoff2019-07-031-27/+30
* | Use set_defaults(func=) styleErik Johnston2019-07-151-11/+8
* | Move creation of ArgumentParser to callerErik Johnston2019-07-151-1/+3
* | Fix up commentsErik Johnston2019-07-151-2/+2
* | Add basic admin cmd appErik Johnston2019-07-022-3/+212
|/
* Drop support for cpu_affinity (#5525)Richard van der Hoff2019-06-222-26/+1
* Fix /messages on worker when no token suppliedErik Johnston2019-06-211-0/+2
* Support pagination API in client_reader workerErik Johnston2019-06-211-0/+2
* Run Black. (#5482)Amber Brown2019-06-2013-368/+358
* Merge branch 'master' of github.com:matrix-org/synapse into developErik Johnston2019-06-111-1/+0
|\
| * Change password reset links to /_matrix.Erik Johnston2019-06-111-1/+0
* | add monthly active users to phonehome stats (#5252)Neil Johnson2019-06-101-0/+1
|/
* Add ability to perform password reset via email without trusting the identity...Andrew Morgan2019-06-061-0/+1
* Unify v1 and v2 REST client APIs (#5226)Amber Brown2019-06-031-6/+5
* Fix dropped logcontexts during high outbound traffic. (#5277)Richard van der Hoff2019-05-291-7/+13
* Neilj/ensure get profileinfo available in client reader slaved store (#5213)Neil Johnson2019-05-221-0/+2
* Revert "expose SlavedProfileStore to ClientReaderSlavedStore (#5200)"Richard van der Hoff2019-05-201-2/+0
* expose SlavedProfileStore to ClientReaderSlavedStore (#5200)Neil Johnson2019-05-171-0/+2
* Merge pull request #5037 from matrix-org/erikj/limit_inflight_dnsErik Johnston2019-05-081-1/+82
|\
| * Limit in flight DNS requestsErik Johnston2019-04-091-1/+82
* | Move admin api impl to its own packageRichard van der Hoff2019-05-011-1/+1
* | Move admin API to a new prefixRichard van der Hoff2019-05-011-0/+2
* | VersionRestServlet doesn't take a paramErik Johnston2019-04-151-1/+1
* | Merge pull request #5063 from matrix-org/erikj/move_endpointsErik Johnston2019-04-151-4/+7
|\ \ | |/ |/|
| * Move some rest endpoints to client readerErik Johnston2019-04-151-4/+7
* | add context to phonehome stats (#5020)Neil Johnson2019-04-081-1/+1
|/
* Combine the CurrentStateDeltaStream into the EventStreamRichard van der Hoff2019-03-271-7/+10
* Make EventStream rows have a typeRichard van der Hoff2019-03-271-1/+4
* Move replication.tcp.streams into a packageRichard van der Hoff2019-03-271-1/+1
* Merge pull request #4852 from matrix-org/rav/move_rr_sending_to_workerRichard van der Hoff2019-03-151-0/+30
|\
| * Move client receipt processing to federation sender worker.Richard van der Hoff2019-03-131-0/+30
* | Merge pull request #4853 from matrix-org/erikj/worker_docker_ciErik Johnston2019-03-152-15/+19
|\ \
| * | Correctly handle all command line optionsErik Johnston2019-03-142-15/+19
| |/
* / master startupAmber Brown2019-03-111-0/+1
|/
* Allow /keys/{changes,query} API to run on workerErik Johnston2019-03-041-0/+11
* Merge pull request #4759 from matrix-org/erikj/3pid_client_readerErik Johnston2019-02-271-0/+2
|\
| * Move /account/3pid to client_readerErik Johnston2019-02-271-0/+2
* | Move server key queries to federation readerErik Johnston2019-02-271-1/+5
|/
* Add database version to phonehome stats. (#4753)Richard van der Hoff2019-02-271-0/+3
* Correctly proxy exception in frontend_proxy workerErik Johnston2019-02-231-5/+10
* Merge pull request #4670 from matrix-org/erikj/register_login_splitErik Johnston2019-02-191-0/+2
|\
| * Split /login into client_readerErik Johnston2019-02-181-0/+2
* | Merge pull request #4632 from matrix-org/erikj/basic_sentryErik Johnston2019-02-181-0/+30
|\ \
| * | Fixup comments and add warningErik Johnston2019-02-131-3/+3
| * | CommentsErik Johnston2019-02-121-0/+8
| * | Basic sentry integrationErik Johnston2019-02-121-0/+22
* | | Merge pull request #4666 from matrix-org/erikj/register_login_splitErik Johnston2019-02-181-0/+2
|\ \ \ | | |/ | |/|
| * | Split out registration to workerErik Johnston2019-02-181-0/+2
* | | Fix kicking guest users in worker modeErik Johnston2019-02-181-0/+2
|/ /
* | Fix errors in acme provisioning (#4648)Richard van der Hoff2019-02-141-6/+13
* | Update synapse/app/_base.pyErik Johnston2019-02-131-1/+1
* | Use `listen_tcp` for the replication listenerRichard van der Hoff2019-02-131-7/+7
* | Improve logging around listening servicesRichard van der Hoff2019-02-132-11/+20
* | Special-case the default bind_addresses for metrics listenerRichard van der Hoff2019-02-131-3/+2
|/
* Fix error when loading cert if tls is disabled (#4618)Richard van der Hoff2019-02-121-2/+3
* Infer no_tls from presence of TLS listenersRichard van der Hoff2019-02-112-6/+1
* Don't create server contexts when TLS is disabledRichard van der Hoff2019-02-111-0/+5
* Logging improvements around TLS certsRichard van der Hoff2019-02-111-4/+2
* Move ClientTLSOptionsFactory init out of refresh_certificates (#4611)Richard van der Hoff2019-02-111-3/+0
* ACME Reprovisioning (#4522)Amber Brown2019-02-112-24/+74
* Merge pull request #4420 from matrix-org/jaywink/openid-listenerErik Johnston2019-02-112-2/+24
|\
| * Fix flake8 issuesJason Robinson2019-01-231-1/+4
| * Split federation OpenID userinfo endpoint out of the federation resourceJason Robinson2019-01-232-0/+16
| * Make SynapseHomeServer _http_listener use self.get_reactor()Jason Robinson2019-01-231-1/+3
| * Make FederationReaderServer _http_listen use self.get_reactor()Jason Robinson2019-01-231-1/+2
* | Deduplicate some code in synapse.app (#4567)Amber Brown2019-02-0812-147/+77
* | ACME config cleanups (#4525)Richard van der Hoff2019-01-302-22/+25
* | Raise ConfigError insteadErik Johnston2019-01-301-1/+3
* | _listener_http should return a listErik Johnston2019-01-301-1/+1
* | SIGHUP for TLS cert reloading (#4495)Amber Brown2019-01-302-12/+68
* | Fix worker TLS (#4492)Amber Brown2019-01-287-48/+48
* | Support ACME for certificate provisioning (#4384)Amber Brown2019-01-231-9/+47
|/
* Check jinja version for consent resource (#4327)Richard van der Hoff2019-01-071-8/+1
* Make the dependencies more like a standard Python project and hook up the opt...Amber Brown2018-12-222-6/+3
* ensure can report mau stats when hs.config.mau_stats_only is set (#4305)Neil Johnson2018-12-181-1/+1
* Merge branch 'release-v0.34.0' into developRichard van der Hoff2018-12-111-32/+14
|\
| * Merge pull request #4290 from matrix-org/rav/remove_webclientRichard van der Hoff2018-12-111-32/+11
| |\
| | * Stop installing Matrix Console by defaultRichard van der Hoff2018-12-111-32/+11
| * | Add a welcome page to the static resourcesRichard van der Hoff2018-12-111-0/+3
| |/
* | Implement SAML2 authentication (#4267)Richard van der Hoff2018-12-071-0/+4
* | Implement .well-known handling (#4262)Richard van der Hoff2018-12-051-0/+2
|/
* Add option to track MAU stats (but not limit people) (#3830)Travis Ralston2018-11-151-1/+1
* Fix typing being reset causing infinite syncs (#4127)Amber Brown2018-11-031-0/+14
* Remove deprecated v1 key exchange endpoint (#4119)Amber Brown2018-10-311-6/+1
* Merge branch 'develop' of github.com:matrix-org/synapse into neilj/fix_mau_initNeil Johnson2018-10-241-3/+3
|\
| * Merge pull request #4075 from matrix-org/rav/fix_pusher_logcontextsRichard van der Hoff2018-10-241-3/+3
| |\
| | * Remove redundant run_as_background_process() from pusherpoolRichard van der Hoff2018-10-221-2/+2
| | * Rename _refresh_pusherRichard van der Hoff2018-10-221-1/+1
* | | fix race condiftion in calling initialise_reserved_usersNeil Johnson2018-10-231-8/+0
|/ /
* | Merge pull request #4076 from matrix-org/rav/fix_init_logcontextsRichard van der Hoff2018-10-221-8/+22
|\ \
| * | Run MAU queries as background processesRichard van der Hoff2018-10-201-8/+22
| |/
* | Merge pull request #4073 from matrix-org/rav/require_psutilRichard van der Hoff2018-10-221-7/+4
|\ \
| * | Make psutil an explicit dependencyRichard van der Hoff2018-10-191-7/+4
| |/
* / Make scripts/ and scripts-dev/ pass pyflakes (and the rest of the codebase on...Amber Brown2018-10-201-1/+1
|/
* synapse/app: frontend_proxy.py: actually make workers work on py3Ivan Shapovalov2018-10-141-2/+2
* Make workers work on Py3 (#4027)Amber Brown2018-10-134-28/+32
* Remove redundant call to start_get_pdu_cacheRichard van der Hoff2018-09-281-1/+0
* Replaced all occurences of e.message with str(e)Schnuffle2018-09-2712-13/+13
* Merge pull request #3948 from matrix-org/rav/no_symlink_synctlAmber Brown2018-09-261-284/+0
|\
| * Move synctl into top dir to avoid a symlinkRichard van der Hoff2018-09-251-284/+0
* | Fix some instances of ExpiringCache not expiring cache itemsErik Johnston2018-09-2111-11/+0
|/
* typoWill Hunt2018-09-171-1/+1
* make pip happy?Will Hunt2018-09-171-2/+4
* Use a string for versionsWill Hunt2018-09-171-1/+1
* Add python_version phone home statWill Hunt2018-09-171-0/+2
* improve namingNeil Johnson2018-09-121-5/+9
* expose number of real reserved usersNeil Johnson2018-09-121-3/+7
* Make sure that we close db connections opened during initRichard van der Hoff2018-08-2811-46/+18
* Merge pull request #3659 from matrix-org/erikj/split_profilesErik Johnston2018-08-221-0/+12
|\
| * Add some fixmesErik Johnston2018-08-171-0/+2
| * Call UserDirectoryHandler methods directlyErik Johnston2018-08-171-0/+2
| * Merge branch 'develop' of github.com:matrix-org/synapse into erikj/split_prof...Erik Johnston2018-08-178-14/+43
| |\
| * \ Merge branch 'develop' of github.com:matrix-org/synapse into erikj/split_prof...Erik Johnston2018-08-091-1/+10
| |\ \
| * | | Allow profile changes to happen on workersErik Johnston2018-08-071-0/+8
* | | | Merge pull request #3709 from matrix-org/rav/logcontext_for_replication_commandsRichard van der Hoff2018-08-175-5/+10
|\ \ \ \
| * | | | Logcontexts for replication command handlersRichard van der Hoff2018-08-175-5/+10
* | | | | Merge pull request #3710 from matrix-org/rav/logcontext_for_pusher_updatesRichard van der Hoff2018-08-171-2/+2
|\ \ \ \ \
| * | | | | Fix logcontexts for running pushersRichard van der Hoff2018-08-171-2/+2
| |/ / / /
* | | | / Integrate presence from hotfixes (#3694)Amber Brown2018-08-183-8/+53
| |_|_|/ |/| | |
* | | | remove errant yieldNeil Johnson2018-08-171-1/+1
* | | | call reap on start up and fix under reaping bugNeil Johnson2018-08-161-0/+1
|/ / /
* | | Fix inbound federation on reader workerErik Johnston2018-08-161-0/+2
* | | Merge branch 'develop' of github.com:matrix-org/synapse into erikj/split_fede...Erik Johnston2018-08-158-4/+20
|\ \ \
| * | | pep8Neil Johnson2018-08-141-0/+1
| * | | combine mau metrics into one groupNeil Johnson2018-08-141-4/+3
| * | | Rename async to async_helpers because `async` is a keyword on Python 3.7 (#3678)Amber Brown2018-08-101-1/+1
| * | | Merge pull request #3439 from vojeroen/send_sni_for_federation_requestsRichard van der Hoff2018-08-108-0/+16
| |\ \ \ | | |_|/ | |/| |
| | * | Merge branch 'develop' into send_sni_for_federation_requestsRichard van der Hoff2018-07-274-11/+33
| | |\ \
| | * \ \ Merge remote-tracking branch 'upstream/develop' into send_sni_for_federation_...Jeroen2018-07-1414-50/+71
| | |\ \ \
| | * | | | send SNI for federation requestsJeroen2018-06-248-0/+16
* | | | | | Rename slave TransactionStore to SlaveTransactionStoreErik Johnston2018-08-155-10/+10
* | | | | | Merge branch 'develop' of github.com:matrix-org/synapse into erikj/split_fede...Erik Johnston2018-08-091-1/+10
|\| | | | |
| * | | | | implement reserved users for mau limitsNeil Johnson2018-08-071-0/+6
| * | | | | fix caching and testsNeil Johnson2018-08-031-1/+0
| * | | | | update generate_monthly_active_users, and reap_monthly_active_usersNeil Johnson2018-08-021-2/+2
| * | | | | Merge branch 'develop' of github.com:matrix-org/synapse into neilj/mau_trackerNeil Johnson2018-08-011-0/+19
| |\ \ \ \ \ | | | |_|_|/ | | |/| | |
| * | | | | api into monthly_active_users tableNeil Johnson2018-07-311-0/+4
| | |_|_|/ | |/| | |
* | | | | Pull in necessary stores in federation_readerErik Johnston2018-08-061-0/+2
* | | | | Add replication APIs for persisting federation eventsErik Johnston2018-08-061-0/+8
| |/ / / |/| | |
* | | | count_monthly_users is now asyncNeil Johnson2018-08-011-1/+2
* | | | remove need to plot limit_usage_by_mauNeil Johnson2018-08-011-4/+0
* | | | only need to loop if mau limiting is enabledNeil Johnson2018-08-011-1/+2
* | | | coding styleNeil Johnson2018-07-311-1/+5
* | | | remove errant loggingNeil Johnson2018-07-301-1/+0
* | | | factor out metrics from __init__ to app/homeserverNeil Johnson2018-07-301-1/+19
|/ / /
* | | Fix some looping_call calls which were broken in #3604Richard van der Hoff2018-07-261-2/+2
* | | Wrap a number of things that run in the backgroundRichard van der Hoff2018-07-251-3/+10
* | | Replace usage of get_current_toke with StreamToken.STARTErik Johnston2018-07-241-0/+2
* | | Pull out did_forget to worker storeErik Johnston2018-07-241-4/+1
* | | Merge branch 'develop' of github.com:matrix-org/synapse into erikj/client_api...Erik Johnston2018-07-232-3/+7
|\ \ \
| * | | Make the rest of the .iterwhatever go away (#3562)Amber Brown2018-07-212-3/+7
| | |/ | |/|
* / | Add some room read only APIs to client_readerErik Johnston2018-07-181-1/+13
|/ /
* / run isortAmber Brown2018-07-0914-50/+71
|/
* Write a clear restart indicator in logsRichard van der Hoff2018-06-201-6/+1
* Merge pull request #3389 from turt2live/travis/name_metricsAmber Brown2018-06-1311-11/+11
|\
| * The flag is named enable_metrics, not collect_metricsTravis Ralston2018-06-1211-11/+11
* | Use the RegistryProxy for appservices tooTravis Ralston2018-06-121-1/+2
|/
* Add hacky cache factor override systemErik Johnston2018-06-041-0/+4
* Merge pull request #3264 from matrix-org/neil/sign-up-statsNeil Johnson2018-06-011-0/+4
|\
| * daily user type phone home statsNeil Johnson2018-05-221-0/+4
* | Run Prometheus on a different port, optionally. (#3274)Amber Brown2018-05-3112-14/+110
* | fixesAmber Brown2018-05-221-2/+4
* | Merge remote-tracking branch 'origin/develop' into 3218-official-promAmber Brown2018-05-221-0/+17
|\|
| * Fix dependency on jinja2Richard van der Hoff2018-05-221-1/+1
| * Merge pull request #3163 from matrix-org/cohort_analyticsNeil Johnson2018-05-161-0/+8
| |\
| | * remove unused method recurring_user_daily_visit_statsNeil Johnson2018-05-161-3/+0
| | * pep8Neil Johnson2018-05-151-1/+0
| | * Limit query load of generate_user_daily_visitsNeil Johnson2018-05-151-14/+7
| | * instead of inserting user daily visit data at the end of the day, instead ins...Neil Johnson2018-05-141-3/+16
| | * Merge branch 'develop' of https://github.com/matrix-org/synapse into cohort_a...Neil Johnson2018-05-1411-87/+119
| | |\
| | * | 10 mins seems more reasonable that every minuteNeil Johnson2018-05-011-1/+1
| | * | Generate user daily statsNeil Johnson2018-04-251-0/+6
| * | | Merge pull request #3213 from matrix-org/rav/consent_handlerRichard van der Hoff2018-05-161-0/+9
| |\ \ \ | | |_|/ | |/| |
| | * | ConsentResource to gather policy consent from usersRichard van der Hoff2018-05-151-0/+9
* | | | look at the Prometheus metrics insteadAmber Brown2018-05-211-5/+3
|/ / /
* / / Set Server header in SynapseRequestRichard van der Hoff2018-05-1011-0/+12
|/ /
* | Merge remote-tracking branch 'origin/develop' into rav/use_run_in_backgroundRichard van der Hoff2018-04-275-80/+101
|\ \
| * | Improve exception handling for background processesRichard van der Hoff2018-04-275-80/+101
| |/
* / Use run_in_background in preference to preserve_fnRichard van der Hoff2018-04-273-7/+6
|/
* Use six.itervalues in some placesAdrian Tschira2018-04-151-1/+3
* Merge pull request #3061 from NotAFile/add-some-byte-stringsRichard van der Hoff2018-04-091-1/+1
|\
| * Add b prefixes to some strings that are bytes in py3Adrian Tschira2018-04-041-1/+1
* | more verbosity in synctlRichard van der Hoff2018-04-061-0/+1
* | Merge pull request #3041 from matrix-org/r30_statsNeil Johnson2018-04-051-0/+4
|\ \
| * | Review commentsNeil Johnson2018-04-051-1/+1
| * | Support multi client R30 for psqlNeil Johnson2018-03-281-1/+3
| * | rename stat to future proofNeil Johnson2018-03-281-1/+1
| * | query and call for r30 statsNeil Johnson2018-03-281-0/+2
| |/
* | phone home cache size configurationsJan Christian Grünhage2018-04-041-0/+3
* | Merge pull request #3000 from NotAFile/change-except-styleRichard van der Hoff2018-04-041-2/+2
|\ \
| * | replace old style error catching with 'as' keywordNotAFile2018-03-151-2/+2
* | | Handle review commentsMichael Kaye2018-03-281-6/+9
* | | As daemonizing will make a new process, defer call to init.Michael Kaye2018-03-281-13/+23
* | | Include coarse CPU and Memory use in stats callbacks.Michael Kaye2018-03-271-0/+20
| |/ |/|
* | 404 correctly on missing paths via NoResourceMatthew Hodgson2018-03-2311-22/+22
|/
* Register membership/state servlets in event_creatorErik Johnston2018-03-141-1/+13
* Merge pull request #2978 from matrix-org/erikj/refactor_replication_layerErik Johnston2018-03-131-1/+1
|\
| * s/replication_client/federation_client/Erik Johnston2018-03-131-1/+1
* | Don't build handlers on workers unnecessarilyErik Johnston2018-03-135-5/+0
|/
* Split replication layer into twoErik Johnston2018-03-131-1/+1
* Calculate push actions on workerErik Johnston2018-02-281-0/+8
* Move storage functions for push calculationsErik Johnston2018-02-272-11/+2
* Add event_creator workerErik Johnston2018-02-071-0/+170
* Add replication http endpoint for event sendingErik Johnston2018-02-071-0/+4
* Factor out get_db_conn to HomeServer base classRichard van der Hoff2018-01-2610-130/+0
* Actually make it workErik Johnston2018-01-121-2/+10
* RefactorErik Johnston2018-01-121-9/+4
* When using synctl with workers, don't start the main synapse automaticallyErik Johnston2018-01-111-8/+26
* Implement listen_tcp method in remaining workersSilke2017-12-1810-192/+155
* Remove logger argument and do not catch replication listenerSilke2017-12-182-24/+18
* Add methods for listening on multiple addressesSilke Hofstra2017-12-172-51/+90
* Allow binds to both :: and 0.0.0.0Silke Hofstra2017-12-171-37/+58
* Add a comment which might save some confusionRichard van der Hoff2017-11-241-0/+1
* Remove dead sync_callbackRichard van der Hoff2017-11-241-2/+0
* Add config option to disable media_repo on main synapseRichard van der Hoff2017-11-222-8/+20
* Build MediaRepositoryResource as a homeserver dependencyRichard van der Hoff2017-11-222-4/+2
* Merge pull request #2627 from matrix-org/rav/custom_rest_endpointsDavid Baker2017-11-021-0/+12
|\
| * Add a hook for custom rest endpointsRichard van der Hoff2017-11-021-0/+12
* | Factor out _configure_named_resourceRichard van der Hoff2017-11-021-46/+64
|/
* Merge pull request #2586 from matrix-org/rav/frontend_proxy_auth_headerRichard van der Hoff2017-10-271-0/+7
|\
| * Front-end proxy: pass through auth headerRichard van der Hoff2017-10-261-0/+7
* | Support /keys/upload on /r0 as well as /unstableRichard van der Hoff2017-10-261-2/+1
|/
* replace 'except:' with 'except Exception:'Richard van der Hoff2017-10-231-1/+1
* Merge pull request #2466 from matrix-org/erikj/groups_mergedErik Johnston2017-10-111-0/+6
|\
| * Merge branch 'develop' of github.com:matrix-org/synapse into erikj/groups_mergedErik Johnston2017-09-1911-465/+257
| |\
| * | Fix replication. And notifyErik Johnston2017-07-201-0/+6
* | | Make 'affinity' package optionalErik Johnston2017-10-021-1/+14
* | | Move quit_with_errorErik Johnston2017-10-022-10/+11
| |/ |/|
* | Fix user_dir startupRichard van der Hoff2017-08-161-1/+1
* | Allow configuration of CPU affinityRichard van der Hoff2017-08-152-1/+9
* | Factor out common application startRichard van der Hoff2017-08-1511-464/+248
|/