Spaces:
Running
Running
Ashira Pitchayapakayakul
feat: migrate $HOME/.claude/* to $HOME/.surrogate/* (clean separation from Claude Code)
e36381e | # DNS fallback helper — patches socket.getaddrinfo to use dig @8.8.8.8 | |
| # when system resolver fails (ISP DNS filtering certain AI endpoints). | |
| # Import at top of any Python script: exec(open(...).read()) | |
| import socket as _sock | |
| import subprocess as _sp | |
| _orig_getaddrinfo = _sock.getaddrinfo | |
| def _resilient_getaddrinfo(host, *args, **kwargs): | |
| try: | |
| return _orig_getaddrinfo(host, *args, **kwargs) | |
| except _sock.gaierror: | |
| # Fall back: resolve via public DNS (bypass ISP filtering) | |
| for resolver in ("1.1.1.1", "8.8.8.8", "9.9.9.9"): | |
| try: | |
| out = _sp.check_output( | |
| ["dig", "+short", "+time=3", "+tries=1", f"@{resolver}", host], | |
| text=True, timeout=5, stderr=_sp.DEVNULL | |
| ).strip().splitlines() | |
| ip = next((ln for ln in out if ln and ln[0].isdigit()), None) | |
| if ip: | |
| return _orig_getaddrinfo(ip, *args, **kwargs) | |
| except Exception: | |
| continue | |
| raise | |
| _sock.getaddrinfo = _resilient_getaddrinfo | |