diff --git a/gateway/EaglercraftXBungee/EaglerXBungee-Latest.jar b/gateway/EaglercraftXBungee/EaglerXBungee-Latest.jar index a46c436..e3ef0a2 100644 Binary files a/gateway/EaglercraftXBungee/EaglerXBungee-Latest.jar and b/gateway/EaglercraftXBungee/EaglerXBungee-Latest.jar differ diff --git a/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/EaglerXBungee.java b/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/EaglerXBungee.java index 95c763e..79966bc 100644 --- a/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/EaglerXBungee.java +++ b/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/EaglerXBungee.java @@ -17,6 +17,7 @@ import io.netty.channel.ChannelOption; import io.netty.channel.EventLoopGroup; import net.lax1dude.eaglercraft.v1_8.plugin.gateway_bungeecord.auth.DefaultAuthSystem; import net.lax1dude.eaglercraft.v1_8.plugin.gateway_bungeecord.command.CommandConfirmCode; +import net.lax1dude.eaglercraft.v1_8.plugin.gateway_bungeecord.command.CommandDomain; import net.lax1dude.eaglercraft.v1_8.plugin.gateway_bungeecord.command.CommandEaglerPurge; import net.lax1dude.eaglercraft.v1_8.plugin.gateway_bungeecord.command.CommandEaglerRegister; import net.lax1dude.eaglercraft.v1_8.plugin.gateway_bungeecord.command.CommandRatelimit; @@ -104,6 +105,7 @@ public class EaglerXBungee extends Plugin { mgr.registerListener(this, new EaglerPacketEventListener(this)); mgr.registerCommand(this, new CommandRatelimit()); mgr.registerCommand(this, new CommandConfirmCode()); + mgr.registerCommand(this, new CommandDomain()); EaglerAuthConfig authConf = conf.getAuthConfig(); if(authConf.isEnableAuthentication() && authConf.isUseBuiltInAuthentication()) { if(!BungeeCord.getInstance().getConfig().isOnlineMode()) { diff --git a/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/command/CommandDomain.java b/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/command/CommandDomain.java new file mode 100644 index 0000000..4b99815 --- /dev/null +++ b/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/command/CommandDomain.java @@ -0,0 +1,55 @@ +package net.lax1dude.eaglercraft.v1_8.plugin.gateway_bungeecord.command; + +import net.lax1dude.eaglercraft.v1_8.plugin.gateway_bungeecord.server.EaglerInitialHandler; +import net.md_5.bungee.api.ChatColor; +import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.ProxyServer; +import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.api.connection.PendingConnection; +import net.md_5.bungee.api.connection.ProxiedPlayer; +import net.md_5.bungee.api.plugin.Command; + +/** + * Copyright (c) 2023 LAX1DUDE. All Rights Reserved. + * + * WITH THE EXCEPTION OF PATCH FILES, MINIFIED JAVASCRIPT, AND ALL FILES + * NORMALLY FOUND IN AN UNMODIFIED MINECRAFT RESOURCE PACK, YOU ARE NOT ALLOWED + * TO SHARE, DISTRIBUTE, OR REPURPOSE ANY FILE USED BY OR PRODUCED BY THE + * SOFTWARE IN THIS REPOSITORY WITHOUT PRIOR PERMISSION FROM THE PROJECT AUTHOR. + * + * NOT FOR COMMERCIAL OR MALICIOUS USE + * + * (please read the 'LICENSE' file this repo's root directory for more info) + * + */ +public class CommandDomain extends Command { + + public CommandDomain() { + super("domain", "eaglercraft.command.domain"); + } + + @Override + public void execute(CommandSender var1, String[] var2) { + if(var2.length != 1) { + var1.sendMessage(new TextComponent(ChatColor.RED + "How to use: " + ChatColor.WHITE + "/domain ")); + }else { + ProxiedPlayer player = ProxyServer.getInstance().getPlayer(var2[0]); + if(player == null) { + var1.sendMessage(new TextComponent(ChatColor.RED + "That user is not online")); + return; + } + PendingConnection conn = player.getPendingConnection(); + if(!(conn instanceof EaglerInitialHandler)) { + var1.sendMessage(new TextComponent(ChatColor.RED + "That user is not using Eaglercraft")); + return; + } + String origin = ((EaglerInitialHandler)conn).origin; + if(origin != null) { + var1.sendMessage(new TextComponent(ChatColor.BLUE + "Domain of " + var2[0] + " is '" + origin + "'")); + }else { + var1.sendMessage(new TextComponent(ChatColor.RED + "That user's browser did not send an origin header")); + } + } + } + +} diff --git a/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/server/EaglerInitialHandler.java b/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/server/EaglerInitialHandler.java index 0f65613..e638032 100644 --- a/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/server/EaglerInitialHandler.java +++ b/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/server/EaglerInitialHandler.java @@ -52,14 +52,17 @@ public class EaglerInitialHandler extends InitialHandler { public final SimpleRateLimiter skinLookupRateLimiter; public final SimpleRateLimiter skinUUIDLookupRateLimiter; public final SimpleRateLimiter skinTextureDownloadRateLimiter; + public final String origin; public EaglerInitialHandler(BungeeCord bungee, ListenerInfo listener, final ChannelWrapper ch, - int gameProtocolVersion, String username, UUID playerUUID, InetSocketAddress address, String host) { + int gameProtocolVersion, String username, UUID playerUUID, InetSocketAddress address, String host, + String origin) { super(bungee, listener); this.gameProtocolVersion = gameProtocolVersion; this.username = username; this.playerUUID = playerUUID; this.eaglerAddress = address; + this.origin = origin; this.skinLookupRateLimiter = new SimpleRateLimiter(); this.skinUUIDLookupRateLimiter = new SimpleRateLimiter(); this.skinTextureDownloadRateLimiter = new SimpleRateLimiter(); diff --git a/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/server/HttpWebSocketHandler.java b/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/server/HttpWebSocketHandler.java index e11e9fd..7b61635 100644 --- a/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/server/HttpWebSocketHandler.java +++ b/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/server/HttpWebSocketHandler.java @@ -701,7 +701,8 @@ public class HttpWebSocketHandler extends ChannelInboundHandlerAdapter { ch.setRemoteAddress(baseAddress); } final EaglerInitialHandler initialHandler = new EaglerInitialHandler(bungee, conf, ch, gameProtocolVersion, - usernameStr, clientUUID, baseAddress, ctx.channel().attr(EaglerPipeline.HOST).get()); + usernameStr, clientUUID, baseAddress, ctx.channel().attr(EaglerPipeline.HOST).get(), + ctx.channel().attr(EaglerPipeline.ORIGIN).get()); final Callback complete = (Callback) new Callback() { public void done(final LoginEvent result, final Throwable error) { if (result.isCancelled()) { diff --git a/gateway/EaglercraftXBungee/src/main/resources/plugin.yml b/gateway/EaglercraftXBungee/src/main/resources/plugin.yml index 5c7f376..7e5ca76 100644 --- a/gateway/EaglercraftXBungee/src/main/resources/plugin.yml +++ b/gateway/EaglercraftXBungee/src/main/resources/plugin.yml @@ -1,5 +1,5 @@ name: EaglercraftXBungee main: net.lax1dude.eaglercraft.v1_8.plugin.gateway_bungeecord.EaglerXBungee -version: 1.0.1 +version: 1.0.2 description: Plugin to allow EaglercraftX 1.8 players to join your network, or allow EaglercraftX 1.8 players to use your network as a proxy to join other networks author: lax1dude \ No newline at end of file diff --git a/gateway_version b/gateway_version index 7f20734..e6d5cb8 100644 --- a/gateway_version +++ b/gateway_version @@ -1 +1 @@ -1.0.1 \ No newline at end of file +1.0.2 \ No newline at end of file