diff --git a/setup.py b/setup.py index 898eee3..e7e2589 100755 --- a/setup.py +++ b/setup.py @@ -63,7 +63,11 @@ class cffiBuilder(build_ext, object): def build_extension(self, ext): """ Compile manually the wolfssl-py extension, bypass setuptools """ - build_wolfssl(wolfssl.__wolfssl_version__) + + # if USE_LOCAL_WOLFSSL environment variable has been defined, + # do not clone and compile wolfSSL from GitHub + if os.environ.get("USE_LOCAL_WOLFSSL") is None: + build_wolfssl(wolfssl.__wolfssl_version__) super(cffiBuilder, self).build_extension(ext) diff --git a/src/wolfssl/__init__.py b/src/wolfssl/__init__.py index f5e03c6..a05a00f 100644 --- a/src/wolfssl/__init__.py +++ b/src/wolfssl/__init__.py @@ -375,6 +375,7 @@ class SSLSocket(object): self.ciphers = ciphers self.server_hostname = server_hostname + # set SNI if passed in if server_hostname is not None: self._context.use_sni(server_hostname) diff --git a/src/wolfssl/_build_ffi.py b/src/wolfssl/_build_ffi.py index 22ae029..b6af755 100644 --- a/src/wolfssl/_build_ffi.py +++ b/src/wolfssl/_build_ffi.py @@ -25,7 +25,7 @@ from distutils.util import get_platform from cffi import FFI from wolfssl.__about__ import __wolfssl_version__ as version -from wolfssl._build_wolfssl import local_path +from wolfssl._build_wolfssl import wolfssl_inc_path, wolfssl_lib_path ffi = FFI() @@ -35,9 +35,8 @@ ffi.set_source( #include #include """, - include_dirs=[local_path("lib/wolfssl/src")], - library_dirs=[local_path("lib/wolfssl/{}/{}/lib".format( - get_platform(), version))], + include_dirs=[wolfssl_inc_path()], + library_dirs=[wolfssl_lib_path()], libraries=["wolfssl"], ) diff --git a/src/wolfssl/_build_wolfssl.py b/src/wolfssl/_build_wolfssl.py index d13a52b..a3b62cc 100644 --- a/src/wolfssl/_build_wolfssl.py +++ b/src/wolfssl/_build_wolfssl.py @@ -37,6 +37,29 @@ WOLFSSL_GIT_ADDR = "https://github.com/wolfssl/wolfssl.git" WOLFSSL_SRC_PATH = local_path("lib/wolfssl/src") +def wolfssl_inc_path(): + wolfssl_path = os.environ.get("USE_LOCAL_WOLFSSL") + if wolfssl_path is None: + return local_path("lib/wolfssl/src") + else: + if os.path.isdir(wolfssl_path) and os.path.exists(wolfssl_path): + return wolfssl_path + "/include" + else: + return "/usr/local/include" + + +def wolfssl_lib_path(): + wolfssl_path = os.environ.get("USE_LOCAL_WOLFSSL") + if wolfssl_path is None: + return local_path("lib/wolfssl/{}/{}/lib".format( + get_platform(), version)) + else: + if os.path.isdir(wolfssl_path) and os.path.exists(wolfssl_path): + return wolfssl_path + "/lib" + else: + return "/usr/local/lib" + + def call(cmd): print("Calling: '{}' from working directory {}".format(cmd, os.getcwd()))