From 95dadb6c0fd4aa4e69cd687f64564708d3312b20 Mon Sep 17 00:00:00 2001 From: blindguyinanorgy Date: Wed, 21 May 2014 16:26:28 -0400 Subject: [PATCH 1/3] Update nest.py --- nest.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/nest.py b/nest.py index 7fcf863..8f982ff 100755 --- a/nest.py +++ b/nest.py @@ -20,6 +20,8 @@ import urllib import urllib2 import sys +import ssl +import httplib, socket from optparse import OptionParser try: @@ -32,6 +34,28 @@ print "or simpejson." sys.exit(-1) +#force connection to be TLSv1 +class HTTPSConnectionV1(httplib.HTTPSConnection): + def __init__(self, *args, **kwargs): + httplib.HTTPSConnection.__init__(self, *args, **kwargs) + + def connect(self): + sock = socket.create_connection((self.host, self.port), self.timeout) + if self._tunnel_host: + self.sock = sock + self._tunnel() + try: + self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file, ssl_version=ssl.PROTOCOL_TLSv1) + except ssl.SSLError, e: + print("Trying SSLv3.") + self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file, ssl_version=ssl.PROTOCOL_TLSv1) + +class HTTPSHandlerV1(urllib2.HTTPSHandler): + def https_open(self, req): + return self.do_open(HTTPSConnectionV1, req) +# install opener +urllib2.install_opener(urllib2.build_opener(HTTPSHandlerV1())) + class Nest: def __init__(self, username, password, serial=None, index=0, units="F"): self.username = username From d4d0029f9701b163a0df0baddc33b34b60bce5d6 Mon Sep 17 00:00:00 2001 From: blindguyinanorgy Date: Wed, 21 May 2014 16:35:20 -0400 Subject: [PATCH 2/3] Update nest.py erase confusing print --- nest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nest.py b/nest.py index 8f982ff..357f130 100755 --- a/nest.py +++ b/nest.py @@ -47,7 +47,7 @@ def connect(self): try: self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file, ssl_version=ssl.PROTOCOL_TLSv1) except ssl.SSLError, e: - print("Trying SSLv3.") + self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file, ssl_version=ssl.PROTOCOL_TLSv1) class HTTPSHandlerV1(urllib2.HTTPSHandler): From 64a5eeaaff0a309a1c73bb4ca9f9602c50e7245d Mon Sep 17 00:00:00 2001 From: blindguyinanorgy Date: Wed, 21 May 2014 16:44:01 -0400 Subject: [PATCH 3/3] Update nest.py eliminated some code to work in 2.6 --- nest.py | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/nest.py b/nest.py index 357f130..a0c5b9b 100755 --- a/nest.py +++ b/nest.py @@ -41,15 +41,8 @@ def __init__(self, *args, **kwargs): def connect(self): sock = socket.create_connection((self.host, self.port), self.timeout) - if self._tunnel_host: - self.sock = sock - self._tunnel() - try: - self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file, ssl_version=ssl.PROTOCOL_TLSv1) - except ssl.SSLError, e: - - self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file, ssl_version=ssl.PROTOCOL_TLSv1) - + self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file, ssl_version=ssl.PROTOCOL_TLSv1) + class HTTPSHandlerV1(urllib2.HTTPSHandler): def https_open(self, req): return self.do_open(HTTPSConnectionV1, req)