general: log Publik-Caller header (#83111) #390

Merged
ecazenave merged 1 commits from wip/83111-Publik-Caller into main 2023-11-10 11:34:23 +01:00
2 changed files with 18 additions and 15 deletions

View File

@ -474,16 +474,18 @@ class GenericEndpointView(GenericConnectorMixin, SingleObjectMixin, View):
connector_name, endpoint_name = kwargs['connector'], kwargs['endpoint']
url = request.get_full_path()
logger_extra = {
'request': request,
'connector': connector_name,
'connector_endpoint': endpoint_name,
'connector_endpoint_url': url,
'publik_caller_url': request.headers.get('Publik-Caller-URL', ''),

Je voulais faire pop plutôt qu'un get en pensant au connecteur proxy sauf c'est un objet immutable.

Mais en fait tout va bien le connecteur proxy ne laisse pas passer n'importe quoi : https://git.entrouvert.org/entrouvert/passerelle/src/branch/main/passerelle/apps/proxy/models.py#L26

Je voulais faire pop plutôt qu'un get en pensant au connecteur proxy sauf c'est un objet immutable. Mais en fait tout va bien le connecteur proxy ne laisse pas passer n'importe quoi : https://git.entrouvert.org/entrouvert/passerelle/src/branch/main/passerelle/apps/proxy/models.py#L26
Outdated
Review

Comme on comprend ici qu'on s'attend à une URL dans Publik-Caller, appelons-le clairement Publik-Caller-URL et le monde sera plus beau.

Comme on comprend ici qu'on s'attend à une URL dans Publik-Caller, appelons-le clairement Publik-Caller-URL et le monde sera plus beau.
}
if request.method.lower() not in self.endpoint.endpoint_info.methods:
logger_extra['connector_endpoint_method'] = self._allowed_methods()
self.connector.logger.warning(
'endpoint %s %s (=> 405)' % (request.method, url),
extra={
'request': request,
'connector': connector_name,
'connector_endpoint': endpoint_name,
'connector_endpoint_method': self._allowed_methods(),
'connector_endpoint_url': url,
},
extra=logger_extra,
)
return self.http_method_not_allowed(request, *args, **kwargs)
@ -496,16 +498,15 @@ class GenericEndpointView(GenericConnectorMixin, SingleObjectMixin, View):
except UnicodeDecodeError:
payload = '<BINARY PAYLOAD>'
logger_extra.update(
{
'connector_endpoint_method': request.method,
'connector_payload': payload,
}
)
self.connector.logger.info(
'endpoint %s %s (%r) ' % (request.method, url, payload),
extra={
'request': request,
'connector': connector_name,
'connector_endpoint': endpoint_name,
'connector_endpoint_method': request.method,
'connector_endpoint_url': url,
'connector_payload': payload,
},
extra=logger_extra,
)
if not self.check_perms(request):

View File

@ -110,6 +110,7 @@ def test_proxy_logger(mocked_get, caplog, app, arcgis):
'template': '{{ attributes.NOM }}',
'id_template': '{{ attributes.NUMERO }}',
},
headers={'Publik-Caller-URL': 'https://wcs.invalid/backoffice/management/foo/1/'},

Plutôt Publik-Caller-URL ?

Plutôt `Publik-Caller-URL` ?
status=200,
)
@ -122,6 +123,7 @@ def test_proxy_logger(mocked_get, caplog, app, arcgis):
assert log.extra['connector'] == 'arcgis'
assert log.extra['connector_endpoint'] == 'mapservice-query'
assert log.extra['connector_endpoint_method'] == 'GET'
assert log.extra['publik_caller_url'] == 'https://wcs.invalid/backoffice/management/foo/1/'
assert '/arcgis/test/mapservice-query?' in log.extra['connector_endpoint_url']
# Resource Generic Logger