| id | FEAT-044 | ||||||
|---|---|---|---|---|---|---|---|
| workflow | github | ||||||
| github_issue | emulebb/emulebb#18 | ||||||
| title | IP filter input policy - PeerGuardian lists, whitelist, and private-IP exemption | ||||||
| status | OPEN | ||||||
| priority | Minor | ||||||
| category | feature | ||||||
| labels |
|
||||||
| milestone | |||||||
| created | 2026-04-26 | ||||||
| source | eMuleAI IPFilter comparison and historical mod scan |
Workflow status is tracked in GitHub: emulebb/emulebb#18. This local document is retained as an engineering spec/evidence record.
Extend the now-safe IP-filter update foundation with optional input-policy improvements from eMuleAI and historical mods:
- load and merge PeerGuardian
*.p2plists from the config directory - support a static/admin-managed filter overlay
- support a whitelist that overrides blacklist matches
- optionally avoid filtering private/local addresses for lab and LAN use
Current emulebb-main has:
- safe manual IP-filter promotion
FEAT-042automatic IP-filter update scheduling- reload of the running
CIPFilterinstance after successful promotion
It does not yet have *.p2p config-directory merge, whitelist override, static
overlay, or a private-IP filtering preference.
analysis\emuleai\srchybrid\IPFilter.cpp/h includes:
LoadP2PFiles().p2pandguarding.p2pparsingAddFromFileStatic(...)AddFromFileWhite(...)DontFilterPrivateIPshandling inIsFiltered(...)
The eMuleAI code is useful as behavior reference, but should not be copied
wholesale without reconciling BUG-004 overlap semantics and current safe
promotion helpers.
GitHub references from eMuleAI commit
8e34bdec2b7e4fe9e4307df9d80f691804be99ed:
- filter storage and policy fields:
IPFilter.h - range load/merge behavior:
IPFilter.cpp,IPFilter.cpp - richer
.p2p, static, whitelist, and private-IP policy paths:IPFilter.cpp - security preference surface:
PPgSecurity.cpp
Stock/community 0.72 remains closer to the single ipfilter.dat model. This is
an optional security/operations feature for users who already maintain richer
filter sources.
- build on the safe download/promotion/reload path from
BUG-027andFEAT-042 - decide explicit precedence among whitelist, static filter, downloaded filter, and manual imports
- preserve the existing disabled-by-default auto-update posture
- do not silently trust bundled external lists; keep sources user-configured
- coordinate with
BUG-004before claiming full IP-filter correctness
-
*.p2pparsing is covered by unit tests with PeerGuardian-style samples - whitelist precedence is deterministic and documented
- private/LAN exemption is explicit, persisted, and default-safe
- malformed or empty inputs cannot clear the live filter
- live reload semantics match manual and scheduled update paths
- GitHub-linked eMuleAI reference behavior is covered by deterministic local tests before enabling each policy source