diff --git a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/context/NettyClientSocketApplicationListener.java b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/context/NettyClientSocketApplicationListener.java index 6a9e2244..10c75457 100644 --- a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/context/NettyClientSocketApplicationListener.java +++ b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/context/NettyClientSocketApplicationListener.java @@ -81,7 +81,7 @@ public class NettyClientSocketApplicationListener implements ApplicationListener authenticationToken.setUsedByClientId(clientId); authenticationToken.setAppKey(appKey); authenticationToken.setAppSecret(appSecret); - AuthenticationTokenContext.setAuthenticationToken(authenticationToken); + AuthenticationTokenContext.setAuthenticationToken(clientId, appKey, appSecret); }catch (Exception e){ e.printStackTrace(); } diff --git a/wu-lazy-cloud-heartbeat-protocol-proxy/src/main/java/org/framework/lazy/cloud/network/heartbeat/protocol/auth/AbstractNettyPasswordAuth.java b/wu-lazy-cloud-heartbeat-protocol-proxy/src/main/java/org/framework/lazy/cloud/network/heartbeat/protocol/auth/AbstractNettyPasswordAuth.java index fc47eaed..5324cd22 100644 --- a/wu-lazy-cloud-heartbeat-protocol-proxy/src/main/java/org/framework/lazy/cloud/network/heartbeat/protocol/auth/AbstractNettyPasswordAuth.java +++ b/wu-lazy-cloud-heartbeat-protocol-proxy/src/main/java/org/framework/lazy/cloud/network/heartbeat/protocol/auth/AbstractNettyPasswordAuth.java @@ -1,14 +1,7 @@ package org.framework.lazy.cloud.network.heartbeat.protocol.auth; -import org.framework.lazy.cloud.network.heartbeat.protocol.properties.ProtocolProxyProperties; - public abstract class AbstractNettyPasswordAuth implements NettyPasswordAuth { - private final ProtocolProxyProperties protocolProxyProperties; - - protected AbstractNettyPasswordAuth(ProtocolProxyProperties protocolProxyProperties) { - this.protocolProxyProperties = protocolProxyProperties; - } public abstract boolean doVerify(String username, String password); @@ -21,9 +14,6 @@ public abstract class AbstractNettyPasswordAuth implements NettyPasswordAuth { */ @Override public boolean verify(String username, String password) { - if (protocolProxyProperties.getAuthentication()) { - return doVerify(username, password); - } - return true; + return doVerify(username, password); } } diff --git a/wu-lazy-cloud-heartbeat-protocol-proxy/src/main/java/org/framework/lazy/cloud/network/heartbeat/protocol/auth/DefaultNettyPasswordAuth.java b/wu-lazy-cloud-heartbeat-protocol-proxy/src/main/java/org/framework/lazy/cloud/network/heartbeat/protocol/auth/DefaultNettyPasswordAuth.java index 4cf3549f..f5420aba 100644 --- a/wu-lazy-cloud-heartbeat-protocol-proxy/src/main/java/org/framework/lazy/cloud/network/heartbeat/protocol/auth/DefaultNettyPasswordAuth.java +++ b/wu-lazy-cloud-heartbeat-protocol-proxy/src/main/java/org/framework/lazy/cloud/network/heartbeat/protocol/auth/DefaultNettyPasswordAuth.java @@ -12,10 +12,6 @@ import java.util.concurrent.ConcurrentHashMap; @Component public class DefaultNettyPasswordAuth extends AbstractNettyPasswordAuth { - protected DefaultNettyPasswordAuth(ProtocolProxyProperties protocolProxyProperties) { - super(protocolProxyProperties); - } - @Override public boolean doVerify(String username, String password) { boolean verify = AuthenticationTokenContext.verify(username, password); diff --git a/wu-lazy-cloud-heartbeat-protocol-proxy/src/main/java/org/framework/lazy/cloud/network/heartbeat/protocol/filter/NettyTcpProxyFilter.java b/wu-lazy-cloud-heartbeat-protocol-proxy/src/main/java/org/framework/lazy/cloud/network/heartbeat/protocol/filter/NettyTcpProxyFilter.java index f0dd138a..d44b250e 100644 --- a/wu-lazy-cloud-heartbeat-protocol-proxy/src/main/java/org/framework/lazy/cloud/network/heartbeat/protocol/filter/NettyTcpProxyFilter.java +++ b/wu-lazy-cloud-heartbeat-protocol-proxy/src/main/java/org/framework/lazy/cloud/network/heartbeat/protocol/filter/NettyTcpProxyFilter.java @@ -9,6 +9,7 @@ import org.framework.lazy.cloud.network.heartbeat.common.advanced.HandleChannelT import org.framework.lazy.cloud.network.heartbeat.common.filter.DebugChannelInitializer; import org.framework.lazy.cloud.network.heartbeat.protocol.auth.NettyPasswordAuth; import org.framework.lazy.cloud.network.heartbeat.protocol.handler.*; +import org.framework.lazy.cloud.network.heartbeat.protocol.properties.ProtocolProxyProperties; import org.springframework.stereotype.Component; import java.util.List; @@ -23,10 +24,12 @@ import java.util.List; public class NettyTcpProxyFilter extends DebugChannelInitializer { private final List handleChannelTypeAdvancedList; private final NettyPasswordAuth nettyPasswordAuth; + private final ProtocolProxyProperties protocolProxyProperties; - public NettyTcpProxyFilter(List handleChannelTypeAdvancedList, NettyPasswordAuth nettyPasswordAuth) { + public NettyTcpProxyFilter(List handleChannelTypeAdvancedList, NettyPasswordAuth nettyPasswordAuth, ProtocolProxyProperties protocolProxyProperties) { this.handleChannelTypeAdvancedList = handleChannelTypeAdvancedList; this.nettyPasswordAuth = nettyPasswordAuth; + this.protocolProxyProperties = protocolProxyProperties; } @Override @@ -42,12 +45,7 @@ public class NettyTcpProxyFilter extends DebugChannelInitializer pipeline.addLast(Socks5ServerEncoder.DEFAULT); // 初始化连接 pipeline.addLast(new Socks5InitialRequestDecoder()); - pipeline.addLast(new NettySocks5InitialRequestHandler()); - - - // 认证 - pipeline.addLast(new Socks5PasswordAuthRequestDecoder()); - pipeline.addLast(new NettySocks5PasswordAuthRequestInboundHandler(nettyPasswordAuth)); + pipeline.addLast(new NettySocks5InitialRequestHandler(protocolProxyProperties,nettyPasswordAuth)); // 连接请求 diff --git a/wu-lazy-cloud-heartbeat-protocol-proxy/src/main/java/org/framework/lazy/cloud/network/heartbeat/protocol/handler/NettySocks5InitialRequestHandler.java b/wu-lazy-cloud-heartbeat-protocol-proxy/src/main/java/org/framework/lazy/cloud/network/heartbeat/protocol/handler/NettySocks5InitialRequestHandler.java index 7ccdd83d..b906039e 100644 --- a/wu-lazy-cloud-heartbeat-protocol-proxy/src/main/java/org/framework/lazy/cloud/network/heartbeat/protocol/handler/NettySocks5InitialRequestHandler.java +++ b/wu-lazy-cloud-heartbeat-protocol-proxy/src/main/java/org/framework/lazy/cloud/network/heartbeat/protocol/handler/NettySocks5InitialRequestHandler.java @@ -4,9 +4,20 @@ import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import io.netty.handler.codec.socksx.v5.*; import lombok.extern.slf4j.Slf4j; +import org.framework.lazy.cloud.network.heartbeat.protocol.auth.NettyPasswordAuth; +import org.framework.lazy.cloud.network.heartbeat.protocol.properties.ProtocolProxyProperties; @Slf4j public class NettySocks5InitialRequestHandler extends SimpleChannelInboundHandler { + + private final ProtocolProxyProperties protocolProxyProperties; + private final NettyPasswordAuth nettyPasswordAuth; + + public NettySocks5InitialRequestHandler(ProtocolProxyProperties protocolProxyProperties, NettyPasswordAuth nettyPasswordAuth) { + this.protocolProxyProperties = protocolProxyProperties; + this.nettyPasswordAuth = nettyPasswordAuth; + } + @Override protected void channelRead0(ChannelHandlerContext ctx, Socks5InitialRequest msg) throws Exception { boolean failure = msg.decoderResult().isFailure(); @@ -18,9 +29,23 @@ public class NettySocks5InitialRequestHandler extends SimpleChannelInboundHandle } log.info("初始化socket连接"); - // 验证账号密码 - Socks5InitialResponse socks5InitialResponse = new DefaultSocks5InitialResponse(Socks5AuthMethod.PASSWORD); - ctx.writeAndFlush(socks5InitialResponse); + if(protocolProxyProperties.getAuthentication()){ + // 验证账号密码 + Socks5InitialResponse socks5InitialResponse = + new DefaultSocks5InitialResponse(Socks5AuthMethod.PASSWORD); + ctx.writeAndFlush(socks5InitialResponse); + // 认证 + ctx.pipeline().addLast(new Socks5PasswordAuthRequestDecoder()); + ctx.pipeline().addLast(new NettySocks5PasswordAuthRequestInboundHandler(nettyPasswordAuth)); + + + }else { + // 不验证账号密码 + Socks5InitialResponse socks5InitialResponse = + new DefaultSocks5InitialResponse(Socks5AuthMethod.NO_AUTH); + ctx.writeAndFlush(socks5InitialResponse); + } + ctx.pipeline().remove(this); ctx.pipeline().remove(Socks5InitialRequestDecoder.class); diff --git a/wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-client-start/src/main/resources/application.yml b/wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-client-start/src/main/resources/application.yml index 3dbddeb5..2e9510a7 100644 --- a/wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-client-start/src/main/resources/application.yml +++ b/wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-client-start/src/main/resources/application.yml @@ -28,6 +28,8 @@ spring: netty: protocol: proxy: + authentication: true + enable-proxy-log: true socket-protocol-proxy: port: 9002 http-protocol-proxy: