Skip to content

Commit d912558

Browse files
committed
Replace instances of request.getClientAddress with new method
1 parent 4e333c3 commit d912558

File tree

10 files changed

+41
-30
lines changed

10 files changed

+41
-30
lines changed

synapse/api/auth/base.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -359,7 +359,8 @@ async def get_appservice_user(
359359
return None
360360

361361
if app_service.ip_range_whitelist:
362-
ip_address = IPAddress(request.getClientAddress().host)
362+
ip_address_str = self.get_ip_address_from_request(request)
363+
ip_address = IPAddress(ip_address_str)
363364
if ip_address not in app_service.ip_range_whitelist:
364365
return None
365366

synapse/handlers/auth.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -567,7 +567,7 @@ async def check_ui_auth(
567567
await self.store.set_ui_auth_clientdict(sid, clientdict)
568568

569569
user_agent = get_request_user_agent(request)
570-
clientip = request.getClientAddress().host
570+
clientip = self.auth.get_ip_address_from_request(request)
571571

572572
await self.store.add_user_agent_ip_to_ui_auth_session(
573573
session.session_id, user_agent, clientip

synapse/handlers/identity.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757

5858
class IdentityHandler:
5959
def __init__(self, hs: "HomeServer"):
60+
self._auth = hs.get_auth()
6061
self.store = hs.get_datastores().main
6162
# An HTTP client for contacting trusted URLs.
6263
self.http_client = SimpleHttpClient(hs)
@@ -97,9 +98,8 @@ async def ratelimit_request_token_requests(
9798
address: The actual threepid ID, e.g. the phone number or email address
9899
"""
99100

100-
await self._3pid_validation_ratelimiter_ip.ratelimit(
101-
None, (medium, request.getClientAddress().host)
102-
)
101+
ip_address = self._auth.get_ip_address_from_request(request)
102+
await self._3pid_validation_ratelimiter_ip.ratelimit(None, (medium, ip_address))
103103
await self._3pid_validation_ratelimiter_address.ratelimit(
104104
None, (medium, address)
105105
)

synapse/handlers/sso.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,7 @@ def __init__(self, hs: "HomeServer"):
205205
self.server_name = hs.hostname
206206
self._is_mine_server_name = hs.is_mine_server_name
207207
self._registration_handler = hs.get_registration_handler()
208+
self._auth = hs.get_auth()
208209
self._auth_handler = hs.get_auth_handler()
209210
self._device_handler = hs.get_device_handler()
210211
self._error_template = hs.config.sso.sso_error_template
@@ -505,12 +506,13 @@ async def complete_sso_login_request(
505506
auth_provider_session_id,
506507
)
507508

509+
ip_address = self._auth.get_ip_address_from_request(request)
508510
user_id = await self._register_mapped_user(
509511
attributes,
510512
auth_provider_id,
511513
remote_user_id,
512514
get_request_user_agent(request),
513-
request.getClientAddress().host,
515+
ip_address,
514516
)
515517
new_user = True
516518
elif self._sso_update_profile_information:
@@ -1080,14 +1082,16 @@ async def register_sso_user(self, request: Request, session_id: str) -> None:
10801082
if session.use_avatar:
10811083
attributes.picture = session.avatar_url
10821084

1085+
ip_address = self._auth.get_ip_address_from_request(request)
1086+
10831087
# the following will raise a 400 error if the username has been taken in the
10841088
# meantime.
10851089
user_id = await self._register_mapped_user(
10861090
attributes,
10871091
session.auth_provider_id,
10881092
session.remote_user_id,
10891093
get_request_user_agent(request),
1090-
request.getClientAddress().host,
1094+
ip_address,
10911095
)
10921096

10931097
logger.info(

synapse/rest/client/auth.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,8 @@ async def on_POST(self, request: Request, stagetype: str) -> None:
134134
if not session:
135135
raise SynapseError(400, "No session supplied")
136136

137+
ip_address = self.auth.get_ip_address_from_request(request)
138+
137139
if stagetype == LoginType.RECAPTCHA:
138140
response = parse_string(request, "g-recaptcha-response")
139141

@@ -144,7 +146,9 @@ async def on_POST(self, request: Request, stagetype: str) -> None:
144146

145147
try:
146148
await self.auth_handler.add_oob_auth(
147-
LoginType.RECAPTCHA, authdict, request.getClientAddress().host
149+
LoginType.RECAPTCHA,
150+
authdict,
151+
ip_address,
148152
)
149153
except LoginError as e:
150154
# Authentication failed, let user try again
@@ -164,7 +168,9 @@ async def on_POST(self, request: Request, stagetype: str) -> None:
164168

165169
try:
166170
await self.auth_handler.add_oob_auth(
167-
LoginType.TERMS, authdict, request.getClientAddress().host
171+
LoginType.TERMS,
172+
authdict,
173+
ip_address,
168174
)
169175
except LoginError as e:
170176
# Authentication failed, let user try again
@@ -195,7 +201,7 @@ async def on_POST(self, request: Request, stagetype: str) -> None:
195201
await self.auth_handler.add_oob_auth(
196202
LoginType.REGISTRATION_TOKEN,
197203
authdict,
198-
request.getClientAddress().host,
204+
ip_address,
199205
)
200206
except LoginError as e:
201207
html = self.registration_token_template.render(

synapse/rest/client/login.py

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,7 @@ async def on_POST(self, request: SynapseRequest) -> Tuple[int, LoginResponse]:
205205
)
206206

207207
request_info = request.request_info()
208+
ip_address = self.auth.get_ip_address_from_request(request)
208209

209210
try:
210211
if login_submission["type"] == LoginRestServlet.APPSERVICE_TYPE:
@@ -224,9 +225,7 @@ async def on_POST(self, request: SynapseRequest) -> Tuple[int, LoginResponse]:
224225
)
225226

226227
if appservice.is_rate_limited():
227-
await self._address_ratelimiter.ratelimit(
228-
None, request.getClientAddress().host
229-
)
228+
await self._address_ratelimiter.ratelimit(None, ip_address)
230229

231230
result = await self._do_appservice_login(
232231
login_submission,
@@ -238,27 +237,21 @@ async def on_POST(self, request: SynapseRequest) -> Tuple[int, LoginResponse]:
238237
self.jwt_enabled
239238
and login_submission["type"] == LoginRestServlet.JWT_TYPE
240239
):
241-
await self._address_ratelimiter.ratelimit(
242-
None, request.getClientAddress().host
243-
)
240+
await self._address_ratelimiter.ratelimit(None, ip_address)
244241
result = await self._do_jwt_login(
245242
login_submission,
246243
should_issue_refresh_token=should_issue_refresh_token,
247244
request_info=request_info,
248245
)
249246
elif login_submission["type"] == LoginRestServlet.TOKEN_TYPE:
250-
await self._address_ratelimiter.ratelimit(
251-
None, request.getClientAddress().host
252-
)
247+
await self._address_ratelimiter.ratelimit(None, ip_address)
253248
result = await self._do_token_login(
254249
login_submission,
255250
should_issue_refresh_token=should_issue_refresh_token,
256251
request_info=request_info,
257252
)
258253
else:
259-
await self._address_ratelimiter.ratelimit(
260-
None, request.getClientAddress().host
261-
)
254+
await self._address_ratelimiter.ratelimit(None, ip_address)
262255
result = await self._do_other_login(
263256
login_submission,
264257
should_issue_refresh_token=should_issue_refresh_token,

synapse/rest/client/media.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,8 @@ async def on_GET(
192192
respond_404(request)
193193
return
194194

195-
ip_address = request.getClientAddress().host
195+
ip_address = self.auth.get_ip_address_from_request(request)
196+
196197
remote_resp_function = (
197198
self.thumbnailer.select_or_generate_remote_thumbnail
198199
if self.dynamic_thumbnails
@@ -263,7 +264,8 @@ async def on_GET(
263264
request, media_id, file_name, max_timeout_ms
264265
)
265266
else:
266-
ip_address = request.getClientAddress().host
267+
ip_address = self.auth.get_ip_address_from_request(request)
268+
267269
await self.media_repo.get_remote_media(
268270
request,
269271
server_name,

synapse/rest/client/register.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,7 @@ class UsernameAvailabilityRestServlet(RestServlet):
329329
def __init__(self, hs: "HomeServer"):
330330
super().__init__()
331331
self.hs = hs
332+
self._auth = hs.get_auth()
332333
self.server_name = hs.hostname
333334
self.registration_handler = hs.get_registration_handler()
334335
self.ratelimiter = FederationRateLimiter(
@@ -361,7 +362,7 @@ async def on_GET(self, request: Request) -> Tuple[int, JsonDict]:
361362
if self.inhibit_user_in_use_error:
362363
return 200, {"available": True}
363364

364-
ip = request.getClientAddress().host
365+
ip = self._auth.get_ip_address_from_request(request)
365366
with self.ratelimiter.ratelimit(ip) as wait_deferred:
366367
await wait_deferred
367368

@@ -395,6 +396,7 @@ class RegistrationTokenValidityRestServlet(RestServlet):
395396
def __init__(self, hs: "HomeServer"):
396397
super().__init__()
397398
self.hs = hs
399+
self._auth = hs.get_auth()
398400
self.store = hs.get_datastores().main
399401
self.ratelimiter = Ratelimiter(
400402
store=self.store,
@@ -403,7 +405,8 @@ def __init__(self, hs: "HomeServer"):
403405
)
404406

405407
async def on_GET(self, request: Request) -> Tuple[int, JsonDict]:
406-
await self.ratelimiter.ratelimit(None, (request.getClientAddress().host,))
408+
ip_address = self._auth.get_ip_address_from_request(request)
409+
await self.ratelimiter.ratelimit(None, (ip_address,))
407410

408411
if not self.hs.config.registration.enable_registration:
409412
raise SynapseError(
@@ -456,7 +459,7 @@ def __init__(self, hs: "HomeServer"):
456459
async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]:
457460
body = parse_json_object_from_request(request)
458461

459-
client_addr = request.getClientAddress().host
462+
client_addr = self.auth.get_ip_address_from_request(request)
460463

461464
await self.ratelimiter.ratelimit(None, client_addr, update=False)
462465

@@ -916,7 +919,7 @@ def __init__(self, hs: "HomeServer"):
916919
async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]:
917920
body = parse_json_object_from_request(request)
918921

919-
client_addr = request.getClientAddress().host
922+
client_addr = self.auth.get_ip_address_from_request(request)
920923

921924
await self.ratelimiter.ratelimit(None, client_addr, update=False)
922925

synapse/rest/media/download_resource.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ class DownloadResource(RestServlet):
4949

5050
def __init__(self, hs: "HomeServer", media_repo: "MediaRepository"):
5151
super().__init__()
52+
self._auth = hs.get_auth()
5253
self.media_repo = media_repo
5354
self._is_mine_server_name = hs.is_mine_server_name
5455

@@ -97,7 +98,7 @@ async def on_GET(
9798
respond_404(request)
9899
return
99100

100-
ip_address = request.getClientAddress().host
101+
ip_address = self._auth.get_ip_address_from_request(request)
101102
await self.media_repo.get_remote_media(
102103
request,
103104
server_name,

synapse/rest/media/thumbnail_resource.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ def __init__(
5858
):
5959
super().__init__()
6060

61+
self._auth = hs.get_auth()
6162
self.store = hs.get_datastores().main
6263
self.media_repo = media_repo
6364
self.media_storage = media_storage
@@ -120,7 +121,7 @@ async def on_GET(
120121
respond_404(request)
121122
return
122123

123-
ip_address = request.getClientAddress().host
124+
ip_address = self._auth.get_ip_address_from_request(request)
124125
remote_resp_function = (
125126
self.thumbnail_provider.select_or_generate_remote_thumbnail
126127
if self.dynamic_thumbnails

0 commit comments

Comments
 (0)