From af630d59b1f8a97ccf6d73b1d183a73d03c6f845 Mon Sep 17 00:00:00 2001 From: md_5 Date: Tue, 23 Apr 2013 11:22:07 +1000 Subject: [PATCH] Proxy IP Filter diff --git a/src/main/java/net/minecraft/server/ThreadLoginVerifier.java b/src/main/java/net/minecraft/server/ThreadLoginVerifier.java index 2ce2e3a..f87ebf9 100644 --- a/src/main/java/net/minecraft/server/ThreadLoginVerifier.java +++ b/src/main/java/net/minecraft/server/ThreadLoginVerifier.java @@ -28,6 +28,7 @@ class ThreadLoginVerifier extends Thread { public void run() { try { + if (org.spigotmc.SpamHaus.filterIp(pendingConnection)) return; // Spigot String s = (new BigInteger(MinecraftEncryption.a(PendingConnection.a(this.pendingConnection), PendingConnection.b(this.pendingConnection).H().getPublic(), PendingConnection.c(this.pendingConnection)))).toString(16); URL url = new URL("http://session.minecraft.net/game/checkserver.jsp?user=" + URLEncoder.encode(PendingConnection.d(this.pendingConnection), "UTF-8") + "&serverId=" + URLEncoder.encode(s, "UTF-8")); BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(url.openConnection(PendingConnection.b(this.pendingConnection).ap()).getInputStream())); diff --git a/src/main/java/org/spigotmc/SpamHaus.java b/src/main/java/org/spigotmc/SpamHaus.java new file mode 100644 index 0000000..55d8d12 --- /dev/null +++ b/src/main/java/org/spigotmc/SpamHaus.java @@ -0,0 +1,44 @@ +package org.spigotmc; + +import java.net.InetAddress; +import net.minecraft.server.PendingConnection; + +public class SpamHaus +{ + + private SpamHaus() + { + } + + public static boolean filterIp(PendingConnection con) + { + if ( SpigotConfig.preventProxies ) + { + try + { + InetAddress address = con.getSocket().getInetAddress(); + String ip = address.getHostAddress(); + + if ( !address.isLoopbackAddress() ) + { + String[] split = ip.split( "\\." ); + StringBuilder lookup = new StringBuilder(); + for ( int i = split.length - 1; i >= 0; i-- ) + { + lookup.append( split[i] ); + lookup.append( "." ); + } + lookup.append( "xbl.spamhaus.org." ); + if ( InetAddress.getByName( lookup.toString() ) != null ) + { + con.disconnect( "Your IP address (" + ip + ") is flagged as unsafe by spamhaus.org/xbl" ); + return true; + } + } + } catch ( Exception ex ) + { + } + } + return false; + } +} diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java index b7dbda4..e4eaecd 100644 --- a/src/main/java/org/spigotmc/SpigotConfig.java +++ b/src/main/java/org/spigotmc/SpigotConfig.java @@ -111,4 +111,10 @@ public class SpigotConfig config.addDefault( path, def ); return config.getString( path, config.getString( path ) ); } + + public static boolean preventProxies; + private static void preventProxies() + { + preventProxies = getBoolean( "settings.prevent-proxies", false ); + } } -- 1.8.1.2