if content_type:
headers['Content-Type'] = content_type
- return HTTPRequest(url, method, body=data, connect_timeout=timeout, request_timeout=timeout, headers=headers)
+ return HTTPRequest(url, method, body=data, connect_timeout=timeout, request_timeout=timeout, headers=headers,
+ validate_cert=settings.VALIDATE_CERTS)
def _callback_wrapper(callback):
# enable adding and removing cameras from UI
ADD_REMOVE_CAMERAS = True
+
+# enable HTTPS certificate validation
+VALIDATE_CERTS = True
import urllib2
import settings
+import utils
_STATE_FILE_NAME = 'uploadservices.json'
self.debug('requesting %s' % url)
request = urllib2.Request(url, data=body, headers=headers)
try:
- response = urllib2.urlopen(request)
+ response = utils.urlopen(request)
except urllib2.HTTPError as e:
if e.code == 401 and retry_auth: # unauthorized, access token may have expired
request = urllib2.Request(self.TOKEN_URL, data=body, headers=headers)
try:
- response = urllib2.urlopen(request)
+ response = utils.urlopen(request)
except urllib2.HTTPError as e:
error = json.load(e)
request = urllib2.Request(self.TOKEN_URL, data=body, headers=headers)
try:
- response = urllib2.urlopen(request)
+ response = utils.urlopen(request)
except urllib2.HTTPError as e:
error = json.load(e)
self.debug('requesting %s' % url)
request = urllib2.Request(url, data=body, headers=headers)
try:
- response = urllib2.urlopen(request)
+ response = utils.urlopen(request)
except urllib2.HTTPError as e:
if e.code == 401 and retry_auth: # unauthorized, access token may have expired
request = urllib2.Request(self.TOKEN_URL, data=body, headers=headers)
try:
- response = urllib2.urlopen(request)
+ response = utils.urlopen(request)
except urllib2.HTTPError as e:
error = json.load(e)
import os
import re
import socket
+import sys
import time
import urllib
+import urllib2
import urlparse
from tornado.httpclient import AsyncHTTPClient, HTTPRequest
request = HTTPRequest(url, auth_username=username, auth_password=password, auth_mode=auth_modes.pop(0),
connect_timeout=settings.REMOTE_REQUEST_TIMEOUT, request_timeout=settings.REMOTE_REQUEST_TIMEOUT,
- header_callback=on_header)
+ header_callback=on_header, validate_cert=settings.VALIDATE_CERTS)
- http_client = AsyncHTTPClient(force_instance=True)
+ http_client = AsyncHTTPClient(force_instance=True)
http_client.fetch(request, on_response)
def on_header(header):
state['nonce_count'] = nonce_count
return 'Digest %s' % (base)
+
+
+def urlopen(*args, **kwargs):
+ if sys.version_info >= (2, 7, 9) and not settings.VALIDATE_CERTS:
+ # ssl certs are not verified by default
+ # in versions prior to 2.7.9
+
+ import ssl
+
+ ctx = ssl.create_default_context()
+ ctx.check_hostname = False
+ ctx.verify_mode = ssl.CERT_NONE
+
+ kwargs.setdefault('context', ctx)
+
+ return urllib2.urlopen(*args, **kwargs)
def main(parser, args):
import meyectl
+ import utils
options = parse_options(parser, args)
request = urllib2.Request(url, data, headers=headers)
try:
- urllib2.urlopen(request, timeout=settings.REMOTE_REQUEST_TIMEOUT)
+ utils.urlopen(request, timeout=settings.REMOTE_REQUEST_TIMEOUT)
logging.debug('webhook successfully called')
-
+
except Exception as e:
logging.error('failed to call webhook: %s' % e)