Skip to content

Commit 158a18b

Browse files
authored
feat: remove stale shared keys. (#225)
* feat: remove stale shared keys.
1 parent 2800923 commit 158a18b

2 files changed

Lines changed: 36 additions & 6 deletions

File tree

src/sumo/wrapper/_auth_provider.py

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import sys
66
import time
77
from datetime import datetime, timedelta
8+
from urllib.parse import parse_qs
89

910
import jwt
1011
import msal
@@ -30,20 +31,17 @@ def _maybe_nfs_exception(exception):
3031

3132

3233
def get_token_dir():
33-
return os.path.join(os.path.expanduser("~"), ".sumo")
34+
return os.path.expanduser("~/.sumo")
3435

3536

3637
def get_token_path(resource_id, suffix, case_uuid=None):
3738
if case_uuid is not None:
3839
return os.path.join(
39-
os.path.expanduser("~"),
40-
".sumo",
40+
get_token_dir(),
4141
str(resource_id) + "+" + str(case_uuid) + suffix,
4242
)
4343
else:
44-
return os.path.join(
45-
os.path.expanduser("~"), ".sumo", str(resource_id) + suffix
46-
)
44+
return os.path.join(get_token_dir(), str(resource_id) + suffix)
4745

4846

4947
class AuthProvider:
@@ -91,6 +89,36 @@ def store_shared_access_key_for_case(self, case_uuid, token):
9189
) as f:
9290
f.write(token)
9391
protect_token_cache(self._resource_id, ".sharedkey", case_uuid)
92+
return
93+
94+
def cleanup_shared_keys(self):
95+
tokendir = get_token_dir()
96+
if not os.path.exists(tokendir):
97+
return
98+
for f in os.listdir(tokendir):
99+
ff = os.path.join(tokendir, f)
100+
if os.path.isfile(ff):
101+
(name, ext) = os.path.splitext(ff)
102+
if ext.lower() == ".sharedkey":
103+
try:
104+
with open(ff, "r") as file:
105+
token = file.read()
106+
pq = parse_qs(token)
107+
se = pq["se"][0]
108+
end = datetime.strptime(
109+
se, "%Y-%m-%dT%H:%M:%S.%fZ"
110+
)
111+
now = datetime.utcnow()
112+
if now > end:
113+
os.unlink(ff)
114+
pass
115+
pass
116+
pass
117+
except Exception:
118+
pass
119+
pass
120+
pass
121+
return
94122

95123
def has_case_token(self, case_uuid):
96124
return os.path.exists(

src/sumo/wrapper/sumo_client.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,8 @@ def __init__(
9292
case_uuid=case_uuid,
9393
)
9494

95+
self.auth.cleanup_shared_keys()
96+
9597
if env == "localhost":
9698
self.base_url = "http://localhost:8084/api/v1"
9799
else:

0 commit comments

Comments
 (0)