From 56f24c2498c882de3b36ee6b7c889dd2673c1963 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Mon, 2 Sep 2019 17:20:43 +0100 Subject: [PATCH 1/8] Remove unused methods from c/s api v1 in register.py --- synapse/handlers/register.py | 88 ------------------------------------ 1 file changed, 88 deletions(-) diff --git a/synapse/handlers/register.py b/synapse/handlers/register.py index be0425a33bd0..119db8fed903 100644 --- a/synapse/handlers/register.py +++ b/synapse/handlers/register.py @@ -362,58 +362,6 @@ def appservice_register(self, user_localpart, as_token): ) return user_id - @defer.inlineCallbacks - def check_recaptcha(self, ip, private_key, challenge, response): - """ - Checks a recaptcha is correct. - - Used only by c/s api v1 - """ - - captcha_response = yield self._validate_captcha( - ip, private_key, challenge, response - ) - if not captcha_response["valid"]: - logger.info( - "Invalid captcha entered from %s. Error: %s", - ip, - captcha_response["error_url"], - ) - raise InvalidCaptchaError(error_url=captcha_response["error_url"]) - else: - logger.info("Valid captcha entered from %s", ip) - - @defer.inlineCallbacks - def register_email(self, threepidCreds): - """ - Registers emails with an identity server. - - Used only by c/s api v1 - """ - - for c in threepidCreds: - logger.info( - "validating threepidcred sid %s on id server %s", - c["sid"], - c["idServer"], - ) - try: - threepid = yield self.identity_handler.threepid_from_creds(c) - except Exception: - logger.exception("Couldn't validate 3pid") - raise RegistrationError(400, "Couldn't validate 3pid") - - if not threepid: - raise RegistrationError(400, "Couldn't validate 3pid") - logger.info( - "got threepid with medium '%s' and address '%s'", - threepid["medium"], - threepid["address"], - ) - - if not check_3pid_allowed(self.hs, threepid["medium"], threepid["address"]): - raise RegistrationError(403, "Third party identifier is not allowed") - @defer.inlineCallbacks def bind_emails(self, user_id, threepidCreds): """Links emails with a user ID and informs an identity server. @@ -463,42 +411,6 @@ def _generate_user_id(self, reseed=False): self._next_generated_user_id += 1 return str(id) - @defer.inlineCallbacks - def _validate_captcha(self, ip_addr, private_key, challenge, response): - """Validates the captcha provided. - - Used only by c/s api v1 - - Returns: - dict: Containing 'valid'(bool) and 'error_url'(str) if invalid. - - """ - response = yield self._submit_captcha(ip_addr, private_key, challenge, response) - # parse Google's response. Lovely format.. - lines = response.split("\n") - json = { - "valid": lines[0] == "true", - "error_url": "http://www.recaptcha.net/recaptcha/api/challenge?" - + "error=%s" % lines[1], - } - return json - - @defer.inlineCallbacks - def _submit_captcha(self, ip_addr, private_key, challenge, response): - """ - Used only by c/s api v1 - """ - data = yield self.captcha_client.post_urlencoded_get_raw( - "http://www.recaptcha.net:80/recaptcha/api/verify", - args={ - "privatekey": private_key, - "remoteip": ip_addr, - "challenge": challenge, - "response": response, - }, - ) - return data - @defer.inlineCallbacks def _join_user_to_room(self, requester, room_identifier): room_id = None From 22fdee3501c901f4e10161ae21b5c97ae348d879 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Mon, 2 Sep 2019 17:35:54 +0100 Subject: [PATCH 2/8] Add changelog --- changelog.d/5963.misc | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/5963.misc diff --git a/changelog.d/5963.misc b/changelog.d/5963.misc new file mode 100644 index 000000000000..0d6c3c3d651c --- /dev/null +++ b/changelog.d/5963.misc @@ -0,0 +1 @@ +Remove left-over methods from C/S registration API. \ No newline at end of file From cc2947bfddce7f3260b65a357f0707a0ff82734b Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Mon, 2 Sep 2019 17:37:00 +0100 Subject: [PATCH 3/8] lint --- synapse/handlers/register.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/synapse/handlers/register.py b/synapse/handlers/register.py index 119db8fed903..8321dab9dba4 100644 --- a/synapse/handlers/register.py +++ b/synapse/handlers/register.py @@ -24,7 +24,6 @@ AuthError, Codes, ConsentNotGivenError, - InvalidCaptchaError, LimitExceededError, RegistrationError, SynapseError, @@ -39,7 +38,6 @@ ) from synapse.types import RoomAlias, RoomID, UserID, create_requester from synapse.util.async_helpers import Linearizer -from synapse.util.threepids import check_3pid_allowed from ._base import BaseHandler From 46a51e987ab04e27018050ef4ec4431cab6a1f0a Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Mon, 2 Sep 2019 17:47:41 +0100 Subject: [PATCH 4/8] kill bind_emails --- synapse/handlers/register.py | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/synapse/handlers/register.py b/synapse/handlers/register.py index 8321dab9dba4..522de4866b03 100644 --- a/synapse/handlers/register.py +++ b/synapse/handlers/register.py @@ -360,18 +360,6 @@ def appservice_register(self, user_localpart, as_token): ) return user_id - @defer.inlineCallbacks - def bind_emails(self, user_id, threepidCreds): - """Links emails with a user ID and informs an identity server. - - Used only by c/s api v1 - """ - - # Now we have a matrix ID, bind it to the threepids we were given - for c in threepidCreds: - # XXX: This should be a deferred list, shouldn't it? - yield self.identity_handler.bind_threepid(c, user_id) - def check_user_id_not_appservice_exclusive(self, user_id, allowed_appservice=None): # don't allow people to register the server notices mxid if self._server_notices_mxid is not None: From 0d0de623abddcc429d3839b7fcaed51e63d079c1 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Mon, 2 Sep 2019 17:48:16 +0100 Subject: [PATCH 5/8] kill captcha_client --- synapse/handlers/register.py | 1 - 1 file changed, 1 deletion(-) diff --git a/synapse/handlers/register.py b/synapse/handlers/register.py index 522de4866b03..7cc4e0d367bb 100644 --- a/synapse/handlers/register.py +++ b/synapse/handlers/register.py @@ -57,7 +57,6 @@ def __init__(self, hs): self._auth_handler = hs.get_auth_handler() self.profile_handler = hs.get_profile_handler() self.user_directory_handler = hs.get_user_directory_handler() - self.captcha_client = CaptchaServerHttpClient(hs) self.identity_handler = self.hs.get_handlers().identity_handler self.ratelimiter = hs.get_registration_ratelimiter() From 1a311438488824757eba0af0f76d219ecad891ce Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Mon, 2 Sep 2019 17:52:07 +0100 Subject: [PATCH 6/8] Remove dead import --- synapse/handlers/register.py | 1 - 1 file changed, 1 deletion(-) diff --git a/synapse/handlers/register.py b/synapse/handlers/register.py index 7cc4e0d367bb..3142d85788f1 100644 --- a/synapse/handlers/register.py +++ b/synapse/handlers/register.py @@ -29,7 +29,6 @@ SynapseError, ) from synapse.config.server import is_threepid_reserved -from synapse.http.client import CaptchaServerHttpClient from synapse.http.servlet import assert_params_in_dict from synapse.replication.http.login import RegisterDeviceReplicationServlet from synapse.replication.http.register import ( From e035cb9fdc35454cc249794dddfa63ca42002f32 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Mon, 2 Sep 2019 18:05:40 +0100 Subject: [PATCH 7/8] actually kill CaptchaServerHttpClient --- synapse/http/client.py | 32 -------------------------------- 1 file changed, 32 deletions(-) diff --git a/synapse/http/client.py b/synapse/http/client.py index 0ac20ebefce3..5346cf5221c1 100644 --- a/synapse/http/client.py +++ b/synapse/http/client.py @@ -599,38 +599,6 @@ def _readBodyToFile(response, stream, max_size): return d -class CaptchaServerHttpClient(SimpleHttpClient): - """ - Separate HTTP client for talking to google's captcha servers - Only slightly special because accepts partial download responses - - used only by c/s api v1 - """ - - @defer.inlineCallbacks - def post_urlencoded_get_raw(self, url, args={}): - query_bytes = urllib.parse.urlencode(encode_urlencode_args(args), True) - - response = yield self.request( - "POST", - url, - data=query_bytes, - headers=Headers( - { - b"Content-Type": [b"application/x-www-form-urlencoded"], - b"User-Agent": [self.user_agent], - } - ), - ) - - try: - body = yield make_deferred_yieldable(readBody(response)) - return body - except PartialDownloadError as e: - # twisted dislikes google's response, no content length. - return e.response - - def encode_urlencode_args(args): return {k: encode_urlencode_arg(v) for k, v in args.items()} From 35b47165049ae619385e06e7b8ba745cac2b7590 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Mon, 2 Sep 2019 18:14:53 +0100 Subject: [PATCH 8/8] LINTINATE --- synapse/http/client.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/synapse/http/client.py b/synapse/http/client.py index 5346cf5221c1..0ae6db8ea777 100644 --- a/synapse/http/client.py +++ b/synapse/http/client.py @@ -35,7 +35,7 @@ ) from twisted.python.failure import Failure from twisted.web._newclient import ResponseDone -from twisted.web.client import Agent, HTTPConnectionPool, PartialDownloadError, readBody +from twisted.web.client import Agent, HTTPConnectionPool, readBody from twisted.web.http import PotentialDataLoss from twisted.web.http_headers import Headers