import json import os import sys import urllib.parse def emit(key: str, value) -> None: # JSON string literals are valid YAML scalars (YAML 1.2 is a superset of JSON). print(f"{key}: {json.dumps(value)}") def main() -> None: raw = os.environ.get("AUDIT_LOG", "") entries = [] for line in raw.splitlines(): line = line.strip() if not line: continue try: entries.append(json.loads(line)) except json.JSONDecodeError: continue target = None for entry in entries: if entry.get("request_method") != "POST": continue params = entry.get("request_params") or "" query = urllib.parse.parse_qs(params, keep_blank_values=True) if query.get("foo", [None])[0] == "audit": target = entry if not target: emit("error", "audit entry not found") sys.exit(1) params = urllib.parse.parse_qs(target.get("request_params") or "", keep_blank_values=True) token = params.get("token", [None])[0] foo = params.get("foo", [None])[0] body_raw = target.get("request_body") or "" try: body = json.loads(body_raw) if body_raw else {} except Exception: body = {"_raw": body_raw} emit("method", target.get("request_method")) emit("uri", target.get("request_uri")) emit("status", target.get("response_status")) emit("foo", foo) emit("token", token) emit("body_case", body.get("case")) emit("body_foo", body.get("foo")) emit("body_password", body.get("password")) if __name__ == "__main__": main()