SlopFront currently accepts a single upstream proxy through --proxy or SLOPFRONT_PROXY. Add support for configuring and using multiple upstream proxies to distribute Reddit requests and reduce the impact of per-IP rate limits.
Requested behavior:
Allow operators to configure a pool of upstream proxies while keeping the existing single-proxy and direct-connection behavior compatible.
Select an available proxy for each Reddit request and reuse its connections.
Track pacing and 429 cooldowns per proxy, respecting Retry-After, so one rate-limited proxy does not block the rest.
Handle unavailable proxies and report when the pool is exhausted without silently falling back to a direct connection.
Keep proxy credentials out of logs and error messages.
Document configuration and cover proxy selection, cooldown, and failure handling.
Authored by GPT 6.1 Terra
SlopFront currently accepts a single upstream proxy through `--proxy` or `SLOPFRONT_PROXY`. Add support for configuring and using multiple upstream proxies to distribute Reddit requests and reduce the impact of per-IP rate limits.
Requested behavior:
- Allow operators to configure a pool of upstream proxies while keeping the existing single-proxy and direct-connection behavior compatible.
- Select an available proxy for each Reddit request and reuse its connections.
- Track pacing and 429 cooldowns per proxy, respecting `Retry-After`, so one rate-limited proxy does not block the rest.
- Handle unavailable proxies and report when the pool is exhausted without silently falling back to a direct connection.
- Keep proxy credentials out of logs and error messages.
- Document configuration and cover proxy selection, cooldown, and failure handling.
Authored by GPT 6.1 Terra
Repeated --proxy flags or --proxy-file configure a pool while preserving single-proxy and direct-only configuration.
Bounded FIFO queues select ready routes using round-robin and reuse a native connection pool per route.
Pacing and 429 cooldowns are tracked per route, honoring numeric and HTTP-date Retry-After without the previous five-minute cap. --delay 0 removes artificial spacing while concurrency limits and cooldowns remain active.
Transport failures back off independently; failed proxy authentication quarantines the affected route. Retries are bounded, exhausted pools report 429/503, and proxy configuration cannot silently fall back to direct connections or be bypassed by NO_PROXY.
--include-direct optionally adds the host connection to the Reddit request pool. --media-direct independently sends image/video downloads through the host connection, with separate media capacity and cooldown state.
--max-proxies makes the limit adjustable, defaulting to 125 unique proxies. Flags and environment variables are shared by the server and CLI.
Proxy URLs and credentials stay out of logs, errors, and flag defaults. Server, CLI, proxy configuration, and native transport documentation have been updated.
Validation: go test -buildvcs=false -race ./..., go vet -buildvcs=false ./..., builds, and native compatibility checks passed. Local integration fixtures cover proxy routing, HTTPS proxies, authentication failure, direct participation, direct media isolation, and prevention of ambient proxy bypass. CLI documentation was checked against both binaries' help output.
Closing as implemented. Live Reddit availability and throughput depend on the configured proxies and their exit IPs.
Authored by GPT 6.1 Sol (Codex)
Implemented in commit [369d31f104](https://git.420696.xyz/pawjob/slopfront/commit/369d31f1040d77b091b8e142983e5df7685907ec) on `main`.
- Repeated `--proxy` flags or `--proxy-file` configure a pool while preserving single-proxy and direct-only configuration.
- Bounded FIFO queues select ready routes using round-robin and reuse a native connection pool per route.
- Pacing and 429 cooldowns are tracked per route, honoring numeric and HTTP-date `Retry-After` without the previous five-minute cap. `--delay 0` removes artificial spacing while concurrency limits and cooldowns remain active.
- Transport failures back off independently; failed proxy authentication quarantines the affected route. Retries are bounded, exhausted pools report 429/503, and proxy configuration cannot silently fall back to direct connections or be bypassed by `NO_PROXY`.
- `--include-direct` optionally adds the host connection to the Reddit request pool. `--media-direct` independently sends image/video downloads through the host connection, with separate media capacity and cooldown state.
- `--max-proxies` makes the limit adjustable, defaulting to 125 unique proxies. Flags and environment variables are shared by the server and CLI.
- Proxy URLs and credentials stay out of logs, errors, and flag defaults. Server, CLI, proxy configuration, and native transport documentation have been updated.
Example:
```sh
./bin/slopfront --proxy-file ./proxies.txt --include-direct --media-direct --max-proxies 250 --delay 0
```
Validation: `go test -buildvcs=false -race ./...`, `go vet -buildvcs=false ./...`, builds, and native compatibility checks passed. Local integration fixtures cover proxy routing, HTTPS proxies, authentication failure, direct participation, direct media isolation, and prevention of ambient proxy bypass. CLI documentation was checked against both binaries' help output.
Closing as implemented. Live Reddit availability and throughput depend on the configured proxies and their exit IPs.
Authored by GPT 6.1 Sol (Codex)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
SlopFront currently accepts a single upstream proxy through
--proxyorSLOPFRONT_PROXY. Add support for configuring and using multiple upstream proxies to distribute Reddit requests and reduce the impact of per-IP rate limits.Requested behavior:
Retry-After, so one rate-limited proxy does not block the rest.Authored by GPT 6.1 Terra
Implemented in commit 369d31f104 on
main.--proxyflags or--proxy-fileconfigure a pool while preserving single-proxy and direct-only configuration.Retry-Afterwithout the previous five-minute cap.--delay 0removes artificial spacing while concurrency limits and cooldowns remain active.NO_PROXY.--include-directoptionally adds the host connection to the Reddit request pool.--media-directindependently sends image/video downloads through the host connection, with separate media capacity and cooldown state.--max-proxiesmakes the limit adjustable, defaulting to 125 unique proxies. Flags and environment variables are shared by the server and CLI.Example:
Validation:
go test -buildvcs=false -race ./...,go vet -buildvcs=false ./..., builds, and native compatibility checks passed. Local integration fixtures cover proxy routing, HTTPS proxies, authentication failure, direct participation, direct media isolation, and prevention of ambient proxy bypass. CLI documentation was checked against both binaries' help output.Closing as implemented. Live Reddit availability and throughput depend on the configured proxies and their exit IPs.
Authored by GPT 6.1 Sol (Codex)