From e10ec527ad61015539e30916a8328fb79437e37c Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Sat, 17 Jun 2017 13:45:45 +0300 Subject: [PATCH] =?UTF-8?q?Zond:=20=D0=B7=D0=B0=D0=B4=D0=B5=D0=B9=D1=81?= =?UTF-8?q?=D1=82=D0=B2=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D1=84=D0=B0?= =?UTF-8?q?=D0=B9=D0=BB=D0=B0=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B5?= =?UTF-8?q?=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- zond/build.gradle | 2 +- zond/src/main/java/asys/zond/Config.java | 40 +++++++++++++++++++ zond/src/main/java/asys/zond/Main.java | 29 +++++++++++++- .../java/asys/zond/ZondCommandHandler.java | 2 +- .../asys/zond/proxy/ClientPacketHandler.java | 6 ++- .../main/java/asys/zond/proxy/Connector.java | 6 ++- zond/src/main/resources/zond.properties | 4 ++ 7 files changed, 82 insertions(+), 7 deletions(-) create mode 100644 zond/src/main/java/asys/zond/Config.java create mode 100644 zond/src/main/resources/zond.properties diff --git a/zond/build.gradle b/zond/build.gradle index d5853e8..22c29df 100644 --- a/zond/build.gradle +++ b/zond/build.gradle @@ -1,5 +1,5 @@ group = 'asys' -version = '0.7.5-SNAPSHOT' +version = '0.7.6-SNAPSHOT' apply plugin: 'application' diff --git a/zond/src/main/java/asys/zond/Config.java b/zond/src/main/java/asys/zond/Config.java new file mode 100644 index 0000000..ba2ed4b --- /dev/null +++ b/zond/src/main/java/asys/zond/Config.java @@ -0,0 +1,40 @@ +/* + * DmitriyMX + * 2017-06-08 + */ +package asys.zond; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + +public class Config { + private static final Config instance = new Config(); + private Properties properties = new Properties(); + + public static Config getInstance() { + return instance; + } + + private Config(){ + } + + void load(InputStream inputStream) throws IOException { + properties.load(inputStream); + if (properties.size() == 0) { + throw new IOException("Config empty!"); + } + } + + public String getString(String key) { + return properties.getProperty(key); + } + + public int getInt(String key) { + try { + return Integer.parseInt(properties.getProperty(key)); + } catch (NumberFormatException e) { + return 0; + } + } +} diff --git a/zond/src/main/java/asys/zond/Main.java b/zond/src/main/java/asys/zond/Main.java index d9247b8..ce9de6b 100644 --- a/zond/src/main/java/asys/zond/Main.java +++ b/zond/src/main/java/asys/zond/Main.java @@ -11,8 +11,7 @@ import org.apache.commons.exec.DefaultExecutor; import org.apache.commons.exec.Executor; import org.apache.commons.exec.PumpStreamHandler; -import java.io.IOException; -import java.io.PrintStream; +import java.io.*; import java.util.Arrays; import java.util.stream.Collectors; @@ -25,6 +24,13 @@ public class Main { } private void start(String[] args) { + try { + loadConfig(); + } catch (IOException e) { + e.printStackTrace(); + System.exit(-2); + return; + } ZondCommandHandler commandHandler = new ZondCommandHandler(); startShell(commandHandler); initExecCommand(args, Shell.getInstance().getOutput()); @@ -48,4 +54,23 @@ public class Main { PumpStreamHandler pumpStreamHandler = new PumpStreamHandler(stdout); executor.setStreamHandler(pumpStreamHandler); } + + private void loadConfig() throws IOException { + File zondPropertiesFile = new File("zond.properties"); + if (!zondPropertiesFile.exists()) { + InputStream stream = Main.class.getResourceAsStream("/zond.properties"); + FileOutputStream fos = new FileOutputStream(zondPropertiesFile); + byte[] buff = new byte[65536]; + int len; + while ((len = stream.read(buff)) > 0) { + fos.write(buff, 0, len); + } + fos.flush(); + fos.close(); + } + + FileInputStream fis = new FileInputStream(zondPropertiesFile); + Config.getInstance().load(fis); + fis.close(); + } } \ No newline at end of file diff --git a/zond/src/main/java/asys/zond/ZondCommandHandler.java b/zond/src/main/java/asys/zond/ZondCommandHandler.java index e7dc7a2..68796fc 100644 --- a/zond/src/main/java/asys/zond/ZondCommandHandler.java +++ b/zond/src/main/java/asys/zond/ZondCommandHandler.java @@ -62,7 +62,7 @@ public class ZondCommandHandler implements CommandHandler { threadExec.interrupt(); } } else if (line.equalsIgnoreCase("connect")) { - Connector.getInstance().startReconnect("127.0.0.1", 8779); + Connector.getInstance().startReconnect(); } else if (line.equalsIgnoreCase("disconnect")) { Connector.getInstance().shutdown(); } diff --git a/zond/src/main/java/asys/zond/proxy/ClientPacketHandler.java b/zond/src/main/java/asys/zond/proxy/ClientPacketHandler.java index 1de976e..cae7496 100644 --- a/zond/src/main/java/asys/zond/proxy/ClientPacketHandler.java +++ b/zond/src/main/java/asys/zond/proxy/ClientPacketHandler.java @@ -5,6 +5,7 @@ package asys.zond.proxy; import asys.mcsmanager.packets.*; +import asys.zond.Config; import asys.zond.shell.Shell; import com.google.common.collect.BiMap; import com.google.common.collect.ImmutableBiMap; @@ -42,7 +43,10 @@ public class ClientPacketHandler extends ChannelInboundHandlerAdapter implements ctx.channel().attr(KNOWN_PACKETS).set(handshakePackets); ctx.channel().attr(KNOWN_HANDLERS).set(handshakeHandlers); - ctx.channel().writeAndFlush(new CS_Handshake("00","11")); + ctx.channel().writeAndFlush(new CS_Handshake( + Config.getInstance().getString("serverId"), + Config.getInstance().getString("passcode") + )); } @Override diff --git a/zond/src/main/java/asys/zond/proxy/Connector.java b/zond/src/main/java/asys/zond/proxy/Connector.java index f7ced12..496e057 100644 --- a/zond/src/main/java/asys/zond/proxy/Connector.java +++ b/zond/src/main/java/asys/zond/proxy/Connector.java @@ -5,6 +5,7 @@ package asys.zond.proxy; import asys.mcsmanager.packets.Packet; +import asys.zond.Config; import asys.zond.shell.Shell; public class Connector { @@ -21,14 +22,15 @@ public class Connector { private Connector() { } - public void startReconnect(final String host, final int port) { + public void startReconnect() { if (connectTicker != null && connectTicker.isActive()) return; client = new Client(); connectTicker = new TaskTicker().setStepTimeMs(5000L); connectTicker.setTask(() -> { Shell.getInstance().getOutput() .println(String.format("Connect(%d) to ASys...", ++tryConnect)); - client.connect(host, port); + client.connect(Config.getInstance().getString("host"), + Config.getInstance().getInt("port")); if (client.isConnected()) { stopReconnect(); } else { diff --git a/zond/src/main/resources/zond.properties b/zond/src/main/resources/zond.properties new file mode 100644 index 0000000..3e96cb1 --- /dev/null +++ b/zond/src/main/resources/zond.properties @@ -0,0 +1,4 @@ +serverId = SpigotServer0 +host = 127.0.0.1 +port = 8779 +passcode = testpassphrase \ No newline at end of file