SnapOtter
db6f7bf38a
feat(enterprise): add IP allowlisting with CIDR matching and Redis cache
Enterprise-gated onRequest hook that restricts API access to
configured CIDR ranges using Node 22's native BlockList.
- Plugin (ip-allowlist.ts): builds a BlockList from the ipAllowlist
setting, caches in-process, syncs across instances via Redis pub/sub.
Exempt paths for health probes, SCIM, SAML/OIDC callbacks.
Handles IPv4-mapped IPv6 (::ffff:x.x.x.x) transparently.
- Admin API (enterprise/ip-allowlist.ts): GET/PUT endpoints gated by
security:manage permission and ip_allowlist feature flag. Validates
CIDRs, prevents self-lockout, emits IP_ALLOWLIST_UPDATED audit event.
- 32 unit tests covering CIDR matching, validation, exempt paths, IPv6,
and edge cases (/0, /32, mapped addresses).
2026-06-13 22:54:06 +08:00
..
2026-06-13 10:36:12 +08:00
2026-06-13 22:54:06 +08:00
2026-06-13 10:19:11 +08:00
2026-06-13 10:19:47 +08:00
2026-06-06 19:37:29 +08:00
2026-06-13 10:18:49 +08:00
2026-06-13 10:19:00 +08:00
2026-06-13 10:19:11 +08:00
2026-06-13 13:44:37 +08:00
2026-04-24 18:06:29 +08:00
2026-04-24 18:06:29 +08:00
2026-04-24 18:06:29 +08:00
2026-04-24 18:06:29 +08:00
2026-05-09 18:02:58 +08:00
2026-05-08 16:04:34 +08:00
2026-05-08 16:12:46 +08:00
2026-05-08 16:06:37 +08:00
2026-06-06 21:18:14 +08:00
2026-06-13 10:19:47 +08:00
2026-05-08 16:03:21 +08:00
2026-06-10 22:01:13 +08:00
2026-04-10 20:56:13 +08:00
2026-04-13 16:26:38 +08:00
2026-04-13 16:26:38 +08:00
2026-06-13 10:15:23 +08:00
2026-05-13 21:33:50 +08:00
2026-05-13 21:33:50 +08:00
2026-06-06 19:37:29 +08:00
2026-05-13 21:33:50 +08:00
2026-05-13 21:33:50 +08:00
2026-06-07 10:43:52 +08:00
2026-06-07 23:32:41 +08:00
2026-06-13 10:31:22 +08:00