mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2024-12-19 07:04:19 -05:00
Remove unused methods from c/s api v1 in register.py (#5963)
These methods were part of the v1 C/S API. Remove them as they are no longer used by any code paths.
This commit is contained in:
parent
ce7803b8b0
commit
36f34e6f3d
1
changelog.d/5963.misc
Normal file
1
changelog.d/5963.misc
Normal file
@ -0,0 +1 @@
|
|||||||
|
Remove left-over methods from C/S registration API.
|
@ -24,13 +24,11 @@ from synapse.api.errors import (
|
|||||||
AuthError,
|
AuthError,
|
||||||
Codes,
|
Codes,
|
||||||
ConsentNotGivenError,
|
ConsentNotGivenError,
|
||||||
InvalidCaptchaError,
|
|
||||||
LimitExceededError,
|
LimitExceededError,
|
||||||
RegistrationError,
|
RegistrationError,
|
||||||
SynapseError,
|
SynapseError,
|
||||||
)
|
)
|
||||||
from synapse.config.server import is_threepid_reserved
|
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.http.servlet import assert_params_in_dict
|
||||||
from synapse.replication.http.login import RegisterDeviceReplicationServlet
|
from synapse.replication.http.login import RegisterDeviceReplicationServlet
|
||||||
from synapse.replication.http.register import (
|
from synapse.replication.http.register import (
|
||||||
@ -39,7 +37,6 @@ from synapse.replication.http.register import (
|
|||||||
)
|
)
|
||||||
from synapse.types import RoomAlias, RoomID, UserID, create_requester
|
from synapse.types import RoomAlias, RoomID, UserID, create_requester
|
||||||
from synapse.util.async_helpers import Linearizer
|
from synapse.util.async_helpers import Linearizer
|
||||||
from synapse.util.threepids import check_3pid_allowed
|
|
||||||
|
|
||||||
from ._base import BaseHandler
|
from ._base import BaseHandler
|
||||||
|
|
||||||
@ -59,7 +56,6 @@ class RegistrationHandler(BaseHandler):
|
|||||||
self._auth_handler = hs.get_auth_handler()
|
self._auth_handler = hs.get_auth_handler()
|
||||||
self.profile_handler = hs.get_profile_handler()
|
self.profile_handler = hs.get_profile_handler()
|
||||||
self.user_directory_handler = hs.get_user_directory_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.identity_handler = self.hs.get_handlers().identity_handler
|
||||||
self.ratelimiter = hs.get_registration_ratelimiter()
|
self.ratelimiter = hs.get_registration_ratelimiter()
|
||||||
|
|
||||||
@ -362,70 +358,6 @@ class RegistrationHandler(BaseHandler):
|
|||||||
)
|
)
|
||||||
return user_id
|
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.
|
|
||||||
|
|
||||||
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):
|
def check_user_id_not_appservice_exclusive(self, user_id, allowed_appservice=None):
|
||||||
# don't allow people to register the server notices mxid
|
# don't allow people to register the server notices mxid
|
||||||
if self._server_notices_mxid is not None:
|
if self._server_notices_mxid is not None:
|
||||||
@ -463,42 +395,6 @@ class RegistrationHandler(BaseHandler):
|
|||||||
self._next_generated_user_id += 1
|
self._next_generated_user_id += 1
|
||||||
return str(id)
|
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
|
@defer.inlineCallbacks
|
||||||
def _join_user_to_room(self, requester, room_identifier):
|
def _join_user_to_room(self, requester, room_identifier):
|
||||||
room_id = None
|
room_id = None
|
||||||
|
@ -35,7 +35,7 @@ from twisted.internet.interfaces import (
|
|||||||
)
|
)
|
||||||
from twisted.python.failure import Failure
|
from twisted.python.failure import Failure
|
||||||
from twisted.web._newclient import ResponseDone
|
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 import PotentialDataLoss
|
||||||
from twisted.web.http_headers import Headers
|
from twisted.web.http_headers import Headers
|
||||||
|
|
||||||
@ -599,38 +599,6 @@ def _readBodyToFile(response, stream, max_size):
|
|||||||
return d
|
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):
|
def encode_urlencode_args(args):
|
||||||
return {k: encode_urlencode_arg(v) for k, v in args.items()}
|
return {k: encode_urlencode_arg(v) for k, v in args.items()}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user