From 55f85861cfe7335ce1b68327a7e57043b7460610 Mon Sep 17 00:00:00 2001 From: = <=> Date: Wed, 8 Nov 2023 14:08:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=BE=93=E5=87=BA=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/handler/ProxyMessageSecureKeyHandler.java | 1 + neutrino-proxy-client/src/main/resources/app.yml | 4 ++-- .../java/org/dromara/neutrinoproxy/core/Constants.java | 1 - .../dromara/neutrinoproxy/core/ProxyMessageDecoder.java | 6 +++++- .../dromara/neutrinoproxy/core/ProxyMessageEncoder.java | 8 ++++++-- .../server/proxy/handler/ProxyMessageAuthHandler.java | 8 +++++--- .../proxy/handler/ProxyMessageSecureKeyHandler.java | 2 ++ 7 files changed, 21 insertions(+), 9 deletions(-) diff --git a/neutrino-proxy-client/src/main/java/org/dromara/neutrinoproxy/client/handler/ProxyMessageSecureKeyHandler.java b/neutrino-proxy-client/src/main/java/org/dromara/neutrinoproxy/client/handler/ProxyMessageSecureKeyHandler.java index 49989bd5..67080776 100644 --- a/neutrino-proxy-client/src/main/java/org/dromara/neutrinoproxy/client/handler/ProxyMessageSecureKeyHandler.java +++ b/neutrino-proxy-client/src/main/java/org/dromara/neutrinoproxy/client/handler/ProxyMessageSecureKeyHandler.java @@ -16,6 +16,7 @@ import org.noear.solon.annotation.Component; public class ProxyMessageSecureKeyHandler implements ProxyMessageHandler { @Override public void handle(ChannelHandlerContext ctx, ProxyMessage proxyMessage) { + log.info("收到服务端的加密确认"); Attribute secureKeyAttr = ctx.attr(Constants.SECURE_KEY); byte[] secureKey = secureKeyAttr.get(); byte[] data = proxyMessage.getData(); diff --git a/neutrino-proxy-client/src/main/resources/app.yml b/neutrino-proxy-client/src/main/resources/app.yml index 2645e37a..5e88d758 100644 --- a/neutrino-proxy-client/src/main/resources/app.yml +++ b/neutrino-proxy-client/src/main/resources/app.yml @@ -23,7 +23,7 @@ neutrino: proxy: protocol: - max-frame-length: 104857600 + max-frame-length: 1048576000 length-field-offset: 0 length-field-length: 4 initial-bytes-to-strip: 0 @@ -42,7 +42,7 @@ neutrino: # 服务端端口(对应服务端app.yml中的tunnel.port、tunnel.ssl-port) server-port: ${SERVER_PORT:9000} # 是否启用SSL(注意:该配置必须和server-port对应上) - ssl-enable: ${SSL_ENABLE:true} + ssl-enable: ${SSL_ENABLE:false} # 客户端连接唯一凭证 license-key: ${LICENSE_KEY:b0a907332b474b25897c4dcb31fc7eb6} # 客户端唯一身份标识(可忽略,若不设置首次启动会自动生成) diff --git a/neutrino-proxy-core/src/main/java/org/dromara/neutrinoproxy/core/Constants.java b/neutrino-proxy-core/src/main/java/org/dromara/neutrinoproxy/core/Constants.java index 6e1751a3..574bc5bc 100644 --- a/neutrino-proxy-core/src/main/java/org/dromara/neutrinoproxy/core/Constants.java +++ b/neutrino-proxy-core/src/main/java/org/dromara/neutrinoproxy/core/Constants.java @@ -64,7 +64,6 @@ public interface Constants { interface ProxyDataTypeName { String HEARTBEAT = "HEARTBEAT"; String SECURE_KEY = "SECURE_KEY"; - String IS_SECURITY = "IS_SECURITY"; String AUTH = "AUTH"; String CONNECT = "CONNECT"; String DISCONNECT = "DISCONNECT"; diff --git a/neutrino-proxy-core/src/main/java/org/dromara/neutrinoproxy/core/ProxyMessageDecoder.java b/neutrino-proxy-core/src/main/java/org/dromara/neutrinoproxy/core/ProxyMessageDecoder.java index 3ac525d2..2e8f8ccf 100644 --- a/neutrino-proxy-core/src/main/java/org/dromara/neutrinoproxy/core/ProxyMessageDecoder.java +++ b/neutrino-proxy-core/src/main/java/org/dromara/neutrinoproxy/core/ProxyMessageDecoder.java @@ -27,10 +27,12 @@ import io.netty.buffer.Unpooled; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.LengthFieldBasedFrameDecoder; import io.netty.util.Attribute; +import lombok.extern.slf4j.Slf4j; import org.dromara.neutrinoproxy.core.util.SmEncryptUtil; import static org.dromara.neutrinoproxy.core.Constants.*; +@Slf4j /** * * @author: aoshiguchen @@ -80,7 +82,8 @@ public class ProxyMessageDecoder extends LengthFieldBasedFrameDecoder { ByteBuf buf; // 考虑isSecurity为null的情况,null的情况也为false - if (isSecurity == true) { + if (isSecurity != null && isSecurity) { + log.info("执行解密逻辑"); int packageLength = in.readInt(); if (in.readableBytes() < packageLength) { return null; @@ -100,6 +103,7 @@ public class ProxyMessageDecoder extends LengthFieldBasedFrameDecoder { buf = Unpooled.wrappedBuffer(decryptedData); } else { buf = in; + log.info("链路不加密解码"); } ProxyMessage proxyMessage = new ProxyMessage(); diff --git a/neutrino-proxy-core/src/main/java/org/dromara/neutrinoproxy/core/ProxyMessageEncoder.java b/neutrino-proxy-core/src/main/java/org/dromara/neutrinoproxy/core/ProxyMessageEncoder.java index a4101121..3f1db357 100644 --- a/neutrino-proxy-core/src/main/java/org/dromara/neutrinoproxy/core/ProxyMessageEncoder.java +++ b/neutrino-proxy-core/src/main/java/org/dromara/neutrinoproxy/core/ProxyMessageEncoder.java @@ -27,6 +27,7 @@ import io.netty.buffer.Unpooled; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.MessageToByteEncoder; import io.netty.util.Attribute; +import lombok.extern.slf4j.Slf4j; import org.dromara.neutrinoproxy.core.util.SmEncryptUtil; import static org.dromara.neutrinoproxy.core.Constants.*; @@ -36,6 +37,7 @@ import static org.dromara.neutrinoproxy.core.Constants.*; * @author: aoshiguchen * @date: 2022/6/16 */ +@Slf4j public class ProxyMessageEncoder extends MessageToByteEncoder { public ProxyMessageEncoder() { @@ -62,9 +64,11 @@ public class ProxyMessageEncoder extends MessageToByteEncoder { ByteBuf buf; // 考虑isSecurity为null的情况,null的情况也为false - if (isSecurity == true) { + if (isSecurity != null && isSecurity) { + log.info("执行加密逻辑"); buf = Unpooled.buffer(bodyLength); } else { + log.info("不执行加密的链路编码"); buf = out; } @@ -86,7 +90,7 @@ public class ProxyMessageEncoder extends MessageToByteEncoder { } // 考虑isSecurity为null的情况,null的情况也为false - if (isSecurity == true) { + if (isSecurity != null && isSecurity) { // 执行加密 byte[] data = new byte[bodyLength]; buf.readBytes(data); diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/proxy/handler/ProxyMessageAuthHandler.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/proxy/handler/ProxyMessageAuthHandler.java index 8ea5f334..5ba72341 100644 --- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/proxy/handler/ProxyMessageAuthHandler.java +++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/proxy/handler/ProxyMessageAuthHandler.java @@ -77,6 +77,8 @@ public class ProxyMessageAuthHandler implements ProxyMessageHandler { @Override public void handle(ChannelHandlerContext ctx, ProxyMessage proxyMessage) { + log.info("收到客户端的认证连接信息"); + String ip = ((InetSocketAddress)ctx.channel().remoteAddress()).getAddress().getHostAddress(); Date now = new Date(); @@ -105,7 +107,7 @@ public class ProxyMessageAuthHandler implements ProxyMessageHandler { } LicenseDO licenseDO = licenseService.findByKey(licenseKey); if (null == licenseDO) { - log.warn("[client connection] license notfound info:{} ", info); + log.warn("[client connection] license not found info:{} ", info); ctx.channel().writeAndFlush(ProxyMessage.buildAuthResultMessage(ExceptionEnum.AUTH_FAILED.getCode(), "license不存在!", licenseKey, null)); ctx.channel().close(); clientConnectRecordService.add(new ClientConnectRecordDO() @@ -113,7 +115,7 @@ public class ProxyMessageAuthHandler implements ProxyMessageHandler { .setType(ClientConnectTypeEnum.CONNECT.getType()) .setMsg(licenseKey) .setCode(SuccessCodeEnum.FAIL.getCode()) - .setErr("license notfound!") + .setErr("license not found!") .setCreateTime(now) ); return; @@ -175,7 +177,7 @@ public class ProxyMessageAuthHandler implements ProxyMessageHandler { // 私钥存入ctx Attribute attr = ctx.attr(Constants.SECURE_PRIVATE_KEY); - attr.setIfAbsent(record.privateKey()); + attr.set(record.privateKey()); // 发送认证成功消息 ctx.channel().writeAndFlush(ProxyMessage.buildAuthResultMessage(ExceptionEnum.SUCCESS.getCode(), "auth success!", licenseKey, record.publicKey())); diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/proxy/handler/ProxyMessageSecureKeyHandler.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/proxy/handler/ProxyMessageSecureKeyHandler.java index c6970675..9ace39a5 100644 --- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/proxy/handler/ProxyMessageSecureKeyHandler.java +++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/proxy/handler/ProxyMessageSecureKeyHandler.java @@ -21,6 +21,8 @@ public class ProxyMessageSecureKeyHandler implements ProxyMessageHandler { @Override public void handle(ChannelHandlerContext ctx, ProxyMessage proxyMessage) { + log.info("收到客户端的加密信息"); + // data为加密后的密码,info为加密密码的摘要 byte[] data = proxyMessage.getData(); String receivedDigest = proxyMessage.getInfo();