summary refs log tree commit diff
path: root/synapse/api/auth.py
diff options
context:
space:
mode:
authorTravis Ralston <travpc@gmail.com>2018-12-04 04:44:41 -0700
committerRichard van der Hoff <1389908+richvdh@users.noreply.github.com>2018-12-04 12:44:41 +0100
commit1737753a62c90365b8886b9fd3317608a6c402ea (patch)
treeeab1d558496e889e0ce55d2ddb70e26b86f62c91 /synapse/api/auth.py
parentFix non-ASCII pushrules (#4248) (diff)
downloadsynapse-1737753a62c90365b8886b9fd3317608a6c402ea.tar.xz
Add an option to enable recording IPs for appservice users (#3831)
Diffstat (limited to 'synapse/api/auth.py')
-rw-r--r--synapse/api/auth.py29
1 files changed, 20 insertions, 9 deletions
diff --git a/synapse/api/auth.py b/synapse/api/auth.py

index 34382e4e3c..5309899703 100644 --- a/synapse/api/auth.py +++ b/synapse/api/auth.py
@@ -188,17 +188,33 @@ class Auth(object): """ # Can optionally look elsewhere in the request (e.g. headers) try: + ip_addr = self.hs.get_ip_from_request(request) + user_agent = request.requestHeaders.getRawHeaders( + b"User-Agent", + default=[b""] + )[0].decode('ascii', 'surrogateescape') + + access_token = self.get_access_token_from_request( + request, self.TOKEN_NOT_FOUND_HTTP_STATUS + ) + user_id, app_service = yield self._get_appservice_user_id(request) if user_id: request.authenticated_entity = user_id + + if ip_addr and self.hs.config.track_appservice_user_ips: + yield self.store.insert_client_ip( + user_id=user_id, + access_token=access_token, + ip=ip_addr, + user_agent=user_agent, + device_id="dummy-device", # stubbed + ) + defer.returnValue( synapse.types.create_requester(user_id, app_service=app_service) ) - access_token = self.get_access_token_from_request( - request, self.TOKEN_NOT_FOUND_HTTP_STATUS - ) - user_info = yield self.get_user_by_access_token(access_token, rights) user = user_info["user"] token_id = user_info["token_id"] @@ -208,11 +224,6 @@ class Auth(object): # stubbed out. device_id = user_info.get("device_id") - ip_addr = self.hs.get_ip_from_request(request) - user_agent = request.requestHeaders.getRawHeaders( - b"User-Agent", - default=[b""] - )[0].decode('ascii', 'surrogateescape') if user and access_token and ip_addr: yield self.store.insert_client_ip( user_id=user.to_string(),