diff options
| author | DanConwayDev <DanConwayDev@protonmail.com> | 2026-01-14 11:42:05 +0000 |
|---|---|---|
| committer | DanConwayDev <DanConwayDev@protonmail.com> | 2026-01-14 13:40:03 +0000 |
| commit | 50000cd9d47681390c3c45feef98fe51c7b79a0f (patch) | |
| tree | 53ede8cb63ac2c5fe2321a6ecd9c87956537bbc7 /src/config.rs | |
| parent | e3792b9abefd43b4594af2640ad4665c006fa3b0 (diff) | |
Add explicit rate limits and total connection limit
- Make RateLimit explicit in relay builder (500 subs, 60 events/min)
- Add NGIT_MAX_CONNECTIONS config option (default: 500)
- Update all 4 config locations (src, nix, docs, .env.example)
- Fix documentation error: filter limit 5000→500
- Document Phase 2 deferral decision (per-IP enforcement)
Addresses primary DoS vector (connection exhaustion) with minimal code.
Per-IP rate limiting deferred until abuse detected in production.
Related: issue ff38 (git endpoint throttling - separate concern)
Diffstat (limited to 'src/config.rs')
| -rw-r--r-- | src/config.rs | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/config.rs b/src/config.rs index 0f0d853..0014003 100644 --- a/src/config.rs +++ b/src/config.rs | |||
| @@ -469,6 +469,11 @@ pub struct Config { | |||
| 469 | /// All events from these authors are blocked from both relay storage and purgatory | 469 | /// All events from these authors are blocked from both relay storage and purgatory |
| 470 | #[arg(long, env = "NGIT_EVENT_BLACKLIST", default_value = "")] | 470 | #[arg(long, env = "NGIT_EVENT_BLACKLIST", default_value = "")] |
| 471 | pub event_blacklist: String, | 471 | pub event_blacklist: String, |
| 472 | |||
| 473 | /// Maximum total connections to the relay (default: 500) | ||
| 474 | /// Prevents connection exhaustion DoS attacks | ||
| 475 | #[arg(long, env = "NGIT_MAX_CONNECTIONS", default_value_t = 500)] | ||
| 476 | pub max_connections: usize, | ||
| 472 | } | 477 | } |
| 473 | 478 | ||
| 474 | impl Config { | 479 | impl Config { |
| @@ -703,6 +708,7 @@ impl Config { | |||
| 703 | repository_whitelist: String::new(), | 708 | repository_whitelist: String::new(), |
| 704 | repository_blacklist: String::new(), | 709 | repository_blacklist: String::new(), |
| 705 | event_blacklist: String::new(), | 710 | event_blacklist: String::new(), |
| 711 | max_connections: 500, | ||
| 706 | } | 712 | } |
| 707 | } | 713 | } |
| 708 | } | 714 | } |