From 29900615c81eb9a63407fe87f56f2ec87a37fddd Mon Sep 17 00:00:00 2001 From: mytechnotalent Date: Sat, 24 Aug 2019 13:49:52 -0400 Subject: [PATCH 1/6] Adding to the functionality of the ESP32 library in order to provide a printable echo of a remote IP connection in addition to optional code to control specific IP access to the server as the server can only take one connection at a time. --- adafruit_esp32spi/adafruit_esp32spi.py | 6 +++++ .../adafruit_esp32spi_wsgiserver.py | 24 +++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/adafruit_esp32spi/adafruit_esp32spi.py b/adafruit_esp32spi/adafruit_esp32spi.py index ba01f68..1e331cc 100644 --- a/adafruit_esp32spi/adafruit_esp32spi.py +++ b/adafruit_esp32spi/adafruit_esp32spi.py @@ -82,6 +82,7 @@ _GET_HOST_BY_NAME_CMD = const(0x35) _START_SCAN_NETWORKS = const(0x36) _GET_FW_VERSION_CMD = const(0x37) +_GET_REMOTE_DATA_CMD = const(0x3A) _GET_TIME = const(0x3B) _PING_CMD = const(0x3E) @@ -768,3 +769,8 @@ def get_time(self): resp = self._send_command_get_response(_GET_TIME) return struct.unpack(' Date: Sat, 24 Aug 2019 14:11:22 -0400 Subject: [PATCH 2/6] Removed print echo from library function as requested. Left optional. --- adafruit_esp32spi/adafruit_esp32spi_wsgiserver.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adafruit_esp32spi/adafruit_esp32spi_wsgiserver.py b/adafruit_esp32spi/adafruit_esp32spi_wsgiserver.py index 59b3146..99bde14 100644 --- a/adafruit_esp32spi/adafruit_esp32spi_wsgiserver.py +++ b/adafruit_esp32spi/adafruit_esp32spi_wsgiserver.py @@ -98,7 +98,7 @@ def update_poll(self): """ self.client_available() if (self._client_sock and self._client_sock.available()): - self.print_remote_ip() + # self.print_remote_ip() environ = self._get_environ(self._client_sock) result = self.application(environ, self._start_response) self.finish_response(result) From eb80804d076350f43209072034be38a923200347 Mon Sep 17 00:00:00 2001 From: mytechnotalent Date: Sat, 24 Aug 2019 14:31:58 -0400 Subject: [PATCH 3/6] Fixed linting errors and removed comment from library as requested. --- adafruit_esp32spi/adafruit_esp32spi.py | 5 ++-- .../adafruit_esp32spi_wsgiserver.py | 25 ++++++++++++------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/adafruit_esp32spi/adafruit_esp32spi.py b/adafruit_esp32spi/adafruit_esp32spi.py index 1e331cc..4eedd48 100644 --- a/adafruit_esp32spi/adafruit_esp32spi.py +++ b/adafruit_esp32spi/adafruit_esp32spi.py @@ -772,5 +772,6 @@ def get_time(self): def get_remote_data(self, socket_num): self._socknum_ll[0][0] = socket_num - resp = self._send_command_get_response(_GET_REMOTE_DATA_CMD, self._socknum_ll, reply_params=2) - return resp[0] + resp = self._send_command_get_response(_GET_REMOTE_DATA_CMD, + self._socknum_ll, reply_params=2) + return resp[0] \ No newline at end of file diff --git a/adafruit_esp32spi/adafruit_esp32spi_wsgiserver.py b/adafruit_esp32spi/adafruit_esp32spi_wsgiserver.py index 99bde14..d0ccaf6 100644 --- a/adafruit_esp32spi/adafruit_esp32spi_wsgiserver.py +++ b/adafruit_esp32spi/adafruit_esp32spi_wsgiserver.py @@ -98,7 +98,6 @@ def update_poll(self): """ self.client_available() if (self._client_sock and self._client_sock.available()): - # self.print_remote_ip() environ = self._get_environ(self._client_sock) result = self.application(environ, self._start_response) self.finish_response(result) @@ -106,15 +105,16 @@ def update_poll(self): Optional routine to control what IP connects to your ESP server as it forces a single connection as the server can't handle more than one request at a time. + + self.client_available() + if (self._client_sock and self._client_sock.available()): + result = self.check_remote_ip() + if result == "192.168.4.2": + self.print_remote_ip() + environ = self._get_environ(self._client_sock) + result = self.application(environ, self._start_response) + self.finish_response(result) """ - # self.client_available() - # if (self._client_sock and self._client_sock.available()): - # result = self.check_remote_ip() - # if result == "192.168.4.2": - # self.print_remote_ip() - # environ = self._get_environ(self._client_sock) - # result = self.application(environ, self._start_response) - # self.finish_response(result) def finish_response(self, result): """ @@ -231,11 +231,18 @@ def _get_environ(self, client): return env + """ + Method that allows functionality to control what IP is connecting + to the server. + """ def check_remote_ip(self): sock_num = self._client_sock.socknum remote_ip = _the_interface.get_remote_data(sock_num) return _the_interface.pretty_ip(remote_ip) + """ + Method that prints the remote IP that is connecting to the server. + """ def print_remote_ip(self): sock_num = self._client_sock.socknum remote_ip = _the_interface.get_remote_data(sock_num) From 32fb05f22422f88b3f79e03f0fe38b413951a7d6 Mon Sep 17 00:00:00 2001 From: mytechnotalent Date: Sat, 24 Aug 2019 14:44:52 -0400 Subject: [PATCH 4/6] Fixing linting errors and removing print method from library. --- adafruit_esp32spi/adafruit_esp32spi.py | 6 ++++-- adafruit_esp32spi/adafruit_esp32spi_wsgiserver.py | 12 +----------- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/adafruit_esp32spi/adafruit_esp32spi.py b/adafruit_esp32spi/adafruit_esp32spi.py index 4eedd48..2494127 100644 --- a/adafruit_esp32spi/adafruit_esp32spi.py +++ b/adafruit_esp32spi/adafruit_esp32spi.py @@ -770,8 +770,10 @@ def get_time(self): return struct.unpack(' Date: Sat, 24 Aug 2019 14:55:27 -0400 Subject: [PATCH 5/6] Fixing linting errors. --- adafruit_esp32spi/adafruit_esp32spi.py | 7 ++++--- .../adafruit_esp32spi_wsgiserver.py | 19 ++++++++++--------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/adafruit_esp32spi/adafruit_esp32spi.py b/adafruit_esp32spi/adafruit_esp32spi.py index 2494127..dceb9d9 100644 --- a/adafruit_esp32spi/adafruit_esp32spi.py +++ b/adafruit_esp32spi/adafruit_esp32spi.py @@ -770,10 +770,11 @@ def get_time(self): return struct.unpack(' Date: Sat, 24 Aug 2019 15:01:36 -0400 Subject: [PATCH 6/6] Removing example code per request. --- adafruit_esp32spi/adafruit_esp32spi.py | 2 +- adafruit_esp32spi/adafruit_esp32spi_wsgiserver.py | 13 ------------- 2 files changed, 1 insertion(+), 14 deletions(-) diff --git a/adafruit_esp32spi/adafruit_esp32spi.py b/adafruit_esp32spi/adafruit_esp32spi.py index dceb9d9..7f5586f 100644 --- a/adafruit_esp32spi/adafruit_esp32spi.py +++ b/adafruit_esp32spi/adafruit_esp32spi.py @@ -776,5 +776,5 @@ def get_remote_data(self, socket_num): """ self._socknum_ll[0][0] = socket_num resp = self._send_command_get_response(_GET_REMOTE_DATA_CMD, - self._socknum_ll, reply_params=2) + self._socknum_ll, reply_params=2) return resp[0] diff --git a/adafruit_esp32spi/adafruit_esp32spi_wsgiserver.py b/adafruit_esp32spi/adafruit_esp32spi_wsgiserver.py index 4f7d638..072a5d2 100644 --- a/adafruit_esp32spi/adafruit_esp32spi_wsgiserver.py +++ b/adafruit_esp32spi/adafruit_esp32spi_wsgiserver.py @@ -95,19 +95,6 @@ def update_poll(self): Call this method inside your main event loop to get the server check for new incoming client requests. When a request comes in, the application callable will be invoked. - - Optional routine to control what IP connects to your ESP server - as it forces a single connection as the server can't handle more - than one request at a time. - - self.client_available() - if (self._client_sock and self._client_sock.available()): - result = self.check_remote_ip() - if result == "192.168.4.2": - self.print_remote_ip() - environ = self._get_environ(self._client_sock) - result = self.application(environ, self._start_response) - self.finish_response(result) """ self.client_available() if (self._client_sock and self._client_sock.available()):