mirror of https://github.com/LOOHP/Limbo.git
312 lines
10 KiB
Java
312 lines
10 KiB
Java
package com.loohp.limbo;
|
|
|
|
import java.io.BufferedReader;
|
|
import java.io.File;
|
|
import java.io.FileNotFoundException;
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
import java.io.InputStreamReader;
|
|
import java.io.OutputStream;
|
|
import java.io.PrintStream;
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.Arrays;
|
|
import java.util.Date;
|
|
import java.util.Locale;
|
|
import java.util.stream.Collectors;
|
|
|
|
import com.loohp.limbo.Commands.CommandSender;
|
|
import com.loohp.limbo.GUI.ConsoleTextOutput;
|
|
import com.loohp.limbo.Utils.CustomStringUtils;
|
|
|
|
import net.md_5.bungee.api.chat.BaseComponent;
|
|
|
|
public class Console implements CommandSender {
|
|
|
|
private InputStream in;
|
|
private PrintStream out;
|
|
@SuppressWarnings("unused")
|
|
private PrintStream err;
|
|
protected PrintStream logs;
|
|
|
|
private final String CONSOLE = "CONSOLE";
|
|
|
|
public Console(InputStream in, PrintStream out, PrintStream err) throws FileNotFoundException {
|
|
String fileName = new SimpleDateFormat("yyyy'-'MM'-'dd'_'HH'-'mm'-'ss'_'zzz'.log'").format(new Date());
|
|
File dir = new File("logs");
|
|
dir.mkdirs();
|
|
File logs = new File(dir, fileName);
|
|
this.logs = new PrintStream(logs);
|
|
|
|
if (in != null) {
|
|
System.setIn(in);
|
|
this.in = System.in;
|
|
} else {
|
|
this.in = null;
|
|
}
|
|
System.setOut(new ConsoleOutputStream(out == null ? new PrintStream(new PrintStream(new OutputStream() {
|
|
@Override
|
|
public void write(int b) {
|
|
//DO NOTHING
|
|
}
|
|
})) : out, this.logs));
|
|
this.out = System.out;
|
|
System.setErr(new ConsoleErrorStream(err == null ? new PrintStream(new PrintStream(new OutputStream() {
|
|
@Override
|
|
public void write(int b) {
|
|
//DO NOTHING
|
|
}
|
|
})) : err, this.logs));
|
|
this.err = System.err;
|
|
}
|
|
|
|
public String getName() {
|
|
return CONSOLE;
|
|
}
|
|
|
|
@Override
|
|
public void sendMessage(BaseComponent component) {
|
|
sendMessage(new BaseComponent[] {component});
|
|
}
|
|
|
|
@Override
|
|
public void sendMessage(BaseComponent[] component) {
|
|
sendMessage(String.join("", Arrays.asList(component).stream().map(each -> each.toLegacyText()).collect(Collectors.toList())));
|
|
}
|
|
|
|
public boolean hasPermission(String permission) {
|
|
return Limbo.getInstance().getPermissionsManager().hasPermission(this, permission);
|
|
}
|
|
|
|
public void sendMessage(String message) {
|
|
out.println(message);
|
|
}
|
|
|
|
protected void run() {
|
|
if (in == null) {
|
|
return;
|
|
}
|
|
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
|
|
while (true) {
|
|
try {
|
|
String[] input = CustomStringUtils.splitStringToArgs(reader.readLine());
|
|
Limbo.getInstance().dispatchCommand(this, input);
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
|
|
public static class ConsoleOutputStream extends PrintStream {
|
|
|
|
private PrintStream logs;
|
|
|
|
public ConsoleOutputStream(OutputStream out, PrintStream logs) {
|
|
super(out);
|
|
this.logs = logs;
|
|
}
|
|
|
|
@Override
|
|
public PrintStream printf(Locale l, String format, Object... args) {
|
|
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
|
|
ConsoleTextOutput.appendText(String.format(l, "[" + date + " Info]" + format, args));
|
|
logs.printf(l, "[" + date + " Info]" + format, args);
|
|
return super.printf(l, "[" + date + " Info]" + format, args);
|
|
}
|
|
|
|
@Override
|
|
public PrintStream printf(String format, Object... args) {
|
|
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
|
|
ConsoleTextOutput.appendText(String.format("[" + date + " Info]" + format, args));
|
|
logs.printf("[" + date + " Info]" + format, args);
|
|
return super.printf("[" + date + " Info]" + format, args);
|
|
}
|
|
|
|
@Override
|
|
public void println() {
|
|
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
|
|
ConsoleTextOutput.appendText("[" + date + " Info]", true);
|
|
logs.println("[" + date + " Info]");
|
|
super.println("[" + date + " Info]");
|
|
}
|
|
|
|
@Override
|
|
public void println(boolean x) {
|
|
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
|
|
ConsoleTextOutput.appendText("[" + date + " Info] " + x, true);
|
|
logs.println("[" + date + " Info]" + x);
|
|
super.println("[" + date + " Info]" + x);
|
|
}
|
|
|
|
@Override
|
|
public void println(char x) {
|
|
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
|
|
ConsoleTextOutput.appendText("[" + date + " Info] " + x, true);
|
|
logs.println("[" + date + " Info]" + x);
|
|
super.println("[" + date + " Info]" + x);
|
|
}
|
|
|
|
@Override
|
|
public void println(char[] x) {
|
|
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
|
|
ConsoleTextOutput.appendText("[" + date + " Info] " + String.valueOf(x), true);
|
|
logs.println("[" + date + " Info]" + String.valueOf(x));
|
|
super.println("[" + date + " Info]" + String.valueOf(x));
|
|
}
|
|
|
|
@Override
|
|
public void println(double x) {
|
|
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
|
|
ConsoleTextOutput.appendText("[" + date + " Info] " + x, true);
|
|
logs.println("[" + date + " Info]" + x);
|
|
super.println("[" + date + " Info]" + x);
|
|
}
|
|
|
|
@Override
|
|
public void println(float x) {
|
|
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
|
|
ConsoleTextOutput.appendText("[" + date + " Info] " + x, true);
|
|
logs.println("[" + date + " Info]" + x);
|
|
super.println("[" + date + " Info]" + x);
|
|
}
|
|
|
|
@Override
|
|
public void println(int x) {
|
|
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
|
|
ConsoleTextOutput.appendText("[" + date + " Info] " + x, true);
|
|
logs.println("[" + date + " Info]" + x);
|
|
super.println("[" + date + " Info]" + x);
|
|
}
|
|
|
|
@Override
|
|
public void println(long x) {
|
|
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
|
|
ConsoleTextOutput.appendText("[" + date + " Info] " + x, true);
|
|
logs.println("[" + date + " Info]" + x);
|
|
super.println("[" + date + " Info]" + x);
|
|
}
|
|
|
|
@Override
|
|
public void println(Object x) {
|
|
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
|
|
ConsoleTextOutput.appendText("[" + date + " Info] " + x, true);
|
|
logs.println("[" + date + " Info]" + x);
|
|
super.println("[" + date + " Info]" + x);
|
|
}
|
|
|
|
@Override
|
|
public void println(String string) {
|
|
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
|
|
ConsoleTextOutput.appendText("[" + date + " Info] " + string, true);
|
|
logs.println("[" + date + " Info] " + string);
|
|
super.println("[" + date + " Info] " + string);
|
|
}
|
|
}
|
|
|
|
public static class ConsoleErrorStream extends PrintStream {
|
|
|
|
private PrintStream logs;
|
|
|
|
public ConsoleErrorStream(OutputStream out, PrintStream logs) {
|
|
super(out);
|
|
this.logs = logs;
|
|
}
|
|
|
|
@Override
|
|
public PrintStream printf(Locale l, String format, Object... args) {
|
|
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
|
|
ConsoleTextOutput.appendText(String.format(l, "[" + date + " Error]" + format, args));
|
|
logs.printf(l, "[" + date + " Error]" + format, args);
|
|
return super.printf(l, "[" + date + " Error]" + format, args);
|
|
}
|
|
|
|
@Override
|
|
public PrintStream printf(String format, Object... args) {
|
|
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
|
|
ConsoleTextOutput.appendText(String.format("[" + date + " Error]" + format, args));
|
|
logs.printf("[" + date + " Error]" + format, args);
|
|
return super.printf("[" + date + " Error]" + format, args);
|
|
}
|
|
|
|
@Override
|
|
public void println() {
|
|
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
|
|
ConsoleTextOutput.appendText("[" + date + " Error]", true);
|
|
logs.println("[" + date + " Error]");
|
|
super.println("[" + date + " Error]");
|
|
}
|
|
|
|
@Override
|
|
public void println(boolean x) {
|
|
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
|
|
ConsoleTextOutput.appendText("[" + date + " Error] " + x, true);
|
|
logs.println("[" + date + " Error]" + x);
|
|
super.println("[" + date + " Error]" + x);
|
|
}
|
|
|
|
@Override
|
|
public void println(char x) {
|
|
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
|
|
ConsoleTextOutput.appendText("[" + date + " Error] " + x, true);
|
|
logs.println("[" + date + " Error]" + x);
|
|
super.println("[" + date + " Error]" + x);
|
|
}
|
|
|
|
@Override
|
|
public void println(char[] x) {
|
|
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
|
|
ConsoleTextOutput.appendText("[" + date + " Error] " + String.valueOf(x), true);
|
|
logs.println("[" + date + " Error]" + String.valueOf(x));
|
|
super.println("[" + date + " Error]" + String.valueOf(x));
|
|
}
|
|
|
|
@Override
|
|
public void println(double x) {
|
|
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
|
|
ConsoleTextOutput.appendText("[" + date + " Error] " + x, true);
|
|
logs.println("[" + date + " Error]" + x);
|
|
super.println("[" + date + " Error]" + x);
|
|
}
|
|
|
|
@Override
|
|
public void println(float x) {
|
|
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
|
|
ConsoleTextOutput.appendText("[" + date + " Error] " + x, true);
|
|
logs.println("[" + date + " Error]" + x);
|
|
super.println("[" + date + " Error]" + x);
|
|
}
|
|
|
|
@Override
|
|
public void println(int x) {
|
|
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
|
|
ConsoleTextOutput.appendText("[" + date + " Error] " + x, true);
|
|
logs.println("[" + date + " Error]" + x);
|
|
super.println("[" + date + " Error]" + x);
|
|
}
|
|
|
|
@Override
|
|
public void println(long x) {
|
|
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
|
|
ConsoleTextOutput.appendText("[" + date + " Error] " + x, true);
|
|
logs.println("[" + date + " Error]" + x);
|
|
super.println("[" + date + " Error]" + x);
|
|
}
|
|
|
|
@Override
|
|
public void println(Object x) {
|
|
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
|
|
ConsoleTextOutput.appendText("[" + date + " Error] " + x, true);
|
|
logs.println("[" + date + " Error]" + x);
|
|
super.println("[" + date + " Error]" + x);
|
|
}
|
|
|
|
@Override
|
|
public void println(String string) {
|
|
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
|
|
ConsoleTextOutput.appendText("[" + date + " Error] " + string, true);
|
|
logs.println("[" + date + " Error] " + string);
|
|
super.println("[" + date + " Error] " + string);
|
|
}
|
|
}
|
|
|
|
}
|