feat: censor password from logs

This commit is contained in:
anasyusef 2021-07-12 12:02:10 +00:00
parent ed77889d6b
commit f94dbcd085
2 changed files with 15 additions and 0 deletions

@ -0,0 +1 @@
Subproject commit 88e1c6ec7a8f6337b0d6bb9840bb70c8b3f14051

View File

@ -8,6 +8,7 @@ from datetime import datetime
from pathlib import Path from pathlib import Path
from typing import Any, Iterator, List from typing import Any, Iterator, List
from typing.io import IO from typing.io import IO
from urllib.parse import urlparse
import rapidjson import rapidjson
@ -214,3 +215,16 @@ def chunks(lst: List[Any], n: int) -> Iterator[List[Any]]:
""" """
for chunk in range(0, len(lst), n): for chunk in range(0, len(lst), n):
yield (lst[chunk:chunk + n]) yield (lst[chunk:chunk + n])
def parse_db_uri_for_logging(uri: str):
"""
Helper method to parse the DB URI and return the same DB URI with the password censored
if it contains it. Otherwise, return the DB URI unchanged
:param uri: DB URI to parse for logging
"""
parsed_db_uri = urlparse(uri)
if not parsed_db_uri.netloc: # No need for censoring as no password was provided
return uri
pwd = parsed_db_uri.netloc.split(':')[1].split('@')[0]
return parsed_db_uri.geturl().replace(f':{pwd}@', ':****@')