Merge with develop/2.5.6
This commit is contained in:
commit
0d64a64bfe
@ -462,26 +462,26 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement
|
|||||||
String clientId = msg.payload().clientIdentifier();
|
String clientId = msg.payload().clientIdentifier();
|
||||||
if (DataConstants.PROVISION.equals(userName) || DataConstants.PROVISION.equals(clientId)) {
|
if (DataConstants.PROVISION.equals(userName) || DataConstants.PROVISION.equals(clientId)) {
|
||||||
deviceSessionCtx.setProvisionOnly(true);
|
deviceSessionCtx.setProvisionOnly(true);
|
||||||
ctx.writeAndFlush(createMqttConnAckMsg(CONNECTION_ACCEPTED));
|
ctx.writeAndFlush(createMqttConnAckMsg(CONNECTION_ACCEPTED, msg));
|
||||||
} else {
|
} else {
|
||||||
X509Certificate cert;
|
X509Certificate cert;
|
||||||
if (sslHandler != null && (cert = getX509Certificate()) != null) {
|
if (sslHandler != null && (cert = getX509Certificate()) != null) {
|
||||||
processX509CertConnect(ctx, cert);
|
processX509CertConnect(ctx, cert, msg);
|
||||||
} else {
|
} else {
|
||||||
processAuthTokenConnect(ctx, msg);
|
processAuthTokenConnect(ctx, msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
||||||
TransportProtos.ValidateBasicMqttCredRequestMsg.Builder request = TransportProtos.ValidateBasicMqttCredRequestMsg.newBuilder()
|
TransportProtos.ValidateBasicMqttCredRequestMsg.Builder request = TransportProtos.ValidateBasicMqttCredRequestMsg.newBuilder()
|
||||||
.setClientId(msg.payload().clientIdentifier());
|
.setClientId(connectMessage.payload().clientIdentifier());
|
||||||
if (userName != null) {
|
if (userName != null) {
|
||||||
request.setUserName(userName);
|
request.setUserName(userName);
|
||||||
}
|
}
|
||||||
String password = msg.payload().password();
|
String password = connectMessage.payload().password();
|
||||||
if (password != null) {
|
if (password != null) {
|
||||||
request.setPassword(password);
|
request.setPassword(password);
|
||||||
}
|
}
|
||||||
@ -489,19 +489,19 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement
|
|||||||
new TransportServiceCallback<ValidateDeviceCredentialsResponse>() {
|
new TransportServiceCallback<ValidateDeviceCredentialsResponse>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(ValidateDeviceCredentialsResponse msg) {
|
public void onSuccess(ValidateDeviceCredentialsResponse msg) {
|
||||||
onValidateDeviceResponse(msg, ctx);
|
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));
|
ctx.writeAndFlush(createMqttConnAckMsg(MqttConnectReturnCode.CONNECTION_REFUSED_SERVER_UNAVAILABLE, connectMessage));
|
||||||
ctx.close();
|
ctx.close();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void processX509CertConnect(ChannelHandlerContext ctx, X509Certificate cert) {
|
private void processX509CertConnect(ChannelHandlerContext ctx, X509Certificate cert, MqttConnectMessage connectMessage) {
|
||||||
try {
|
try {
|
||||||
if (!context.isSkipValidityCheckForClientCert()) {
|
if (!context.isSkipValidityCheckForClientCert()) {
|
||||||
cert.checkValidity();
|
cert.checkValidity();
|
||||||
@ -512,18 +512,18 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement
|
|||||||
new TransportServiceCallback<ValidateDeviceCredentialsResponse>() {
|
new TransportServiceCallback<ValidateDeviceCredentialsResponse>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(ValidateDeviceCredentialsResponse msg) {
|
public void onSuccess(ValidateDeviceCredentialsResponse msg) {
|
||||||
onValidateDeviceResponse(msg, ctx);
|
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));
|
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));
|
ctx.writeAndFlush(createMqttConnAckMsg(CONNECTION_REFUSED_NOT_AUTHORIZED, connectMessage));
|
||||||
ctx.close();
|
ctx.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -547,11 +547,11 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement
|
|||||||
doDisconnect();
|
doDisconnect();
|
||||||
}
|
}
|
||||||
|
|
||||||
private MqttConnAckMessage createMqttConnAckMsg(MqttConnectReturnCode returnCode) {
|
private MqttConnAckMessage createMqttConnAckMsg(MqttConnectReturnCode returnCode, MqttConnectMessage msg) {
|
||||||
MqttFixedHeader mqttFixedHeader =
|
MqttFixedHeader mqttFixedHeader =
|
||||||
new MqttFixedHeader(CONNACK, false, AT_MOST_ONCE, false, 0);
|
new MqttFixedHeader(CONNACK, false, AT_MOST_ONCE, false, 0);
|
||||||
MqttConnAckVariableHeader mqttConnAckVariableHeader =
|
MqttConnAckVariableHeader mqttConnAckVariableHeader =
|
||||||
new MqttConnAckVariableHeader(returnCode, true);
|
new MqttConnAckVariableHeader(returnCode, !msg.variableHeader().isCleanSession());
|
||||||
return new MqttConnAckMessage(mqttFixedHeader, mqttConnAckVariableHeader);
|
return new MqttConnAckMessage(mqttFixedHeader, mqttConnAckVariableHeader);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -627,9 +627,10 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onValidateDeviceResponse(ValidateDeviceCredentialsResponse msg, ChannelHandlerContext ctx) {
|
|
||||||
|
private void onValidateDeviceResponse(ValidateDeviceCredentialsResponse msg, ChannelHandlerContext ctx, MqttConnectMessage connectMessage) {
|
||||||
if (!msg.hasDeviceInfo()) {
|
if (!msg.hasDeviceInfo()) {
|
||||||
ctx.writeAndFlush(createMqttConnAckMsg(CONNECTION_REFUSED_NOT_AUTHORIZED));
|
ctx.writeAndFlush(createMqttConnAckMsg(CONNECTION_REFUSED_NOT_AUTHORIZED, connectMessage));
|
||||||
ctx.close();
|
ctx.close();
|
||||||
} else {
|
} else {
|
||||||
deviceSessionCtx.setDeviceInfo(msg.getDeviceInfo());
|
deviceSessionCtx.setDeviceInfo(msg.getDeviceInfo());
|
||||||
@ -640,7 +641,7 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement
|
|||||||
public void onSuccess(Void msg) {
|
public void onSuccess(Void msg) {
|
||||||
transportService.registerAsyncSession(deviceSessionCtx.getSessionInfo(), MqttTransportHandler.this);
|
transportService.registerAsyncSession(deviceSessionCtx.getSessionInfo(), MqttTransportHandler.this);
|
||||||
checkGatewaySession();
|
checkGatewaySession();
|
||||||
ctx.writeAndFlush(createMqttConnAckMsg(CONNECTION_ACCEPTED));
|
ctx.writeAndFlush(createMqttConnAckMsg(CONNECTION_ACCEPTED, connectMessage));
|
||||||
log.info("[{}] Client connected!", sessionId);
|
log.info("[{}] Client connected!", sessionId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -651,7 +652,7 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement
|
|||||||
} else {
|
} else {
|
||||||
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));
|
ctx.writeAndFlush(createMqttConnAckMsg(MqttConnectReturnCode.CONNECTION_REFUSED_SERVER_UNAVAILABLE, connectMessage));
|
||||||
ctx.close();
|
ctx.close();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@ -107,4 +107,4 @@ public class CassandraPartitionsCacheTest {
|
|||||||
}
|
}
|
||||||
verify(cassandraBaseTimeseriesDao, times(60000)).executeAsyncWrite(any(TenantId.class), any(Statement.class));
|
verify(cassandraBaseTimeseriesDao, times(60000)).executeAsyncWrite(any(TenantId.class), any(Statement.class));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user