From 9e719184662fac506c6def7c72005a481c1db474 Mon Sep 17 00:00:00 2001 From: liangqi Date: Fri, 23 Oct 2020 11:46:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=85=8D=E7=BD=AE=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=B8=BAyml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 +- proxy-client/pom.xml | 2 + .../client/ClientChannelMannager.java | 8 ++- .../lanproxy/client/ProxyClientContainer.java | 12 +++- .../lanproxy/client/config/Client.java | 22 ++++++ .../lanproxy/client/config/ClientConfig.java | 71 +++++++++++++++++++ .../lanproxy/client/config/Server.java | 32 +++++++++ .../fengfei/lanproxy/client/config/Ssl.java | 42 +++++++++++ .../src/main/resources/config.properties | 4 +- proxy-client/src/main/resources/config.yml | 9 +++ proxy-common/pom.xml | 7 ++ proxy-server/pom.xml | 2 + proxy-server/src/main/resources/config.yml | 18 +++++ 13 files changed, 224 insertions(+), 9 deletions(-) create mode 100644 proxy-client/src/main/java/org/fengfei/lanproxy/client/config/Client.java create mode 100644 proxy-client/src/main/java/org/fengfei/lanproxy/client/config/ClientConfig.java create mode 100644 proxy-client/src/main/java/org/fengfei/lanproxy/client/config/Server.java create mode 100644 proxy-client/src/main/java/org/fengfei/lanproxy/client/config/Ssl.java create mode 100644 proxy-client/src/main/resources/config.yml create mode 100644 proxy-server/src/main/resources/config.yml diff --git a/pom.xml b/pom.xml index ab38099..e462274 100644 --- a/pom.xml +++ b/pom.xml @@ -49,8 +49,8 @@ maven-compiler-plugin 3.1 - 1.7 - 1.7 + 1.8 + 1.8 UTF-8 diff --git a/proxy-client/pom.xml b/proxy-client/pom.xml index 779afd3..fd0295a 100644 --- a/proxy-client/pom.xml +++ b/proxy-client/pom.xml @@ -51,6 +51,7 @@ 2.4 + *.yml *.properties *.sh *.bat @@ -76,6 +77,7 @@ src/main/resources + *.yml *.properties *.jks diff --git a/proxy-client/src/main/java/org/fengfei/lanproxy/client/ClientChannelMannager.java b/proxy-client/src/main/java/org/fengfei/lanproxy/client/ClientChannelMannager.java index 73b43dc..68c3a86 100644 --- a/proxy-client/src/main/java/org/fengfei/lanproxy/client/ClientChannelMannager.java +++ b/proxy-client/src/main/java/org/fengfei/lanproxy/client/ClientChannelMannager.java @@ -6,6 +6,8 @@ import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentLinkedQueue; +import org.fengfei.lanproxy.client.config.ClientConfig; +import org.fengfei.lanproxy.client.config.Server; import org.fengfei.lanproxy.client.listener.ProxyChannelBorrowListener; import org.fengfei.lanproxy.common.Config; import org.fengfei.lanproxy.protocol.Constants; @@ -44,7 +46,8 @@ public class ClientChannelMannager { private static volatile Channel cmdChannel; - private static Config config = Config.getInstance(); + // private static Config config = Config.getInstance(); + private static ClientConfig clientConfig = ClientConfig.getInstance(); public static void borrowProxyChanel(Bootstrap bootstrap, final ProxyChannelBorrowListener borrowListener) { Channel channel = proxyChannelPool.poll(); @@ -53,7 +56,8 @@ public class ClientChannelMannager { return; } - bootstrap.connect(config.getStringValue("server.host"), config.getIntValue("server.port")).addListener(new ChannelFutureListener() { + Server server = clientConfig.getServer(); + bootstrap.connect(server.getHost(), server.getPort()).addListener(new ChannelFutureListener() { @Override public void operationComplete(ChannelFuture future) throws Exception { diff --git a/proxy-client/src/main/java/org/fengfei/lanproxy/client/ProxyClientContainer.java b/proxy-client/src/main/java/org/fengfei/lanproxy/client/ProxyClientContainer.java index 7e1d412..3f7c72a 100644 --- a/proxy-client/src/main/java/org/fengfei/lanproxy/client/ProxyClientContainer.java +++ b/proxy-client/src/main/java/org/fengfei/lanproxy/client/ProxyClientContainer.java @@ -5,6 +5,9 @@ import java.util.Arrays; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLEngine; +import org.fengfei.lanproxy.client.config.Client; +import org.fengfei.lanproxy.client.config.ClientConfig; +import org.fengfei.lanproxy.client.config.Server; import org.fengfei.lanproxy.client.handlers.ClientChannelHandler; import org.fengfei.lanproxy.client.handlers.RealServerChannelHandler; import org.fengfei.lanproxy.client.listener.ChannelStatusListener; @@ -51,7 +54,8 @@ public class ProxyClientContainer implements Container, ChannelStatusListener { private Bootstrap realServerBootstrap; - private Config config = Config.getInstance(); +// private Config config = Config.getInstance(); + private ClientConfig clientConfig = ClientConfig.getInstance(); private SSLContext sslContext; @@ -116,13 +120,15 @@ public class ProxyClientContainer implements Container, ChannelStatusListener { * 连接代理服务器 */ private void connectProxyServer() { - bootstrap.connect(config.getStringValue("server.host"), config.getIntValue("server.port")).addListener((ChannelFuture future)->{ + Server server = clientConfig.getServer(); + Client client = clientConfig.getClient(); + bootstrap.connect(server.getHost(), server.getPort()).addListener((ChannelFuture future)->{ if (future.isSuccess()){ // 连接成功,向服务器发送客户端认证信息(clientKey) ClientChannelMannager.setCmdChannel(future.channel()); ProxyMessage proxyMessage = new ProxyMessage(); proxyMessage.setType(ProxyMessage.C_TYPE_AUTH); - proxyMessage.setUri(config.getStringValue("client.key")); + proxyMessage.setUri(client.getKey()); future.channel().writeAndFlush(proxyMessage); sleepTimeMill = 1000; LOGGER.info("connect proxy server success, {}", future.channel()); diff --git a/proxy-client/src/main/java/org/fengfei/lanproxy/client/config/Client.java b/proxy-client/src/main/java/org/fengfei/lanproxy/client/config/Client.java new file mode 100644 index 0000000..82b2702 --- /dev/null +++ b/proxy-client/src/main/java/org/fengfei/lanproxy/client/config/Client.java @@ -0,0 +1,22 @@ +package org.fengfei.lanproxy.client.config; + + +/** + * @Description TODO + * @Author qi + **/ +public class Client { + + /** + * + */ + private String key; + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } +} diff --git a/proxy-client/src/main/java/org/fengfei/lanproxy/client/config/ClientConfig.java b/proxy-client/src/main/java/org/fengfei/lanproxy/client/config/ClientConfig.java new file mode 100644 index 0000000..1616319 --- /dev/null +++ b/proxy-client/src/main/java/org/fengfei/lanproxy/client/config/ClientConfig.java @@ -0,0 +1,71 @@ +package org.fengfei.lanproxy.client.config; + +import org.yaml.snakeyaml.Yaml; + +import java.io.InputStream; + +/** + * @Description 客户端配置文件 + * @Author qi + **/ +public class ClientConfig { + /** + * 默认配置文件位置 + */ + public static final String DEFAULT_YML_PATH = "/config.yml"; + /** + * 客户端配置 + */ + private Client client; + /** + * ssl配置 + */ + private Ssl ssl; + /** + * 配置 + */ + private Server server; + + public Client getClient() { + return client; + } + + public void setClient(Client client) { + this.client = client; + } + + public Ssl getSsl() { + return ssl; + } + + public void setSsl(Ssl ssl) { + this.ssl = ssl; + } + + public Server getServer() { + return server; + } + + public void setServer(Server server) { + this.server = server; + } + + public static ClientConfig getInstance(String ymlPath){ + InputStream inputStream = null; + try { + inputStream = ClientConfig.class.getResourceAsStream(ymlPath); + } catch (Exception e) { + e.printStackTrace(); + } + Yaml yaml = new Yaml(); + ClientConfig clientConfig = yaml.loadAs(inputStream, ClientConfig.class); + return clientConfig; + } + + public static ClientConfig getInstance(){ + + return getInstance(DEFAULT_YML_PATH); + } + + +} diff --git a/proxy-client/src/main/java/org/fengfei/lanproxy/client/config/Server.java b/proxy-client/src/main/java/org/fengfei/lanproxy/client/config/Server.java new file mode 100644 index 0000000..a98a8e3 --- /dev/null +++ b/proxy-client/src/main/java/org/fengfei/lanproxy/client/config/Server.java @@ -0,0 +1,32 @@ +package org.fengfei.lanproxy.client.config; + +/** + * @Description 服务器配置 + * @Author qi + **/ +public class Server { + /** + * 地址 + */ + private String host; + /** + * 端口 + */ + private int port; + + public String getHost() { + return host; + } + + public void setHost(String host) { + this.host = host; + } + + public int getPort() { + return port; + } + + public void setPort(int port) { + this.port = port; + } +} diff --git a/proxy-client/src/main/java/org/fengfei/lanproxy/client/config/Ssl.java b/proxy-client/src/main/java/org/fengfei/lanproxy/client/config/Ssl.java new file mode 100644 index 0000000..3e7ccb0 --- /dev/null +++ b/proxy-client/src/main/java/org/fengfei/lanproxy/client/config/Ssl.java @@ -0,0 +1,42 @@ +package org.fengfei.lanproxy.client.config; + +/** + * @Description https连接设置 + * @Author qi + **/ +public class Ssl { + /** + * 是否开启https + */ + private boolean enable; + /** + * + */ + private String jksPath; + + private String keyStorePassword; + + public boolean isEnable() { + return enable; + } + + public void setEnable(boolean enable) { + this.enable = enable; + } + + public String getJksPath() { + return jksPath; + } + + public void setJksPath(String jksPath) { + this.jksPath = jksPath; + } + + public String getKeyStorePassword() { + return keyStorePassword; + } + + public void setKeyStorePassword(String keyStorePassword) { + this.keyStorePassword = keyStorePassword; + } +} diff --git a/proxy-client/src/main/resources/config.properties b/proxy-client/src/main/resources/config.properties index b48b6e2..1b2dd1c 100644 --- a/proxy-client/src/main/resources/config.properties +++ b/proxy-client/src/main/resources/config.properties @@ -1,9 +1,9 @@ client.key=client ssl.enable=false ssl.jksPath=test.jks -ssl.keyStorePassword=123456 +ssl.keyStorePassword=98c93fdc78f34e0c8619c32bcf65ff7a -server.host=127.0.0.1 +server.host=106.12.122.216 #default ssl port is 4993 server.port=4900 \ No newline at end of file diff --git a/proxy-client/src/main/resources/config.yml b/proxy-client/src/main/resources/config.yml new file mode 100644 index 0000000..7ccc7c6 --- /dev/null +++ b/proxy-client/src/main/resources/config.yml @@ -0,0 +1,9 @@ +client: + key: client +ssl: + enable: false + jksPath: test.jks + keyStorePassword: 98c93fdc78f34e0c8619c32bcf65ff7a +server: + host: 106.12.122.216 + port: 4900 \ No newline at end of file diff --git a/proxy-common/pom.xml b/proxy-common/pom.xml index e926df3..857332f 100644 --- a/proxy-common/pom.xml +++ b/proxy-common/pom.xml @@ -22,5 +22,12 @@ fastjson 1.2.62 + + + com.fasterxml.jackson.dataformat + jackson-dataformat-yaml + 2.9.5 + + diff --git a/proxy-server/pom.xml b/proxy-server/pom.xml index c0a24b4..bcfb1ec 100644 --- a/proxy-server/pom.xml +++ b/proxy-server/pom.xml @@ -31,6 +31,7 @@ 2.4 + *.yml *.properties *.sh *.bat @@ -76,6 +77,7 @@ src/main/resources + *.yml *.properties *.json *.jks diff --git a/proxy-server/src/main/resources/config.yml b/proxy-server/src/main/resources/config.yml new file mode 100644 index 0000000..9913979 --- /dev/null +++ b/proxy-server/src/main/resources/config.yml @@ -0,0 +1,18 @@ +server: + bind: 0.0.0.0 + port: 4900 + ssl: + enable: true + bind: 0.0.0.0 + port: 4993 + jksPath: test.jks + keyStorePassword: 123456 + keyManagerPassword: 123456 + needsClientAuth: false +config: + server: + bind: 0.0.0.0 + port: 8090 + admin: + username: admin + password: admin