diff --git a/fix_exception_leaks.py b/fix_exception_leaks.py deleted file mode 100644 index 8506160..0000000 --- a/fix_exception_leaks.py +++ /dev/null @@ -1,76 +0,0 @@ -#!/usr/bin/env python3 -"""Replace $e->getMessage() in client-facing JSON/echo responses with generic error + error_log.""" -import os, re, glob - -BACKEND = "/Users/hamzaaleghwairyeen/development/App/Siro/backend" - -def fix_file(fpath): - with open(fpath) as f: - content = f.read() - original = content - base = os.path.basename(fpath) - - # Add error_log before any line that does jsonError/echo with $e->getMessage() inside a catch block - # Pattern: catch (...) {\n jsonError/echo(... $e->getMessage() ) - content = re.sub( - r'(catch\s*\((?:PDOException|Exception|\\Exception|Throwable)\s*\$\w+\)\s*\{)\n(\s*)(jsonError|echo)\s*\(', - lambda m: f"{m.group(1)}\n{m.group(2)}error_log(\"[{base}] \" . $e->getMessage());\n{m.group(2)}{m.group(3)}(", - content, - ) - - # Replace jsonError("... " . $e->getMessage()) with generic message - content = re.sub( - r'jsonError\s*\(\s*"[^"]*"\s*\.\s*\$\w+->getMessage\s*\(\s*\)\s*\)', - 'jsonError("An internal error occurred. Please try again later.")', - content, - ) - - # Replace jsonError($e->getMessage()) - content = re.sub( - r'jsonError\s*\(\s*\$\w+->getMessage\s*\(\s*\)\s*\)', - 'jsonError("An internal error occurred. Please try again later.")', - content, - ) - - # Replace echo "... " . $e->getMessage() - content = re.sub( - r'echo\s+"[^"]*"\s*\.\s*\$\w+->getMessage\s*\(\s*\)', - 'echo "An internal error occurred"', - content, - ) - - # Replace echo $e->getMessage() - content = re.sub( - r'echo\s+\$\w+->getMessage\s*\(\s*\)', - 'echo "An internal error occurred"', - content, - ) - - # Replace json_encode with $e->getMessage() in response - content = re.sub( - r'(json_encode\s*\(\s*(?:array\s*\(|\[)[^)]*"message"\s*=>?\s*)"[^"]*"\s*\.\s*\$\w+->getMessage\s*\(\s*\)([^)]*[)\]]\s*\))', - r'\1"An internal error occurred"\2', - content, - ) - content = re.sub( - r'(json_encode\s*\(\s*(?:array\s*\(|\[)[^)]*"message"\s*=>?\s*)\$\w+->getMessage\s*\(\s*\)([^)]*[)\]]\s*\))', - r'\1"An internal error occurred"\2', - content, - ) - - if content != original: - with open(fpath, 'w') as f: - f.write(content) - return True - return False - -fixed = 0 -for fpath in glob.glob(os.path.join(BACKEND, '**/*.php'), recursive=True): - if '/vendor/' in fpath: - continue - if fix_file(fpath): - fixed += 1 - rel = os.path.relpath(fpath, BACKEND) - print(f" {rel}") - -print(f"\nFixed: {fixed} files")