Skip to content

Commit de7d284

Browse files
committed
added the ablity to pass ssl options to client classes. #446
1 parent 09e5819 commit de7d284

File tree

2 files changed

+20
-6
lines changed

2 files changed

+20
-6
lines changed

redis/client.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
import time as mod_time
88
from redis._compat import (b, basestring, bytes, imap, iteritems, iterkeys,
99
itervalues, izip, long, nativestr, unicode)
10-
from redis.connection import ConnectionPool, UnixDomainSocketConnection, Token
10+
from redis.connection import (ConnectionPool, UnixDomainSocketConnection,
11+
SSLConnection, Token)
1112
from redis.exceptions import (
1213
ConnectionError,
1314
DataError,
@@ -389,7 +390,9 @@ def __init__(self, host='localhost', port=6379,
389390
db=0, password=None, socket_timeout=None,
390391
connection_pool=None, charset='utf-8',
391392
errors='strict', decode_responses=False,
392-
unix_socket_path=None):
393+
unix_socket_path=None,
394+
ssl=False, ssl_keyfile=None, ssl_certfile=None,
395+
ssl_cert_reqs=None, ssl_ca_certs=None):
393396
if not connection_pool:
394397
kwargs = {
395398
'db': db,
@@ -410,6 +413,15 @@ def __init__(self, host='localhost', port=6379,
410413
'host': host,
411414
'port': port
412415
})
416+
417+
if ssl:
418+
kwargs.update({
419+
'connection_class': SSLConnection,
420+
'keyfile': ssl_keyfile,
421+
'certfile': ssl_certfile,
422+
'cert_reqs': ssl_cert_reqs,
423+
'ca_certs': ssl_ca_certs,
424+
})
413425
connection_pool = ConnectionPool(**kwargs)
414426
self.connection_pool = connection_pool
415427

redis/connection.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,8 @@
1111
try:
1212
import ssl
1313
ssl_available = True
14-
ssl_cert_reqs = ssl.CERT_NONE
1514
except ImportError:
1615
ssl_available = False
17-
ssl_cert_reqs = 0
1816

1917
from redis._compat import (b, xrange, imap, byte_to_chr, unicode, bytes, long,
2018
BytesIO, nativestr, basestring, iteritems,
@@ -561,13 +559,17 @@ def pack_command(self, *args):
561559
class SSLConnection(Connection):
562560
description_format = "SSLConnection<host=%(host)s,port=%(port)s,db=%(db)s>"
563561

564-
def __init__(self, keyfile=None, certfile=None, cert_reqs=ssl_cert_reqs,
562+
def __init__(self, keyfile=None, certfile=None, cert_reqs=None,
565563
ca_certs=None, **kwargs):
566564
if not ssl_available:
567-
raise RedisError("")
565+
raise RedisError("Python wasn't built with SSL support")
566+
568567
super(SSLConnection, self).__init__(**kwargs)
568+
569569
self.keyfile = keyfile
570570
self.certfile = certfile
571+
if cert_reqs is None:
572+
cert_reqs = ssl.CERT_NONE
571573
self.cert_reqs = cert_reqs
572574
self.ca_certs = ca_certs
573575

0 commit comments

Comments
 (0)