accounts/.github/scripts/normalize-private-key.py
2026-04-10 20:10:33 +08:00

48 lines
1.1 KiB
Python

#!/usr/bin/env python3
import base64
import os
import sys
def strip_outer_quotes(value: str) -> str:
if len(value) >= 2 and value[0] == value[-1] and value[0] in {"'", '"'}:
return value[1:-1].strip()
return value
def raw_payload() -> str:
return strip_outer_quotes(os.environ["SINGLE_NODE_VPS_SSH_PRIVATE_KEY"].replace("\r", "").strip())
def normalize() -> str:
raw = raw_payload()
candidates = [raw]
if "\\n" in raw:
candidates.append(strip_outer_quotes(raw.replace("\\n", "\n").strip()))
try:
decoded = base64.b64decode(raw, validate=True).decode("utf-8").replace("\r", "").strip()
except Exception:
decoded = ""
if decoded:
candidates.append(strip_outer_quotes(decoded))
for candidate in candidates:
if "BEGIN " in candidate and "PRIVATE KEY" in candidate:
return candidate.rstrip("\n") + "\n"
return raw.rstrip("\n") + "\n"
def main() -> None:
if len(sys.argv) != 2 or sys.argv[1] != "normalize":
raise SystemExit("usage: normalize-private-key.py normalize")
sys.stdout.write(normalize())
if __name__ == "__main__":
main()