Как сказал Норман, отказать в соединении невозможно, но вы можете немедленно закрыть его, добавив IpFilterHandler от Netty в конвейер сервера в качестве первого обработчика.Это также прекратит распространение событий состояния восходящего канала и для фильтрованного соединения.
@ChannelHandler.Sharable
public class MyFilterHandler extends IpFilteringHandlerImpl {
private final Set<InetSocketAddress> deniedRemoteAddress;
public MyFilterHandler(Set<InetSocketAddress> deniedRemoteAddress) {
this.deniedRemoteAddress = deniedRemoteAddress;
}
@Override
protected boolean accept(ChannelHandlerContext ctx, ChannelEvent e, InetSocketAddress inetSocketAddress) throws Exception {
return !deniedRemoteAddress.contains(inetSocketAddress);
}
}
если у вас есть список шаблонов IP-адресов для блокировки, вы можете использовать IpFilterRuleHandler,
//Example: allow only localhost:
new IPFilterRuleHandler().addAll(new IpFilterRuleList("+n:localhost, -n:*"))