summaryrefslogtreecommitdiff
path: root/redis/connection.py
diff options
context:
space:
mode:
authorAndy McCurdy <andy@andymccurdy.com>2014-05-12 17:49:52 -0700
committerAndy McCurdy <andy@andymccurdy.com>2014-05-12 17:49:52 -0700
commitde0004b03a04ea2884a06a074a3d382ea8b08a57 (patch)
tree96f8c7c0cbfa0ae9bd444d06ad4d4c5bb2a5df91 /redis/connection.py
parent59b0ce521f93392e79f3a6b316a89015362641d4 (diff)
parent6f760cc5d14915496dc0fd8becb57eb052c396e8 (diff)
downloadredis-py-de0004b03a04ea2884a06a074a3d382ea8b08a57.tar.gz
Merge branch 'pr/446'
Conflicts: redis/client.py redis/connection.py
Diffstat (limited to 'redis/connection.py')
-rwxr-xr-x[-rw-r--r--]redis/connection.py34
1 files changed, 33 insertions, 1 deletions
diff --git a/redis/connection.py b/redis/connection.py
index 2272133..09a40b5 100644..100755
--- a/redis/connection.py
+++ b/redis/connection.py
@@ -8,6 +8,14 @@ import sys
import threading
import warnings
+try:
+ import ssl
+ ssl_available = True
+ ssl_cert_reqs = ssl.CERT_NONE
+except ImportError:
+ ssl_available = False
+ ssl_cert_reqs = 0
+
from redis._compat import (b, xrange, imap, byte_to_chr, unicode, bytes, long,
BytesIO, nativestr, basestring, iteritems,
LifoQueue, Empty, Full, urlparse, parse_qs)
@@ -427,7 +435,7 @@ class Connection(object):
return "Error connecting to %s:%s. %s." % \
(self.host, self.port, exception.args[0])
else:
- return "Error %s connecting %s:%s. %s." % \
+ return "Error %s connecting to %s:%s. %s." % \
(exception.args[0], self.host, self.port, exception.args[1])
def on_connect(self):
@@ -550,6 +558,30 @@ class Connection(object):
return output
+class SSLConnection(Connection):
+ description_format = "SSLConnection<host=%(host)s,port=%(port)s,db=%(db)s>"
+
+ def __init__(self, keyfile=None, certfile=None, cert_reqs=ssl_cert_reqs,
+ ca_certs=None, **kwargs):
+ if not ssl_available:
+ raise RedisError("")
+ super(SSLConnection, self).__init__(**kwargs)
+ self.keyfile = keyfile
+ self.certfile = certfile
+ self.cert_reqs = cert_reqs
+ self.ca_certs = ca_certs
+
+ def _connect(self):
+ "Wrap the socket with SSL support"
+ sock = super(SSLConnection, self)._connect()
+ sock = ssl.wrap_socket(sock,
+ cert_reqs=self.cert_reqs,
+ keyfile=self.keyfile,
+ certfile=self.certfile,
+ ca_certs=self.ca_certs)
+ return sock
+
+
class UnixDomainSocketConnection(Connection):
description_format = "UnixDomainSocketConnection<path=%(path)s,db=%(db)s>"