Issue #21: IP blocker