Skip to content
Merged
Show file tree
Hide file tree
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 @@ -20,6 +20,11 @@ public class DB2ConnectOptionsConverter {
public static void fromJson(Iterable<java.util.Map.Entry<String, Object>> json, DB2ConnectOptions obj) {
for (java.util.Map.Entry<String, Object> member : json) {
switch (member.getKey()) {
case "ssl":
if (member.getValue() instanceof Boolean) {
obj.setSsl((Boolean)member.getValue());
}
break;
case "pipeliningLimit":
break;
}
Expand All @@ -31,6 +36,7 @@ public static void toJson(DB2ConnectOptions obj, JsonObject json) {
}

public static void toJson(DB2ConnectOptions obj, java.util.Map<String, Object> json) {
json.put("ssl", obj.isSsl());
json.put("pipeliningLimit", obj.getPipeliningLimit());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

import io.vertx.core.Future;
import io.vertx.core.Vertx;
import io.vertx.core.net.ClientSSLOptions;
import io.vertx.core.net.JksOptions;
import io.vertx.db2client.DB2ConnectOptions;
import io.vertx.db2client.DB2Connection;
Expand Down Expand Up @@ -258,9 +259,9 @@ public void connectSsl(Vertx vertx) {
.setUser("user")
.setPassword("secret")
.setSsl(true)
.setTrustStoreOptions(new JksOptions()
.setPath("/path/to/keystore.p12")
.setPassword("keystoreSecret"));
.setSslOptions(new ClientSSLOptions().setTrustOptions(new JksOptions()
.setPath("/path/to/keystore.p12")
.setPassword("keystoreSecret")));

DB2Connection.connect(vertx, options)
.onComplete(res -> {
Expand Down Expand Up @@ -396,5 +397,4 @@ public void enumIntValues(SqlClient client) {
}
});
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -25,16 +25,7 @@
import io.vertx.codegen.annotations.DataObject;
import io.vertx.codegen.annotations.GenIgnore;
import io.vertx.core.json.JsonObject;
import io.vertx.core.net.ClientOptionsBase;
import io.vertx.core.net.JdkSSLEngineOptions;
import io.vertx.core.net.JksOptions;
import io.vertx.core.net.KeyCertOptions;
import io.vertx.core.net.NetClientOptions;
import io.vertx.core.net.OpenSSLEngineOptions;
import io.vertx.core.net.PemKeyCertOptions;
import io.vertx.core.net.PemTrustOptions;
import io.vertx.core.net.SSLEngineOptions;
import io.vertx.core.net.TrustOptions;
import io.vertx.core.net.*;
import io.vertx.core.tracing.TracingPolicy;
import io.vertx.db2client.impl.DB2ConnectionUriParser;
import io.vertx.db2client.impl.drda.SQLState;
Expand Down Expand Up @@ -77,13 +68,15 @@ public static DB2ConnectOptions fromUri(String connectionUri) throws IllegalArgu
public static final boolean DEFAULT_USE_AFFECTED_ROWS = false;
public static final int DEFAULT_PIPELINING_LIMIT = 1; // 256; // TODO default to 256 once implemented properly
public static final Map<String, String> DEFAULT_CONNECTION_ATTRIBUTES;
public static final boolean DEFAULT_SSL = false;

static {
Map<String, String> defaultAttributes = new HashMap<>();
defaultAttributes.put("_client_name", "vertx-db2-client");
DEFAULT_CONNECTION_ATTRIBUTES = Collections.unmodifiableMap(defaultAttributes);
}

private boolean ssl = DEFAULT_SSL;
private int pipeliningLimit = DEFAULT_PIPELINING_LIMIT;

public DB2ConnectOptions() {
Expand All @@ -100,12 +93,14 @@ public DB2ConnectOptions(SqlConnectOptions other) {
if (other instanceof DB2ConnectOptions) {
DB2ConnectOptions opts = (DB2ConnectOptions) other;
this.pipeliningLimit = opts.pipeliningLimit;
this.ssl = opts.ssl;
}
}

public DB2ConnectOptions(DB2ConnectOptions other) {
super(other);
this.pipeliningLimit = other.pipeliningLimit;
this.ssl = other.ssl;
}

@Override
Expand Down Expand Up @@ -169,69 +164,23 @@ public DB2ConnectOptions setPreparedStatementCacheSqlLimit(int preparedStatement
return (DB2ConnectOptions) super.setPreparedStatementCacheSqlLimit(preparedStatementCacheSqlLimit);
}

@Override
public DB2ConnectOptions setSsl(boolean ssl) {
return (DB2ConnectOptions) super.setSsl(ssl);
}

@Override
public DB2ConnectOptions setSslHandshakeTimeout(long sslHandshakeTimeout) {
return (DB2ConnectOptions) super.setSslHandshakeTimeout(sslHandshakeTimeout);
}

@Override
public DB2ConnectOptions setSslHandshakeTimeoutUnit(TimeUnit sslHandshakeTimeoutUnit) {
return (DB2ConnectOptions) super.setSslHandshakeTimeoutUnit(sslHandshakeTimeoutUnit);
}

@Override
public DB2ConnectOptions setSslEngineOptions(SSLEngineOptions sslEngineOptions) {
return (DB2ConnectOptions) super.setSslEngineOptions(sslEngineOptions);
}

@Override
public DB2ConnectOptions setJdkSslEngineOptions(JdkSSLEngineOptions sslEngineOptions) {
return (DB2ConnectOptions) super.setJdkSslEngineOptions(sslEngineOptions);
}

@Override
public DB2ConnectOptions setKeyCertOptions(KeyCertOptions options) {
return (DB2ConnectOptions) super.setKeyCertOptions(options);
}

@Override
public DB2ConnectOptions setKeyStoreOptions(JksOptions options) {
return (DB2ConnectOptions) super.setKeyStoreOptions(options);
}

@Override
public DB2ConnectOptions setOpenSslEngineOptions(OpenSSLEngineOptions sslEngineOptions) {
return (DB2ConnectOptions) super.setOpenSslEngineOptions(sslEngineOptions);
}

@Override
public DB2ConnectOptions setPemKeyCertOptions(PemKeyCertOptions options) {
return (DB2ConnectOptions) super.setPemKeyCertOptions(options);
}

@Override
public DB2ConnectOptions setPemTrustOptions(PemTrustOptions options) {
return (DB2ConnectOptions) super.setPemTrustOptions(options);
}

@Override
public DB2ConnectOptions setTrustAll(boolean trustAll) {
return (DB2ConnectOptions) super.setTrustAll(trustAll);
}

@Override
public DB2ConnectOptions setTrustOptions(TrustOptions options) {
return (DB2ConnectOptions) super.setTrustOptions(options);
/**
*
* @return is SSL/TLS enabled?
*/
public boolean isSsl() {
return ssl;
}

@Override
public DB2ConnectOptions setTrustStoreOptions(JksOptions options) {
return (DB2ConnectOptions) super.setTrustStoreOptions(options);
/**
* Set whether SSL/TLS is enabled
*
* @param ssl true if enabled
* @return a reference to this, so the API can be used fluently
*/
public DB2ConnectOptions setSsl(boolean ssl) {
this.ssl = ssl;
return this;
}

public int getPipeliningLimit() {
Expand Down Expand Up @@ -271,6 +220,11 @@ public DB2ConnectOptions addProperty(String key, String value) {
return (DB2ConnectOptions) super.addProperty(key, value);
}

@Override
public DB2ConnectOptions setSslOptions(ClientSSLOptions sslOptions) {
return (DB2ConnectOptions) super.setSslOptions(sslOptions);
}

/**
* Initialize with the default options.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,9 @@ protected Future<Connection> doConnectInternal(DB2ConnectOptions options, Contex
String database = options.getDatabase();
Map<String, String> properties = options.getProperties();
int pipeliningLimit = options.getPipeliningLimit();
NetClient netClient = netClient(options);
return netClient.connect(server).flatMap(so -> {
return client.connect(server).flatMap(so -> {
VertxMetrics vertxMetrics = vertx.metricsSPI();
ClientMetrics metrics = vertxMetrics != null ? vertxMetrics.createClientMetrics(options.getSocketAddress(), "sql", options.getMetricsName()) : null;
ClientMetrics metrics = vertxMetrics != null ? vertxMetrics.createClientMetrics(options.getSocketAddress(), "sql", tcpOptions.getMetricsName()) : null;
DB2SocketConnection conn = new DB2SocketConnection((NetSocketInternal) so, metrics, options, cachePreparedStatements,
preparedStatementCacheSize, preparedStatementCacheSqlFilter, pipeliningLimit, context);
conn.init();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
*/
package io.vertx.db2client.junit;

import io.vertx.core.net.ClientSSLOptions;
import io.vertx.core.net.JksOptions;
import io.vertx.db2client.DB2ConnectOptions;
import org.junit.rules.ExternalResource;
Expand Down Expand Up @@ -101,9 +102,9 @@ public DB2ConnectOptions secureOptions() {
return new DB2ConnectOptions(options())
.setPort(securePort)
.setSsl(true)
.setTrustStoreOptions(new JksOptions()
.setPath("src/test/resources/tls/db2-keystore.p12")
.setPassword("db2test"));
.setSslOptions(new ClientSSLOptions().setTrustOptions(new JksOptions()
.setPath("src/test/resources/tls/db2-keystore.p12")
.setPassword("db2test")));
}

public boolean isZOS() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,11 @@ public static void fromJson(Iterable<java.util.Map.Entry<String, Object>> json,
obj.setPacketSize(((Number)member.getValue()).intValue());
}
break;
case "ssl":
if (member.getValue() instanceof Boolean) {
obj.setSsl((Boolean)member.getValue());
}
break;
}
}
}
Expand All @@ -35,5 +40,6 @@ public static void toJson(MSSQLConnectOptions obj, JsonObject json) {

public static void toJson(MSSQLConnectOptions obj, java.util.Map<String, Object> json) {
json.put("packetSize", obj.getPacketSize());
json.put("ssl", obj.isSsl());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
package examples;

import io.vertx.core.Vertx;
import io.vertx.core.net.ClientSSLOptions;
import io.vertx.core.net.PemTrustOptions;
import io.vertx.docgen.Source;
import io.vertx.mssqlclient.MSSQLConnectOptions;
Expand Down Expand Up @@ -307,13 +308,13 @@ public void setSsl() {
public void disableHostnameValidation() {
MSSQLConnectOptions connectOptions = new MSSQLConnectOptions()
.setSsl(true)
.setTrustAll(true);
.setSslOptions(new ClientSSLOptions().setTrustAll(true));
}

public void usingTrustOptions() {
MSSQLConnectOptions connectOptions = new MSSQLConnectOptions()
.setSsl(true)
.setPemTrustOptions(new PemTrustOptions().addCertPath("/path/to/server-cert.pem"));
.setSslOptions(new ClientSSLOptions().setTrustOptions(new PemTrustOptions().addCertPath("/path/to/server-cert.pem")));
}

public void infoHandler(MSSQLConnection connection) {
Expand Down
Loading