refactored

This commit is contained in:
YevhenBondarenko 2020-12-23 16:54:14 +02:00
parent bff16ddafd
commit 16d82e77fc

View File

@ -363,31 +363,31 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement
} }
} }
private void processAuthTokenConnect(ChannelHandlerContext ctx, MqttConnectMessage msg) { private void processAuthTokenConnect(ChannelHandlerContext ctx, MqttConnectMessage connectMessage) {
String userName = msg.payload().userName(); String userName = connectMessage.payload().userName();
log.info("[{}] Processing connect msg for client with user name: {}!", sessionId, userName); log.info("[{}] Processing connect msg for client with user name: {}!", sessionId, userName);
if (StringUtils.isEmpty(userName)) { if (StringUtils.isEmpty(userName)) {
ctx.writeAndFlush(createMqttConnAckMsg(CONNECTION_REFUSED_BAD_USER_NAME_OR_PASSWORD, msg)); ctx.writeAndFlush(createMqttConnAckMsg(CONNECTION_REFUSED_BAD_USER_NAME_OR_PASSWORD, connectMessage));
ctx.close(); ctx.close();
} else { } else {
transportService.process(ValidateDeviceTokenRequestMsg.newBuilder().setToken(userName).build(), transportService.process(ValidateDeviceTokenRequestMsg.newBuilder().setToken(userName).build(),
new TransportServiceCallback<ValidateDeviceCredentialsResponseMsg>() { new TransportServiceCallback<ValidateDeviceCredentialsResponseMsg>() {
@Override @Override
public void onSuccess(ValidateDeviceCredentialsResponseMsg responseMsg) { public void onSuccess(ValidateDeviceCredentialsResponseMsg msg) {
onValidateDeviceResponse(responseMsg, ctx, msg); onValidateDeviceResponse(msg, ctx, connectMessage);
} }
@Override @Override
public void onError(Throwable e) { public void onError(Throwable e) {
log.trace("[{}] Failed to process credentials: {}", address, userName, e); log.trace("[{}] Failed to process credentials: {}", address, userName, e);
ctx.writeAndFlush(createMqttConnAckMsg(MqttConnectReturnCode.CONNECTION_REFUSED_SERVER_UNAVAILABLE, msg)); ctx.writeAndFlush(createMqttConnAckMsg(MqttConnectReturnCode.CONNECTION_REFUSED_SERVER_UNAVAILABLE, connectMessage));
ctx.close(); ctx.close();
} }
}); });
} }
} }
private void processX509CertConnect(ChannelHandlerContext ctx, X509Certificate cert, MqttConnectMessage msg) { private void processX509CertConnect(ChannelHandlerContext ctx, X509Certificate cert, MqttConnectMessage connectMessage) {
try { try {
if(!context.isSkipValidityCheckForClientCert()){ if(!context.isSkipValidityCheckForClientCert()){
cert.checkValidity(); cert.checkValidity();
@ -397,19 +397,19 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement
transportService.process(ValidateDeviceX509CertRequestMsg.newBuilder().setHash(sha3Hash).build(), transportService.process(ValidateDeviceX509CertRequestMsg.newBuilder().setHash(sha3Hash).build(),
new TransportServiceCallback<ValidateDeviceCredentialsResponseMsg>() { new TransportServiceCallback<ValidateDeviceCredentialsResponseMsg>() {
@Override @Override
public void onSuccess(ValidateDeviceCredentialsResponseMsg responseMsg) { public void onSuccess(ValidateDeviceCredentialsResponseMsg msg) {
onValidateDeviceResponse(responseMsg, ctx, msg); onValidateDeviceResponse(msg, ctx, connectMessage);
} }
@Override @Override
public void onError(Throwable e) { public void onError(Throwable e) {
log.trace("[{}] Failed to process credentials: {}", address, sha3Hash, e); log.trace("[{}] Failed to process credentials: {}", address, sha3Hash, e);
ctx.writeAndFlush(createMqttConnAckMsg(MqttConnectReturnCode.CONNECTION_REFUSED_SERVER_UNAVAILABLE, msg)); ctx.writeAndFlush(createMqttConnAckMsg(MqttConnectReturnCode.CONNECTION_REFUSED_SERVER_UNAVAILABLE, connectMessage));
ctx.close(); ctx.close();
} }
}); });
} catch (Exception e) { } catch (Exception e) {
ctx.writeAndFlush(createMqttConnAckMsg(CONNECTION_REFUSED_NOT_AUTHORIZED, msg)); ctx.writeAndFlush(createMqttConnAckMsg(CONNECTION_REFUSED_NOT_AUTHORIZED, connectMessage));
ctx.close(); ctx.close();
} }
} }
@ -513,36 +513,36 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement
} }
} }
private void onValidateDeviceResponse(ValidateDeviceCredentialsResponseMsg responseMsg, ChannelHandlerContext ctx, MqttConnectMessage msg) { private void onValidateDeviceResponse(ValidateDeviceCredentialsResponseMsg msg, ChannelHandlerContext ctx, MqttConnectMessage connectMessage) {
if (!responseMsg.hasDeviceInfo()) { if (!msg.hasDeviceInfo()) {
ctx.writeAndFlush(createMqttConnAckMsg(CONNECTION_REFUSED_NOT_AUTHORIZED, msg)); ctx.writeAndFlush(createMqttConnAckMsg(CONNECTION_REFUSED_NOT_AUTHORIZED, connectMessage));
ctx.close(); ctx.close();
} else { } else {
deviceSessionCtx.setDeviceInfo(responseMsg.getDeviceInfo()); deviceSessionCtx.setDeviceInfo(msg.getDeviceInfo());
sessionInfo = SessionInfoProto.newBuilder() sessionInfo = SessionInfoProto.newBuilder()
.setNodeId(context.getNodeId()) .setNodeId(context.getNodeId())
.setSessionIdMSB(sessionId.getMostSignificantBits()) .setSessionIdMSB(sessionId.getMostSignificantBits())
.setSessionIdLSB(sessionId.getLeastSignificantBits()) .setSessionIdLSB(sessionId.getLeastSignificantBits())
.setDeviceIdMSB(responseMsg.getDeviceInfo().getDeviceIdMSB()) .setDeviceIdMSB(msg.getDeviceInfo().getDeviceIdMSB())
.setDeviceIdLSB(responseMsg.getDeviceInfo().getDeviceIdLSB()) .setDeviceIdLSB(msg.getDeviceInfo().getDeviceIdLSB())
.setTenantIdMSB(responseMsg.getDeviceInfo().getTenantIdMSB()) .setTenantIdMSB(msg.getDeviceInfo().getTenantIdMSB())
.setTenantIdLSB(responseMsg.getDeviceInfo().getTenantIdLSB()) .setTenantIdLSB(msg.getDeviceInfo().getTenantIdLSB())
.setDeviceName(responseMsg.getDeviceInfo().getDeviceName()) .setDeviceName(msg.getDeviceInfo().getDeviceName())
.setDeviceType(responseMsg.getDeviceInfo().getDeviceType()) .setDeviceType(msg.getDeviceInfo().getDeviceType())
.build(); .build();
transportService.process(sessionInfo, DefaultTransportService.getSessionEventMsg(SessionEvent.OPEN), new TransportServiceCallback<Void>() { transportService.process(sessionInfo, DefaultTransportService.getSessionEventMsg(SessionEvent.OPEN), new TransportServiceCallback<Void>() {
@Override @Override
public void onSuccess(Void response) { public void onSuccess(Void response) {
transportService.registerAsyncSession(sessionInfo, MqttTransportHandler.this); transportService.registerAsyncSession(sessionInfo, MqttTransportHandler.this);
checkGatewaySession(); checkGatewaySession();
ctx.writeAndFlush(createMqttConnAckMsg(CONNECTION_ACCEPTED, msg)); ctx.writeAndFlush(createMqttConnAckMsg(CONNECTION_ACCEPTED, connectMessage));
log.info("[{}] Client connected!", sessionId); log.info("[{}] Client connected!", sessionId);
} }
@Override @Override
public void onError(Throwable e) { public void onError(Throwable e) {
log.warn("[{}] Failed to submit session event", sessionId, e); log.warn("[{}] Failed to submit session event", sessionId, e);
ctx.writeAndFlush(createMqttConnAckMsg(MqttConnectReturnCode.CONNECTION_REFUSED_SERVER_UNAVAILABLE, msg)); ctx.writeAndFlush(createMqttConnAckMsg(MqttConnectReturnCode.CONNECTION_REFUSED_SERVER_UNAVAILABLE, connectMessage));
ctx.close(); ctx.close();
} }
}); });