diff --git a/pom.xml b/pom.xml
index 8764960d..eb147032 100644
--- a/pom.xml
+++ b/pom.xml
@@ -168,6 +168,12 @@
6.2
provided
+
+
+ com.github.TFPatches
+ BukkitSSH
+ master-SNAPSHOT
+
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java b/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java
index ff28c11f..f49fcdbe 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java
@@ -16,6 +16,7 @@ import me.totalfreedom.totalfreedommod.blocking.PVPBlocker;
import me.totalfreedom.totalfreedommod.blocking.PotionBlocker;
import me.totalfreedom.totalfreedommod.blocking.SignBlocker;
import me.totalfreedom.totalfreedommod.blocking.command.CommandBlocker;
+import me.totalfreedom.totalfreedommod.bridge.BukkitSSHBridge;
import me.totalfreedom.totalfreedommod.bridge.BukkitTelnetBridge;
import me.totalfreedom.totalfreedommod.bridge.CoreProtectBridge;
import me.totalfreedom.totalfreedommod.bridge.EssentialsBridge;
@@ -126,6 +127,7 @@ public class TotalFreedomMod extends AeroPlugin
// Bridges
public ServiceManager bridges;
public BukkitTelnetBridge btb;
+ public BukkitSSHBridge bsb;
public EssentialsBridge esb;
public LibsDisguisesBridge ldb;
public CoreProtectBridge cpb;
@@ -243,6 +245,7 @@ public class TotalFreedomMod extends AeroPlugin
// Start bridges
bridges = new ServiceManager<>(plugin);
btb = bridges.registerService(BukkitTelnetBridge.class);
+ bsb = bridges.registerService(BukkitSSHBridge.class);
cpb = bridges.registerService(CoreProtectBridge.class);
esb = bridges.registerService(EssentialsBridge.class);
ldb = bridges.registerService(LibsDisguisesBridge.class);
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/admin/Admin.java b/src/main/java/me/totalfreedom/totalfreedommod/admin/Admin.java
index 3468ada5..c8f12d75 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/admin/Admin.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/admin/Admin.java
@@ -15,6 +15,7 @@ import net.pravian.aero.base.Validatable;
import net.pravian.aero.util.Ips;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.Validate;
+import org.bukkit.ChatColor;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/bridge/BukkitSSHBridge.java b/src/main/java/me/totalfreedom/totalfreedommod/bridge/BukkitSSHBridge.java
new file mode 100644
index 00000000..ec0a1a50
--- /dev/null
+++ b/src/main/java/me/totalfreedom/totalfreedommod/bridge/BukkitSSHBridge.java
@@ -0,0 +1,94 @@
+package me.totalfreedom.totalfreedommod.bridge;
+
+import com.ryanmichela.bukkitssh.BukkitSSH;
+import com.ryanmichela.bukkitssh.SshTerminal;
+import me.totalfreedom.bukkitssh.SSHCommandEvent;
+import me.totalfreedom.bukkitssh.SSHPreLoginEvent;
+import java.util.ArrayList;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import me.totalfreedom.totalfreedommod.FreedomService;
+import me.totalfreedom.totalfreedommod.TotalFreedomMod;
+import me.totalfreedom.totalfreedommod.admin.Admin;
+import me.totalfreedom.totalfreedommod.rank.Rank;
+import me.totalfreedom.totalfreedommod.util.FLog;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.EventPriority;
+import org.bukkit.plugin.Plugin;
+
+public class BukkitSSHBridge extends FreedomService
+{
+
+ private BukkitSSH BukkitSSHPlugin = null;
+
+ public BukkitSSHBridge(TotalFreedomMod plugin)
+ {
+ super(plugin);
+ }
+
+ @Override
+ protected void onStart()
+ {
+ }
+
+ @Override
+ protected void onStop()
+ {
+ }
+
+ @EventHandler(priority = EventPriority.NORMAL)
+ public void onTelnetPreLogin(SSHPreLoginEvent event)
+ {
+
+ final String ip = event.getIp();
+ if (ip == null || ip.isEmpty())
+ {
+ return;
+ }
+
+ final Admin admin = plugin.al.getEntryByIpFuzzy(ip);
+
+ if (admin == null || !admin.isActive() || !admin.getRank().hasConsoleVariant())
+ {
+ return;
+ }
+
+ event.setBypassPassword(true);
+ event.setName(admin.getName());
+ }
+
+ @EventHandler(priority = EventPriority.NORMAL)
+ public void onTelnetCommand(SSHCommandEvent event)
+ {
+ if (plugin.cb.isCommandBlocked(event.getCommand(), event.getSender()))
+ {
+ event.setCancelled(true);
+ }
+ }
+ public BukkitSSH getBukkitSSHPlugin()
+ {
+ if (BukkitSSHPlugin == null)
+ {
+ try
+ {
+ final Plugin BukkitSSH = server.getPluginManager().getPlugin("BukkitSSH");
+ if (BukkitSSH != null)
+ {
+ if (BukkitSSH instanceof BukkitSSH)
+ {
+ BukkitSSHPlugin = (BukkitSSH)BukkitSSH;
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ FLog.severe(ex);
+ }
+ }
+
+ return BukkitSSHPlugin;
+ }
+}