Adds Tor control port section to USAGE.md covering config, auth modes, rate limiting, and API endpoints. Updates README feature line and config example, CHEATSHEET with tor snippets, and marks the feature complete in TASKS.md and ROADMAP.md. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2.3 KiB
s5p -- Tasks
Current
-
Scaffold project structure
-
Implement SOCKS5 server
-
Implement protocol handshakes (SOCKS5, SOCKS4/4a, HTTP CONNECT)
-
Implement chain builder
-
CLI and config loading
-
Unit tests (config, proto)
-
Documentation
-
Smoke test with Tor
-
Containerfile + compose.yaml (Alpine)
-
Graceful SIGTERM shutdown
-
cProfile support (
--cprofile) -
Config split (example.yaml tracked, s5p.yaml gitignored)
-
Dynamic proxy source API integration
-
Connection retry with proxy rotation
-
Connection metrics (periodic + shutdown logging)
-
Managed proxy pool (multi-source, health-tested, persistent)
-
Weighted proxy selection (prefer recently-tested proxies)
-
Per-proxy backoff (60s cooldown after connection failure)
-
Stale proxy expiry (evict dead proxies not seen for 3 refresh cycles)
-
Pool stats in periodic metrics log (
pool=alive/total) -
Fast warm start (trust cached state, defer all health tests)
-
Static chain health check (skip pool tests if chain unreachable)
-
SIGHUP hot config reload (timeout, retries, log_level, pool config)
-
Dead proxy reporting (
report_urlPOST evicted proxies to API) -
Concurrent connection semaphore (
max_connections, CLI-m) -
Async HTTP client (replace blocking urllib, parallel source fetch)
-
First-hop TCP connection pool (
pool_size,pool_max_idle) -
Codebase consolidation (refactor/codebase-consolidation)
- Extract shared proxy parsing and constants to config.py
- Consolidate health-check HTTP logic in pool
- Remove threading from metrics (pure asyncio, no lock needed)
- Replace
ensure_futurewithcreate_task - Rename ambiguous variables in config loader
- Remove legacy ProxySource layer (source.py deleted)
- Add tests for extracted
parse_api_proxies
-
Instant warm start (trust cached state, defer all health tests)
-
Register signal handlers before startup (fix SIGKILL on stop)
-
Use k8s-file logging driver with rotation
-
Built-in control API (
api.py,--api,api_listen) -
Tor control port integration (NEWNYM signaling, periodic rotation)
Next
- Integration tests with mock proxy server
- SOCKS5 server-side authentication