mc 1.5 update

This commit is contained in:
Gary Smoak 2011-04-22 16:43:02 -04:00
parent 3ca030eb13
commit db6f0ad30a
4 changed files with 60 additions and 17 deletions

View file

@ -26,7 +26,7 @@ dist.jar=${dist.dir}/MCTelnet.jar
dist.javadoc.dir=${dist.dir}/javadoc
endorsed.classpath=
excludes=
file.reference.craftbukkit.jar=jars/440/craftbukkit.jar
file.reference.craftbukkit.jar=C:\\Users\\Administrator\\Documents\\NetBeansProjects\\CBJars\\craftbukkit.jar
includes=**
jar.compress=false
javac.classpath=\

View file

@ -15,6 +15,7 @@ import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.plugin.java.JavaPlugin;
import java.math.BigInteger;
import java.net.InetAddress;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Iterator;
@ -37,6 +38,7 @@ public class MCTelnet extends JavaPlugin {
private Thread listenerThread;
private boolean run = false;
int port = 8765;
InetAddress listenAddress;
public MCTelnet()
{
@ -53,11 +55,20 @@ public class MCTelnet extends JavaPlugin {
if(listenerSocket != null)
{
try {
listenerSocket.close();
synchronized (listenerSocket)
{
if(listenerSocket!=null)
listenerSocket.close();
}
} catch (IOException ex) {
Logger.getLogger("Minecraft").log(Level.SEVERE, null, ex);
}
}
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
Logger.getLogger(MCTelnet.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void onEnable() {
@ -69,8 +80,25 @@ public class MCTelnet extends JavaPlugin {
if(this.getConfiguration().getBoolean("encryptPasswords", false))
encryptPasswords();
port = this.getConfiguration().getInt("telnetPort", port);
try
{
String address = this.getConfiguration().getString("listenAddress",null);
if(address!=null)
listenAddress = InetAddress.getByName(address);
}
catch (Exception ex)
{
System.out.println("[MCTelnet] Exception when trying to binding to custom address:" + ex.getMessage());
}
if(listenAddress != null)
{
listenerSocket = new java.net.ServerSocket(port, 10, listenAddress);
}
else
{
listenerSocket = new java.net.ServerSocket(port,10);
}
clientHolder = new ArrayList<TelnetListener>();
listenerSocket = new java.net.ServerSocket(port);
listenerThread = new Thread(new Runnable() {
public void run() {
acceptConnections();
@ -80,8 +108,7 @@ public class MCTelnet extends JavaPlugin {
Field cfield = CraftServer.class.getDeclaredField("console");
cfield.setAccessible(true);
mcserv = (MinecraftServer) cfield.get((CraftServer)getServer());
Logger.getLogger("Minecraft").log(Level.INFO,"[MCTelnet] - Listening on port: " + port + "!");
Logger.getLogger("Minecraft").log(Level.INFO,"[MCTelnet] - Listening on: " + listenerSocket.getInetAddress().getHostAddress() + ":" + port);
} catch (Exception ex) {
Logger.getLogger("Minecraft").log(Level.SEVERE, "[MCTelnet] - Unable to Enable! Error: " + ex.getMessage());
this.setEnabled(false);
@ -174,6 +201,11 @@ public class MCTelnet extends JavaPlugin {
this.getConfiguration().setProperty("telnetPort", 8765);
this.getConfiguration().save();
}
testConfig = this.getConfiguration().getString("listenAddress");
if (testConfig == null || testConfig.equals("")) {
this.getConfiguration().setProperty("listenAddress", "0.0.0.0");
this.getConfiguration().save();
}
testConfig = this.getConfiguration().getString("rootPass");
if (testConfig == null || testConfig.equals("")) {
this.getConfiguration().setProperty("rootPass", "abcd");
@ -190,6 +222,7 @@ public class MCTelnet extends JavaPlugin {
this.getConfiguration().setProperty("encryptPasswords", true);
this.getConfiguration().save();
}
}
@Override

View file

@ -15,21 +15,17 @@ import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
import net.minecraft.server.ICommandListener;
import net.minecraft.server.MinecraftServer;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.command.PluginCommand;
import org.bukkit.command.SimpleCommandMap;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.entity.Player;
import org.bukkit.util.config.ConfigurationNode;
/**
*
* @author Administrator
*/
public class TelnetListener extends Handler implements CommandSender {
public class TelnetListener extends Handler implements CommandSender, ICommandListener {
private boolean run;
private boolean isAuth;
@ -43,8 +39,8 @@ public class TelnetListener extends Handler implements CommandSender {
BufferedWriter outstream;
MCTelnet parent;
String ip;
String passRegex = "[^a-zA-Z0-9\\-]";
String commandRegex = "[^a-zA-Z0-9 \\-]";
String passRegex = "[^a-zA-Z0-9\\-\\.\\_]";
String commandRegex = "[^a-zA-Z0-9 \\-\\.\\_]";
public TelnetListener(Socket inSock, MinecraftServer imcserv, MCTelnet iparent)
{
@ -80,7 +76,16 @@ public class TelnetListener extends Handler implements CommandSender {
Logger.getLogger("Minecraft").log(Level.SEVERE, null, ex);
run = false;
}
authenticateLoop();
if(!clientSocket.getInetAddress().isLoopbackAddress() || !parent.getConfiguration().getBoolean("allowAuthlessLocalhost", false))
{
authenticateLoop();
}
else
{
isAuth = true;
isRoot = true;
authUser = parent.getConfiguration().getString("rootUser");
}
commandLoop();
shutdown();
}
@ -230,8 +235,9 @@ public class TelnetListener extends Handler implements CommandSender {
if (!clientSocket.isClosed()) {
if (isRoot || allowCommand) {
//((CraftServer)getServer()).dispatchCommand(new ConsoleCommandSender(getServer()), command);
mcserv.a(command, mcserv);
//parent.getServer().getPlayer(authUser).performCommand(command);
mcserv.issueCommand(command, this);
System.out.println("[MCTelnet] "+authUser+" issued command: " + command);
} else {
if(!command.equals(""))
{
@ -345,4 +351,8 @@ public class TelnetListener extends Handler implements CommandSender {
}
}
}
public String getName() {
return authUser;
}
}

View file

@ -1,6 +1,6 @@
name: MCTelnet
main: com.bekvon.bukkit.mctelnet.MCTelnet
version: 1.2.1
version: 1.2.5
description: Telnet console access plugin.
author: bekvon
commands: