Commit Graph

13 Commits

Author SHA1 Message Date
user
72adf2f658 feat: add managed proxy pool with health testing
ProxyPool replaces ProxySource with:
- Multiple sources: HTTP APIs and text files (one proxy URL per line)
- Deduplication by proto://host:port
- Health testing: full chain test with configurable concurrency
- Mass-failure guard: skip eviction when >90% fail
- Background loops for periodic refresh and health checks
- JSON state persistence with atomic writes (warm starts)
- Backward compat: ProxySource still works for legacy configs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 06:11:19 +01:00
user
1780c3a8cd feat: add proxy pool config dataclasses
Add PoolSourceConfig and ProxyPoolConfig for multi-source proxy pool
with health testing. Config supports both HTTP API and file sources.

Backward compat: legacy proxy_source YAML key auto-converts to
proxy_pool. CLI -S flag creates ProxyPoolConfig with single source.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 06:08:39 +01:00
user
4463adf08b refactor: extract build_chain into proto module
Moves _negotiate_hop() and build_chain() from server.py to proto.py
to break circular import between server and the upcoming pool module.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 06:07:31 +01:00
user
b07ea49965 feat: add connection retry and metrics
Retry failed proxy connections with a fresh random proxy on each
attempt (configurable via retries setting, proxy_source only).
Track connection metrics and log summary every 60s and on shutdown.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 04:54:13 +01:00
user
9b18a59df9 docs: add proxy source API documentation 2026-02-15 04:20:17 +01:00
user
ddad839fca feat: add dynamic proxy source API integration
Fetches proxies from an HTTP API, caches them in memory, and appends
a random proxy to the chain on each connection. Supports proto/country
filters and configurable refresh interval.

Config: proxy_source.url, proto, country, limit, refresh
CLI: -S/--proxy-source URL
2026-02-15 04:19:29 +01:00
user
20c7597ef9 docs: update all docs for container, cprofile, and config split 2026-02-15 03:51:16 +01:00
user
a40c35cc0b fix: add STOPSIGNAL SIGTERM to Containerfile 2026-02-15 03:46:51 +01:00
user
c016844a33 fix: handle SIGTERM gracefully for clean container shutdown
Register signal handler on the event loop to stop the server
on SIGTERM/SIGINT instead of relying on serve_forever().
2026-02-15 03:46:18 +01:00
user
61c580a555 feat: add Containerfile and compose.yaml for podman
Alpine-based image (59MB), source and config bind-mounted via
compose.yaml. Host networking for access to local Tor nodes.
2026-02-15 03:42:59 +01:00
user
57d2d87424 feat: add --cprofile flag for performance profiling
Dumps cProfile stats to a file (default: s5p.prof) on exit.
View with: python -m pstats s5p.prof
2026-02-15 03:39:36 +01:00
user
57c78f5563 feat: split config into tracked example and gitignored live config
config/example.yaml is the repo-safe sample.
config/s5p.yaml holds real proxy addresses and is gitignored.
2026-02-15 03:38:04 +01:00
user
0710dda8da feat: initial SOCKS5 proxy with chain support
Asyncio-based SOCKS5 server that tunnels connections through
configurable chains of SOCKS5, SOCKS4/4a, and HTTP CONNECT proxies.
Tor integration via standard SOCKS5 hop.
2026-02-15 03:10:25 +01:00