From 27f5e1691a06a67c3eb1dbf2d8de6325ab81dede Mon Sep 17 00:00:00 2001 From: Neradoc Date: Sun, 23 Mar 2025 17:19:33 +0100 Subject: [PATCH] enable running on platforms without ssl --- adafruit_httpserver/server.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/adafruit_httpserver/server.py b/adafruit_httpserver/server.py index 8acebc3..3f783e9 100644 --- a/adafruit_httpserver/server.py +++ b/adafruit_httpserver/server.py @@ -12,7 +12,6 @@ except ImportError: pass -from ssl import SSLContext, create_default_context from errno import EAGAIN, ECONNRESET, ETIMEDOUT from sys import implementation from time import monotonic, sleep @@ -34,8 +33,20 @@ from .route import Route from .status import BAD_REQUEST_400, UNAUTHORIZED_401, FORBIDDEN_403, NOT_FOUND_404 -if implementation.name != "circuitpython": - from ssl import Purpose, CERT_NONE, SSLError # pylint: disable=ungrouped-imports +try: + from ssl import SSLContext, create_default_context + + try: # ssl imports for C python + from ssl import ( + Purpose, + CERT_NONE, + SSLError, + ) # pylint: disable=ungrouped-imports + except ImportError: + pass + SSL_AVAILABLE = True +except ImportError: + SSL_AVAILABLE = False NO_REQUEST = "no_request" @@ -129,6 +140,8 @@ def __init__( self.https = https if https: + if not SSL_AVAILABLE: + raise NotImplementedError("SSL not available on this platform") self._validate_https_cert_provided(certfile, keyfile) self._ssl_context = self._create_ssl_context(certfile, keyfile) else: