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.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