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 /nix | |
| 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 'nix')
| -rw-r--r-- | nix/module.nix | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/nix/module.nix b/nix/module.nix index 09c56c1..4117b6d 100644 --- a/nix/module.nix +++ b/nix/module.nix | |||
| @@ -250,6 +250,12 @@ let | |||
| 250 | ''; | 250 | ''; |
| 251 | }; | 251 | }; |
| 252 | 252 | ||
| 253 | maxConnections = mkOption { | ||
| 254 | type = types.int; | ||
| 255 | default = 500; | ||
| 256 | description = "Maximum total connections to the relay"; | ||
| 257 | }; | ||
| 258 | |||
| 253 | user = mkOption { | 259 | user = mkOption { |
| 254 | type = types.str; | 260 | type = types.str; |
| 255 | default = "ngit-grasp-${name}"; | 261 | default = "ngit-grasp-${name}"; |
| @@ -295,6 +301,7 @@ let | |||
| 295 | NGIT_REPOSITORY_WHITELIST = concatStringsSep "," cfg.repositoryWhitelist; | 301 | NGIT_REPOSITORY_WHITELIST = concatStringsSep "," cfg.repositoryWhitelist; |
| 296 | NGIT_REPOSITORY_BLACKLIST = concatStringsSep "," cfg.repositoryBlacklist; | 302 | NGIT_REPOSITORY_BLACKLIST = concatStringsSep "," cfg.repositoryBlacklist; |
| 297 | NGIT_EVENT_BLACKLIST = concatStringsSep "," cfg.eventBlacklist; | 303 | NGIT_EVENT_BLACKLIST = concatStringsSep "," cfg.eventBlacklist; |
| 304 | NGIT_MAX_CONNECTIONS = toString cfg.maxConnections; | ||
| 298 | RUST_LOG = cfg.logLevel; | 305 | RUST_LOG = cfg.logLevel; |
| 299 | } // optionalAttrs (cfg.relayName != null) { | 306 | } // optionalAttrs (cfg.relayName != null) { |
| 300 | NGIT_RELAY_NAME = cfg.relayName; | 307 | NGIT_RELAY_NAME = cfg.relayName; |