Skip to content

Commit 7f4124f

Browse files
Dilli-Babu-Godarilukmanulhakkeem
authored andcommitted
Added ssl configs for oracle
SSL enablement of Oracle Connector with Oracle THIN JDBC driver Co-authored-by: lukmanulhakkeem <lukmanul.hakkeem.a@ibm.com>
1 parent aa95bdd commit 7f4124f

3 files changed

Lines changed: 68 additions & 3 deletions

File tree

presto-oracle/src/main/java/com/facebook/presto/plugin/oracle/OracleClientModule.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import java.util.Properties;
3131

3232
import static com.facebook.airlift.configuration.ConfigBinder.configBinder;
33+
import static java.util.Objects.requireNonNull;
3334

3435
public class OracleClientModule
3536
implements Module
@@ -49,8 +50,22 @@ public static ConnectionFactory connectionFactory(BaseJdbcConfig config, OracleC
4950
throws SQLException
5051
{
5152
Properties connectionProperties = new Properties();
52-
connectionProperties.setProperty(OracleConnection.CONNECTION_PROPERTY_INCLUDE_SYNONYMS, String.valueOf(oracleConfig.isSynonymsEnabled()));
5353

54+
requireNonNull(oracleConfig, "oracle config is null");
55+
requireNonNull(config, "BaseJdbc config is null");
56+
if (config.getConnectionUser() != null && config.getConnectionPassword() != null) {
57+
connectionProperties.setProperty("user", config.getConnectionUser());
58+
connectionProperties.setProperty("password", config.getConnectionPassword());
59+
}
60+
if (oracleConfig.isTlsEnabled()) {
61+
if (oracleConfig.getTrustStorePath() != null) {
62+
connectionProperties.setProperty("javax.net.ssl.trustStore", oracleConfig.getTrustStorePath());
63+
}
64+
if (oracleConfig.getTruststorePassword() != null) {
65+
connectionProperties.setProperty("javax.net.ssl.trustStorePassword", oracleConfig.getTruststorePassword());
66+
}
67+
}
68+
connectionProperties.setProperty(OracleConnection.CONNECTION_PROPERTY_INCLUDE_SYNONYMS, String.valueOf(oracleConfig.isSynonymsEnabled()));
5469
return new DriverConnectionFactory(
5570
new OracleDriver(),
5671
config.getConnectionUrl(),

presto-oracle/src/main/java/com/facebook/presto/plugin/oracle/OracleConfig.java

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
package com.facebook.presto.plugin.oracle;
1515

1616
import com.facebook.airlift.configuration.Config;
17+
import com.facebook.airlift.configuration.ConfigSecuritySensitive;
1718
import jakarta.validation.constraints.Max;
1819
import jakarta.validation.constraints.Min;
1920
import jakarta.validation.constraints.NotNull;
@@ -27,6 +28,9 @@ public class OracleConfig
2728
private int timestampDefaultPrecision = 6;
2829
private int numberDefaultScale = 10;
2930
private RoundingMode numberRoundingMode = RoundingMode.HALF_UP;
31+
private boolean tlsEnabled;
32+
private String trustStorePath;
33+
private String truststorePassword;
3034

3135
@NotNull
3236
public boolean isSynonymsEnabled()
@@ -94,4 +98,41 @@ public OracleConfig setTimestampDefaultPrecision(int timestampDefaultPrecision)
9498
this.timestampDefaultPrecision = timestampDefaultPrecision;
9599
return this;
96100
}
101+
102+
public boolean isTlsEnabled()
103+
{
104+
return tlsEnabled;
105+
}
106+
107+
@Config("oracle.tls.enabled")
108+
public OracleConfig setTlsEnabled(boolean tlsEnabled)
109+
{
110+
this.tlsEnabled = tlsEnabled;
111+
return this;
112+
}
113+
114+
public String getTrustStorePath()
115+
{
116+
return trustStorePath;
117+
}
118+
119+
@Config("oracle.tls.truststore-path")
120+
public OracleConfig setTrustStorePath(String path)
121+
{
122+
this.trustStorePath = path;
123+
return this;
124+
}
125+
126+
public String getTruststorePassword()
127+
{
128+
return truststorePassword;
129+
}
130+
131+
@Config("oracle.tls.truststore-password")
132+
@ConfigSecuritySensitive
133+
public OracleConfig setTruststorePassword(String password)
134+
{
135+
this.truststorePassword = password;
136+
return this;
137+
}
97138
}

presto-oracle/src/test/java/com/facebook/presto/plugin/oracle/TestOracleConfig.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,10 @@ public void testDefaults()
3333
.setVarcharMaxSize(4000)
3434
.setTimestampDefaultPrecision(6)
3535
.setNumberDefaultScale(10)
36-
.setNumberRoundingMode(RoundingMode.HALF_UP));
36+
.setNumberRoundingMode(RoundingMode.HALF_UP)
37+
.setTlsEnabled(false)
38+
.setTrustStorePath(null)
39+
.setTruststorePassword(null));
3740
}
3841

3942
@Test
@@ -45,14 +48,20 @@ public void testExplicitPropertyMappings()
4548
.put("oracle.timestamp.precision", "3")
4649
.put("oracle.number.default-scale", "2")
4750
.put("oracle.number.rounding-mode", "CEILING")
51+
.put("oracle.tls.enabled", "true")
52+
.put("oracle.tls.truststore-path", "/my/path/to/truststore.jks")
53+
.put("oracle.tls.truststore-password", "changeit")
4854
.build();
4955

5056
OracleConfig expected = new OracleConfig()
5157
.setSynonymsEnabled(true)
5258
.setVarcharMaxSize(10000)
5359
.setTimestampDefaultPrecision(3)
5460
.setNumberDefaultScale(2)
55-
.setNumberRoundingMode(RoundingMode.CEILING);
61+
.setNumberRoundingMode(RoundingMode.CEILING)
62+
.setTlsEnabled(true)
63+
.setTrustStorePath("/my/path/to/truststore.jks")
64+
.setTruststorePassword("changeit");
5665

5766
assertFullMapping(properties, expected);
5867
}

0 commit comments

Comments
 (0)