upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/nix/module.nix
diff options
context:
space:
mode:
authorDanConwayDev <DanConwayDev@protonmail.com>2026-01-14 11:42:05 +0000
committerDanConwayDev <DanConwayDev@protonmail.com>2026-01-14 13:40:03 +0000
commit50000cd9d47681390c3c45feef98fe51c7b79a0f (patch)
tree53ede8cb63ac2c5fe2321a6ecd9c87956537bbc7 /nix/module.nix
parente3792b9abefd43b4594af2640ad4665c006fa3b0 (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/module.nix')
-rw-r--r--nix/module.nix7
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;