Skip to content

Commit 8b91070

Browse files
committed
api token sanitizer
1 parent 854f5a0 commit 8b91070

2 files changed

Lines changed: 37 additions & 76 deletions

File tree

src/mistapi/__api_request.py

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
from requests.exceptions import HTTPError
2828

2929
from mistapi.__api_response import APIResponse
30+
from mistapi.__api_session import _apitoken_sanitizer
3031
from mistapi.__logger import logger
3132
from mistapi.__models.privilege import Privileges
3233

@@ -91,14 +92,10 @@ def _next_apitoken(self) -> None:
9192
with self._token_lock:
9293
logger.info("apirequest:_next_apitoken:rotating API Token")
9394
logger.debug(
94-
"apirequest:_next_apitoken:current API Token is %s...%s",
95-
self._apitoken[self._apitoken_index][
96-
:4
97-
], # lgtm[py/clear-text-logging-sensitive-data]
98-
self._apitoken[self._apitoken_index][
99-
-4:
100-
], # lgtm[py/clear-text-logging-sensitive-data]
101-
)
95+
"apirequest:_next_apitoken:current API Token is %s",
96+
_apitoken_sanitizer(self._apitoken[self._apitoken_index]),
97+
) # lgtm[py/clear-text-logging-sensitive-data]
98+
10299
new_index = self._apitoken_index + 1
103100
if new_index >= len(self._apitoken):
104101
new_index = 0
@@ -108,14 +105,9 @@ def _next_apitoken(self) -> None:
108105
{"Authorization": "Token " + self._apitoken[self._apitoken_index]}
109106
)
110107
logger.debug(
111-
"apirequest:_next_apitoken:new API Token is %s...%s",
112-
self._apitoken[self._apitoken_index][
113-
:4
114-
], # lgtm[py/clear-text-logging-sensitive-data]
115-
self._apitoken[self._apitoken_index][
116-
-4:
117-
], # lgtm[py/clear-text-logging-sensitive-data]
118-
)
108+
"apirequest:_next_apitoken:new API Token is %s",
109+
_apitoken_sanitizer(self._apitoken[self._apitoken_index]),
110+
) # lgtm[py/clear-text-logging-sensitive-data]
119111
else:
120112
logger.critical(" /!\\ API TOKEN CRITICAL ERROR /!\\")
121113
logger.critical(

src/mistapi/__api_session.py

Lines changed: 29 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -279,10 +279,8 @@ def _load_keyring(self, keyring_service) -> None:
279279
token = token.strip()
280280
LOGGER.info(
281281
"apisession:_load_keyring: Found MIST_APITOKEN=%s",
282-
_apitoken_sanitizer(
283-
token
284-
), # lgtm[py/clear-text-logging-sensitive-data]
285-
)
282+
_apitoken_sanitizer(token),
283+
) # lgtm[py/clear-text-logging-sensitive-data]
286284
self.set_api_token(mist_apitoken)
287285
mist_user = keyring.get_password(keyring_service, "MIST_USER")
288286
if mist_user:
@@ -538,10 +536,8 @@ def _get_api_token_data(self, apitoken) -> tuple[str | None, list | None]:
538536
data_json = data.json()
539537
LOGGER.debug(
540538
"apisession:_get_api_token_data:info retrieved for token %s",
541-
_apitoken_sanitizer(
542-
apitoken
543-
), # lgtm[py/clear-text-logging-sensitive-data]
544-
)
539+
_apitoken_sanitizer(apitoken),
540+
) # lgtm[py/clear-text-logging-sensitive-data]
545541
except requests.exceptions.ProxyError as proxy_error:
546542
LOGGER.critical("apisession:_get_api_token_data:proxy not valid...")
547543
CONSOLE.critical("Proxy not valid...\r\n")
@@ -557,10 +553,8 @@ def _get_api_token_data(self, apitoken) -> tuple[str | None, list | None]:
557553
except Exception:
558554
LOGGER.error(
559555
"apisession:_get_api_token_data:unable to retrieve info for token %s",
560-
_apitoken_sanitizer(
561-
apitoken
562-
), # lgtm[py/clear-text-logging-sensitive-data]
563-
)
556+
_apitoken_sanitizer(apitoken),
557+
) # lgtm[py/clear-text-logging-sensitive-data]
564558
LOGGER.error(
565559
"apirequest:_get_api_token_data: Exception occurred", exc_info=True
566560
)
@@ -569,18 +563,14 @@ def _get_api_token_data(self, apitoken) -> tuple[str | None, list | None]:
569563
if data.status_code == 401:
570564
LOGGER.critical(
571565
"apisession:_get_api_token_data:invalid API Token %s: status code %s",
572-
_apitoken_sanitizer(
573-
apitoken
574-
), # lgtm[py/clear-text-logging-sensitive-data]
566+
_apitoken_sanitizer(apitoken),
575567
data.status_code,
576-
)
568+
) # lgtm[py/clear-text-logging-sensitive-data]
577569
CONSOLE.critical(
578570
"Invalid API Token %s: status code %s\r\n",
579-
_apitoken_sanitizer(
580-
apitoken
581-
), # lgtm[py/clear-text-logging-sensitive-data]
571+
_apitoken_sanitizer(apitoken),
582572
data.status_code,
583-
)
573+
) # lgtm[py/clear-text-logging-sensitive-data]
584574
raise ValueError(
585575
f"Invalid API Token {_apitoken_sanitizer(apitoken)}: status code {data.status_code}"
586576
)
@@ -610,10 +600,8 @@ def _get_api_token_data(self, apitoken) -> tuple[str | None, list | None]:
610600
"token %s",
611601
priv,
612602
token_type,
613-
_apitoken_sanitizer(
614-
apitoken
615-
), # lgtm[py/clear-text-logging-sensitive-data]
616-
)
603+
_apitoken_sanitizer(apitoken),
604+
) # lgtm[py/clear-text-logging-sensitive-data]
617605
return (token_type, token_privileges)
618606

