2013-11-14 07:17:51 +00:00
|
|
|
package com.ryanmichela.sshd;
|
|
|
|
|
2019-10-03 02:14:56 +00:00
|
|
|
import org.apache.sshd.server.command.Command;
|
|
|
|
import org.apache.sshd.server.command.CommandFactory;
|
|
|
|
import org.apache.sshd.server.channel.ChannelSession;
|
2013-11-14 07:17:51 +00:00
|
|
|
import org.apache.sshd.server.Environment;
|
|
|
|
import org.apache.sshd.server.ExitCallback;
|
|
|
|
import org.bukkit.Bukkit;
|
|
|
|
|
|
|
|
import java.io.IOException;
|
|
|
|
import java.io.InputStream;
|
|
|
|
import java.io.OutputStream;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Copyright 2013 Ryan Michela
|
|
|
|
*/
|
|
|
|
public class ConsoleCommandFactory implements CommandFactory {
|
2018-05-06 16:42:57 +00:00
|
|
|
|
2013-11-14 07:17:51 +00:00
|
|
|
@Override
|
2019-10-03 02:14:56 +00:00
|
|
|
public Command createCommand(ChannelSession cs, String command) {
|
2013-11-14 07:17:51 +00:00
|
|
|
return new ConsoleCommand(command);
|
|
|
|
}
|
|
|
|
|
|
|
|
public class ConsoleCommand implements Command {
|
2018-05-06 16:42:57 +00:00
|
|
|
|
2013-11-14 07:17:51 +00:00
|
|
|
private String command;
|
|
|
|
|
|
|
|
private InputStream in;
|
|
|
|
private OutputStream out;
|
|
|
|
private OutputStream err;
|
|
|
|
private ExitCallback callback;
|
|
|
|
|
|
|
|
public ConsoleCommand(String command) {
|
|
|
|
this.command = command;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setInputStream(InputStream in) {
|
|
|
|
this.in = in;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setOutputStream(OutputStream out) {
|
|
|
|
this.out = out;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setErrorStream(OutputStream err) {
|
|
|
|
this.err = err;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setExitCallback(ExitCallback callback) {
|
|
|
|
this.callback = callback;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2019-10-03 02:14:56 +00:00
|
|
|
public void start(ChannelSession cs, Environment environment) throws IOException {
|
2013-11-14 07:17:51 +00:00
|
|
|
try {
|
2018-05-06 16:42:57 +00:00
|
|
|
SshdPlugin.instance.getLogger()
|
|
|
|
.info("[U: " + environment.getEnv().get(Environment.ENV_USER) + "] " + command);
|
2013-11-14 07:17:51 +00:00
|
|
|
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), command);
|
|
|
|
} catch (Exception e) {
|
2014-07-03 07:18:34 +00:00
|
|
|
SshdPlugin.instance.getLogger().severe("Error processing command from SSH -" + e.getMessage());
|
2013-11-14 07:17:51 +00:00
|
|
|
} finally {
|
|
|
|
callback.onExit(0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2019-10-03 02:14:56 +00:00
|
|
|
public void destroy(ChannelSession cn) {}
|
|
|
|
}
|
2013-11-14 07:17:51 +00:00
|
|
|
}
|