diff --git a/neutrino-proxy-client/src/main/java/org/dromara/neutrinoproxy/client/handler/ProxyMessageAuthHandler.java b/neutrino-proxy-client/src/main/java/org/dromara/neutrinoproxy/client/handler/ProxyMessageAuthHandler.java index 3972f55e..a042c816 100644 --- a/neutrino-proxy-client/src/main/java/org/dromara/neutrinoproxy/client/handler/ProxyMessageAuthHandler.java +++ b/neutrino-proxy-client/src/main/java/org/dromara/neutrinoproxy/client/handler/ProxyMessageAuthHandler.java @@ -2,6 +2,7 @@ package org.dromara.neutrinoproxy.client.handler; import com.alibaba.fastjson.JSONObject; import org.dromara.neutrinoproxy.core.Constants; +import org.dromara.neutrinoproxy.core.ExceptionEnum; import org.dromara.neutrinoproxy.core.ProxyMessage; import org.dromara.neutrinoproxy.core.ProxyMessageHandler; import org.dromara.neutrinoproxy.core.dispatcher.Match; @@ -24,5 +25,8 @@ public class ProxyMessageAuthHandler implements ProxyMessageHandler { JSONObject data = JSONObject.parseObject(info); Integer code = data.getInteger("code"); log.info("认证结果:{}", info); + if (!ExceptionEnum.SUCCESS.getCode().equals(code)) { + context.channel().close(); + } } } 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 a43584da..49d28299 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 @@ -82,6 +82,7 @@ public class ProxyMessageAuthHandler implements ProxyMessageHandler { String licenseKey = proxyMessage.getInfo(); if (StrUtil.isEmpty(licenseKey)) { ctx.channel().writeAndFlush(ProxyMessage.buildAuthResultMessage(ExceptionEnum.AUTH_FAILED.getCode(), "license不能为空!", licenseKey)); + ctx.channel().close(); clientConnectRecordService.add(new ClientConnectRecordDO() .setIp(ip) .setType(ClientConnectTypeEnum.CONNECT.getType()) @@ -95,6 +96,7 @@ public class ProxyMessageAuthHandler implements ProxyMessageHandler { LicenseDO licenseDO = licenseService.findByKey(licenseKey); if (null == licenseDO) { ctx.channel().writeAndFlush(ProxyMessage.buildAuthResultMessage(ExceptionEnum.AUTH_FAILED.getCode(), "license不存在!", licenseKey)); + ctx.channel().close(); clientConnectRecordService.add(new ClientConnectRecordDO() .setIp(ip) .setType(ClientConnectTypeEnum.CONNECT.getType()) @@ -107,6 +109,7 @@ public class ProxyMessageAuthHandler implements ProxyMessageHandler { } if (EnableStatusEnum.DISABLE.getStatus().equals(licenseDO.getEnable())) { ctx.channel().writeAndFlush(ProxyMessage.buildAuthResultMessage(ExceptionEnum.AUTH_FAILED.getCode(), "当前license已被禁用!", licenseKey)); + ctx.channel().close(); clientConnectRecordService.add(new ClientConnectRecordDO() .setIp(ip) .setLicenseId(licenseDO.getId()) @@ -120,6 +123,7 @@ public class ProxyMessageAuthHandler implements ProxyMessageHandler { UserDO userDO = userService.findById(licenseDO.getUserId()); if (null == userDO || EnableStatusEnum.DISABLE.getStatus().equals(userDO.getEnable())) { ctx.channel().writeAndFlush(ProxyMessage.buildAuthResultMessage(ExceptionEnum.AUTH_FAILED.getCode(), "当前license无效!", licenseKey)); + ctx.channel().close(); clientConnectRecordService.add(new ClientConnectRecordDO() .setIp(ip) .setLicenseId(licenseDO.getId()) @@ -133,6 +137,7 @@ public class ProxyMessageAuthHandler implements ProxyMessageHandler { Channel cmdChannel = ProxyUtil.getCmdChannelByLicenseId(licenseDO.getId()); if (null != cmdChannel) { ctx.channel().writeAndFlush(ProxyMessage.buildAuthResultMessage(ExceptionEnum.AUTH_FAILED.getCode(), "当前license已被另一节点使用!", licenseKey)); + ctx.channel().close(); clientConnectRecordService.add(new ClientConnectRecordDO() .setIp(ip) .setLicenseId(licenseDO.getId()) diff --git a/todolist.MD b/todolist.MD index 9af5aa0c..a967f1b6 100644 --- a/todolist.MD +++ b/todolist.MD @@ -1,10 +1,8 @@ -# 1.x剩余规划 -- [ ] 增加针对https的支持 - # Bug - 指令通达被close的问题,org.dromara.neutrinoproxy.server.proxy.core.ProxyTunnelChannelHandler.channelInactive - windows环境下直接运行发布版的jar包,日志输出乱码 - 代理mysql时,使用未开启远程访问的账号走代理访问mysql,代理客户端出现断开现象 +- 客户端连接映射某个端口以后,如果在服务器端禁用了,没有立刻反映出来,要灯客户端重连以后才会屏蔽被禁用的端口。 # 2.x规划 - 插件开发