From 9e57e4d24f5acead46281a769ff3ebf6fd05329d Mon Sep 17 00:00:00 2001 From: Radoslaw Karwowski Date: Wed, 17 Jul 2019 13:50:25 +0200 Subject: [PATCH 1/4] allowed connect to redis-master with ssl from sentinelPool --- .../redis/clients/jedis/JedisFactory.java | 5 ++ .../clients/jedis/JedisSentinelPool.java | 47 ++++++++++++++++--- 2 files changed, 46 insertions(+), 6 deletions(-) diff --git a/src/main/java/redis/clients/jedis/JedisFactory.java b/src/main/java/redis/clients/jedis/JedisFactory.java index 12a32540c5..3333b33461 100644 --- a/src/main/java/redis/clients/jedis/JedisFactory.java +++ b/src/main/java/redis/clients/jedis/JedisFactory.java @@ -35,6 +35,11 @@ class JedisFactory implements PooledObjectFactory { this(host, port, connectionTimeout, soTimeout, password, database, clientName, false, null, null, null); } + JedisFactory(final String host, final int port, final int connectionTimeout, + final int soTimeout, final String password, final int database, final String clientName, final boolean isRedisSslEnabled) { + this(host, port, connectionTimeout, soTimeout, password, database, clientName, + isRedisSslEnabled, null, null, null); + } JedisFactory(final String host, final int port, final int connectionTimeout, final int soTimeout, final String password, final int database, final String clientName, diff --git a/src/main/java/redis/clients/jedis/JedisSentinelPool.java b/src/main/java/redis/clients/jedis/JedisSentinelPool.java index c6fb037dbb..c153b3bced 100644 --- a/src/main/java/redis/clients/jedis/JedisSentinelPool.java +++ b/src/main/java/redis/clients/jedis/JedisSentinelPool.java @@ -19,7 +19,7 @@ public class JedisSentinelPool extends JedisPoolAbstract { protected int connectionTimeout = Protocol.DEFAULT_TIMEOUT; protected int soTimeout = Protocol.DEFAULT_TIMEOUT; - + protected Boolean isRedisSslEnabled; protected String password; protected int database = Protocol.DEFAULT_DATABASE; @@ -41,10 +41,24 @@ public JedisSentinelPool(String masterName, Set sentinels, Protocol.DEFAULT_DATABASE); } + public JedisSentinelPool(String masterName, Set sentinels, + final GenericObjectPoolConfig poolConfig, final Boolean isRedisSslEnabled) { + this(masterName, sentinels, poolConfig, Protocol.DEFAULT_TIMEOUT, null, + Protocol.DEFAULT_DATABASE, isRedisSslEnabled); + } + public JedisSentinelPool(String masterName, Set sentinels) { this(masterName, sentinels, new GenericObjectPoolConfig(), Protocol.DEFAULT_TIMEOUT, null, Protocol.DEFAULT_DATABASE); } + public JedisSentinelPool(String masterName, Set sentinels, final Boolean isRedisSslEnabled) { + this(masterName, sentinels, new GenericObjectPoolConfig(), Protocol.DEFAULT_TIMEOUT, null, + Protocol.DEFAULT_DATABASE, isRedisSslEnabled); + } + + public JedisSentinelPool(String masterName, Set sentinels, String password, final Boolean isRedisSslEnabled) { + this(masterName, sentinels, new GenericObjectPoolConfig(), Protocol.DEFAULT_TIMEOUT, password); + } public JedisSentinelPool(String masterName, Set sentinels, String password) { this(masterName, sentinels, new GenericObjectPoolConfig(), Protocol.DEFAULT_TIMEOUT, password); @@ -68,30 +82,49 @@ public JedisSentinelPool(String masterName, Set sentinels, public JedisSentinelPool(String masterName, Set sentinels, final GenericObjectPoolConfig poolConfig, int timeout, final String password, final int database) { - this(masterName, sentinels, poolConfig, timeout, timeout, password, database); + this(masterName, sentinels, poolConfig, timeout, timeout, password, database, false); + } + + public JedisSentinelPool(String masterName, Set sentinels, + final GenericObjectPoolConfig poolConfig, int timeout, final String password, + final int database, final Boolean isRedisSslEnabled) { + this(masterName, sentinels, poolConfig, timeout, timeout, password, database, isRedisSslEnabled); } public JedisSentinelPool(String masterName, Set sentinels, final GenericObjectPoolConfig poolConfig, int timeout, final String password, final int database, final String clientName) { - this(masterName, sentinels, poolConfig, timeout, timeout, password, database, clientName); + this(masterName, sentinels, poolConfig, timeout, timeout, password, database, clientName, false); + } + + public JedisSentinelPool(String masterName, Set sentinels, + final GenericObjectPoolConfig poolConfig, int timeout, final String password, + final int database, final String clientName, final Boolean isRedisSslEnabled) { + this(masterName, sentinels, poolConfig, timeout, timeout, password, database, clientName, isRedisSslEnabled); + } + + public JedisSentinelPool(String masterName, Set sentinels, + final GenericObjectPoolConfig poolConfig, final int timeout, final int soTimeout, + final String password, final int database) { + this(masterName, sentinels, poolConfig, timeout, soTimeout, password, database, null, false); } public JedisSentinelPool(String masterName, Set sentinels, final GenericObjectPoolConfig poolConfig, final int timeout, final int soTimeout, - final String password, final int database) { - this(masterName, sentinels, poolConfig, timeout, soTimeout, password, database, null); + final String password, final int database, final Boolean isRedisSslEnabled) { + this(masterName, sentinels, poolConfig, timeout, soTimeout, password, database, null, isRedisSslEnabled); } public JedisSentinelPool(String masterName, Set sentinels, final GenericObjectPoolConfig poolConfig, final int connectionTimeout, final int soTimeout, - final String password, final int database, final String clientName) { + final String password, final int database, final String clientName, final Boolean isRedisSslEnabled) { this.poolConfig = poolConfig; this.connectionTimeout = connectionTimeout; this.soTimeout = soTimeout; this.password = password; this.database = database; this.clientName = clientName; + this.isRedisSslEnabled = isRedisSslEnabled; HostAndPort master = initSentinels(sentinels, masterName); initPool(master); @@ -117,6 +150,8 @@ private void initPool(HostAndPort master) { if (factory == null) { factory = new JedisFactory(master.getHost(), master.getPort(), connectionTimeout, soTimeout, password, database, clientName); + factory = new JedisFactory(master.getHost(), master.getPort(), connectionTimeout, + soTimeout, password, database, clientName, isRedisSslEnabled); initPool(poolConfig, factory); } else { factory.setHostAndPort(currentHostMaster); From f232be700ec54a6b4cdf0d258b06b5db1b821c30 Mon Sep 17 00:00:00 2001 From: Radoslaw Karwowski Date: Wed, 17 Jul 2019 16:56:16 +0200 Subject: [PATCH 2/4] fix to last commit --- src/main/java/redis/clients/jedis/JedisSentinelPool.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/redis/clients/jedis/JedisSentinelPool.java b/src/main/java/redis/clients/jedis/JedisSentinelPool.java index c153b3bced..7225ffd7d8 100644 --- a/src/main/java/redis/clients/jedis/JedisSentinelPool.java +++ b/src/main/java/redis/clients/jedis/JedisSentinelPool.java @@ -148,8 +148,6 @@ private void initPool(HostAndPort master) { if (!master.equals(currentHostMaster)) { currentHostMaster = master; if (factory == null) { - factory = new JedisFactory(master.getHost(), master.getPort(), connectionTimeout, - soTimeout, password, database, clientName); factory = new JedisFactory(master.getHost(), master.getPort(), connectionTimeout, soTimeout, password, database, clientName, isRedisSslEnabled); initPool(poolConfig, factory); From aa02bac03a64ff40ac45657016a5ac4246e063e7 Mon Sep 17 00:00:00 2001 From: Radoslaw Karwowski Date: Thu, 18 Jul 2019 08:54:42 +0200 Subject: [PATCH 3/4] added ssl properties to main constructor of JedisSentinelPool --- .../clients/jedis/JedisSentinelPool.java | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/src/main/java/redis/clients/jedis/JedisSentinelPool.java b/src/main/java/redis/clients/jedis/JedisSentinelPool.java index 7225ffd7d8..2d03ca49e1 100644 --- a/src/main/java/redis/clients/jedis/JedisSentinelPool.java +++ b/src/main/java/redis/clients/jedis/JedisSentinelPool.java @@ -13,6 +13,10 @@ import redis.clients.jedis.exceptions.JedisConnectionException; import redis.clients.jedis.exceptions.JedisException; +import javax.net.ssl.HostnameVerifier; +import javax.net.ssl.SSLParameters; +import javax.net.ssl.SSLSocketFactory; + public class JedisSentinelPool extends JedisPoolAbstract { protected GenericObjectPoolConfig poolConfig; @@ -20,6 +24,9 @@ public class JedisSentinelPool extends JedisPoolAbstract { protected int connectionTimeout = Protocol.DEFAULT_TIMEOUT; protected int soTimeout = Protocol.DEFAULT_TIMEOUT; protected Boolean isRedisSslEnabled; + protected SSLSocketFactory sslSocketFactory; + protected SSLParameters sslParameters; + protected HostnameVerifier hostnameVerifier; protected String password; protected int database = Protocol.DEFAULT_DATABASE; @@ -94,30 +101,35 @@ public JedisSentinelPool(String masterName, Set sentinels, public JedisSentinelPool(String masterName, Set sentinels, final GenericObjectPoolConfig poolConfig, int timeout, final String password, final int database, final String clientName) { - this(masterName, sentinels, poolConfig, timeout, timeout, password, database, clientName, false); + this(masterName, sentinels, poolConfig, timeout, timeout, password, database, clientName, false, + null, null, null); } public JedisSentinelPool(String masterName, Set sentinels, final GenericObjectPoolConfig poolConfig, int timeout, final String password, final int database, final String clientName, final Boolean isRedisSslEnabled) { - this(masterName, sentinels, poolConfig, timeout, timeout, password, database, clientName, isRedisSslEnabled); + this(masterName, sentinels, poolConfig, timeout, timeout, password, database, clientName, isRedisSslEnabled, + null, null, null); } public JedisSentinelPool(String masterName, Set sentinels, final GenericObjectPoolConfig poolConfig, final int timeout, final int soTimeout, final String password, final int database) { - this(masterName, sentinels, poolConfig, timeout, soTimeout, password, database, null, false); + this(masterName, sentinels, poolConfig, timeout, soTimeout, password, database, null, false, + null, null, null); } public JedisSentinelPool(String masterName, Set sentinels, final GenericObjectPoolConfig poolConfig, final int timeout, final int soTimeout, final String password, final int database, final Boolean isRedisSslEnabled) { - this(masterName, sentinels, poolConfig, timeout, soTimeout, password, database, null, isRedisSslEnabled); + this(masterName, sentinels, poolConfig, timeout, soTimeout, password, database, null, isRedisSslEnabled, + null, null, null); } public JedisSentinelPool(String masterName, Set sentinels, final GenericObjectPoolConfig poolConfig, final int connectionTimeout, final int soTimeout, - final String password, final int database, final String clientName, final Boolean isRedisSslEnabled) { + final String password, final int database, final String clientName, final Boolean isRedisSslEnabled, + final SSLSocketFactory sslSocketFactory, final SSLParameters sslParameters, final HostnameVerifier hostnameVerifier) { this.poolConfig = poolConfig; this.connectionTimeout = connectionTimeout; this.soTimeout = soTimeout; @@ -125,6 +137,9 @@ public JedisSentinelPool(String masterName, Set sentinels, this.database = database; this.clientName = clientName; this.isRedisSslEnabled = isRedisSslEnabled; + this.sslSocketFactory = sslSocketFactory; + this.sslParameters = sslParameters; + this.hostnameVerifier = hostnameVerifier; HostAndPort master = initSentinels(sentinels, masterName); initPool(master); @@ -149,7 +164,8 @@ private void initPool(HostAndPort master) { currentHostMaster = master; if (factory == null) { factory = new JedisFactory(master.getHost(), master.getPort(), connectionTimeout, - soTimeout, password, database, clientName, isRedisSslEnabled); + soTimeout, password, database, clientName, isRedisSslEnabled, + sslSocketFactory, sslParameters, hostnameVerifier); initPool(poolConfig, factory); } else { factory.setHostAndPort(currentHostMaster); From d658729af2cb4d6ec85eac18a595f17021f7b268 Mon Sep 17 00:00:00 2001 From: Radoslaw Karwowski Date: Thu, 18 Jul 2019 15:41:01 +0200 Subject: [PATCH 4/4] Trigger