| """运行时补丁:包装 save_account_to_db 并在成功后发送 webhook。""" |
|
|
| from __future__ import annotations |
|
|
| import json |
| import os |
| import sys |
| import traceback |
| from urllib import error, request |
| from message_producer import publish_to_queue |
|
|
| print("正在加载 bootstrap.py...") |
|
|
|
|
| def _log(message: str) -> None: |
| print(f"[Hook] {message}", file=sys.stderr) |
|
|
|
|
| def _install_patch() -> None: |
| import utils.db_manager as db_manager |
|
|
| if getattr(db_manager.save_account_to_db, "__sitecustomize_patched__", False): |
| _log("save_account_to_db 已补丁,跳过") |
| return |
|
|
| original_save = db_manager.save_account_to_db |
|
|
| def patched_save_account_to_db( |
| email: str, password: str, token_json_str: str |
| ) -> bool: |
| ok = original_save(email, password, token_json_str) |
| if ok: |
| print(f"save_account_to_db 成功,准备发送消息: {email}") |
| try: |
| publish_to_queue( |
| { |
| "action": "create", |
| "data": { |
| "email": email, |
| "password": password, |
| "token": token_json_str, |
| }, |
| } |
| ) |
| except error.URLError as exc: |
| _log(f"发送消息失败: {exc}") |
| except Exception: |
| _log("执行异常") |
| traceback.print_exc() |
| return ok |
|
|
| patched_save_account_to_db.__sitecustomize_patched__ = True |
| db_manager.save_account_to_db = patched_save_account_to_db |
| _log("save_account_to_db 补丁已安装") |
|
|
|
|
| try: |
| _install_patch() |
| except Exception: |
| _log("补丁安装失败") |
| traceback.print_exc() |
|
|