619607
def _check_api_tokens(self, apitokens) -> list[str]:
@@ -628,76 +616,57 @@ def _check_api_tokens(self, apitokens) -> list[str]:
628616
else:
629617
primary_token_privileges: list[str] = []
630618
primary_token_type: str | None = ""
631-
primary_token_value: str = ""
632619
for token in apitokens:
633620
if token in valid_api_tokens:
634621
LOGGER.info(
635622
"apisession:_check_api_tokens:API Token %s is already valid",
636-
_apitoken_sanitizer(
637-
token
638-
), # lgtm[py/clear-text-logging-sensitive-data]
639-
)
623+
_apitoken_sanitizer(token),
624+
) # lgtm[py/clear-text-logging-sensitive-data]
640625
continue
641626
(token_type, token_privileges) = self._get_api_token_data(token)
642627
if token_type is None or token_privileges is None:
643628
LOGGER.error(
644629
"apisession:_check_api_tokens:API Token %s is not valid",
645-
_apitoken_sanitizer(
646-
token
647-
), # lgtm[py/clear-text-logging-sensitive-data]
648-
)
630+
_apitoken_sanitizer(token),
631+
) # lgtm[py/clear-text-logging-sensitive-data]
649632
LOGGER.error(
650633
"API Token %s is not valid and will not be used",
651-
_apitoken_sanitizer(
652-
token
653-
), # lgtm[py/clear-text-logging-sensitive-data]
654-
)
634+
_apitoken_sanitizer(token),
635+
) # lgtm[py/clear-text-logging-sensitive-data]
655636
elif len(primary_token_privileges) == 0 and token_privileges:
656637
primary_token_privileges = token_privileges
657638
primary_token_type = token_type
658639
valid_api_tokens.append(token)
659640
LOGGER.info(
660641
"apisession:_check_api_tokens:"
661642
"API Token %s set as primary for comparison",
662-
_apitoken_sanitizer(
663-
token
664-
), # lgtm[py/clear-text-logging-sensitive-data]
665-
)
643+
_apitoken_sanitizer(token),
644+
) # lgtm[py/clear-text-logging-sensitive-data]
666645
elif primary_token_privileges == token_privileges:
667646
valid_api_tokens.append(token)
668647
LOGGER.info(
669648
"apisession:_check_api_tokens:"
670649
"%s API Token %s has same privileges as "
671650
"the %s API Token %s",
672651
token_type,
673-
_apitoken_sanitizer(
674-
token
675-
), # lgtm[py/clear-text-logging-sensitive-data]
652+
_apitoken_sanitizer(token),
676653
primary_token_type,
677-
_apitoken_sanitizer(
678-
token
679-
), # lgtm[py/clear-text-logging-sensitive-data],
680-
)
654+
_apitoken_sanitizer(token),
655+
) # lgtm[py/clear-text-logging-sensitive-data],
681656
else:
682657
LOGGER.error(
683658
"apisession:_check_api_tokens:"
684659
"%s API Token %s has different privileges "
685660
"than the %s API Token %s",
686661
token_type,
687-
_apitoken_sanitizer(
688-
token
689-
), # lgtm[py/clear-text-logging-sensitive-data]
662+
_apitoken_sanitizer(token),
690663
primary_token_type,
691-
_apitoken_sanitizer(
692-
token
693-
), # lgtm[py/clear-text-logging-sensitive-data]
694-
)
664+
_apitoken_sanitizer(token),
665+
) # lgtm[py/clear-text-logging-sensitive-data]
695666
LOGGER.error(
696667
"API Token %s has different privileges and will not be used",
697-
_apitoken_sanitizer(
698-
token
699-
), # lgtm[py/clear-text-logging-sensitive-data]
700-
)
668+
_apitoken_sanitizer(token),
669+
) # lgtm[py/clear-text-logging-sensitive-data]
701670
return valid_api_tokens
702671

703672
def _process_login(self, retry: bool = True) -> str | None:
@@ -1270,4 +1239,4 @@ def _apitoken_sanitizer(apitoken: str) -> str:
12701239
str
12711240
Substring of the API token to be used in the logs
12721241
"""
1273-
return f"{apitoken[:4]}...{apitoken[-4:]}" # lgtm[py/clear-text-logging-sensitive-data]
1242+
return f"{apitoken[:4]}...{apitoken[-4:]}"

0 commit comments

Comments
 (0)