From 937faefdc13829cd404d051fea4483cf99d819b0 Mon Sep 17 00:00:00 2001 From: LinsaFTW <25271111+linsaftw@users.noreply.github.com> Date: Wed, 21 Dec 2022 21:56:04 -0300 Subject: [PATCH] Antibot Packets Check --- ...-Use-duplicate-for-MinecraftDecoder.patch} | 17 +- ...ctions-Don-t-flush-if-not-necessary.patch} | 2 +- ...-Checks.patch => 0011-Packet-Checks.patch} | 12 +- ...atch => 0012-Change-default-timeout.patch} | 6 +- ...013-Don-t-allow-name-containing-dot.patch} | 6 +- ...4-Use-pipeline-to-reduce-redundancy.patch} | 6 +- ...om-uuids-even-if-onlineMode-is-true.patch} | 2 +- ...teException-to-QuietException-and-e.patch} | 6 +- ...Don-t-declare-uuid-unless-it-s-null.patch} | 2 +- ...tch => 0018-FlameCord-General-Patch.patch} | 14 +- ...tch => 0019-FlameCord-module-system.patch} | 4 +- ...020-FlameCord-message-configuration.patch} | 4 +- ...ch => 0021-Fix-ByteBuf-memory-leaks.patch} | 2 +- ...> 0022-Check-if-packetID-is-invalid.patch} | 6 +- ...ch => 0023-FlameCord-logger-options.patch} | 2 +- ...ded-an-api-method-to-unload-Plugins.patch} | 4 +- ...s.patch => 0025-Apply-packet-limits.patch} | 8 +- ...em.patch => 0026-Custom-motd-system.patch} | 10 +- ...st-Open.patch => 0027-TCP-Fast-Open.patch} | 6 +- ...028-InitialHandler-Processing-State.patch} | 2 +- ...System.patch => 0029-Antibot-System.patch} | 593 ++++++++++++++---- ...s.patch => 0030-Allow-Invalid-Names.patch} | 10 +- ...ion-fail-reason-when-detailed-logge.patch} | 6 +- .../0035-Safe-bytebuf-release.patch | 224 ------- 24 files changed, 549 insertions(+), 405 deletions(-) rename Waterfall-Proxy-Patches/{0030-Duplicate-buf-instead-of-Copy.patch => 0009-Use-duplicate-for-MinecraftDecoder.patch} (66%) rename Waterfall-Proxy-Patches/{0009-Close-connections-Don-t-flush-if-not-necessary.patch => 0010-Close-connections-Don-t-flush-if-not-necessary.patch} (99%) rename Waterfall-Proxy-Patches/{0010-Packet-Checks.patch => 0011-Packet-Checks.patch} (89%) rename Waterfall-Proxy-Patches/{0011-Change-default-timeout.patch => 0012-Change-default-timeout.patch} (86%) rename Waterfall-Proxy-Patches/{0012-Don-t-allow-name-containing-dot.patch => 0013-Don-t-allow-name-containing-dot.patch} (87%) rename Waterfall-Proxy-Patches/{0013-Use-pipeline-to-reduce-redundancy.patch => 0014-Use-pipeline-to-reduce-redundancy.patch} (96%) rename Waterfall-Proxy-Patches/{0014-Allow-custom-uuids-even-if-onlineMode-is-true.patch => 0015-Allow-custom-uuids-even-if-onlineMode-is-true.patch} (93%) rename Waterfall-Proxy-Patches/{0015-Change-IllegalStateException-to-QuietException-and-e.patch => 0016-Change-IllegalStateException-to-QuietException-and-e.patch} (89%) rename Waterfall-Proxy-Patches/{0016-Don-t-declare-uuid-unless-it-s-null.patch => 0017-Don-t-declare-uuid-unless-it-s-null.patch} (94%) rename Waterfall-Proxy-Patches/{0017-FlameCord-General-Patch.patch => 0018-FlameCord-General-Patch.patch} (97%) rename Waterfall-Proxy-Patches/{0018-FlameCord-module-system.patch => 0019-FlameCord-module-system.patch} (98%) rename Waterfall-Proxy-Patches/{0019-FlameCord-message-configuration.patch => 0020-FlameCord-message-configuration.patch} (99%) rename Waterfall-Proxy-Patches/{0020-Fix-ByteBuf-memory-leaks.patch => 0021-Fix-ByteBuf-memory-leaks.patch} (97%) rename Waterfall-Proxy-Patches/{0021-Check-if-packetID-is-invalid.patch => 0022-Check-if-packetID-is-invalid.patch} (91%) rename Waterfall-Proxy-Patches/{0022-FlameCord-logger-options.patch => 0023-FlameCord-logger-options.patch} (99%) rename Waterfall-Proxy-Patches/{0023-Added-an-api-method-to-unload-Plugins.patch => 0024-Added-an-api-method-to-unload-Plugins.patch} (97%) rename Waterfall-Proxy-Patches/{0024-Apply-packet-limits.patch => 0025-Apply-packet-limits.patch} (94%) rename Waterfall-Proxy-Patches/{0025-Custom-motd-system.patch => 0026-Custom-motd-system.patch} (97%) rename Waterfall-Proxy-Patches/{0026-TCP-Fast-Open.patch => 0027-TCP-Fast-Open.patch} (95%) rename Waterfall-Proxy-Patches/{0027-InitialHandler-Processing-State.patch => 0028-InitialHandler-Processing-State.patch} (98%) rename Waterfall-Proxy-Patches/{0028-Antibot-System.patch => 0029-Antibot-System.patch} (73%) rename Waterfall-Proxy-Patches/{0029-Allow-Invalid-Names.patch => 0030-Allow-Invalid-Names.patch} (90%) rename Waterfall-Proxy-Patches/{0036-Only-show-connection-fail-reason-when-detailed-logge.patch => 0035-Only-show-connection-fail-reason-when-detailed-logge.patch} (90%) delete mode 100644 Waterfall-Proxy-Patches/0035-Safe-bytebuf-release.patch diff --git a/Waterfall-Proxy-Patches/0030-Duplicate-buf-instead-of-Copy.patch b/Waterfall-Proxy-Patches/0009-Use-duplicate-for-MinecraftDecoder.patch similarity index 66% rename from Waterfall-Proxy-Patches/0030-Duplicate-buf-instead-of-Copy.patch rename to Waterfall-Proxy-Patches/0009-Use-duplicate-for-MinecraftDecoder.patch index b16b304..251aaab 100644 --- a/Waterfall-Proxy-Patches/0030-Duplicate-buf-instead-of-Copy.patch +++ b/Waterfall-Proxy-Patches/0009-Use-duplicate-for-MinecraftDecoder.patch @@ -1,24 +1,23 @@ -From 8c2a775eba07694db8fb29e65ddd210638ad5335 Mon Sep 17 00:00:00 2001 +From 510085f25ef21678828f5b3026662f51a94c1137 Mon Sep 17 00:00:00 2001 From: LinsaFTW <25271111+linsaftw@users.noreply.github.com> -Date: Wed, 9 Mar 2022 14:36:43 -0300 -Subject: [PATCH] Duplicate buf instead of Copy +Date: Wed, 21 Dec 2022 21:43:05 -0300 +Subject: [PATCH] Use duplicate() for MinecraftDecoder diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java b/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java -index 3992f521..074d2437 100644 +index ac83e3253..c31ec1ce7 100644 --- a/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java +++ b/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java -@@ -52,7 +52,8 @@ public class MinecraftDecoder extends MessageToMessageDecoder - } +@@ -38,7 +38,7 @@ public class MinecraftDecoder extends MessageToMessageDecoder } + Protocol.DirectionData prot = ( server ) ? protocol.TO_SERVER : protocol.TO_CLIENT; - ByteBuf slice = in.copy(); // Can't slice this one due to EntityMap :( -+ // FlameCord - Duplicate buf instead of Copy -+ ByteBuf slice = in.duplicate(); // Can't slice this one due to EntityMap :( ++ ByteBuf slice = in.duplicate(); // FlameCord - Duplicate buf instead of Copy Object packetTypeInfo = null; try -@@ -92,7 +93,8 @@ public class MinecraftDecoder extends MessageToMessageDecoder +@@ -73,7 +73,8 @@ public class MinecraftDecoder extends MessageToMessageDecoder in.skipBytes( in.readableBytes() ); } diff --git a/Waterfall-Proxy-Patches/0009-Close-connections-Don-t-flush-if-not-necessary.patch b/Waterfall-Proxy-Patches/0010-Close-connections-Don-t-flush-if-not-necessary.patch similarity index 99% rename from Waterfall-Proxy-Patches/0009-Close-connections-Don-t-flush-if-not-necessary.patch rename to Waterfall-Proxy-Patches/0010-Close-connections-Don-t-flush-if-not-necessary.patch index 3631a4c..7354da4 100644 --- a/Waterfall-Proxy-Patches/0009-Close-connections-Don-t-flush-if-not-necessary.patch +++ b/Waterfall-Proxy-Patches/0010-Close-connections-Don-t-flush-if-not-necessary.patch @@ -1,4 +1,4 @@ -From b70bd30b4f028db1e399d9650cc049859d1f56bb Mon Sep 17 00:00:00 2001 +From f3902b5c785041c3c029ed0d12d7eece40eca40b Mon Sep 17 00:00:00 2001 From: foss-mc <69294560+foss-mc@users.noreply.github.com> Date: Wed, 16 Dec 2020 18:06:17 +0800 Subject: [PATCH] Close connections & Don't flush if not necessary diff --git a/Waterfall-Proxy-Patches/0010-Packet-Checks.patch b/Waterfall-Proxy-Patches/0011-Packet-Checks.patch similarity index 89% rename from Waterfall-Proxy-Patches/0010-Packet-Checks.patch rename to Waterfall-Proxy-Patches/0011-Packet-Checks.patch index 393cb66..af75e87 100644 --- a/Waterfall-Proxy-Patches/0010-Packet-Checks.patch +++ b/Waterfall-Proxy-Patches/0011-Packet-Checks.patch @@ -1,18 +1,18 @@ -From 772e70bce0c9626cb3c724b7c30c4802f7311e63 Mon Sep 17 00:00:00 2001 +From cf87130274644325adbf7fabb7b95d95e976ee57 Mon Sep 17 00:00:00 2001 From: foss-mc <69294560+foss-mc@users.noreply.github.com> Date: Wed, 16 Dec 2020 18:10:30 +0800 Subject: [PATCH] Packet Checks diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java b/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java -index ac83e325..4b9b80b9 100644 +index c31ec1ce7..640f0ea26 100644 --- a/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java +++ b/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java @@ -38,6 +38,19 @@ public class MinecraftDecoder extends MessageToMessageDecoder } Protocol.DirectionData prot = ( server ) ? protocol.TO_SERVER : protocol.TO_CLIENT; -+ ++ + // FlameCord - Check size before decoding + if (prot == protocol.TO_SERVER) { + final int readableBytes = in.readableBytes(); @@ -25,11 +25,11 @@ index ac83e325..4b9b80b9 100644 + } + } + - ByteBuf slice = in.copy(); // Can't slice this one due to EntityMap :( + ByteBuf slice = in.duplicate(); // FlameCord - Duplicate buf instead of Copy Object packetTypeInfo = null; diff --git a/proxy/src/main/java/net/md_5/bungee/netty/HandlerBoss.java b/proxy/src/main/java/net/md_5/bungee/netty/HandlerBoss.java -index f8d6becd..33605007 100644 +index 29cf4b4fc..4820267b3 100644 --- a/proxy/src/main/java/net/md_5/bungee/netty/HandlerBoss.java +++ b/proxy/src/main/java/net/md_5/bungee/netty/HandlerBoss.java @@ -78,6 +78,15 @@ public class HandlerBoss extends ChannelInboundHandlerAdapter @@ -49,5 +49,5 @@ index f8d6becd..33605007 100644 { HAProxyMessage proxy = (HAProxyMessage) msg; -- -2.32.0 +2.37.3.windows.1 diff --git a/Waterfall-Proxy-Patches/0011-Change-default-timeout.patch b/Waterfall-Proxy-Patches/0012-Change-default-timeout.patch similarity index 86% rename from Waterfall-Proxy-Patches/0011-Change-default-timeout.patch rename to Waterfall-Proxy-Patches/0012-Change-default-timeout.patch index 8ec0a61..9be72fe 100644 --- a/Waterfall-Proxy-Patches/0011-Change-default-timeout.patch +++ b/Waterfall-Proxy-Patches/0012-Change-default-timeout.patch @@ -1,11 +1,11 @@ -From 36e054d017b32104a878faed79fb18b5d8b5c9df Mon Sep 17 00:00:00 2001 +From f790d57423c57a21d642db20b6de9d3515fd3e93 Mon Sep 17 00:00:00 2001 From: foss-mc <69294560+foss-mc@users.noreply.github.com> Date: Wed, 16 Dec 2020 18:14:02 +0800 Subject: [PATCH] Change default timeout diff --git a/proxy/src/main/java/net/md_5/bungee/conf/Configuration.java b/proxy/src/main/java/net/md_5/bungee/conf/Configuration.java -index 85d2197a..3b5ce41e 100644 +index 8911bee85..b67195ec8 100644 --- a/proxy/src/main/java/net/md_5/bungee/conf/Configuration.java +++ b/proxy/src/main/java/net/md_5/bungee/conf/Configuration.java @@ -35,7 +35,8 @@ public abstract class Configuration implements ProxyConfig @@ -19,5 +19,5 @@ index 85d2197a..3b5ce41e 100644 * UUID used for metrics. */ -- -2.32.0 +2.37.3.windows.1 diff --git a/Waterfall-Proxy-Patches/0012-Don-t-allow-name-containing-dot.patch b/Waterfall-Proxy-Patches/0013-Don-t-allow-name-containing-dot.patch similarity index 87% rename from Waterfall-Proxy-Patches/0012-Don-t-allow-name-containing-dot.patch rename to Waterfall-Proxy-Patches/0013-Don-t-allow-name-containing-dot.patch index 617a503..e6063a4 100644 --- a/Waterfall-Proxy-Patches/0012-Don-t-allow-name-containing-dot.patch +++ b/Waterfall-Proxy-Patches/0013-Don-t-allow-name-containing-dot.patch @@ -1,11 +1,11 @@ -From 1110d8e2d16633d02c7839b38f800ee5cedc0a84 Mon Sep 17 00:00:00 2001 +From cbec17576f5c5472cf0037f9962ca5c806133200 Mon Sep 17 00:00:00 2001 From: foss-mc <69294560+foss-mc@users.noreply.github.com> Date: Wed, 16 Dec 2020 18:25:51 +0800 Subject: [PATCH] Don't allow name containing dot diff --git a/proxy/src/main/java/net/md_5/bungee/util/AllowedCharacters.java b/proxy/src/main/java/net/md_5/bungee/util/AllowedCharacters.java -index d1cd1090..44cb1ce6 100644 +index 1a4242a2e..d947fad7d 100644 --- a/proxy/src/main/java/net/md_5/bungee/util/AllowedCharacters.java +++ b/proxy/src/main/java/net/md_5/bungee/util/AllowedCharacters.java @@ -21,7 +21,8 @@ public final class AllowedCharacters @@ -19,5 +19,5 @@ index d1cd1090..44cb1ce6 100644 } -- -2.32.0 +2.37.3.windows.1 diff --git a/Waterfall-Proxy-Patches/0013-Use-pipeline-to-reduce-redundancy.patch b/Waterfall-Proxy-Patches/0014-Use-pipeline-to-reduce-redundancy.patch similarity index 96% rename from Waterfall-Proxy-Patches/0013-Use-pipeline-to-reduce-redundancy.patch rename to Waterfall-Proxy-Patches/0014-Use-pipeline-to-reduce-redundancy.patch index f4ee95a..2a4b8ca 100644 --- a/Waterfall-Proxy-Patches/0013-Use-pipeline-to-reduce-redundancy.patch +++ b/Waterfall-Proxy-Patches/0014-Use-pipeline-to-reduce-redundancy.patch @@ -1,11 +1,11 @@ -From 290e7f633bb2ecffad78a8a2518ea9efdf890767 Mon Sep 17 00:00:00 2001 +From 64097a804bbce407306eca64329053a0105a7c8f Mon Sep 17 00:00:00 2001 From: foss-mc <69294560+foss-mc@users.noreply.github.com> Date: Wed, 16 Dec 2020 18:30:07 +0800 Subject: [PATCH] Use pipeline to reduce redundancy diff --git a/proxy/src/main/java/net/md_5/bungee/netty/ChannelWrapper.java b/proxy/src/main/java/net/md_5/bungee/netty/ChannelWrapper.java -index 5c05f2b9..606866a5 100644 +index 5c05f2b94..606866a52 100644 --- a/proxy/src/main/java/net/md_5/bungee/netty/ChannelWrapper.java +++ b/proxy/src/main/java/net/md_5/bungee/netty/ChannelWrapper.java @@ -5,6 +5,8 @@ import io.netty.channel.Channel; @@ -74,5 +74,5 @@ index 5c05f2b9..606866a5 100644 } } -- -2.32.0 +2.37.3.windows.1 diff --git a/Waterfall-Proxy-Patches/0014-Allow-custom-uuids-even-if-onlineMode-is-true.patch b/Waterfall-Proxy-Patches/0015-Allow-custom-uuids-even-if-onlineMode-is-true.patch similarity index 93% rename from Waterfall-Proxy-Patches/0014-Allow-custom-uuids-even-if-onlineMode-is-true.patch rename to Waterfall-Proxy-Patches/0015-Allow-custom-uuids-even-if-onlineMode-is-true.patch index 2cd3077..2b59778 100644 --- a/Waterfall-Proxy-Patches/0014-Allow-custom-uuids-even-if-onlineMode-is-true.patch +++ b/Waterfall-Proxy-Patches/0015-Allow-custom-uuids-even-if-onlineMode-is-true.patch @@ -1,4 +1,4 @@ -From 3ae73e4c7fbb142045ee09281fdd5c6916d91967 Mon Sep 17 00:00:00 2001 +From 407344a066199a42e7fa17a2d1b3fc4be2d095bf Mon Sep 17 00:00:00 2001 From: foss-mc <69294560+foss-mc@users.noreply.github.com> Date: Wed, 16 Dec 2020 18:35:33 +0800 Subject: [PATCH] Allow custom uuids even if onlineMode is true diff --git a/Waterfall-Proxy-Patches/0015-Change-IllegalStateException-to-QuietException-and-e.patch b/Waterfall-Proxy-Patches/0016-Change-IllegalStateException-to-QuietException-and-e.patch similarity index 89% rename from Waterfall-Proxy-Patches/0015-Change-IllegalStateException-to-QuietException-and-e.patch rename to Waterfall-Proxy-Patches/0016-Change-IllegalStateException-to-QuietException-and-e.patch index 18be282..6d5cf4c 100644 --- a/Waterfall-Proxy-Patches/0015-Change-IllegalStateException-to-QuietException-and-e.patch +++ b/Waterfall-Proxy-Patches/0016-Change-IllegalStateException-to-QuietException-and-e.patch @@ -1,4 +1,4 @@ -From 6545a44d71d2e9d6f08bf4f93306c12c34673b7a Mon Sep 17 00:00:00 2001 +From 0f07c38f3d16849626c28ae710616788f30b00fc Mon Sep 17 00:00:00 2001 From: foss-mc <69294560+foss-mc@users.noreply.github.com> Date: Wed, 16 Dec 2020 18:40:55 +0800 Subject: [PATCH] Change IllegalStateException to QuietException and explain @@ -6,7 +6,7 @@ Subject: [PATCH] Change IllegalStateException to QuietException and explain diff --git a/proxy/src/main/java/net/md_5/bungee/UserConnection.java b/proxy/src/main/java/net/md_5/bungee/UserConnection.java -index f4f67b35..5293552d 100644 +index 2d72e26ea..94702434d 100644 --- a/proxy/src/main/java/net/md_5/bungee/UserConnection.java +++ b/proxy/src/main/java/net/md_5/bungee/UserConnection.java @@ -313,7 +313,8 @@ public final class UserConnection implements ProxiedPlayer @@ -20,5 +20,5 @@ index f4f67b35..5293552d 100644 return; } -- -2.34.1 +2.37.3.windows.1 diff --git a/Waterfall-Proxy-Patches/0016-Don-t-declare-uuid-unless-it-s-null.patch b/Waterfall-Proxy-Patches/0017-Don-t-declare-uuid-unless-it-s-null.patch similarity index 94% rename from Waterfall-Proxy-Patches/0016-Don-t-declare-uuid-unless-it-s-null.patch rename to Waterfall-Proxy-Patches/0017-Don-t-declare-uuid-unless-it-s-null.patch index 8e3a0d5..9bc71fe 100644 --- a/Waterfall-Proxy-Patches/0016-Don-t-declare-uuid-unless-it-s-null.patch +++ b/Waterfall-Proxy-Patches/0017-Don-t-declare-uuid-unless-it-s-null.patch @@ -1,4 +1,4 @@ -From 00f2e39b27c03173abb7025317b6e2e2ec48b50e Mon Sep 17 00:00:00 2001 +From ac09d06618510ed85aadc83a5a6bb812bf109218 Mon Sep 17 00:00:00 2001 From: foss-mc <69294560+foss-mc@users.noreply.github.com> Date: Wed, 16 Dec 2020 18:43:17 +0800 Subject: [PATCH] Don't declare uuid unless it's null diff --git a/Waterfall-Proxy-Patches/0017-FlameCord-General-Patch.patch b/Waterfall-Proxy-Patches/0018-FlameCord-General-Patch.patch similarity index 97% rename from Waterfall-Proxy-Patches/0017-FlameCord-General-Patch.patch rename to Waterfall-Proxy-Patches/0018-FlameCord-General-Patch.patch index 499fcba..92d645b 100644 --- a/Waterfall-Proxy-Patches/0017-FlameCord-General-Patch.patch +++ b/Waterfall-Proxy-Patches/0018-FlameCord-General-Patch.patch @@ -1,4 +1,4 @@ -From 7f109bd269421da64f19fc2f393a829b7fbe6057 Mon Sep 17 00:00:00 2001 +From 20e7630ff3f3f16d5f1b45c4fbe81037795088d8 Mon Sep 17 00:00:00 2001 From: Juan Cruz Linsalata Date: Mon, 12 Oct 2020 15:40:53 -0300 Subject: [PATCH] FlameCord General Patch @@ -48,10 +48,10 @@ index 000000000..8e69160d0 \ No newline at end of file diff --git a/flamecord/src/main/java/dev/_2lstudios/flamecord/configuration/FlameConfig.java b/flamecord/src/main/java/dev/_2lstudios/flamecord/configuration/FlameConfig.java new file mode 100644 -index 000000000..cfbd55c39 +index 000000000..5589ce1b7 --- /dev/null +++ b/flamecord/src/main/java/dev/_2lstudios/flamecord/configuration/FlameConfig.java -@@ -0,0 +1,38 @@ +@@ -0,0 +1,42 @@ +package dev._2lstudios.flamecord.configuration; + +import java.util.ArrayList; @@ -61,6 +61,10 @@ index 000000000..cfbd55c39 +import net.md_5.bungee.config.Configuration; + +public class FlameConfig { ++ double setIfUnexistant(final String arg1, final double arg2, final Configuration configuration) { ++ return (double) setIfUnexistant(arg1, (Object) arg2, configuration); ++ } ++ + int setIfUnexistant(final String arg1, final int arg2, final Configuration configuration) { + return (int) setIfUnexistant(arg1, (Object) arg2, configuration); + } @@ -130,7 +134,7 @@ index 000000000..c8148e902 + } +} diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java b/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java -index 4b9b80b9d..aa35f870b 100644 +index 640f0ea26..70a1192e7 100644 --- a/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java +++ b/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java @@ -1,5 +1,6 @@ @@ -205,7 +209,7 @@ index 000000000..91d60bfb3 + } +} diff --git a/proxy/src/main/java/net/md_5/bungee/BungeeCord.java b/proxy/src/main/java/net/md_5/bungee/BungeeCord.java -index 9f41970ea..0c04ec55d 100644 +index e11e30402..8861da39d 100644 --- a/proxy/src/main/java/net/md_5/bungee/BungeeCord.java +++ b/proxy/src/main/java/net/md_5/bungee/BungeeCord.java @@ -9,6 +9,8 @@ import com.google.common.collect.Sets; diff --git a/Waterfall-Proxy-Patches/0018-FlameCord-module-system.patch b/Waterfall-Proxy-Patches/0019-FlameCord-module-system.patch similarity index 98% rename from Waterfall-Proxy-Patches/0018-FlameCord-module-system.patch rename to Waterfall-Proxy-Patches/0019-FlameCord-module-system.patch index b61a6d0..a9c2cd3 100644 --- a/Waterfall-Proxy-Patches/0018-FlameCord-module-system.patch +++ b/Waterfall-Proxy-Patches/0019-FlameCord-module-system.patch @@ -1,4 +1,4 @@ -From 87acee89e371ebceb65cf6fa7d1557dff12b26b5 Mon Sep 17 00:00:00 2001 +From 598c8a3786b32bb1128ac3ab1ae1bfea6909f2cb Mon Sep 17 00:00:00 2001 From: linsaftw <25271111+linsaftw@users.noreply.github.com> Date: Sat, 1 May 2021 14:17:48 -0300 Subject: [PATCH] FlameCord module system @@ -87,7 +87,7 @@ index 000000000..6c5bb9617 + } +} diff --git a/proxy/src/main/java/net/md_5/bungee/BungeeCord.java b/proxy/src/main/java/net/md_5/bungee/BungeeCord.java -index 0c04ec55d..d753563af 100644 +index 8861da39d..88ac66bab 100644 --- a/proxy/src/main/java/net/md_5/bungee/BungeeCord.java +++ b/proxy/src/main/java/net/md_5/bungee/BungeeCord.java @@ -11,6 +11,8 @@ import com.google.gson.Gson; diff --git a/Waterfall-Proxy-Patches/0019-FlameCord-message-configuration.patch b/Waterfall-Proxy-Patches/0020-FlameCord-message-configuration.patch similarity index 99% rename from Waterfall-Proxy-Patches/0019-FlameCord-message-configuration.patch rename to Waterfall-Proxy-Patches/0020-FlameCord-message-configuration.patch index 7bb64d5..8487860 100644 --- a/Waterfall-Proxy-Patches/0019-FlameCord-message-configuration.patch +++ b/Waterfall-Proxy-Patches/0020-FlameCord-message-configuration.patch @@ -1,4 +1,4 @@ -From 2505fb3b13bcd83e87befef695fa5c4636149bef Mon Sep 17 00:00:00 2001 +From dae4aa8593ae097fcc2961539dd2fc7787e8d63e Mon Sep 17 00:00:00 2001 From: linsaftw <25271111+linsaftw@users.noreply.github.com> Date: Sat, 1 May 2021 13:40:39 -0300 Subject: [PATCH] FlameCord message configuration @@ -201,7 +201,7 @@ index 91d60bfb3..cc76325b2 100644 } } diff --git a/proxy/src/main/java/net/md_5/bungee/BungeeCord.java b/proxy/src/main/java/net/md_5/bungee/BungeeCord.java -index d753563af..c30b75c4f 100644 +index 88ac66bab..501aacfa0 100644 --- a/proxy/src/main/java/net/md_5/bungee/BungeeCord.java +++ b/proxy/src/main/java/net/md_5/bungee/BungeeCord.java @@ -626,8 +626,8 @@ public class BungeeCord extends ProxyServer diff --git a/Waterfall-Proxy-Patches/0020-Fix-ByteBuf-memory-leaks.patch b/Waterfall-Proxy-Patches/0021-Fix-ByteBuf-memory-leaks.patch similarity index 97% rename from Waterfall-Proxy-Patches/0020-Fix-ByteBuf-memory-leaks.patch rename to Waterfall-Proxy-Patches/0021-Fix-ByteBuf-memory-leaks.patch index 78f3955..b77c30d 100644 --- a/Waterfall-Proxy-Patches/0020-Fix-ByteBuf-memory-leaks.patch +++ b/Waterfall-Proxy-Patches/0021-Fix-ByteBuf-memory-leaks.patch @@ -1,4 +1,4 @@ -From 8f77c4e0ca063a83214f236a87d727716197692c Mon Sep 17 00:00:00 2001 +From 4121bc5ef2215f0621d449c5cf2073c47ed93947 Mon Sep 17 00:00:00 2001 From: linsaftw Date: Sat, 20 Mar 2021 12:36:25 -0300 Subject: [PATCH] Fix ByteBuf memory leaks diff --git a/Waterfall-Proxy-Patches/0021-Check-if-packetID-is-invalid.patch b/Waterfall-Proxy-Patches/0022-Check-if-packetID-is-invalid.patch similarity index 91% rename from Waterfall-Proxy-Patches/0021-Check-if-packetID-is-invalid.patch rename to Waterfall-Proxy-Patches/0022-Check-if-packetID-is-invalid.patch index e836a7c..07bc7ec 100644 --- a/Waterfall-Proxy-Patches/0021-Check-if-packetID-is-invalid.patch +++ b/Waterfall-Proxy-Patches/0022-Check-if-packetID-is-invalid.patch @@ -1,11 +1,11 @@ -From c727441bc5d674eface4fa65b416aceca4477406 Mon Sep 17 00:00:00 2001 +From 7e20c899237e194fbda629aa6be4444fbe293b7d Mon Sep 17 00:00:00 2001 From: PermisosDev <55111245+PermisosDev@users.noreply.github.com> Date: Thu, 15 Apr 2021 08:34:57 -0300 Subject: [PATCH] Check if packetID is invalid. diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java b/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java -index aa35f870..3992f521 100644 +index 70a1192e7..6316143f7 100644 --- a/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java +++ b/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java @@ -65,7 +65,12 @@ public class MinecraftDecoder extends MessageToMessageDecoder @@ -23,5 +23,5 @@ index aa35f870..3992f521 100644 if ( packet != null ) { -- -2.32.0 +2.37.3.windows.1 diff --git a/Waterfall-Proxy-Patches/0022-FlameCord-logger-options.patch b/Waterfall-Proxy-Patches/0023-FlameCord-logger-options.patch similarity index 99% rename from Waterfall-Proxy-Patches/0022-FlameCord-logger-options.patch rename to Waterfall-Proxy-Patches/0023-FlameCord-logger-options.patch index 68b7fde..859e00f 100644 --- a/Waterfall-Proxy-Patches/0022-FlameCord-logger-options.patch +++ b/Waterfall-Proxy-Patches/0023-FlameCord-logger-options.patch @@ -1,4 +1,4 @@ -From 234c19a225886b0a27283fde38097e074537ba8f Mon Sep 17 00:00:00 2001 +From 8edec45c116023de25620c7697ce1f887ea267ce Mon Sep 17 00:00:00 2001 From: linsaftw <25271111+linsaftw@users.noreply.github.com> Date: Fri, 30 Apr 2021 23:51:51 -0300 Subject: [PATCH] FlameCord logger options diff --git a/Waterfall-Proxy-Patches/0023-Added-an-api-method-to-unload-Plugins.patch b/Waterfall-Proxy-Patches/0024-Added-an-api-method-to-unload-Plugins.patch similarity index 97% rename from Waterfall-Proxy-Patches/0023-Added-an-api-method-to-unload-Plugins.patch rename to Waterfall-Proxy-Patches/0024-Added-an-api-method-to-unload-Plugins.patch index e1df098..9464018 100644 --- a/Waterfall-Proxy-Patches/0023-Added-an-api-method-to-unload-Plugins.patch +++ b/Waterfall-Proxy-Patches/0024-Added-an-api-method-to-unload-Plugins.patch @@ -1,4 +1,4 @@ -From c3d43897657dc6636189621bd60f9cb86b6ac2d0 Mon Sep 17 00:00:00 2001 +From 664f35c5a6155c5e41aa10d1cd15cf590cc011a0 Mon Sep 17 00:00:00 2001 From: abhiram Date: Thu, 13 May 2021 01:05:03 +0530 Subject: [PATCH] Added an api method to unload Plugins @@ -6,7 +6,7 @@ Subject: [PATCH] Added an api method to unload Plugins Format Code to Bungee's code style diff --git a/api/src/main/java/net/md_5/bungee/api/plugin/PluginManager.java b/api/src/main/java/net/md_5/bungee/api/plugin/PluginManager.java -index 90031156..a190dfae 100644 +index 90031156f..a190dfae8 100644 --- a/api/src/main/java/net/md_5/bungee/api/plugin/PluginManager.java +++ b/api/src/main/java/net/md_5/bungee/api/plugin/PluginManager.java @@ -25,6 +25,7 @@ import java.util.Set; diff --git a/Waterfall-Proxy-Patches/0024-Apply-packet-limits.patch b/Waterfall-Proxy-Patches/0025-Apply-packet-limits.patch similarity index 94% rename from Waterfall-Proxy-Patches/0024-Apply-packet-limits.patch rename to Waterfall-Proxy-Patches/0025-Apply-packet-limits.patch index 16e0f13..17fe687 100644 --- a/Waterfall-Proxy-Patches/0024-Apply-packet-limits.patch +++ b/Waterfall-Proxy-Patches/0025-Apply-packet-limits.patch @@ -1,11 +1,11 @@ -From 5bddd07166fdd36bf8f174ded2841903aca46153 Mon Sep 17 00:00:00 2001 +From 2caae71d8c0bdc5a325610ef1c77775f9ba4ee69 Mon Sep 17 00:00:00 2001 From: LinsaFTW <25271111+linsaftw@users.noreply.github.com> Date: Thu, 10 Jun 2021 11:30:19 -0300 Subject: [PATCH] Apply packet limits diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/packet/EncryptionRequest.java b/protocol/src/main/java/net/md_5/bungee/protocol/packet/EncryptionRequest.java -index 86182cdd..b28f4081 100644 +index e78519964..222285cc1 100644 --- a/protocol/src/main/java/net/md_5/bungee/protocol/packet/EncryptionRequest.java +++ b/protocol/src/main/java/net/md_5/bungee/protocol/packet/EncryptionRequest.java @@ -61,4 +61,14 @@ public class EncryptionRequest extends DefinedPacket @@ -24,7 +24,7 @@ index 86182cdd..b28f4081 100644 + } } diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/packet/Handshake.java b/protocol/src/main/java/net/md_5/bungee/protocol/packet/Handshake.java -index 7dbbfd3c..b7842055 100644 +index 7dbbfd3cd..b78420556 100644 --- a/protocol/src/main/java/net/md_5/bungee/protocol/packet/Handshake.java +++ b/protocol/src/main/java/net/md_5/bungee/protocol/packet/Handshake.java @@ -7,6 +7,7 @@ import lombok.EqualsAndHashCode; @@ -51,7 +51,7 @@ index 7dbbfd3c..b7842055 100644 + } } diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/packet/LoginRequest.java b/protocol/src/main/java/net/md_5/bungee/protocol/packet/LoginRequest.java -index 682c8784..22a5b993 100644 +index 3224b0d2b..763d34c2f 100644 --- a/protocol/src/main/java/net/md_5/bungee/protocol/packet/LoginRequest.java +++ b/protocol/src/main/java/net/md_5/bungee/protocol/packet/LoginRequest.java @@ -70,7 +70,8 @@ public class LoginRequest extends DefinedPacket diff --git a/Waterfall-Proxy-Patches/0025-Custom-motd-system.patch b/Waterfall-Proxy-Patches/0026-Custom-motd-system.patch similarity index 97% rename from Waterfall-Proxy-Patches/0025-Custom-motd-system.patch rename to Waterfall-Proxy-Patches/0026-Custom-motd-system.patch index 77fc345..99aadcf 100644 --- a/Waterfall-Proxy-Patches/0025-Custom-motd-system.patch +++ b/Waterfall-Proxy-Patches/0026-Custom-motd-system.patch @@ -1,14 +1,14 @@ -From b406218a681d715b932c80458b4164e4d4cd6db5 Mon Sep 17 00:00:00 2001 +From 617ad8e4f511a78c2151d9f92e06c34bd3f3b680 Mon Sep 17 00:00:00 2001 From: LinsaFTW <25271111+linsaftw@users.noreply.github.com> Date: Thu, 7 Oct 2021 21:37:24 -0300 Subject: [PATCH] Custom motd system diff --git a/flamecord/src/main/java/dev/_2lstudios/flamecord/configuration/FlameConfig.java b/flamecord/src/main/java/dev/_2lstudios/flamecord/configuration/FlameConfig.java -index cfbd55c3..360305b9 100644 +index 5589ce1b7..1e928197c 100644 --- a/flamecord/src/main/java/dev/_2lstudios/flamecord/configuration/FlameConfig.java +++ b/flamecord/src/main/java/dev/_2lstudios/flamecord/configuration/FlameConfig.java -@@ -11,6 +11,10 @@ public class FlameConfig { +@@ -15,6 +15,10 @@ public class FlameConfig { return (int) setIfUnexistant(arg1, (Object) arg2, configuration); } @@ -20,7 +20,7 @@ index cfbd55c3..360305b9 100644 return (boolean) setIfUnexistant(arg1, (Object) arg2, configuration); } diff --git a/flamecord/src/main/java/dev/_2lstudios/flamecord/configuration/FlameCordConfiguration.java b/flamecord/src/main/java/dev/_2lstudios/flamecord/configuration/FlameCordConfiguration.java -index c327841a..de2cc947 100644 +index aac41c8b2..7937af051 100644 --- a/flamecord/src/main/java/dev/_2lstudios/flamecord/configuration/FlameCordConfiguration.java +++ b/flamecord/src/main/java/dev/_2lstudios/flamecord/configuration/FlameCordConfiguration.java @@ -3,15 +3,80 @@ package dev._2lstudios.flamecord.configuration; @@ -125,7 +125,7 @@ index c327841a..de2cc947 100644 this.loggerExceptions = setIfUnexistant("logger.exceptions", this.loggerExceptions, configuration); this.loggerDump = setIfUnexistant("logger.dump", this.loggerDump, configuration); diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java -index 198086e0..d99cb5d0 100644 +index 8fb36e37d..b340c7a55 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java @@ -23,6 +23,8 @@ import javax.crypto.spec.SecretKeySpec; diff --git a/Waterfall-Proxy-Patches/0026-TCP-Fast-Open.patch b/Waterfall-Proxy-Patches/0027-TCP-Fast-Open.patch similarity index 95% rename from Waterfall-Proxy-Patches/0026-TCP-Fast-Open.patch rename to Waterfall-Proxy-Patches/0027-TCP-Fast-Open.patch index 43e270d..d221ee7 100644 --- a/Waterfall-Proxy-Patches/0026-TCP-Fast-Open.patch +++ b/Waterfall-Proxy-Patches/0027-TCP-Fast-Open.patch @@ -1,11 +1,11 @@ -From 03547260d8d2d4445a56e83fd7e63fe0a836904b Mon Sep 17 00:00:00 2001 +From 7001800c9141f42b15bd9adee24319f1837a8183 Mon Sep 17 00:00:00 2001 From: LinsaFTW <25271111+linsaftw@users.noreply.github.com> Date: Thu, 24 Feb 2022 23:41:57 -0300 Subject: [PATCH] TCP Fast Open diff --git a/flamecord/src/main/java/dev/_2lstudios/flamecord/configuration/FlameCordConfiguration.java b/flamecord/src/main/java/dev/_2lstudios/flamecord/configuration/FlameCordConfiguration.java -index de2cc947..5d92c20c 100644 +index 7937af051..a1d23f74d 100644 --- a/flamecord/src/main/java/dev/_2lstudios/flamecord/configuration/FlameCordConfiguration.java +++ b/flamecord/src/main/java/dev/_2lstudios/flamecord/configuration/FlameCordConfiguration.java @@ -16,6 +16,10 @@ import net.md_5.bungee.config.Configuration; @@ -28,7 +28,7 @@ index de2cc947..5d92c20c 100644 this.loggerInitialhandler = setIfUnexistant("logger.initialhandler", this.loggerInitialhandler, configuration); this.loggerExceptions = setIfUnexistant("logger.exceptions", this.loggerExceptions, configuration); diff --git a/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java b/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java -index a4c3bd71..ffea1599 100644 +index a4c3bd710..ffea15992 100644 --- a/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java +++ b/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java @@ -194,6 +194,8 @@ public class PipelineUtils diff --git a/Waterfall-Proxy-Patches/0027-InitialHandler-Processing-State.patch b/Waterfall-Proxy-Patches/0028-InitialHandler-Processing-State.patch similarity index 98% rename from Waterfall-Proxy-Patches/0027-InitialHandler-Processing-State.patch rename to Waterfall-Proxy-Patches/0028-InitialHandler-Processing-State.patch index c9240b6..3425142 100644 --- a/Waterfall-Proxy-Patches/0027-InitialHandler-Processing-State.patch +++ b/Waterfall-Proxy-Patches/0028-InitialHandler-Processing-State.patch @@ -1,4 +1,4 @@ -From 1e5fa27a03247139aee723add5280ba00dfc901d Mon Sep 17 00:00:00 2001 +From a19efbabc81d28c8529c2c92fd351c71393bd710 Mon Sep 17 00:00:00 2001 From: LinsaFTW <25271111+linsaftw@users.noreply.github.com> Date: Fri, 25 Feb 2022 12:28:31 -0300 Subject: [PATCH] InitialHandler Processing State diff --git a/Waterfall-Proxy-Patches/0028-Antibot-System.patch b/Waterfall-Proxy-Patches/0029-Antibot-System.patch similarity index 73% rename from Waterfall-Proxy-Patches/0028-Antibot-System.patch rename to Waterfall-Proxy-Patches/0029-Antibot-System.patch index e554a73..e0369dd 100644 --- a/Waterfall-Proxy-Patches/0028-Antibot-System.patch +++ b/Waterfall-Proxy-Patches/0029-Antibot-System.patch @@ -1,14 +1,14 @@ -From b4ba3f3f68b4bfd4e8af4249fa30cc59ccfdde83 Mon Sep 17 00:00:00 2001 +From b8c85934f332d737bf4c5d0fd3d19f9ecdfffe6b Mon Sep 17 00:00:00 2001 From: LinsaFTW <25271111+linsaftw@users.noreply.github.com> Date: Fri, 4 Mar 2022 13:35:53 -0300 Subject: [PATCH] Antibot System diff --git a/flamecord/pom.xml b/flamecord/pom.xml -index 20edd9001..5978bec60 100644 +index 20edd9001..f48f1e60b 100644 --- a/flamecord/pom.xml +++ b/flamecord/pom.xml -@@ -30,6 +30,11 @@ +@@ -30,6 +30,17 @@ ${project.version} compile @@ -16,17 +16,74 @@ index 20edd9001..5978bec60 100644 + com.maxmind.db + maxmind-db + 2.0.0 ++ ++ ++ io.netty ++ netty-handler ++ ${netty.version} ++ compile + -diff --git a/flamecord/src/main/java/dev/_2lstudios/antibot/AccountsCheck.java b/flamecord/src/main/java/dev/_2lstudios/antibot/AccountsCheck.java +diff --git a/flamecord/src/main/java/dev/_2lstudios/flamecord/FlameCord.java b/flamecord/src/main/java/dev/_2lstudios/flamecord/FlameCord.java +index c78ab3a7c..ec880c07d 100644 +--- a/flamecord/src/main/java/dev/_2lstudios/flamecord/FlameCord.java ++++ b/flamecord/src/main/java/dev/_2lstudios/flamecord/FlameCord.java +@@ -3,6 +3,8 @@ package dev._2lstudios.flamecord; + import java.util.Collection; + import java.util.logging.Logger; + ++import dev._2lstudios.flamecord.antibot.AddressDataManager; ++import dev._2lstudios.flamecord.antibot.CheckManager; + import dev._2lstudios.flamecord.configuration.FlameCordConfiguration; + import dev._2lstudios.flamecord.configuration.MessagesConfiguration; + import dev._2lstudios.flamecord.configuration.ModulesConfiguration; +@@ -18,26 +20,31 @@ public class FlameCord { + if (FlameCord.instance != null) { + instance.reload(logger); + } else { +- FlameCord.instance = new FlameCord(logger, whitelistedAddresses); ++ FlameCord.instance = new FlameCord(); ++ instance.reload(logger); + } + } + + @Getter + private FlameCordConfiguration flameCordConfiguration; + @Getter ++ private AddressDataManager addressDataManager; ++ @Getter ++ private CheckManager checkManager; ++ @Getter + private ModulesConfiguration modulesConfiguration; + @Getter + private MessagesConfiguration messagesConfiguration; + + private void reload(final Logger logger) { + final ConfigurationProvider configurationProvider = ConfigurationProvider.getProvider(YamlConfiguration.class); ++ ++ if (checkManager != null) checkManager.unload(); + + this.flameCordConfiguration = new FlameCordConfiguration(configurationProvider); + this.modulesConfiguration = new ModulesConfiguration(configurationProvider); + this.messagesConfiguration = new MessagesConfiguration(logger, configurationProvider); +- } +- +- private FlameCord(final Logger logger, final Collection whitelistedAddresses) { +- reload(logger); ++ this.addressDataManager = new AddressDataManager(); ++ this.checkManager = new CheckManager(addressDataManager, flameCordConfiguration); + } + } +\ No newline at end of file +diff --git a/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/AccountsCheck.java b/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/AccountsCheck.java new file mode 100644 -index 000000000..da52c8924 +index 000000000..5e7fa6bfb --- /dev/null -+++ b/flamecord/src/main/java/dev/_2lstudios/antibot/AccountsCheck.java ++++ b/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/AccountsCheck.java @@ -0,0 +1,36 @@ -+package dev._2lstudios.antibot; ++package dev._2lstudios.flamecord.antibot; + +import java.net.SocketAddress; +import java.util.Collection; @@ -62,13 +119,13 @@ index 000000000..da52c8924 + return false; + } +} -diff --git a/flamecord/src/main/java/dev/_2lstudios/antibot/AddressData.java b/flamecord/src/main/java/dev/_2lstudios/antibot/AddressData.java +diff --git a/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/AddressData.java b/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/AddressData.java new file mode 100644 -index 000000000..b37f114a0 +index 000000000..b8448bdf2 --- /dev/null -+++ b/flamecord/src/main/java/dev/_2lstudios/antibot/AddressData.java ++++ b/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/AddressData.java @@ -0,0 +1,154 @@ -+package dev._2lstudios.antibot; ++package dev._2lstudios.flamecord.antibot; + +import java.util.Collection; +import java.util.HashSet; @@ -222,13 +279,13 @@ index 000000000..b37f114a0 + return nicknames.contains(nickname); + } +} -diff --git a/flamecord/src/main/java/dev/_2lstudios/antibot/AddressDataManager.java b/flamecord/src/main/java/dev/_2lstudios/antibot/AddressDataManager.java +diff --git a/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/AddressDataManager.java b/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/AddressDataManager.java new file mode 100644 -index 000000000..6c7b300c2 +index 000000000..46798dee0 --- /dev/null -+++ b/flamecord/src/main/java/dev/_2lstudios/antibot/AddressDataManager.java ++++ b/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/AddressDataManager.java @@ -0,0 +1,31 @@ -+package dev._2lstudios.antibot; ++package dev._2lstudios.flamecord.antibot; + +import java.net.InetSocketAddress; +import java.net.SocketAddress; @@ -259,13 +316,13 @@ index 000000000..6c7b300c2 + return getAddressData(addressString); + } +} -diff --git a/flamecord/src/main/java/dev/_2lstudios/antibot/CheckManager.java b/flamecord/src/main/java/dev/_2lstudios/antibot/CheckManager.java +diff --git a/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/CheckManager.java b/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/CheckManager.java new file mode 100644 -index 000000000..0676f897f +index 000000000..1503ac954 --- /dev/null -+++ b/flamecord/src/main/java/dev/_2lstudios/antibot/CheckManager.java -@@ -0,0 +1,37 @@ -+package dev._2lstudios.antibot; ++++ b/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/CheckManager.java +@@ -0,0 +1,40 @@ ++package dev._2lstudios.flamecord.antibot; + +import dev._2lstudios.flamecord.configuration.FlameCordConfiguration; +import lombok.Getter; @@ -285,6 +342,8 @@ index 000000000..0676f897f + private final RatelimitCheck ratelimitCheck; + @Getter + private final ReconnectCheck reconnectCheck; ++ @Getter ++ private final PacketsCheck packetsCheck; + + public CheckManager(final AddressDataManager addressDataManager, final FlameCordConfiguration flameCordConfiguration) { + this.accountsCheck = new AccountsCheck(addressDataManager); @@ -294,6 +353,7 @@ index 000000000..0676f897f + this.passwordCheck = new PasswordCheck(addressDataManager); + this.ratelimitCheck = new RatelimitCheck(addressDataManager); + this.reconnectCheck = new ReconnectCheck(addressDataManager); ++ this.packetsCheck = new PacketsCheck(); + + this.countryCheck.load(); + } @@ -302,13 +362,13 @@ index 000000000..0676f897f + this.countryCheck.unload(); + } +} -diff --git a/flamecord/src/main/java/dev/_2lstudios/antibot/CountryCheck.java b/flamecord/src/main/java/dev/_2lstudios/antibot/CountryCheck.java +diff --git a/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/CountryCheck.java b/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/CountryCheck.java new file mode 100644 -index 000000000..e2410468d +index 000000000..018aacd2c --- /dev/null -+++ b/flamecord/src/main/java/dev/_2lstudios/antibot/CountryCheck.java ++++ b/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/CountryCheck.java @@ -0,0 +1,140 @@ -+package dev._2lstudios.antibot; ++package dev._2lstudios.flamecord.antibot; + +import java.io.File; +import java.io.IOException; @@ -448,13 +508,13 @@ index 000000000..e2410468d + return false; + } +} -diff --git a/flamecord/src/main/java/dev/_2lstudios/antibot/FastChatCheck.java b/flamecord/src/main/java/dev/_2lstudios/antibot/FastChatCheck.java +diff --git a/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/FastChatCheck.java b/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/FastChatCheck.java new file mode 100644 -index 000000000..197636935 +index 000000000..682e1c314 --- /dev/null -+++ b/flamecord/src/main/java/dev/_2lstudios/antibot/FastChatCheck.java ++++ b/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/FastChatCheck.java @@ -0,0 +1,32 @@ -+package dev._2lstudios.antibot; ++package dev._2lstudios.flamecord.antibot; + +import java.net.SocketAddress; + @@ -486,13 +546,13 @@ index 000000000..197636935 + return false; + } +} -diff --git a/flamecord/src/main/java/dev/_2lstudios/antibot/NicknameCheck.java b/flamecord/src/main/java/dev/_2lstudios/antibot/NicknameCheck.java +diff --git a/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/NicknameCheck.java b/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/NicknameCheck.java new file mode 100644 -index 000000000..222aba31f +index 000000000..165963629 --- /dev/null -+++ b/flamecord/src/main/java/dev/_2lstudios/antibot/NicknameCheck.java ++++ b/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/NicknameCheck.java @@ -0,0 +1,45 @@ -+package dev._2lstudios.antibot; ++package dev._2lstudios.flamecord.antibot; + +import java.net.SocketAddress; + @@ -537,13 +597,194 @@ index 000000000..222aba31f + return false; + } +} -diff --git a/flamecord/src/main/java/dev/_2lstudios/antibot/PasswordCheck.java b/flamecord/src/main/java/dev/_2lstudios/antibot/PasswordCheck.java +diff --git a/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/PacketsCheck.java b/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/PacketsCheck.java new file mode 100644 -index 000000000..bdc024f58 +index 000000000..0de670b3f --- /dev/null -+++ b/flamecord/src/main/java/dev/_2lstudios/antibot/PasswordCheck.java ++++ b/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/PacketsCheck.java +@@ -0,0 +1,67 @@ ++package dev._2lstudios.flamecord.antibot; ++ ++import java.net.SocketAddress; ++import java.util.HashMap; ++import java.util.Map; ++ ++import dev._2lstudios.flamecord.FlameCord; ++import dev._2lstudios.flamecord.configuration.FlameCordConfiguration; ++import dev._2lstudios.flamecord.enums.PacketsCheckResult; ++import dev._2lstudios.flamecord.enums.PacketsViolationReason; ++import dev._2lstudios.flamecord.utils.ProtocolUtil; ++import io.netty.buffer.ByteBuf; ++ ++public class PacketsCheck { ++ private Map packetsData = new HashMap<>(); ++ private long lastCalculation = System.currentTimeMillis(); ++ ++ public PacketsData getData(SocketAddress address) { ++ String ip = address.toString(); ++ ++ if (System.currentTimeMillis() - lastCalculation >= 60000) { ++ packetsData.clear(); ++ this.lastCalculation = System.currentTimeMillis(); ++ } ++ ++ PacketsData data; ++ ++ if (packetsData.containsKey(ip)) { ++ data = packetsData.get(ip); ++ } else { ++ data = new PacketsData(address); ++ packetsData.put(ip, data); ++ } ++ ++ return data; ++ } ++ ++ public PacketsCheckResult check(SocketAddress socketAddress, ByteBuf byteBuf) { ++ PacketsData addressData = getData(socketAddress); ++ FlameCordConfiguration config = FlameCord.getInstance().getFlameCordConfiguration(); ++ int length = byteBuf.readableBytes(); ++ int index = byteBuf.readerIndex(); ++ int packetId = ProtocolUtil.readVarInt(byteBuf); ++ byteBuf.readerIndex(index); ++ ++ addressData.addVls(length * config.getAntibotPacketsVlsPerByte(), PacketsViolationReason.SIZE, packetId); ++ addressData.addVls(config.getAntibotPacketsVlsPerPacket(), PacketsViolationReason.RATE, packetId); ++ ++ double vls = addressData.getPacketsVls(); ++ ++ if (vls >= config.getAntibotPacketsVlsToKick()) { ++ return PacketsCheckResult.KICK; ++ } else if (vls >= config.getAntibotPacketsVlsToCancel()) { ++ if (addressData.isCancelled()) { ++ return PacketsCheckResult.CANCEL; ++ } else { ++ addressData.setCancelled(true); ++ return PacketsCheckResult.FIRST_CANCEL; ++ } ++ } else { ++ return PacketsCheckResult.NONE; ++ } ++ } ++ ++ public void printPackets(SocketAddress remoteAddress) { ++ } ++} +diff --git a/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/PacketsData.java b/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/PacketsData.java +new file mode 100644 +index 000000000..db1997d63 +--- /dev/null ++++ b/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/PacketsData.java +@@ -0,0 +1,102 @@ ++package dev._2lstudios.flamecord.antibot; ++ ++import java.net.SocketAddress; ++import java.util.HashMap; ++import java.util.Map; ++import java.util.Map.Entry; ++ ++import dev._2lstudios.flamecord.FlameCord; ++import dev._2lstudios.flamecord.enums.PacketsViolationReason; ++ ++public class PacketsData { ++ // The address related to this data ++ private SocketAddress address; ++ ++ // The vls of the current address ++ private double packetsVls = 0; ++ ++ // The vls of the current address because of size ++ private double packetsVlsSize = 0; ++ ++ // The vls of the current address because of rate ++ private double packetsVlsRate = 0; ++ ++ // If this was cancelled in the last second ++ private boolean cancelled = false; ++ ++ // The last time vls was calculated ++ private long lastVlsCalculated = System.currentTimeMillis(); ++ ++ private Map vlsByPacketId = new HashMap<>(); ++ ++ public PacketsData(SocketAddress address) { ++ this.address = address; ++ } ++ ++ public double simplify(double number) { ++ return (double) (int) (number * 1000) / 1000; ++ } ++ ++ public void printPackets() { ++ if (FlameCord.getInstance().getFlameCordConfiguration().isAntibotPacketsDebug() && this.packetsVls > 0) { ++ System.out ++ .println("[FlameCord] [" + address ++ + "] debug is enabled, showing stats (Total: " + simplify(packetsVls) + "vls Size: " ++ + simplify(packetsVlsSize) + "vls Rate: " + simplify(packetsVlsRate) + "vls)"); ++ for (Entry entry : this.vlsByPacketId.entrySet()) { ++ System.out.print(entry.getKey() + "-" + simplify(entry.getValue()) + "vls, "); ++ } ++ System.out.println(""); ++ } ++ } ++ ++ public double getPacketsVls() { ++ if (System.currentTimeMillis() - lastVlsCalculated >= 1000) { ++ printPackets(); ++ ++ this.packetsVls = 0; ++ this.packetsVlsSize = 0; ++ this.packetsVlsRate = 0; ++ this.vlsByPacketId.clear(); ++ this.cancelled = false; ++ this.lastVlsCalculated = System.currentTimeMillis(); ++ } ++ ++ return packetsVls; ++ } ++ ++ public void addVls(double packetsVls, PacketsViolationReason reason, int packetId) { ++ this.packetsVls += packetsVls; ++ this.vlsByPacketId.put(packetId, this.vlsByPacketId.getOrDefault(packetId, 0.0) + packetsVls); ++ ++ switch (reason) { ++ case SIZE: { ++ this.packetsVlsSize += packetsVls; ++ break; ++ } ++ case RATE: { ++ this.packetsVlsRate += packetsVls; ++ break; ++ } ++ default: { ++ break; ++ } ++ } ++ } ++ ++ public boolean isCancelled() { ++ return cancelled; ++ } ++ ++ public void setCancelled(boolean cancelled) { ++ this.cancelled = cancelled; ++ } ++ ++ public double getPacketsVlsSize() { ++ return packetsVlsSize; ++ } ++ ++ public double getPacketsVlsRate() { ++ return packetsVlsRate; ++ } ++} +diff --git a/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/PasswordCheck.java b/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/PasswordCheck.java +new file mode 100644 +index 000000000..82401d240 +--- /dev/null ++++ b/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/PasswordCheck.java @@ -0,0 +1,62 @@ -+package dev._2lstudios.antibot; ++package dev._2lstudios.flamecord.antibot; + +import java.net.SocketAddress; + @@ -605,13 +846,13 @@ index 000000000..bdc024f58 + return repeatCount; + } +} -diff --git a/flamecord/src/main/java/dev/_2lstudios/antibot/RatelimitCheck.java b/flamecord/src/main/java/dev/_2lstudios/antibot/RatelimitCheck.java +diff --git a/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/RatelimitCheck.java b/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/RatelimitCheck.java new file mode 100644 -index 000000000..b55b4bb17 +index 000000000..0165d1bf8 --- /dev/null -+++ b/flamecord/src/main/java/dev/_2lstudios/antibot/RatelimitCheck.java ++++ b/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/RatelimitCheck.java @@ -0,0 +1,33 @@ -+package dev._2lstudios.antibot; ++package dev._2lstudios.flamecord.antibot; + +import java.net.SocketAddress; + @@ -644,13 +885,13 @@ index 000000000..b55b4bb17 + return false; + } +} -diff --git a/flamecord/src/main/java/dev/_2lstudios/antibot/ReconnectCheck.java b/flamecord/src/main/java/dev/_2lstudios/antibot/ReconnectCheck.java +diff --git a/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/ReconnectCheck.java b/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/ReconnectCheck.java new file mode 100644 -index 000000000..efd8d2cac +index 000000000..68cc4c217 --- /dev/null -+++ b/flamecord/src/main/java/dev/_2lstudios/antibot/ReconnectCheck.java ++++ b/flamecord/src/main/java/dev/_2lstudios/flamecord/antibot/ReconnectCheck.java @@ -0,0 +1,46 @@ -+package dev._2lstudios.antibot; ++package dev._2lstudios.flamecord.antibot; + +import java.net.SocketAddress; + @@ -696,62 +937,11 @@ index 000000000..efd8d2cac + return false; + } +} -diff --git a/flamecord/src/main/java/dev/_2lstudios/flamecord/FlameCord.java b/flamecord/src/main/java/dev/_2lstudios/flamecord/FlameCord.java -index c78ab3a7c..8591a7918 100644 ---- a/flamecord/src/main/java/dev/_2lstudios/flamecord/FlameCord.java -+++ b/flamecord/src/main/java/dev/_2lstudios/flamecord/FlameCord.java -@@ -3,6 +3,8 @@ package dev._2lstudios.flamecord; - import java.util.Collection; - import java.util.logging.Logger; - -+import dev._2lstudios.antibot.AddressDataManager; -+import dev._2lstudios.antibot.CheckManager; - import dev._2lstudios.flamecord.configuration.FlameCordConfiguration; - import dev._2lstudios.flamecord.configuration.MessagesConfiguration; - import dev._2lstudios.flamecord.configuration.ModulesConfiguration; -@@ -18,26 +20,31 @@ public class FlameCord { - if (FlameCord.instance != null) { - instance.reload(logger); - } else { -- FlameCord.instance = new FlameCord(logger, whitelistedAddresses); -+ FlameCord.instance = new FlameCord(); -+ instance.reload(logger); - } - } - - @Getter - private FlameCordConfiguration flameCordConfiguration; - @Getter -+ private AddressDataManager addressDataManager; -+ @Getter -+ private CheckManager checkManager; -+ @Getter - private ModulesConfiguration modulesConfiguration; - @Getter - private MessagesConfiguration messagesConfiguration; - - private void reload(final Logger logger) { - final ConfigurationProvider configurationProvider = ConfigurationProvider.getProvider(YamlConfiguration.class); -+ -+ if (checkManager != null) checkManager.unload(); - - this.flameCordConfiguration = new FlameCordConfiguration(configurationProvider); - this.modulesConfiguration = new ModulesConfiguration(configurationProvider); - this.messagesConfiguration = new MessagesConfiguration(logger, configurationProvider); -- } -- -- private FlameCord(final Logger logger, final Collection whitelistedAddresses) { -- reload(logger); -+ this.addressDataManager = new AddressDataManager(); -+ this.checkManager = new CheckManager(addressDataManager, flameCordConfiguration); - } - } -\ No newline at end of file diff --git a/flamecord/src/main/java/dev/_2lstudios/flamecord/configuration/FlameCordConfiguration.java b/flamecord/src/main/java/dev/_2lstudios/flamecord/configuration/FlameCordConfiguration.java -index a1d23f74d..76c35626d 100644 +index a1d23f74d..1bd6b2164 100644 --- a/flamecord/src/main/java/dev/_2lstudios/flamecord/configuration/FlameCordConfiguration.java +++ b/flamecord/src/main/java/dev/_2lstudios/flamecord/configuration/FlameCordConfiguration.java -@@ -16,6 +16,120 @@ import net.md_5.bungee.config.Configuration; +@@ -16,6 +16,157 @@ import net.md_5.bungee.config.Configuration; import net.md_5.bungee.config.ConfigurationProvider; public class FlameCordConfiguration extends FlameConfig { @@ -829,36 +1019,65 @@ index a1d23f74d..76c35626d 100644 + @Getter + private boolean antibotReconnectLog = true; + ++ // Antibot packets ++ @Getter ++ private boolean antibotPacketsEnabled = true; ++ @Getter ++ private boolean antibotPacketsLog = true; ++ @Getter ++ private double antibotPacketsVlsPerByte = 0.00001; ++ @Getter ++ private double antibotPacketsVlsPerPacket = 0.01; ++ @Getter ++ private double antibotPacketsVlsToKick = 100; ++ @Getter ++ private double antibotPacketsVlsToCancel = 25; ++ + public void loadAntibot(final Configuration config) { ++ // Antibot accounts + this.antibotAccountsEnabled = setIfUnexistant("antibot.accounts.enabled", this.antibotAccountsEnabled, config); + this.antibotAccountsFirewall = setIfUnexistant("antibot.accounts.firewall", this.antibotAccountsFirewall, config); + this.antibotAccountsLimit = setIfUnexistant("antibot.accounts.limit", this.antibotAccountsLimit, config); + this.antibotAccountsLog = setIfUnexistant("antibot.accounts.log", this.antibotAccountsLog, config); ++ ++ // Antibot country + this.antibotCountryEnabled = setIfUnexistant("antibot.country.enabled", this.antibotCountryEnabled, config); + this.antibotCountryFirewall = setIfUnexistant("antibot.country.firewall", this.antibotCountryFirewall, config); + this.antibotCountryBlacklist = setIfUnexistant("antibot.country.blacklist", this.antibotCountryBlacklist, config); + this.antibotCountryLog = setIfUnexistant("antibot.country.log", this.antibotCountryLog, config); ++ ++ // Antibot fastchat + this.antibotFastChatEnabled = setIfUnexistant("antibot.fastchat.enabled", this.antibotFastChatEnabled, config); + this.antibotFastChatFirewall = setIfUnexistant("antibot.fastchat.firewall", this.antibotFastChatFirewall, config); + this.antibotFastChatTime = setIfUnexistant("antibot.fastchat.time", this.antibotFastChatTime, config); + this.antibotFastChatLog = setIfUnexistant("antibot.fastchat.log", this.antibotFastChatLog, config); ++ ++ // Antibot firewall + this.antibotFirewallEnabled = setIfUnexistant("antibot.firewall.enabled", this.antibotFirewallEnabled, config); + this.antibotFirewalledExceptions = setIfUnexistant("antibot.firewall.exceptions", this.antibotFirewalledExceptions, config); + this.antibotFirewallExpire = setIfUnexistant("antibot.firewall.time", this.antibotFirewallExpire, config); + this.antibotFirewallLog = setIfUnexistant("antibot.firewall.log", this.antibotFirewallLog, config); ++ ++ // Antibot nickname + this.antibotNicknameEnabled = setIfUnexistant("antibot.nickname.enabled", this.antibotNicknameEnabled, config); + this.antibotNicknameFirewall = setIfUnexistant("antibot.nickname.firewall", this.antibotNicknameFirewall, config); + this.antibotNicknameBlacklist = setIfUnexistant("antibot.nickname.blacklist", this.antibotNicknameBlacklist, config); + this.antibotNicknameLog = setIfUnexistant("antibot.nickname.log", this.antibotNicknameLog, config); ++ ++ // Antibot password + this.antibotPasswordEnabled = setIfUnexistant("antibot.password.enabled", this.antibotPasswordEnabled, config); + this.antibotPasswordFirewall = setIfUnexistant("antibot.password.firewall", this.antibotPasswordFirewall, config); + this.antibotPasswordLimit = setIfUnexistant("antibot.password.limit", this.antibotPasswordLimit, config); + this.antibotPasswordLog = setIfUnexistant("antibot.password.log", this.antibotPasswordLog, config); ++ ++ // Antibot ratelimit + this.antibotRatelimitEnabled = setIfUnexistant("antibot.ratelimit.enabled", this.antibotRatelimitEnabled, config); + this.antibotRatelimitFirewall = setIfUnexistant("antibot.ratelimit.firewall", this.antibotRatelimitFirewall, config); + this.antibotRatelimitConnectionsPerSecond = setIfUnexistant("antibot.ratelimit.connections-per-second", this.antibotRatelimitConnectionsPerSecond, config); + this.antibotRatelimitPingsPerSecond = setIfUnexistant("antibot.ratelimit.pings-per-second", this.antibotRatelimitPingsPerSecond, config); + this.antibotRatelimitLog = setIfUnexistant("antibot.ratelimit.log", this.antibotRatelimitLog, config); ++ ++ // Antibot reconnect + this.antibotReconnectEnabled = setIfUnexistant("antibot.reconnect.enabled", this.antibotReconnectEnabled, config); + this.antibotReconnectAttempts = setIfUnexistant("antibot.reconnect.attempts", this.antibotReconnectAttempts, config); + this.antibotReconnectPings = setIfUnexistant("antibot.reconnect.pings", this.antibotReconnectPings, config); @@ -866,13 +1085,21 @@ index a1d23f74d..76c35626d 100644 + this.antibotReconnectConnectionThreshold = setIfUnexistant("antibot.reconnect.connection-threshold", this.antibotReconnectConnectionThreshold, config); + this.antibotReconnectConnectionThresholdLimit = setIfUnexistant("antibot.reconnect.connection-threshold-limit", this.antibotReconnectConnectionThresholdLimit, config); + this.antibotReconnectLog = setIfUnexistant("antibot.reconnect.log", this.antibotReconnectLog, config); ++ ++ // Antibot packets ++ this.antibotPacketsEnabled = setIfUnexistant("antibot.packets.enabled", this.antibotPacketsEnabled, config); ++ this.antibotPacketsLog = setIfUnexistant("antibot.packets.log", this.antibotPacketsLog, config); ++ this.antibotPacketsVlsPerByte = setIfUnexistant("antibot.packets.vls-per-byte", this.antibotPacketsVlsPerByte, config); ++ this.antibotPacketsVlsPerPacket = setIfUnexistant("antibot.packets.vls-per-packet", this.antibotPacketsVlsPerPacket, config); ++ this.antibotPacketsVlsToKick = setIfUnexistant("antibot.packets.vls-to-kick", this.antibotPacketsVlsToKick, config); ++ this.antibotPacketsVlsToCancel = setIfUnexistant("antibot.packets.vls-to-cancel", this.antibotPacketsVlsToCancel, config); + } + // FlameCord end - Antibot System + // FlameCord - TCP Fast Open @Getter private int tcpFastOpen = 3; -@@ -117,6 +231,8 @@ public class FlameCordConfiguration extends FlameConfig { +@@ -117,6 +268,8 @@ public class FlameCordConfiguration extends FlameConfig { this.fakePlayersEnabled = setIfUnexistant("custom-motd.fakeplayers.enabled", this.fakePlayersEnabled, configuration); this.fakePlayersAmount = setIfUnexistant("custom-motd.fakeplayers.amount", this.fakePlayersAmount, configuration); this.fakePlayersMode = setIfUnexistant("custom-motd.fakeplayers.mode", this.fakePlayersMode, configuration); @@ -913,18 +1140,155 @@ index 4f306660e..5faab6166 100644 configurationProvider.save(configuration, configurationFile); +diff --git a/flamecord/src/main/java/dev/_2lstudios/flamecord/enums/PacketsCheckResult.java b/flamecord/src/main/java/dev/_2lstudios/flamecord/enums/PacketsCheckResult.java +new file mode 100644 +index 000000000..53f1648ab +--- /dev/null ++++ b/flamecord/src/main/java/dev/_2lstudios/flamecord/enums/PacketsCheckResult.java +@@ -0,0 +1,5 @@ ++package dev._2lstudios.flamecord.enums; ++ ++public enum PacketsCheckResult { ++ KICK, FIRST_CANCEL, CANCEL, NONE ++} +diff --git a/flamecord/src/main/java/dev/_2lstudios/flamecord/enums/PacketsViolationReason.java b/flamecord/src/main/java/dev/_2lstudios/flamecord/enums/PacketsViolationReason.java +new file mode 100644 +index 000000000..c19c4965d +--- /dev/null ++++ b/flamecord/src/main/java/dev/_2lstudios/flamecord/enums/PacketsViolationReason.java +@@ -0,0 +1,5 @@ ++package dev._2lstudios.flamecord.enums; ++ ++public enum PacketsViolationReason { ++ SIZE, RATE ++} +diff --git a/flamecord/src/main/java/dev/_2lstudios/flamecord/utils/ProtocolUtil.java b/flamecord/src/main/java/dev/_2lstudios/flamecord/utils/ProtocolUtil.java +new file mode 100644 +index 000000000..7f26e7a0d +--- /dev/null ++++ b/flamecord/src/main/java/dev/_2lstudios/flamecord/utils/ProtocolUtil.java +@@ -0,0 +1,27 @@ ++package dev._2lstudios.flamecord.utils; ++ ++import io.netty.buffer.ByteBuf; ++ ++public class ProtocolUtil { ++ private static int SEGMENT_BITS = 0x7F; ++ private static int CONTINUE_BIT = 0x80; ++ ++ public static int readVarInt(ByteBuf byteBuf) { ++ int value = 0; ++ int position = 0; ++ byte currentByte; ++ ++ while (byteBuf.isReadable()) { ++ currentByte = byteBuf.readByte(); ++ value |= (currentByte & SEGMENT_BITS) << position; ++ ++ if ((currentByte & CONTINUE_BIT) == 0) break; ++ ++ position += 7; ++ ++ if (position >= 32) throw new RuntimeException("VarInt is too big"); ++ } ++ ++ return value; ++ } ++} +\ No newline at end of file +diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java b/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java +index 6316143f7..209e4f143 100644 +--- a/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java ++++ b/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java +@@ -51,12 +51,46 @@ public class MinecraftDecoder extends MessageToMessageDecoder + throw new FastDecoderException("Error decoding packet with too big capacity: " + capacity); + } + } ++ ++ // FlameCord start - Antibot Packet Check ++ if (prot == protocol.TO_SERVER) { ++ dev._2lstudios.flamecord.enums.PacketsCheckResult result = FlameCord.getInstance().getCheckManager().getPacketsCheck() ++ .check(ctx.channel().remoteAddress(), in); ++ ++ switch (result) { ++ case KICK: ++ if (FlameCord.getInstance().getFlameCordConfiguration().isAntibotPacketsLog()) { ++ System.out ++ .println("[FlameCord] [" + ctx.channel().remoteAddress() ++ + "] was kicked because of too many packets"); ++ } ++ ++ in.skipBytes(in.readableBytes()); ++ ctx.close(); ++ return; ++ case CANCEL: ++ if (FlameCord.getInstance().getFlameCordConfiguration().isAntibotPacketsLog()) { ++ System.out ++ .println("[FlameCord] [" + ctx.channel().remoteAddress() ++ + "] was cancelled because of too many packets"); ++ } ++ ++ in.skipBytes(in.readableBytes()); ++ return; ++ default: ++ break; ++ } ++ } ++ // FlameCord end - Antibot Packet Check + + ByteBuf slice = in.duplicate(); // FlameCord - Duplicate buf instead of Copy + + Object packetTypeInfo = null; + try + { ++ // FlameCord - Duplicate buf instead of Copy ++ slice = in.duplicate(); // Can't slice this one due to EntityMap :( ++ + // Waterfall start + if (in.readableBytes() == 0 && !server) { + return; +diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java b/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java +index c9e45b915..022f94b2d 100644 +--- a/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java ++++ b/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java +@@ -723,4 +723,8 @@ public enum Protocol + // Waterfall end + } + } ++ ++ public DirectionData getToServer() { ++ return TO_SERVER; ++ } + } +diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/Varint21FrameDecoder.java b/protocol/src/main/java/net/md_5/bungee/protocol/Varint21FrameDecoder.java +index c0d371426..403ccba98 100644 +--- a/protocol/src/main/java/net/md_5/bungee/protocol/Varint21FrameDecoder.java ++++ b/protocol/src/main/java/net/md_5/bungee/protocol/Varint21FrameDecoder.java +@@ -5,11 +5,11 @@ import io.netty.buffer.Unpooled; + import io.netty.channel.ChannelHandlerContext; + import io.netty.handler.codec.ByteToMessageDecoder; + import io.netty.handler.codec.CorruptedFrameException; ++ + import java.util.List; + + public class Varint21FrameDecoder extends ByteToMessageDecoder + { +- + private static boolean DIRECT_WARNING; + + @Override diff --git a/proxy/src/main/java/dev/_2lstudios/flamecord/commands/FlameCordCommand.java b/proxy/src/main/java/dev/_2lstudios/flamecord/commands/FlameCordCommand.java -index cc76325b2..ae5d4c73f 100644 +index cc76325b2..a5b9331f6 100644 --- a/proxy/src/main/java/dev/_2lstudios/flamecord/commands/FlameCordCommand.java +++ b/proxy/src/main/java/dev/_2lstudios/flamecord/commands/FlameCordCommand.java -@@ -3,6 +3,7 @@ package dev._2lstudios.flamecord.commands; - import java.util.Collection; +@@ -4,6 +4,7 @@ import java.util.Collection; import java.util.HashSet; -+import dev._2lstudios.antibot.AddressDataManager; import dev._2lstudios.flamecord.FlameCord; ++import dev._2lstudios.flamecord.antibot.AddressDataManager; import dev._2lstudios.flamecord.configuration.MessagesConfiguration; import net.md_5.bungee.BungeeCord; + import net.md_5.bungee.api.CommandSender; @@ -27,9 +28,7 @@ private final BungeeCord bungeeCord; if (sender.hasPermission("flamecord.usage")) { @@ -974,19 +1338,20 @@ index cc76325b2..ae5d4c73f 100644 } } diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java -index c00ab4b6a..089cac669 100644 +index c00ab4b6a..bbf9c3dba 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java -@@ -21,6 +21,8 @@ import java.util.logging.Level; - import javax.crypto.SecretKey; +@@ -22,7 +22,8 @@ import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; -+import dev._2lstudios.antibot.AddressData; -+import dev._2lstudios.antibot.CheckManager; import dev._2lstudios.flamecord.FlameCord; - +- ++import dev._2lstudios.flamecord.antibot.AddressData; ++import dev._2lstudios.flamecord.antibot.CheckManager; import dev._2lstudios.flamecord.configuration.FlameConfig; -@@ -439,6 +441,11 @@ public class InitialHandler extends PacketHandler implements PendingConnection + import dev._2lstudios.flamecord.configuration.FlameCordConfiguration; + import lombok.Getter; +@@ -439,6 +440,11 @@ public class InitialHandler extends PacketHandler implements PendingConnection return; } @@ -998,7 +1363,7 @@ index c00ab4b6a..089cac669 100644 switch ( handshake.getRequestedProtocol() ) { case 1: -@@ -450,6 +457,22 @@ public class InitialHandler extends PacketHandler implements PendingConnection +@@ -450,6 +456,22 @@ public class InitialHandler extends PacketHandler implements PendingConnection } thisState = State.STATUS; ch.setProtocol( Protocol.STATUS ); @@ -1021,7 +1386,7 @@ index c00ab4b6a..089cac669 100644 break; case 2: // Login -@@ -461,6 +484,21 @@ public class InitialHandler extends PacketHandler implements PendingConnection +@@ -461,6 +483,21 @@ public class InitialHandler extends PacketHandler implements PendingConnection thisState = State.USERNAME; ch.setProtocol( Protocol.LOGIN ); @@ -1043,7 +1408,7 @@ index c00ab4b6a..089cac669 100644 if ( !ProtocolConstants.SUPPORTED_VERSION_IDS.contains( handshake.getProtocolVersion() ) ) { if ( handshake.getProtocolVersion() > bungee.getProtocolVersion() ) -@@ -525,6 +563,58 @@ public class InitialHandler extends PacketHandler implements PendingConnection +@@ -525,6 +562,58 @@ public class InitialHandler extends PacketHandler implements PendingConnection return; } @@ -1103,7 +1468,7 @@ index c00ab4b6a..089cac669 100644 // We can just check by UUID here as names are based on UUID if ( !isOnlineMode() && bungee.getPlayer( getUniqueId() ) != null ) diff --git a/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java b/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java -index 66332af4e..7b852ff69 100644 +index 66332af4e..289cce0c3 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java @@ -4,11 +4,16 @@ import com.google.common.base.Preconditions; @@ -1111,8 +1476,8 @@ index 66332af4e..7b852ff69 100644 import com.mojang.brigadier.suggestion.Suggestion; import com.mojang.brigadier.suggestion.Suggestions; + -+import dev._2lstudios.antibot.CheckManager; +import dev._2lstudios.flamecord.FlameCord; ++import dev._2lstudios.flamecord.antibot.CheckManager; import io.netty.channel.Channel; import java.util.ArrayList; import java.util.LinkedList; diff --git a/Waterfall-Proxy-Patches/0029-Allow-Invalid-Names.patch b/Waterfall-Proxy-Patches/0030-Allow-Invalid-Names.patch similarity index 90% rename from Waterfall-Proxy-Patches/0029-Allow-Invalid-Names.patch rename to Waterfall-Proxy-Patches/0030-Allow-Invalid-Names.patch index 3ef6592..24eef55 100644 --- a/Waterfall-Proxy-Patches/0029-Allow-Invalid-Names.patch +++ b/Waterfall-Proxy-Patches/0030-Allow-Invalid-Names.patch @@ -1,11 +1,11 @@ -From 9221f376964681108d3a1f6a899313fc860c01d9 Mon Sep 17 00:00:00 2001 +From 152a7b67bbe619c2933d6ee4c486a7a5314fd3da Mon Sep 17 00:00:00 2001 From: LinsaFTW <25271111+linsaftw@users.noreply.github.com> Date: Fri, 4 Mar 2022 14:09:35 -0300 Subject: [PATCH] Allow Invalid Names diff --git a/flamecord/src/main/java/dev/_2lstudios/flamecord/configuration/FlameCordConfiguration.java b/flamecord/src/main/java/dev/_2lstudios/flamecord/configuration/FlameCordConfiguration.java -index 76c35626d..1c27409d3 100644 +index 1bd6b2164..d8bc8980f 100644 --- a/flamecord/src/main/java/dev/_2lstudios/flamecord/configuration/FlameCordConfiguration.java +++ b/flamecord/src/main/java/dev/_2lstudios/flamecord/configuration/FlameCordConfiguration.java @@ -16,6 +16,10 @@ import net.md_5.bungee.config.Configuration; @@ -19,7 +19,7 @@ index 76c35626d..1c27409d3 100644 // FlameCord start - Antibot System @Getter private boolean antibotAccountsEnabled = true; -@@ -231,6 +235,8 @@ public class FlameCordConfiguration extends FlameConfig { +@@ -268,6 +272,8 @@ public class FlameCordConfiguration extends FlameConfig { this.fakePlayersEnabled = setIfUnexistant("custom-motd.fakeplayers.enabled", this.fakePlayersEnabled, configuration); this.fakePlayersAmount = setIfUnexistant("custom-motd.fakeplayers.amount", this.fakePlayersAmount, configuration); this.fakePlayersMode = setIfUnexistant("custom-motd.fakeplayers.mode", this.fakePlayersMode, configuration); @@ -29,10 +29,10 @@ index 76c35626d..1c27409d3 100644 this.tcpFastOpen = setIfUnexistant("tcp-fast-open", this.tcpFastOpen, configuration); diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java -index 089cac669..91648b499 100644 +index bbf9c3dba..952b2a363 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java -@@ -522,7 +522,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection +@@ -521,7 +521,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection Preconditions.checkState( thisState == State.USERNAME, "Not expecting USERNAME" ); thisState = State.PROCESSING_USERNAME; diff --git a/Waterfall-Proxy-Patches/0036-Only-show-connection-fail-reason-when-detailed-logge.patch b/Waterfall-Proxy-Patches/0035-Only-show-connection-fail-reason-when-detailed-logge.patch similarity index 90% rename from Waterfall-Proxy-Patches/0036-Only-show-connection-fail-reason-when-detailed-logge.patch rename to Waterfall-Proxy-Patches/0035-Only-show-connection-fail-reason-when-detailed-logge.patch index 423a3b0..f943b9d 100644 --- a/Waterfall-Proxy-Patches/0036-Only-show-connection-fail-reason-when-detailed-logge.patch +++ b/Waterfall-Proxy-Patches/0035-Only-show-connection-fail-reason-when-detailed-logge.patch @@ -1,4 +1,4 @@ -From 48878ec51074a1a90d1c4aa761a40fbec74bd8ac Mon Sep 17 00:00:00 2001 +From 878867854391af17739c536b7db5c0992c8fcf84 Mon Sep 17 00:00:00 2001 From: LinsaFTW <25271111+linsaftw@users.noreply.github.com> Date: Tue, 15 Nov 2022 18:07:27 +0100 Subject: [PATCH] Only show connection fail reason when detailed logger is @@ -6,7 +6,7 @@ Subject: [PATCH] Only show connection fail reason when detailed logger is diff --git a/proxy/src/main/java/net/md_5/bungee/UserConnection.java b/proxy/src/main/java/net/md_5/bungee/UserConnection.java -index f3d60253..021fe839 100644 +index f3d60253f..021fe8398 100644 --- a/proxy/src/main/java/net/md_5/bungee/UserConnection.java +++ b/proxy/src/main/java/net/md_5/bungee/UserConnection.java @@ -405,8 +405,10 @@ public final class UserConnection implements ProxiedPlayer @@ -22,5 +22,5 @@ index f3d60253..021fe839 100644 @Override -- -2.29.2.windows.2 +2.37.3.windows.1 diff --git a/Waterfall-Proxy-Patches/0035-Safe-bytebuf-release.patch b/Waterfall-Proxy-Patches/0035-Safe-bytebuf-release.patch deleted file mode 100644 index e605d49..0000000 --- a/Waterfall-Proxy-Patches/0035-Safe-bytebuf-release.patch +++ /dev/null @@ -1,224 +0,0 @@ -From 07f1032863acec085e88e6411ba2d4e1906f959e Mon Sep 17 00:00:00 2001 -From: LinsaFTW <25271111+linsaftw@users.noreply.github.com> -Date: Mon, 31 Oct 2022 17:00:58 +0100 -Subject: [PATCH] Safe bytebuf release - - -diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java b/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java -index 9a7bf9b59..b43ebc8d6 100644 ---- a/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java -+++ b/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java -@@ -31,33 +31,34 @@ public class MinecraftDecoder extends MessageToMessageDecoder - @Override - protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) throws Exception - { -- // See Varint21FrameDecoder for the general reasoning. We add this here as ByteToMessageDecoder#handlerRemoved() -- // will fire any cumulated data through the pipeline, so we want to try and stop it here. -- if ( !ctx.channel().isActive() || !in.isReadable() ) // FlameCord - Check if connection is readable -- { -- return; -- } -+ // FlameCord - Safe bytebuf release -+ Object packetTypeInfo = null; -+ ByteBuf slice = null; -+ try { -+ // See Varint21FrameDecoder for the general reasoning. We add this here as ByteToMessageDecoder#handlerRemoved() -+ // will fire any cumulated data through the pipeline, so we want to try and stop it here. -+ if ( !ctx.channel().isActive() || !in.isReadable() ) // FlameCord - Check if connection is readable -+ { -+ return; -+ } - -- Protocol.DirectionData prot = ( server ) ? protocol.TO_SERVER : protocol.TO_CLIENT; -- -- // FlameCord - Check size before decoding -- if (prot == protocol.TO_SERVER) { -- final int readableBytes = in.readableBytes(); -- final int capacity = in.capacity(); -- -- if (readableBytes > 2097152) { -- throw new FastDecoderException("Error decoding packet with too many readableBytes: " + readableBytes); -- } else if (capacity > 2097152) { -- throw new FastDecoderException("Error decoding packet with too big capacity: " + capacity); -+ Protocol.DirectionData prot = ( server ) ? protocol.TO_SERVER : protocol.TO_CLIENT; -+ -+ // FlameCord - Check size before decoding -+ if (prot == protocol.TO_SERVER) { -+ final int readableBytes = in.readableBytes(); -+ final int capacity = in.capacity(); -+ -+ if (readableBytes > 2097152) { -+ throw new FastDecoderException("Error decoding packet with too many readableBytes: " + readableBytes); -+ } else if (capacity > 2097152) { -+ throw new FastDecoderException("Error decoding packet with too big capacity: " + capacity); -+ } - } -- } - -- // FlameCord - Duplicate buf instead of Copy -- ByteBuf slice = in.duplicate(); // Can't slice this one due to EntityMap :( -+ // FlameCord - Duplicate buf instead of Copy -+ slice = in.duplicate(); // Can't slice this one due to EntityMap :( - -- Object packetTypeInfo = null; -- try -- { - // Waterfall start - if (in.readableBytes() == 0 && !server) { - return; -diff --git a/proxy/src/main/java/net/md_5/bungee/ServerConnector.java b/proxy/src/main/java/net/md_5/bungee/ServerConnector.java -index a63e67f15..4293e2b49 100644 ---- a/proxy/src/main/java/net/md_5/bungee/ServerConnector.java -+++ b/proxy/src/main/java/net/md_5/bungee/ServerConnector.java -@@ -286,10 +286,15 @@ public class ServerConnector extends PacketHandler - user.unsafe().sendPacket( new PluginMessage( "MC|Brand", brandString.getBytes( StandardCharsets.UTF_8 ), handshakeHandler.isServerForge() ) ); - } else - { -- ByteBuf brand = ByteBufAllocator.DEFAULT.heapBuffer(); -- DefinedPacket.writeString( bungee.getName() + " (" + bungee.getVersion() + ")", brand ); -- user.unsafe().sendPacket( new PluginMessage( user.getPendingConnection().getVersion() >= ProtocolConstants.MINECRAFT_1_13 ? "minecraft:brand" : "MC|Brand", brand, handshakeHandler.isServerForge() ) ); -- brand.release(); -+ // FlameCord - Safe bytebuf release -+ ByteBuf brand = null; -+ try { -+ brand = ByteBufAllocator.DEFAULT.heapBuffer(); -+ DefinedPacket.writeString( bungee.getName() + " (" + bungee.getVersion() + ")", brand ); -+ user.unsafe().sendPacket( new PluginMessage( user.getPendingConnection().getVersion() >= ProtocolConstants.MINECRAFT_1_13 ? "minecraft:brand" : "MC|Brand", brand, handshakeHandler.isServerForge() ) ); -+ } finally { -+ if (brand != null) brand.release(); -+ } - } - // FlameCord end - 1.7.x support - } -diff --git a/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java b/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java -index 6e425764b..e7fe0d02b 100644 ---- a/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java -+++ b/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java -@@ -307,13 +307,24 @@ public class DownstreamBridge extends PacketHandler - { - try - { -- ByteBuf brand = Unpooled.wrappedBuffer(pluginMessage.getData()); -- String serverBrand = DefinedPacket.readString(brand); -- brand.release(); -- brand = ByteBufAllocator.DEFAULT.heapBuffer(); -- DefinedPacket.writeString(bungee.getName() + " <- " + serverBrand, brand ); // Waterfall -- pluginMessage.setData(brand); -- brand.release(); -+ // FlameCord - Safe bytebuf release -+ ByteBuf brand = null; -+ String serverBrand; -+ try { -+ brand = Unpooled.wrappedBuffer(pluginMessage.getData()); -+ serverBrand = DefinedPacket.readString(brand); -+ } finally { -+ if (brand != null) brand.release(); -+ } -+ -+ // FlameCord - Safe bytebuf release -+ try { -+ brand = ByteBufAllocator.DEFAULT.heapBuffer(); -+ DefinedPacket.writeString(bungee.getName() + " <- " + serverBrand, brand ); // Waterfall -+ pluginMessage.setData(brand); -+ } finally { -+ if (brand != null) brand.release(); -+ } - } catch (Exception ProtocolHacksSuck) - { - return; -diff --git a/proxy/src/main/java/net/md_5/bungee/netty/HandlerBoss.java b/proxy/src/main/java/net/md_5/bungee/netty/HandlerBoss.java -index abca28bd7..2fd37c2dd 100644 ---- a/proxy/src/main/java/net/md_5/bungee/netty/HandlerBoss.java -+++ b/proxy/src/main/java/net/md_5/bungee/netty/HandlerBoss.java -@@ -84,46 +84,44 @@ public class HandlerBoss extends ChannelInboundHandlerAdapter - @Override - public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception - { -- // FlameCord - Return if channel isn't active -- if (!ctx.channel().isActive()) { -- if (msg instanceof PacketWrapper) { -- ((PacketWrapper) msg).trySingleRelease(); -+ // FlameCord - Safe bytebuf release -+ try -+ { -+ // FlameCord - Return if channel isn't active -+ if (!ctx.channel().isActive()) { -+ return; - } - -- return; -- } -- -- if ( msg instanceof HAProxyMessage ) -- { -- HAProxyMessage proxy = (HAProxyMessage) msg; -- try -+ if ( msg instanceof HAProxyMessage ) - { -- if ( proxy.sourceAddress() != null ) -+ HAProxyMessage proxy = (HAProxyMessage) msg; -+ try - { -- InetSocketAddress newAddress = new InetSocketAddress( proxy.sourceAddress(), proxy.sourcePort() ); -+ if ( proxy.sourceAddress() != null ) -+ { -+ InetSocketAddress newAddress = new InetSocketAddress( proxy.sourceAddress(), proxy.sourcePort() ); - -- // FlameCord - Option to log haproxy -- if ( FlameCord.getInstance().getFlameCordConfiguration().isLoggerHaProxy() ) -- ProxyServer.getInstance().getLogger().log( Level.FINE, "Set remote address via PROXY {0} -> {1}", new Object[] -- { -- channel.getRemoteAddress(), newAddress -- } ); -+ // FlameCord - Option to log haproxy -+ if ( FlameCord.getInstance().getFlameCordConfiguration().isLoggerHaProxy() ) -+ ProxyServer.getInstance().getLogger().log( Level.FINE, "Set remote address via PROXY {0} -> {1}", new Object[] -+ { -+ channel.getRemoteAddress(), newAddress -+ } ); - -- channel.setRemoteAddress( newAddress ); -+ channel.setRemoteAddress( newAddress ); -+ } -+ } finally -+ { -+ proxy.release(); - } -- } finally -- { -- proxy.release(); -+ return; - } -- return; -- } - -- if ( handler != null ) -- { - PacketWrapper packet = (PacketWrapper) msg; -- boolean sendPacket = handler.shouldHandle( packet ); -- try -+ -+ if ( handler != null ) - { -+ boolean sendPacket = handler.shouldHandle( packet ); - if ( sendPacket && packet.packet != null ) - { - try -@@ -138,9 +136,11 @@ public class HandlerBoss extends ChannelInboundHandlerAdapter - { - handler.handle( packet ); - } -- } finally -- { -- packet.trySingleRelease(); -+ } -+ } finally -+ { -+ if (msg instanceof PacketWrapper) { -+ ((PacketWrapper) msg).trySingleRelease(); - } - } - } --- -2.37.3.windows.1 -