From 0de2dcae6980c74f674921cd9f1cf589967a83b8 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 21 Mar 2014 11:34:01 +0100 Subject: [PATCH] Small api improvements --- .../BukkitTelnet/TelnetConfig.java | 6 ++-- .../BukkitTelnet/api/TelnetCommandEvent.java | 19 ++-------- .../BukkitTelnet/api/TelnetEvent.java | 20 +++++++++++ .../BukkitTelnet/api/TelnetPreLoginEvent.java | 18 ++-------- .../BukkitTelnet/session/ClientSession.java | 36 ++++++++++++++----- .../session/SessionLogAppender.java | 5 ++- 6 files changed, 59 insertions(+), 45 deletions(-) create mode 100644 src/me/StevenLawson/BukkitTelnet/api/TelnetEvent.java diff --git a/src/me/StevenLawson/BukkitTelnet/TelnetConfig.java b/src/me/StevenLawson/BukkitTelnet/TelnetConfig.java index 8e66dfc..2c676b2 100644 --- a/src/me/StevenLawson/BukkitTelnet/TelnetConfig.java +++ b/src/me/StevenLawson/BukkitTelnet/TelnetConfig.java @@ -24,8 +24,8 @@ public class TelnetConfig configEntries.setAddress(config.getString("address")); configEntries.setPort(config.getInt("port")); configEntries.setPassword(config.getString("password")); - configEntries.clearAdmins(); + configEntries.clearAdmins(); if (config.isConfigurationSection("admins")) { for (String admin : config.getConfigurationSection("admins").getKeys(false)) @@ -113,10 +113,10 @@ public class TelnetConfig public static TelnetConfig getInstance() { - return BT_ConfigHolder.INSTANCE; + return TelnetConfigHolder.INSTANCE; } - private static class BT_ConfigHolder + private static class TelnetConfigHolder { private static final TelnetConfig INSTANCE = new TelnetConfig(); } diff --git a/src/me/StevenLawson/BukkitTelnet/api/TelnetCommandEvent.java b/src/me/StevenLawson/BukkitTelnet/api/TelnetCommandEvent.java index a4fc96e..61b935d 100644 --- a/src/me/StevenLawson/BukkitTelnet/api/TelnetCommandEvent.java +++ b/src/me/StevenLawson/BukkitTelnet/api/TelnetCommandEvent.java @@ -2,33 +2,20 @@ package me.StevenLawson.BukkitTelnet.api; import org.bukkit.command.CommandSender; import org.bukkit.event.Cancellable; -import org.bukkit.event.Event; -import org.bukkit.event.HandlerList; -public class TelnetCommandEvent extends Event implements Cancellable +public class TelnetCommandEvent extends TelnetEvent implements Cancellable { - private static final HandlerList handlers = new HandlerList(); - private boolean cancelled = false; - // + private boolean cancelled; private CommandSender sender; private String command; public TelnetCommandEvent(CommandSender sender, String command) { + this.cancelled = false; this.sender = sender; this.command = command; } - @Override - public HandlerList getHandlers() - { - return handlers; - } - - //public static HandlerList getHandlerList() - //{ - // return handlers; - //} @Override public boolean isCancelled() { diff --git a/src/me/StevenLawson/BukkitTelnet/api/TelnetEvent.java b/src/me/StevenLawson/BukkitTelnet/api/TelnetEvent.java new file mode 100644 index 0000000..643181a --- /dev/null +++ b/src/me/StevenLawson/BukkitTelnet/api/TelnetEvent.java @@ -0,0 +1,20 @@ +package me.StevenLawson.BukkitTelnet.api; + +import org.bukkit.event.HandlerList; +import org.bukkit.event.server.ServerEvent; + +public abstract class TelnetEvent extends ServerEvent +{ + private static final HandlerList handlers = new HandlerList(); + + @Override + public HandlerList getHandlers() + { + return handlers; + } + + public static HandlerList getHandlerList() + { + return handlers; + } +} diff --git a/src/me/StevenLawson/BukkitTelnet/api/TelnetPreLoginEvent.java b/src/me/StevenLawson/BukkitTelnet/api/TelnetPreLoginEvent.java index 2c9ffb3..fb6bfcb 100644 --- a/src/me/StevenLawson/BukkitTelnet/api/TelnetPreLoginEvent.java +++ b/src/me/StevenLawson/BukkitTelnet/api/TelnetPreLoginEvent.java @@ -1,15 +1,12 @@ package me.StevenLawson.BukkitTelnet.api; import org.bukkit.event.Cancellable; -import org.bukkit.event.Event; -import org.bukkit.event.HandlerList; -public class TelnetPreLoginEvent extends Event implements Cancellable +public class TelnetPreLoginEvent extends TelnetEvent implements Cancellable { - private static final HandlerList handlers = new HandlerList(); private boolean cancelled = false; // - private String name = null; + private String name; private final String ip; private boolean bypassPassword; @@ -20,17 +17,6 @@ public class TelnetPreLoginEvent extends Event implements Cancellable this.bypassPassword = bypassPassword; } - @Override - public HandlerList getHandlers() - { - return handlers; - } - - public static HandlerList getHandlerList() - { - return handlers; - } - @Override public boolean isCancelled() { diff --git a/src/me/StevenLawson/BukkitTelnet/session/ClientSession.java b/src/me/StevenLawson/BukkitTelnet/session/ClientSession.java index 86cc101..e0dccbe 100644 --- a/src/me/StevenLawson/BukkitTelnet/session/ClientSession.java +++ b/src/me/StevenLawson/BukkitTelnet/session/ClientSession.java @@ -106,7 +106,7 @@ public final class ClientSession extends Thread hasTerminated = true; - TelnetLogger.info("Closing connection: " + clientAddress + (username.isEmpty() ? "" : "(" + username + ")")); + TelnetLogger.info("Closing connection: " + clientAddress + (username.isEmpty() ? "" : " (" + username + ")")); getLogger().removeAppender(logAppender); synchronized (clientSocket) @@ -235,7 +235,7 @@ public final class ClientSession extends Thread return false; } - boolean authenticated = false; + boolean passAuth = false; // Pre-authenticate IP addresses if (clientAddress != null) @@ -251,7 +251,7 @@ public final class ClientSession extends Thread { if (Util.fuzzyIpMatch(ip, clientAddress, 3)) { - authenticated = true; + passAuth = true; this.username = name; break; } @@ -259,8 +259,8 @@ public final class ClientSession extends Thread } } - // Send TelnetPreLoginEvent - final TelnetPreLoginEvent event = new TelnetPreLoginEvent(clientAddress, username, authenticated); + // TelnetPreLoginEvent authentication + final TelnetPreLoginEvent event = new TelnetPreLoginEvent(clientAddress, username, passAuth); Bukkit.getServer().getPluginManager().callEvent(event); if (event.isCancelled()) @@ -270,11 +270,16 @@ public final class ClientSession extends Thread if (event.canBypassPassword()) { - this.username = event.getName(); - return true; + if (!event.getName().isEmpty()) // If the name hasn't been set, we'll ask for it. + { + this.username = event.getName(); + return true; + } + + passAuth = true; } - // Username / password authentication + // Username boolean validUsername = false; int tries = 0; @@ -317,6 +322,14 @@ public final class ClientSession extends Thread return false; } + // If the TelnetPreLoginEvent authenticates the password, + // don't ask for it. + if (passAuth) + { + return true; + } + + // Password tries = 0; while (tries++ < 3) { @@ -373,6 +386,7 @@ public final class ClientSession extends Thread // Start feeding data to the client. getLogger().addAppender(logAppender); + // Process commands while (syncIsConnected()) { // Read a command @@ -449,14 +463,18 @@ public final class ClientSession extends Thread { filterMode = FilterMode.FULL; println("Showing all logs."); + return; } - return; } if (command.equalsIgnoreCase("telnet.exit")) { + println("Goodbye <3"); syncTerminateSession(); } + + + println("Invalid telnet command, use \"telnet.help\" to view help."); } } diff --git a/src/me/StevenLawson/BukkitTelnet/session/SessionLogAppender.java b/src/me/StevenLawson/BukkitTelnet/session/SessionLogAppender.java index a3ec38b..d42f24b 100644 --- a/src/me/StevenLawson/BukkitTelnet/session/SessionLogAppender.java +++ b/src/me/StevenLawson/BukkitTelnet/session/SessionLogAppender.java @@ -38,7 +38,10 @@ public class SessionLogAppender extends AbstractAppender if (session.getFilterMode() == FilterMode.NONCHAT_ONLY) { - if (message.startsWith("<") || message.startsWith("[Server") || message.startsWith("[CONSOLE") || message.startsWith("[TotalFreedomMod] [ADMIN]")) + if (message.startsWith("<") + || message.startsWith("[Server") + || message.startsWith("[CONSOLE") + || message.startsWith("[TotalFreedomMod] [ADMIN]")) { return; }