(1.0.5) Fixed max_players config option in EaglerXBungee
This commit is contained in:
parent
104abbbb83
commit
fecc10c8b4
Binary file not shown.
|
@ -1,6 +1,7 @@
|
||||||
package net.lax1dude.eaglercraft.v1_8.plugin.gateway_bungeecord.handlers;
|
package net.lax1dude.eaglercraft.v1_8.plugin.gateway_bungeecord.handlers;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.apache.commons.codec.binary.Base64;
|
import org.apache.commons.codec.binary.Base64;
|
||||||
|
@ -19,6 +20,7 @@ import net.md_5.bungee.UserConnection;
|
||||||
import net.md_5.bungee.api.ProxyServer;
|
import net.md_5.bungee.api.ProxyServer;
|
||||||
import net.md_5.bungee.api.chat.TextComponent;
|
import net.md_5.bungee.api.chat.TextComponent;
|
||||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||||
|
import net.md_5.bungee.api.connection.Server;
|
||||||
import net.md_5.bungee.api.event.PlayerDisconnectEvent;
|
import net.md_5.bungee.api.event.PlayerDisconnectEvent;
|
||||||
import net.md_5.bungee.api.event.PluginMessageEvent;
|
import net.md_5.bungee.api.event.PluginMessageEvent;
|
||||||
import net.md_5.bungee.api.event.PostLoginEvent;
|
import net.md_5.bungee.api.event.PostLoginEvent;
|
||||||
|
@ -71,6 +73,16 @@ public class EaglerPacketEventListener implements Listener {
|
||||||
event.getSender().disconnect(new TextComponent("Cannot send \"" + SkinService.CHANNEL + "\" on a non-eagler connection!"));
|
event.getSender().disconnect(new TextComponent("Cannot send \"" + SkinService.CHANNEL + "\" on a non-eagler connection!"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}else if(event.getSender() instanceof Server && event.getReceiver() instanceof UserConnection) {
|
||||||
|
UserConnection player = (UserConnection)event.getReceiver();
|
||||||
|
if("EAG|GetDomain".equals(event.getTag()) && player.getPendingConnection() instanceof EaglerInitialHandler) {
|
||||||
|
String domain = ((EaglerInitialHandler)player.getPendingConnection()).getOrigin();
|
||||||
|
if(domain == null) {
|
||||||
|
((Server)event.getSender()).sendData("EAG|Domain", new byte[] { 0 });
|
||||||
|
}else {
|
||||||
|
((Server)event.getSender()).sendData("EAG|Domain", domain.getBytes(StandardCharsets.UTF_8));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -223,4 +223,8 @@ public class EaglerInitialHandler extends InitialHandler {
|
||||||
return eaglerUnsafe;
|
return eaglerUnsafe;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getOrigin() {
|
||||||
|
return origin;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@ import java.net.InetSocketAddress;
|
||||||
import java.net.SocketAddress;
|
import java.net.SocketAddress;
|
||||||
import java.net.UnknownHostException;
|
import java.net.UnknownHostException;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
import io.netty.channel.ChannelFuture;
|
import io.netty.channel.ChannelFuture;
|
||||||
|
@ -167,7 +168,7 @@ public class HttpHandshakeHandler extends ChannelInboundHandlerAdapter {
|
||||||
|
|
||||||
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
|
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
|
||||||
if (ctx.channel().isActive()) {
|
if (ctx.channel().isActive()) {
|
||||||
EaglerXBungee.logger().severe("[" + ctx.channel().remoteAddress() + "]: Exception Caught: " + cause.toString());
|
EaglerXBungee.logger().log(Level.WARNING, "[Pre][" + ctx.channel().remoteAddress() + "]: Exception Caught: " + cause.toString(), cause);
|
||||||
ctx.close();
|
ctx.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -135,7 +135,7 @@ public class HttpWebSocketHandler extends ChannelInboundHandlerAdapter {
|
||||||
|
|
||||||
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
|
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
|
||||||
if (ctx.channel().isActive()) {
|
if (ctx.channel().isActive()) {
|
||||||
EaglerXBungee.logger().warning("[" + ctx.channel().remoteAddress() + "]: Exception Caught: " + cause.toString());
|
EaglerXBungee.logger().warning("[Yee][" + ctx.channel().remoteAddress() + "]: Exception Caught: " + cause.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -153,6 +153,31 @@ public class HttpWebSocketHandler extends ChannelInboundHandlerAdapter {
|
||||||
hasFirstPacket = true;
|
hasFirstPacket = true;
|
||||||
hasBinaryConnection = true;
|
hasBinaryConnection = true;
|
||||||
|
|
||||||
|
BungeeCord bungus = BungeeCord.getInstance();
|
||||||
|
int limit = bungus.config.getPlayerLimit();
|
||||||
|
if (limit > 0 && bungus.getOnlineCount() >= limit) {
|
||||||
|
sendErrorCode(ctx, HandshakePacketTypes.SERVER_ERROR_CUSTOM_MESSAGE, bungus.getTranslation("proxy_full"))
|
||||||
|
.addListener(ChannelFutureListener.CLOSE);
|
||||||
|
connectionClosed = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(conf.getMaxPlayer() > 0) {
|
||||||
|
int i = 0;
|
||||||
|
for(ProxiedPlayer p : bungus.getPlayers()) {
|
||||||
|
if(p.getPendingConnection().getListener() == conf) {
|
||||||
|
++i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i >= conf.getMaxPlayer()) {
|
||||||
|
sendErrorCode(ctx, HandshakePacketTypes.SERVER_ERROR_CUSTOM_MESSAGE, bungus.getTranslation("proxy_full"))
|
||||||
|
.addListener(ChannelFutureListener.CLOSE);
|
||||||
|
connectionClosed = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
SocketAddress localSocketAddr = ctx.channel().remoteAddress();
|
SocketAddress localSocketAddr = ctx.channel().remoteAddress();
|
||||||
InetAddress addr = ctx.channel().attr(EaglerPipeline.REAL_ADDRESS).get();
|
InetAddress addr = ctx.channel().attr(EaglerPipeline.REAL_ADDRESS).get();
|
||||||
|
|
||||||
|
@ -692,6 +717,32 @@ public class HttpWebSocketHandler extends ChannelInboundHandlerAdapter {
|
||||||
|
|
||||||
private void finish(final ChannelHandlerContext ctx) {
|
private void finish(final ChannelHandlerContext ctx) {
|
||||||
final BungeeCord bungee = BungeeCord.getInstance();
|
final BungeeCord bungee = BungeeCord.getInstance();
|
||||||
|
|
||||||
|
// verify player counts a second time after handshake just to be safe
|
||||||
|
int limit = bungee.config.getPlayerLimit();
|
||||||
|
if (limit > 0 && bungee.getOnlineCount() >= limit) {
|
||||||
|
sendErrorCode(ctx, HandshakePacketTypes.SERVER_ERROR_CUSTOM_MESSAGE, bungee.getTranslation("proxy_full"))
|
||||||
|
.addListener(ChannelFutureListener.CLOSE);
|
||||||
|
connectionClosed = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(conf.getMaxPlayer() > 0) {
|
||||||
|
int i = 0;
|
||||||
|
for(ProxiedPlayer p : bungee.getPlayers()) {
|
||||||
|
if(p.getPendingConnection().getListener() == conf) {
|
||||||
|
++i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i >= conf.getMaxPlayer()) {
|
||||||
|
sendErrorCode(ctx, HandshakePacketTypes.SERVER_ERROR_CUSTOM_MESSAGE, bungee.getTranslation("proxy_full"))
|
||||||
|
.addListener(ChannelFutureListener.CLOSE);
|
||||||
|
connectionClosed = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
final String usernameStr = clientUsername.toString();
|
final String usernameStr = clientUsername.toString();
|
||||||
final ProxiedPlayer oldName = bungee.getPlayer(usernameStr);
|
final ProxiedPlayer oldName = bungee.getPlayer(usernameStr);
|
||||||
if (oldName != null) {
|
if (oldName != null) {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
name: EaglercraftXBungee
|
name: EaglercraftXBungee
|
||||||
main: net.lax1dude.eaglercraft.v1_8.plugin.gateway_bungeecord.EaglerXBungee
|
main: net.lax1dude.eaglercraft.v1_8.plugin.gateway_bungeecord.EaglerXBungee
|
||||||
version: 1.0.4
|
version: 1.0.5
|
||||||
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
|
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
|
author: lax1dude
|
|
@ -1 +1 @@
|
||||||
1.0.4
|
1.0.5
|
Loading…
Reference in New Issue
Block a user