component AP gateway (http): add verbose log when signature verification fails on POST request
This commit is contained in:
parent
8e09c143e7
commit
23514e8b37
1 changed files with 27 additions and 13 deletions
|
|
@ -932,6 +932,27 @@ class HTTPAPGServer(web_resource.Resource):
|
|||
}
|
||||
}
|
||||
|
||||
def _get_to_log(
|
||||
self,
|
||||
request: "HTTPRequest",
|
||||
data: Optional[dict] = None,
|
||||
) -> List[str]:
|
||||
"""Get base data to logs in verbose mode"""
|
||||
from pprint import pformat
|
||||
to_log = [
|
||||
"",
|
||||
f"<<< got {request.method.decode()} request - {request.uri.decode()}"
|
||||
]
|
||||
if data is not None:
|
||||
to_log.append(pformat(data))
|
||||
if self.apg.verbose>=3:
|
||||
headers = "\n".join(
|
||||
f" {k.decode()}: {v.decode()}"
|
||||
for k,v in request.getAllHeaders().items()
|
||||
)
|
||||
to_log.append(f" headers:\n{headers}")
|
||||
return to_log
|
||||
|
||||
async def APRequest(
|
||||
self,
|
||||
request: "HTTPRequest",
|
||||
|
|
@ -939,19 +960,7 @@ class HTTPAPGServer(web_resource.Resource):
|
|||
signing_actor: Optional[str] = None
|
||||
) -> None:
|
||||
if self.apg.verbose:
|
||||
from pprint import pformat
|
||||
to_log = [
|
||||
"",
|
||||
f"<<< got {request.method.decode()} request - {request.uri.decode()}"
|
||||
]
|
||||
if data is not None:
|
||||
to_log.append(pformat(data))
|
||||
if self.apg.verbose>=3:
|
||||
headers = "\n".join(
|
||||
f" {k.decode()}: {v.decode()}"
|
||||
for k,v in request.getAllHeaders().items()
|
||||
)
|
||||
to_log.append(f" headers:\n{headers}")
|
||||
to_log = self._get_to_log(request, data)
|
||||
|
||||
path = request.path.decode()
|
||||
ap_url = parse.urljoin(
|
||||
|
|
@ -1073,6 +1082,11 @@ class HTTPAPGServer(web_resource.Resource):
|
|||
try:
|
||||
signing_actor = await self.checkSignature(request)
|
||||
except exceptions.EncryptionError as e:
|
||||
if self.apg.verbose:
|
||||
to_log = self._get_to_log(request)
|
||||
to_log.append(f" body: {request.content.read()!r}")
|
||||
request.content.seek(0)
|
||||
log.info("\n".join(to_log))
|
||||
self.responseCode(
|
||||
request,
|
||||
http.FORBIDDEN,
|
||||
|
|
|
|||
Loading…
Reference in a new issue