Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,15 @@
import io.vertx.sqlclient.impl.ConnectionFactoryBase;
import io.vertx.sqlclient.spi.connection.Connection;

import java.util.List;
import java.util.Map;

import static io.vertx.mssqlclient.impl.codec.EncryptionLevel.*;

public class MSSQLConnectionFactory extends ConnectionFactoryBase<MSSQLConnectOptions> {

private static final List<String> TDS_PROTOCOLS = List.of("tds/8.0");

private final ClientSslContextManager sslContextManager;

public MSSQLConnectionFactory(VertxInternal vertx) {
Expand Down Expand Up @@ -64,18 +67,15 @@ private Future<Connection> connectOrRedirect(MSSQLConnectOptions options, Contex
private Future<Connection> connectWithTds8(MSSQLConnectOptions options, ContextInternal context, int redirections) {
SocketAddress server = options.getSocketAddress();

ClientSSLOptions sslOptions;
if (options.getSslOptions() == null) {
sslOptions = new ClientSSLOptions();
} else {
sslOptions = new ClientSSLOptions(options.getSslOptions());
}

ClientSSLOptions sslOptions = copyClientSSLOptions(options.getSslOptions());
if (sslOptions.isTrustAll()) {
return context.failedFuture("Strict encryption mode requires proper certificate validation. Configure SSL options with valid certificates.");
}

sslOptions.setHostnameVerificationAlgorithm("");
if (sslOptions.getHostnameVerificationAlgorithm() == null) {
sslOptions.setHostnameVerificationAlgorithm("");
}
sslOptions.setUseAlpn(true).setApplicationLayerProtocols(TDS_PROTOCOLS);

ConnectOptions connectOpts = new ConnectOptions()
.setRemoteAddress(server)
Expand All @@ -89,6 +89,10 @@ private Future<Connection> connectWithTds8(MSSQLConnectOptions options, ContextI
.compose(connBase -> handleRedirectionToAlternateServer(connBase, options, context, redirections));
}

private ClientSSLOptions copyClientSSLOptions(ClientSSLOptions sslOptions) {
return sslOptions == null ? new ClientSSLOptions() : sslOptions.copy();
}

private Future<Connection> connectWithTds7x(MSSQLConnectOptions options, ContextInternal context, int redirections) {
SocketAddress server = options.getSocketAddress();
boolean clientSslConfig = options.isSsl();
Expand Down
Loading