P0 - Critical: - config.py: add _mask() credential-redaction helper, SETTINGS_SCHEMA_VERSION, plaintext-storage warning; corrupt settings.json backed up before defaults - gost_util.py: pin SHA256 for gost_3.2.6_windows_amd64.zip; verify before extraction; _add_defender_exclusion now logs warning on failure - firewall.py: add emergency_disengage() for atexit/signal use - service.py: register fw_emergency_disengage via atexit + SIGTERM/SIGINT; stop() calls emergency_disengage if thread hangs past 15s timeout - app.py: wrap main() in top-level except with CTk error dialog + log - LICENSE: add MIT license file P1 - Important: - app.py: switch to RotatingFileHandler (5 MB / 3 backups) - config.py: settings_version + migrate(); save_settings() writes .bak before overwrite; _is_safe_https_url() strips RFC-1918 sources/ip_check_url - service.py: threading.Lock on _settings; _signal_handler; graceful stop - requirements.txt: pin exact versions; add cryptography==48.0.0 - .gitignore: add settings.json, credential JSON files, screenshot noise - tray.py, dns_leak.py, gost_util.py: replace bare except:pass with logging - CHANGELOG.md: document all session changes P2 - Nice to have: - .github/workflows/test.yml: CI on Python 3.10/3.11/3.12 windows-latest - run.py: --version / -V flag - docs/OPERATOR_RUNBOOK.md: emergency disengage, proxy leak, GOST, settings Tests: 47/47 passed (python -m unittest discover -s tests -v) Co-authored-by: Cursor <cursoragent@cursor.com>
3.5 KiB
Proxy God — Operator Runbook
Version: 1.0
Last updated: 2026-05-21
Emergency: Firewall Kill-Switch Stuck (Network Appears Offline)
If the application crashes or is force-killed while the kill-switch is engaged, outbound traffic will remain blocked. Follow these steps to restore connectivity.
Option 1 — Run the standalone disengage script (fastest)
Open an elevated (Run as Administrator) PowerShell terminal and run:
# Remove all PCM_ firewall rules
netsh advfirewall firewall delete rule name=all
# Restore default outbound policy
netsh advfirewall set allprofiles firewallpolicy blockinbound,allowoutbound
Option 2 — Restart the application elevated
- Right-click
ProxyChainManager.exe→ Run as administrator. - The application detects orphan firewall rules on startup and removes them.
- Click Stop if the service does not start, to force disengage.
Option 3 — Restart Windows Firewall service
Restart-Service -Name MpsSvc -Force
This resets all runtime firewall state (not persistent rules). You may still
need to remove the PCM_* rules afterward with Option 1.
Verify rules are gone
netsh advfirewall firewall show rule name=all dir=out | Select-String "PCM_"
# Should return no output when clean
Emergency: Proxy Leak Detected
If the Live tab reports a leak (exit IP matches your real IP or VPN IP):
- Click Rotate Now to pick fresh proxies.
- If leaks persist, click Stop, then re-enable the kill-switch and click Start.
- Check the pool size — if < 5 proxies, force a full pool refresh by stopping and restarting the service.
- Enable VPN before starting if leak detection mode is "strict (exact IP)" — a VPN provides a larger subnet mask for the leak check.
Empty Pool / CDN Down
If every pool refresh returns 0 proxies:
- Check internet connectivity (browser → any site through system proxy OFF).
- Verify the proxy source URLs in Settings are reachable.
- The default sources use
cdn.jsdelivr.net— if blocked on your network, replace with a mirror or local JSON file (usefile:///path/to/proxies.jsonformat). - Temporarily lower
Max candidatesto speed up validation if the CDN is slow.
GOST Binary Missing or Quarantined
Symptoms: "GOST setup failed" or "GOST appears quarantined" in the Live log.
-
Check Windows Defender: Windows Security → Protection history — look for a quarantine event on
gost.exe. -
Restore and exclude
gost.exefrom Defender, or re-download by deleting the GOST folder:Remove-Item "$env:LOCALAPPDATA\ProxyChainManager\gost" -Recurse -Force -
Restart the application — it will re-download and re-verify GOST via SHA256.
Settings Corrupted / Reset to Defaults
A corrupt settings.json is automatically backed up to settings.json.corrupt
and the application reverts to defaults.
To restore:
$dir = "$env:LOCALAPPDATA\ProxyChainManager"
Copy-Item "$dir\settings.json.corrupt" "$dir\settings.json" -Force
A rolling backup is also kept at settings.json.bak (last successful save).
Log Files
| File | Location | Purpose |
|---|---|---|
proxy_chain_manager.log |
%LOCALAPPDATA%\ProxyChainManager\ |
Main app log (5 MB × 3 backups) |
gost.log |
%LOCALAPPDATA%\ProxyChainManager\ |
GOST process output (512 KB rolling) |
To open the log directory:
explorer "$env:LOCALAPPDATA\ProxyChainManager"