Support RakNet Cookies (#4554)

* Support cookies

Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>

* Use cloudburst upstream raknet

* Comment out mavenLocal()

---------

Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
This commit is contained in:
Kas-tle 2024-04-16 20:52:46 -07:00 committed by GitHub
parent a24f684123
commit 5151c25e1a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 20 additions and 10 deletions

View File

@ -107,6 +107,7 @@ dependencies {
} }
repositories { repositories {
// mavenLocal()
maven("https://repo.opencollab.dev/maven-releases/") maven("https://repo.opencollab.dev/maven-releases/")
maven("https://repo.opencollab.dev/maven-snapshots/") maven("https://repo.opencollab.dev/maven-snapshots/")
maven("https://jitpack.io") maven("https://jitpack.io")

View File

@ -6,6 +6,10 @@ plugins {
} }
dependencies { dependencies {
constraints {
implementation(libs.raknet) // Ensure protocol does not override the RakNet version
}
api(projects.common) api(projects.common)
api(projects.api) api(projects.api)

View File

@ -78,6 +78,7 @@ public class DumpInfo {
private final GeyserConfiguration config; private final GeyserConfiguration config;
private final Floodgate floodgate; private final Floodgate floodgate;
private final Object2IntMap<DeviceOs> userPlatforms; private final Object2IntMap<DeviceOs> userPlatforms;
private final int connectionAttempts;
private final HashInfo hashInfo; private final HashInfo hashInfo;
private final RamInfo ramInfo; private final RamInfo ramInfo;
private LogsInfo logsInfo; private LogsInfo logsInfo;
@ -129,6 +130,8 @@ public class DumpInfo {
userPlatforms.put(device, userPlatforms.getOrDefault(device, 0) + 1); userPlatforms.put(device, userPlatforms.getOrDefault(device, 0) + 1);
} }
this.connectionAttempts = GeyserImpl.getInstance().getGeyserServer().getConnectionAttempts();
this.bootstrapInfo = GeyserImpl.getInstance().getBootstrap().getDumpInfo(); this.bootstrapInfo = GeyserImpl.getInstance().getBootstrap().getDumpInfo();
this.flagsInfo = new FlagsInfo(); this.flagsInfo = new FlagsInfo();

View File

@ -74,7 +74,6 @@ import java.util.function.IntFunction;
import java.util.function.Supplier; import java.util.function.Supplier;
import static org.cloudburstmc.netty.channel.raknet.RakConstants.DEFAULT_GLOBAL_PACKET_LIMIT; import static org.cloudburstmc.netty.channel.raknet.RakConstants.DEFAULT_GLOBAL_PACKET_LIMIT;
import static org.cloudburstmc.netty.channel.raknet.RakConstants.DEFAULT_OFFLINE_PACKET_LIMIT;
import static org.cloudburstmc.netty.channel.raknet.RakConstants.DEFAULT_PACKET_LIMIT; import static org.cloudburstmc.netty.channel.raknet.RakConstants.DEFAULT_PACKET_LIMIT;
public final class GeyserServer { public final class GeyserServer {
@ -111,6 +110,10 @@ public final class GeyserServer {
private ChannelFuture[] bootstrapFutures; private ChannelFuture[] bootstrapFutures;
// Keep track of connection attempts for dump info
@Getter
private int connectionAttempts = 0;
/** /**
* The port to broadcast in the pong. This can be different from the port the server is bound to, e.g. due to port forwarding. * The port to broadcast in the pong. This can be different from the port the server is bound to, e.g. due to port forwarding.
*/ */
@ -217,11 +220,6 @@ public final class GeyserServer {
int rakPacketLimit = positivePropOrDefault("Geyser.RakPacketLimit", DEFAULT_PACKET_LIMIT); int rakPacketLimit = positivePropOrDefault("Geyser.RakPacketLimit", DEFAULT_PACKET_LIMIT);
this.geyser.getLogger().debug("Setting RakNet packet limit to " + rakPacketLimit); this.geyser.getLogger().debug("Setting RakNet packet limit to " + rakPacketLimit);
boolean isWhitelistedProxyProtocol = this.geyser.getConfig().getBedrock().isEnableProxyProtocol()
&& !this.geyser.getConfig().getBedrock().getProxyProtocolWhitelistedIPs().isEmpty();
int rakOfflinePacketLimit = positivePropOrDefault("Geyser.RakOfflinePacketLimit", isWhitelistedProxyProtocol ? Integer.MAX_VALUE : DEFAULT_OFFLINE_PACKET_LIMIT);
this.geyser.getLogger().debug("Setting RakNet offline packet limit to " + rakOfflinePacketLimit);
int rakGlobalPacketLimit = positivePropOrDefault("Geyser.RakGlobalPacketLimit", DEFAULT_GLOBAL_PACKET_LIMIT); int rakGlobalPacketLimit = positivePropOrDefault("Geyser.RakGlobalPacketLimit", DEFAULT_GLOBAL_PACKET_LIMIT);
this.geyser.getLogger().debug("Setting RakNet global packet limit to " + rakGlobalPacketLimit); this.geyser.getLogger().debug("Setting RakNet global packet limit to " + rakGlobalPacketLimit);
@ -231,8 +229,8 @@ public final class GeyserServer {
.option(RakChannelOption.RAK_HANDLE_PING, true) .option(RakChannelOption.RAK_HANDLE_PING, true)
.option(RakChannelOption.RAK_MAX_MTU, this.geyser.getConfig().getMtu()) .option(RakChannelOption.RAK_MAX_MTU, this.geyser.getConfig().getMtu())
.option(RakChannelOption.RAK_PACKET_LIMIT, rakPacketLimit) .option(RakChannelOption.RAK_PACKET_LIMIT, rakPacketLimit)
.option(RakChannelOption.RAK_OFFLINE_PACKET_LIMIT, rakOfflinePacketLimit)
.option(RakChannelOption.RAK_GLOBAL_PACKET_LIMIT, rakGlobalPacketLimit) .option(RakChannelOption.RAK_GLOBAL_PACKET_LIMIT, rakGlobalPacketLimit)
.option(RakChannelOption.RAK_SEND_COOKIE, true)
.childHandler(serverInitializer); .childHandler(serverInitializer);
} }
@ -248,6 +246,7 @@ public final class GeyserServer {
} }
if (!isWhitelistedIP) { if (!isWhitelistedIP) {
connectionAttempts++;
return false; return false;
} }
} }
@ -270,10 +269,12 @@ public final class GeyserServer {
geyser.eventBus().fire(requestEvent); geyser.eventBus().fire(requestEvent);
if (requestEvent.isCancelled()) { if (requestEvent.isCancelled()) {
geyser.getLogger().debug("Connection request from " + ip + " was cancelled using the API!"); geyser.getLogger().debug("Connection request from " + ip + " was cancelled using the API!");
connectionAttempts++;
return false; return false;
} }
geyser.getLogger().info(GeyserLocale.getLocaleStringLog("geyser.network.attempt_connect", ip)); geyser.getLogger().debug(GeyserLocale.getLocaleStringLog("geyser.network.attempt_connect", ip));
connectionAttempts++;
return true; return true;
} }

View File

@ -11,7 +11,7 @@ gson = "2.3.1" # Provided by Spigot 1.8.8
websocket = "1.5.1" websocket = "1.5.1"
protocol = "3.0.0.Beta1-20240313.120922-126" protocol = "3.0.0.Beta1-20240313.120922-126"
protocol-connection = "3.0.0.Beta1-20240313.120922-125" protocol-connection = "3.0.0.Beta1-20240313.120922-125"
raknet = "1.0.0.CR1-20240330.103819-16" raknet = "1.0.0.CR3-20240416.144209-1"
blockstateupdater="1.20.70-20240303.125052-2" blockstateupdater="1.20.70-20240303.125052-2"
mcauthlib = "d9d773e" mcauthlib = "d9d773e"
mcprotocollib = "1.20.4-2-20240116.220521-7" mcprotocollib = "1.20.4-2-20240116.220521-7"

View File

@ -4,6 +4,8 @@ enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")
dependencyResolutionManagement { dependencyResolutionManagement {
repositories { repositories {
// mavenLocal()
// Floodgate, Cumulus etc. // Floodgate, Cumulus etc.
maven("https://repo.opencollab.dev/main") maven("https://repo.opencollab.dev/main")
@ -30,7 +32,6 @@ dependencyResolutionManagement {
mavenContent { releasesOnly() } mavenContent { releasesOnly() }
} }
mavenLocal()
mavenCentral() mavenCentral()
// ViaVersion // ViaVersion