From 82cacd400934b5a13198f9056886e8f6576ea78d Mon Sep 17 00:00:00 2001 From: marcins78 Date: Thu, 26 Sep 2013 14:57:24 +0000 Subject: [PATCH] Banning improvements. --- .../lotro/async/LotroHttpRequestHandler.java | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/LotroHttpRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/LotroHttpRequestHandler.java index c2bdebb15..01c8a587d 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/LotroHttpRequestHandler.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/LotroHttpRequestHandler.java @@ -20,10 +20,7 @@ import java.io.*; import java.lang.reflect.Type; import java.net.InetSocketAddress; import java.text.SimpleDateFormat; -import java.util.Collections; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; +import java.util.*; import static org.jboss.netty.handler.codec.http.HttpHeaders.Names.*; import static org.jboss.netty.handler.codec.http.HttpHeaders.is100ContinueExpected; @@ -32,7 +29,7 @@ import static org.jboss.netty.handler.codec.http.HttpResponseStatus.*; import static org.jboss.netty.handler.codec.http.HttpVersion.HTTP_1_1; public class LotroHttpRequestHandler extends SimpleChannelUpstreamHandler { - private final static long SIX_MONTHS = 1000L*60L*60L*24L*30L*6L; + private final static long SIX_MONTHS = 1000L * 60L * 60L * 24L * 30L * 6L; private Logger _log = Logger.getLogger(LotroHttpRequestHandler.class); private Map _objects; @@ -43,6 +40,9 @@ public class LotroHttpRequestHandler extends SimpleChannelUpstreamHandler { _uriRequestHandler = uriRequestHandler; } + private Collection _bannedIps = Arrays.asList("108.251.13.101", "188.123.232.46", "193.235.73.197", "5.228.68.175"); + private Collection _bannedRanges = Arrays.asList("46.165.200."); + @Override public void messageReceived(ChannelHandlerContext ctx, final MessageEvent e) throws Exception { final HttpRequest request = (HttpRequest) e.getMessage(); @@ -100,7 +100,7 @@ public class LotroHttpRequestHandler extends SimpleChannelUpstreamHandler { try { String ipAddress = ((InetSocketAddress) e.getRemoteAddress()).getAddress().getHostAddress(); - if (ipAddress.equals("108.251.13.101") || ipAddress.equals("188.123.232.46")) + if (isBanned(ipAddress)) throw new HttpProcessingException(404); _uriRequestHandler.handleRequest(uri, request, _objects, responseWriter, e); } catch (HttpProcessingException exp) { @@ -112,6 +112,16 @@ public class LotroHttpRequestHandler extends SimpleChannelUpstreamHandler { } } + private boolean isBanned(String ipAddress) { + if (_bannedIps.contains(ipAddress)) + return true; + for (String bannedRange : _bannedRanges) { + if (ipAddress.startsWith(bannedRange)) + return true; + } + return false; + } + private Map _fileCache = Collections.synchronizedMap(new HashMap()); private void writeFileResponse(HttpRequest request, File file, Map headers, MessageEvent e) { @@ -135,7 +145,7 @@ public class LotroHttpRequestHandler extends SimpleChannelUpstreamHandler { } } - writeHttpByteResponse(request, fileBytes, getHeadersForFile(headers, file), e); + writeHttpByteResponse(request, fileBytes, getHeadersForFile(headers, file), e); } catch (IOException exp) { writeHttpErrorResponse(request, 500, null, e); } @@ -177,7 +187,7 @@ public class LotroHttpRequestHandler extends SimpleChannelUpstreamHandler { fileHeaders.put(EXPIRES, String.valueOf(-1)); } else if (cache) { SimpleDateFormat dateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz"); - long sixMonthsFromNow = System.currentTimeMillis()+SIX_MONTHS; + long sixMonthsFromNow = System.currentTimeMillis() + SIX_MONTHS; fileHeaders.put(EXPIRES, dateFormat.format(new Date(sixMonthsFromNow))); }