diff --git a/src/octoprint/__init__.py b/src/octoprint/__init__.py index fb98ca0d..1ccdc835 100644 --- a/src/octoprint/__init__.py +++ b/src/octoprint/__init__.py @@ -21,6 +21,36 @@ del get_versions logging.basicConfig() +#~~ try to ensure a sound SSL environment + +version_info = sys.version_info +if version_info.major == 2 and version_info.minor <= 7 and version_info.micro < 9: + message = "Cannot configure PyOpenSSL for {} to ensure a secure " + \ + "SSL environment, update to Python >= 2.7.9 or install PyOpenSSL, see " + \ + "https://urllib3.readthedocs.org/en/latest/security.html#openssl-pyopenssl" + + try: + # make sure our requests version of urllib3 is properly patched (if possible) + import requests.packages.urllib3.contrib.pyopenssl + requests.packages.urllib3.contrib.pyopenssl.inject_into_urllib3() + except ImportError: + logging.getLogger(__name__).warn(message.format("requests/urllib3")) + + try: + import urllib3 + + # only proceed if urllib3 is even installed on its own + try: + # urllib3 is there, let's patch that too + import urllib3.contrib.pyopenssl + urllib3.contrib.pyopenssl.inject_into_urllib3() + except ImportError: + logging.getLogger(__name__).warn(message.format("urllib3")) + except ImportError: + pass + +del version_info + #~~ init methods to bring up platform def init_platform(basedir, configfile, use_logging_file=True, logging_file=None,