1
0
mirror of https://github.com/GeyserMC/Floodgate.git synced 2026-01-04 15:31:48 +00:00

Remaining merge changes

This commit is contained in:
Tim203
2023-05-05 11:00:22 +02:00
parent e0d2369482
commit 298ea723b8
33 changed files with 74 additions and 81 deletions

View File

@@ -26,6 +26,7 @@
package org.geysermc.floodgate.core;
import io.micronaut.context.ApplicationContext;
import io.micronaut.context.Qualifier;
import java.util.Map;
import java.util.UUID;
import org.geysermc.api.Geyser;
@@ -79,7 +80,7 @@ public abstract class FloodgatePlatform {
injector = context.getBean(PlatformInjector.class);
GeyserApiBase api = guice.getInstance(GeyserApiBase.class);
GeyserApiBase api = context.getBean(GeyserApiBase.class);
InstanceHolder.set(
context.getBean(FloodgateApi.class),
null, // todo context.getBean(PlayerLink.class),
@@ -126,7 +127,10 @@ public abstract class FloodgatePlatform {
abstract protected boolean isProxy();
public <T> T getInstance(Class<T> clazz) {
return guice.getInstance(clazz);
public <T> T getBean(Class<T> clazz) {
return context.getBean(clazz);
}
public <T> T getBean(Class<T> clazz, Qualifier<T> qualifier) {
return context.getBean(clazz, qualifier);
}
}

View File

@@ -35,11 +35,11 @@ import java.util.Queue;
import lombok.RequiredArgsConstructor;
import org.geysermc.floodgate.api.handshake.HandshakeData;
import org.geysermc.floodgate.core.config.FloodgateConfig;
import org.geysermc.floodgate.core.crypto.FloodgateCipher;
import org.geysermc.floodgate.core.player.FloodgateHandshakeHandler;
import org.geysermc.floodgate.core.player.FloodgateHandshakeHandler.HandshakeResult;
import org.geysermc.floodgate.core.player.HostnameSeparationResult;
import org.geysermc.floodgate.core.util.Constants;
import org.geysermc.floodgate.crypto.FloodgateCipher;
@RequiredArgsConstructor
public abstract class CommonDataHandler extends ChannelInboundHandlerAdapter {

View File

@@ -25,7 +25,6 @@
package org.geysermc.floodgate.core.addon.data;
import com.google.inject.Singleton;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
import jakarta.inject.Singleton;

View File

@@ -28,8 +28,8 @@ package org.geysermc.floodgate.core.api;
import jakarta.inject.Inject;
import jakarta.inject.Singleton;
import java.nio.charset.StandardCharsets;
import org.geysermc.floodgate.core.crypto.FloodgateCipher;
import org.geysermc.floodgate.core.scope.ProxyOnly;
import org.geysermc.floodgate.crypto.FloodgateCipher;
import org.geysermc.floodgate.util.BedrockData;
@ProxyOnly

View File

@@ -31,7 +31,7 @@ import com.google.common.collect.ImmutableList;
import io.micronaut.context.BeanProvider;
import jakarta.inject.Inject;
import jakarta.inject.Singleton;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
@@ -42,6 +42,7 @@ import org.geysermc.api.GeyserApiBase;
import org.geysermc.api.connection.Connection;
import org.geysermc.cumulus.form.Form;
import org.geysermc.cumulus.form.util.FormBuilder;
import org.geysermc.floodgate.api.InstanceHolder;
import org.geysermc.floodgate.api.link.PlayerLink;
import org.geysermc.floodgate.api.logger.FloodgateLogger;
import org.geysermc.floodgate.core.config.FloodgateConfig;

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2019-2022 GeyserMC. http://geysermc.org
* Copyright (c) 2019-2023 GeyserMC. http://geysermc.org
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -23,8 +23,10 @@
* @link https://github.com/GeyserMC/Floodgate
*/
package org.geysermc.floodgate.api.legacy;
package org.geysermc.floodgate.core.api.legacy;
import jakarta.inject.Inject;
import jakarta.inject.Singleton;
import java.util.Collection;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
@@ -35,17 +37,15 @@ import org.geysermc.cumulus.form.util.FormBuilder;
import org.geysermc.floodgate.api.FloodgateApi;
import org.geysermc.floodgate.api.player.FloodgatePlayer;
import org.geysermc.floodgate.api.unsafe.Unsafe;
import org.geysermc.floodgate.player.FloodgateConnection;
import org.geysermc.floodgate.util.WebEndpoints;
import org.geysermc.floodgate.core.http.xbox.GetGamertagResult;
import org.geysermc.floodgate.core.http.xbox.GetXuidResult;
import org.geysermc.floodgate.core.http.xbox.XboxClient;
import org.geysermc.floodgate.core.player.FloodgateConnection;
@Singleton
public final class LegacyApiWrapper implements FloodgateApi {
private final GeyserApiBase apiBase;
private final WebEndpoints webEndpoints;
public LegacyApiWrapper(GeyserApiBase apiBase, WebEndpoints webEndpoints) {
this.apiBase = apiBase;
this.webEndpoints = webEndpoints;
}
@Inject GeyserApiBase apiBase;
@Inject XboxClient xboxClient;
@Override
public String getPlayerPrefix() {
@@ -116,12 +116,12 @@ public final class LegacyApiWrapper implements FloodgateApi {
@Override
public CompletableFuture<Long> getXuidFor(String gamertag) {
return webEndpoints.getXuidFor(gamertag);
return xboxClient.xuidByGamertag(gamertag).thenApply(GetXuidResult::xuid);
}
@Override
public CompletableFuture<String> getGamertagFor(long xuid) {
return webEndpoints.getGamertagFor(xuid);
return xboxClient.gamertagByXuid(xuid).thenApply(GetGamertagResult::gamertag);
}
@Override

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2019-2022 GeyserMC. http://geysermc.org
* Copyright (c) 2019-2023 GeyserMC. http://geysermc.org
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -23,13 +23,13 @@
* @link https://github.com/GeyserMC/Floodgate
*/
package org.geysermc.floodgate.api.legacy;
package org.geysermc.floodgate.core.api.legacy;
import java.util.UUID;
import org.geysermc.floodgate.api.FloodgateApi;
import org.geysermc.floodgate.api.player.FloodgatePlayer;
import org.geysermc.floodgate.api.player.PropertyKey;
import org.geysermc.floodgate.player.FloodgateConnection;
import org.geysermc.floodgate.core.player.FloodgateConnection;
import org.geysermc.floodgate.util.DeviceOs;
import org.geysermc.floodgate.util.InputMode;
import org.geysermc.floodgate.util.LinkedPlayer;

View File

@@ -23,7 +23,7 @@
* @link https://github.com/GeyserMC/Floodgate
*/
package org.geysermc.floodgate.api.legacy;
package org.geysermc.floodgate.core.api.legacy;
import java.util.HashMap;
import java.util.Map;

View File

@@ -35,9 +35,8 @@ import jakarta.inject.Inject;
import jakarta.inject.Singleton;
import java.util.concurrent.CompletableFuture;
import lombok.Getter;
import org.geysermc.floodgate.api.FloodgateApi;
import org.geysermc.floodgate.api.SimpleFloodgateApi;
import org.geysermc.floodgate.api.logger.FloodgateLogger;
import org.geysermc.floodgate.core.api.SimpleFloodgateApi;
import org.geysermc.floodgate.core.command.util.Permission;
import org.geysermc.floodgate.core.config.FloodgateConfig;
import org.geysermc.floodgate.core.link.CommonPlayerLink;

View File

@@ -30,7 +30,6 @@ import cloud.commandframework.CommandManager;
import cloud.commandframework.context.CommandContext;
import jakarta.inject.Singleton;
import org.geysermc.api.Geyser;
import org.geysermc.floodgate.api.FloodgateApi;
import org.geysermc.floodgate.core.config.FloodgateConfig;
import org.geysermc.floodgate.core.platform.command.FloodgateCommand;
import org.geysermc.floodgate.core.player.UserAudience;

View File

@@ -39,11 +39,11 @@ import lombok.Getter;
import org.geysermc.configutils.ConfigUtilities;
import org.geysermc.configutils.file.codec.PathFileCodec;
import org.geysermc.configutils.updater.change.Changes;
import org.geysermc.floodgate.core.crypto.FloodgateCipher;
import org.geysermc.floodgate.core.crypto.KeyProducer;
import org.geysermc.floodgate.core.scope.ProxyOnly;
import org.geysermc.floodgate.core.scope.ServerOnly;
import org.geysermc.floodgate.core.util.GlobalBeanCache;
import org.geysermc.floodgate.crypto.FloodgateCipher;
import org.geysermc.floodgate.crypto.KeyProducer;
@Factory
@Getter

View File

@@ -57,7 +57,11 @@ public interface FloodgateConfig extends GenericPostInitializeCallback<ConfigLoa
// don't assume that the key always exists with the existence of a config
if (!Files.exists(keyPath)) {
loader.generateKey(keyPath);
// TODO improve message and also link to article about corrupted keys/WinSCP/FTP
// Like, where is key.pem?
// TODO don't be so noisy with error. It makes it hard to understand what the error is.
return CallbackResult.failed("Floodgate requires a key file! " +
"Copy your key file from Geyser (key.pem) and paste it into " + keyPath);
}
try {

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2019-2022 GeyserMC. http://geysermc.org
* Copyright (c) 2019-2023 GeyserMC. http://geysermc.org
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -23,7 +23,7 @@
* @link https://github.com/GeyserMC/Floodgate
*/
package org.geysermc.floodgate.crypto;
package org.geysermc.floodgate.core.crypto;
import java.nio.Buffer;
import java.nio.ByteBuffer;

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2019-2022 GeyserMC. http://geysermc.org
* Copyright (c) 2019-2023 GeyserMC. http://geysermc.org
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -23,7 +23,7 @@
* @link https://github.com/GeyserMC/Floodgate
*/
package org.geysermc.floodgate.crypto;
package org.geysermc.floodgate.core.crypto;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2019-2022 GeyserMC. http://geysermc.org
* Copyright (c) 2019-2023 GeyserMC. http://geysermc.org
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -20,10 +20,10 @@
* THE SOFTWARE.
*
* @author GeyserMC
* @link https://github.com/GeyserMC/Geyser
* @link https://github.com/GeyserMC/Floodgate
*/
package org.geysermc.floodgate.crypto;
package org.geysermc.floodgate.core.crypto;
import java.util.Base64;

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2019-2022 GeyserMC. http://geysermc.org
* Copyright (c) 2019-2023 GeyserMC. http://geysermc.org
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -23,12 +23,12 @@
* @link https://github.com/GeyserMC/Floodgate
*/
package org.geysermc.floodgate.crypto;
package org.geysermc.floodgate.core.crypto;
import static java.nio.charset.StandardCharsets.UTF_8;
import java.security.Key;
import org.geysermc.floodgate.util.InvalidFormatException;
import org.geysermc.floodgate.core.util.InvalidFormatException;
/**
* Responsible for both encrypting and decrypting data

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2019-2022 GeyserMC. http://geysermc.org
* Copyright (c) 2019-2023 GeyserMC. http://geysermc.org
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -20,10 +20,10 @@
* THE SOFTWARE.
*
* @author GeyserMC
* @link https://github.com/GeyserMC/Geyser
* @link https://github.com/GeyserMC/Floodgate
*/
package org.geysermc.floodgate.crypto;
package org.geysermc.floodgate.core.crypto;
import java.io.IOException;
import java.nio.file.Files;

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2019-2022 GeyserMC. http://geysermc.org
* Copyright (c) 2019-2023 GeyserMC. http://geysermc.org
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -20,10 +20,10 @@
* THE SOFTWARE.
*
* @author GeyserMC
* @link https://github.com/GeyserMC/Geyser
* @link https://github.com/GeyserMC/Floodgate
*/
package org.geysermc.floodgate.crypto;
package org.geysermc.floodgate.core.crypto;
public interface Topping {
byte[] encode(byte[] data);

View File

@@ -32,7 +32,7 @@ import org.geysermc.api.connection.Connection;
import org.geysermc.event.util.AbstractCancellable;
import org.geysermc.floodgate.api.event.skin.SkinApplyEvent;
import org.geysermc.floodgate.api.player.FloodgatePlayer;
import org.geysermc.floodgate.player.FloodgateConnection;
import org.geysermc.floodgate.core.player.FloodgateConnection;
public class SkinApplyEventImpl extends AbstractCancellable implements SkinApplyEvent {
private final FloodgatePlayer player;

View File

@@ -39,15 +39,15 @@ import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import org.geysermc.api.connection.Connection;
import org.geysermc.event.Listener;
import org.geysermc.floodgate.api.player.FloodgatePlayer;
import org.geysermc.floodgate.core.crypto.AesCipher;
import org.geysermc.floodgate.core.crypto.AesKeyProducer;
import org.geysermc.floodgate.core.crypto.Base64Topping;
import org.geysermc.floodgate.core.crypto.FloodgateCipher;
import org.geysermc.floodgate.core.crypto.KeyProducer;
import org.geysermc.floodgate.core.util.Constants;
import org.geysermc.floodgate.core.util.GlobalBeanCache;
import org.geysermc.floodgate.crypto.AesCipher;
import org.geysermc.floodgate.crypto.AesKeyProducer;
import org.geysermc.floodgate.crypto.Base64Topping;
import org.geysermc.floodgate.crypto.FloodgateCipher;
import org.geysermc.floodgate.crypto.KeyProducer;
@Factory
@BootstrapContextCompatible
@@ -114,7 +114,7 @@ public class CommonModule {
@Bean
@Singleton
@Named("playerAttribute")
public AttributeKey<FloodgatePlayer> playerAttribute() {
public AttributeKey<Connection> playerAttribute() {
return AttributeKey.valueOf("floodgate-player");
}
}

View File

@@ -38,7 +38,6 @@ import lombok.RequiredArgsConstructor;
import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.geysermc.api.GeyserApiBase;
import org.geysermc.floodgate.api.FloodgateApi;
import org.geysermc.floodgate.core.platform.util.PlayerType;
import org.geysermc.floodgate.core.player.UserAudience;
import org.geysermc.floodgate.core.player.audience.ProfileAudience;

View File

@@ -23,7 +23,7 @@
* @link https://github.com/GeyserMC/Floodgate
*/
package org.geysermc.floodgate.player;
package org.geysermc.floodgate.core.player;
import java.net.InetSocketAddress;
import java.util.UUID;
@@ -40,11 +40,11 @@ import org.geysermc.api.util.UiProfile;
import org.geysermc.cumulus.form.Form;
import org.geysermc.cumulus.form.util.FormBuilder;
import org.geysermc.floodgate.api.handshake.HandshakeData;
import org.geysermc.floodgate.api.legacy.LegacyPlayerWrapper;
import org.geysermc.floodgate.api.legacy.PropertyGlue;
import org.geysermc.floodgate.core.api.legacy.LegacyPlayerWrapper;
import org.geysermc.floodgate.core.api.legacy.PropertyGlue;
import org.geysermc.floodgate.core.util.Utils;
import org.geysermc.floodgate.util.BedrockData;
import org.geysermc.floodgate.util.LinkedPlayer;
import org.geysermc.floodgate.util.Utils;
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
public final class FloodgateConnection implements Connection {

View File

@@ -50,14 +50,14 @@ import org.geysermc.floodgate.core.addon.data.HandshakeDataImpl;
import org.geysermc.floodgate.core.addon.data.HandshakeHandlersImpl;
import org.geysermc.floodgate.core.api.SimpleFloodgateApi;
import org.geysermc.floodgate.core.config.FloodgateConfig;
import org.geysermc.floodgate.core.crypto.FloodgateCipher;
import org.geysermc.floodgate.core.link.CommonPlayerLink;
import org.geysermc.floodgate.core.skin.SkinUploadManager;
import org.geysermc.floodgate.core.util.Constants;
import org.geysermc.floodgate.core.util.InvalidFormatException;
import org.geysermc.floodgate.core.util.LanguageManager;
import org.geysermc.floodgate.core.util.Utils;
import org.geysermc.floodgate.crypto.FloodgateCipher;
import org.geysermc.floodgate.util.BedrockData;
import org.geysermc.floodgate.util.InvalidFormatException;
import org.geysermc.floodgate.util.LinkedPlayer;
public final class FloodgateHandshakeHandler {
@@ -284,7 +284,7 @@ public final class FloodgateHandshakeHandler {
public InetSocketAddress getNewIp(Channel channel) {
if (floodgatePlayer != null) {
return (InetSocketAddress) floodgatePlayer.socketAddress();
return floodgatePlayer.socketAddress();
}
if (handshakeData.getIp() != null) {
int port = ((InetSocketAddress) channel.remoteAddress()).getPort();

View File

@@ -23,15 +23,7 @@
* @link https://github.com/GeyserMC/Floodgate
*/
package org.geysermc.floodgate.player;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import java.io.ByteArrayOutputStream;
import java.net.InetSocketAddress;
import java.nio.charset.StandardCharsets;
import java.util.UUID;
import org.geysermc.api.connection.Connection;
package org.geysermc.floodgate.core.player;
public final class HandshakeInjectedData {
// TIM I PROMISE THIS IS JUST AN IDEA

View File

@@ -39,7 +39,7 @@ import org.geysermc.api.connection.Connection;
import org.geysermc.floodgate.api.event.skin.SkinApplyEvent.SkinData;
import org.geysermc.floodgate.api.logger.FloodgateLogger;
import org.geysermc.floodgate.core.util.Utils;
import org.geysermc.floodgate.util.WebsocketEventType;
import org.geysermc.floodgate.core.util.WebsocketEventType;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;

View File

@@ -23,7 +23,7 @@
* @link https://github.com/GeyserMC/Geyser
*/
package org.geysermc.floodgate.util;
package org.geysermc.floodgate.core.util;
public class InvalidFormatException extends Exception {
public InvalidFormatException(String message) {

View File

@@ -23,7 +23,7 @@
* @link https://github.com/GeyserMC/Geyser
*/
package org.geysermc.floodgate.util;
package org.geysermc.floodgate.core.util;
public enum WebsocketEventType {
/**