papermc/CraftBukkit-Patches/0009-Proxy-IP-Filter.patch

87 lines
3.3 KiB
Diff
Raw Normal View History

2013-06-20 08:41:59 +00:00
From 6a5eaf4b83d8b0603b9088518922f4f19ac9f053 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
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
2013-06-20 08:41:59 +00:00
index 0686ba0..1254e63 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 {
2013-06-20 08:41:59 +00:00
+ if (org.spigotmc.SpamHaus.filterIp(pendingConnection)) return; // Spigot
String s = (new BigInteger(MinecraftEncryption.a(PendingConnection.a(this.pendingConnection), PendingConnection.b(this.pendingConnection).F().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.openStream()));
2013-06-20 08:41:59 +00:00
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;
+
2013-06-20 08:41:59 +00:00
+public class SpamHaus
+{
+
2013-06-20 08:41:59 +00:00
+ private SpamHaus()
+ {
+ }
+
+ public static boolean filterIp(PendingConnection con)
+ {
+ if ( SpigotConfig.preventProxies )
+ {
+ try
+ {
+ InetAddress address = con.getSocket().getInetAddress();
+ String ip = address.getHostAddress();
+
2013-06-20 08:41:59 +00:00
+ if ( !address.isLoopbackAddress() )
+ {
+ String[] split = ip.split( "\\." );
+ StringBuilder lookup = new StringBuilder();
2013-06-20 08:41:59 +00:00
+ for ( int i = split.length - 1; i >= 0; i-- )
+ {
+ lookup.append( split[i] );
+ lookup.append( "." );
+ }
2013-06-20 08:41:59 +00:00
+ 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" );
2013-04-24 23:58:55 +00:00
+ return true;
+ }
+ }
2013-06-20 08:41:59 +00:00
+ } catch ( Exception ex )
+ {
+ }
+ }
2013-04-24 23:58:55 +00:00
+ return false;
2013-06-20 08:41:59 +00:00
+ }
+}
diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java
index 38bd7ba..d647943 100644
--- a/src/main/java/org/spigotmc/SpigotConfig.java
+++ b/src/main/java/org/spigotmc/SpigotConfig.java
@@ -100,4 +100,10 @@ public class SpigotConfig
{
logCommands = getBoolean( "commands.log", logCommands );
}
+
+ public static boolean preventProxies = false;
+ private static void preventProxies()
+ {
+ preventProxies = getBoolean( "settings.prevent-proxies", preventProxies );
+ }
}
--
1.8.1.2