Spaces:
Sleeping
Sleeping
Create verify_env.py
Browse files- verify_env.py +40 -0
verify_env.py
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# verify_env.py
|
| 2 |
+
import os, re, json
|
| 3 |
+
|
| 4 |
+
KEYS = [
|
| 5 |
+
"NOTION_COOKIE",
|
| 6 |
+
"NOTION_SPACE_ID",
|
| 7 |
+
"NOTION_USER_ID",
|
| 8 |
+
"NOTION_USER_EMAIL",
|
| 9 |
+
]
|
| 10 |
+
|
| 11 |
+
def redacted(v: str):
|
| 12 |
+
if v is None:
|
| 13 |
+
return None
|
| 14 |
+
s = v
|
| 15 |
+
return f"{s[:4]}…{s[-4:]} (len={len(s)})"
|
| 16 |
+
|
| 17 |
+
def uuid_like(v: str):
|
| 18 |
+
return bool(re.fullmatch(r"[0-9a-fA-F-]{32,}", v or ""))
|
| 19 |
+
|
| 20 |
+
def has_quotes_or_newlines(v: str):
|
| 21 |
+
if not v:
|
| 22 |
+
return False
|
| 23 |
+
return any(ch in v for ch in ['\n', '\r', '"', "'"])
|
| 24 |
+
|
| 25 |
+
def main():
|
| 26 |
+
out = {}
|
| 27 |
+
for k in KEYS:
|
| 28 |
+
raw = os.getenv(k)
|
| 29 |
+
out[k] = {
|
| 30 |
+
"set": raw is not None,
|
| 31 |
+
"empty": (raw or "") == "",
|
| 32 |
+
"redacted": redacted(raw),
|
| 33 |
+
"uuid_like": uuid_like(raw) if k in ("NOTION_SPACE_ID","NOTION_USER_ID") else None,
|
| 34 |
+
"has_quotes_or_newlines": has_quotes_or_newlines(raw),
|
| 35 |
+
"starts_with_token_v2": raw.strip().startswith("token_v2=") if (raw and k=="NOTION_COOKIE") else None,
|
| 36 |
+
}
|
| 37 |
+
print(json.dumps(out, ensure_ascii=False, indent=2))
|
| 38 |
+
|
| 39 |
+
if __name__ == "__main__":
|
| 40 |
+
main()
|