Verze 2.9.5 odsud https://github.com/mathieucarbou/ESPAsyncWebServer/releases/tag/v2.9.5
This commit is contained in:
parent
8890e2851c
commit
e2bc8b4dc8
13
README.md
13
README.md
@ -4,9 +4,10 @@
|
|||||||
[![Continuous Integration](https://github.com/mathieucarbou/ESPAsyncWebServer/actions/workflows/ci.yml/badge.svg)](https://github.com/mathieucarbou/ESPAsyncWebServer/actions/workflows/ci.yml)
|
[![Continuous Integration](https://github.com/mathieucarbou/ESPAsyncWebServer/actions/workflows/ci.yml/badge.svg)](https://github.com/mathieucarbou/ESPAsyncWebServer/actions/workflows/ci.yml)
|
||||||
[![PlatformIO Registry](https://badges.registry.platformio.org/packages/mathieucarbou/library/ESP%20Async%20WebServer.svg)](https://registry.platformio.org/libraries/mathieucarbou/ESP%20Async%20WebServer)
|
[![PlatformIO Registry](https://badges.registry.platformio.org/packages/mathieucarbou/library/ESP%20Async%20WebServer.svg)](https://registry.platformio.org/libraries/mathieucarbou/ESP%20Async%20WebServer)
|
||||||
|
|
||||||
Async Web Server for ESP31B
|
Asynchronous HTTP and WebSocket Server Library for ESP32.
|
||||||
|
Supports: WebSocket, SSE, Authentication, Arduino Json 7, File Upload, Static File serving, URL Rewrite, URL Redirect, etc.
|
||||||
|
|
||||||
This fork is based on https://github.com/yubox-node-org/ESPAsyncWebServer and includes all the concurrency fixes.
|
This fork is based on [yubox-node-org/ESPAsyncWebServer](https://github.com/yubox-node-org/ESPAsyncWebServer) and includes all the concurrency fixes.
|
||||||
|
|
||||||
## Changes in this fork
|
## Changes in this fork
|
||||||
|
|
||||||
@ -16,10 +17,14 @@ This fork is based on https://github.com/yubox-node-org/ESPAsyncWebServer and in
|
|||||||
- Some code cleanup
|
- Some code cleanup
|
||||||
- `SSE_MAX_QUEUED_MESSAGES` to control the maximum number of messages that can be queued for a SSE client
|
- `SSE_MAX_QUEUED_MESSAGES` to control the maximum number of messages that can be queued for a SSE client
|
||||||
- `write()` function public in `AsyncEventSource.h`
|
- `write()` function public in `AsyncEventSource.h`
|
||||||
- Arduino Json 7 compatibility and by default, still compatible with 6 (`AsyncJson.h`)
|
- Arduino Json 7 compatibility and backward compatible with 6 and 6 (changes in `AsyncJson.h`). The API to use Json has not changed. These are only internal changes.
|
||||||
- `WS_MAX_QUEUED_MESSAGES`: control the maximum number of messages that can be queued for a Websocket client
|
- `WS_MAX_QUEUED_MESSAGES`: control the maximum number of messages that can be queued for a Websocket client
|
||||||
- Resurrected `AsyncWebSocketMessageBuffer` and `makeBuffer()` in order to make the fork API-compatible with the original library from me-no-dev regarding WebSocket.
|
- Resurrected `AsyncWebSocketMessageBuffer` and `makeBuffer()` in order to make the fork API-compatible with the original library from me-no-dev regarding WebSocket.
|
||||||
- [#5](https://github.com/mathieucarbou/ESPAsyncWebServer/pull/5): set real "Last-Modified" header based on file's LastWrite time ([@vortigont](https://github.com/vortigont))
|
- [#5](https://github.com/mathieucarbou/ESPAsyncWebServer/pull/5) ([@vortigont](https://github.com/vortigont)): set real "Last-Modified" header based on file's LastWrite time
|
||||||
|
- [#13](https://github.com/mathieucarbou/ESPAsyncWebServer/pull/13) ([@tueddy](https://github.com/tueddy)): Compile with Arduino 3 (ESP-IDF 5.1)
|
||||||
|
- [#14](https://github.com/mathieucarbou/ESPAsyncWebServer/pull/14) ([@nilo85](https://github.com/nilo85)): Add support for Auth & GET requests in AsyncCallbackJsonWebHandler
|
||||||
|
- Depends on `mathieucarbou/Async TCP @ ^3.1.2`
|
||||||
|
- Arduino 3 / ESP-IDF 5.1 compatibility
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# bundle exec jekyll serve --host=0.0.0.0
|
# bundle exec jekyll serve --host=0.0.0.0
|
||||||
|
|
||||||
title: Asynchronous HTTP and WebSocket Server Library for ESP32
|
title: ESP Async WebServer
|
||||||
description: "Supports: WebSocket, SSE, Authentication, Arduino Json 7, File Upload, Static File serving, URL Rewrite, URL Redirect, etc"
|
description: "Asynchronous HTTP and WebSocket Server Library for ESP32"
|
||||||
remote_theme: pages-themes/cayman@v0.2.0
|
remote_theme: pages-themes/cayman@v0.2.0
|
||||||
plugins:
|
plugins:
|
||||||
- jekyll-remote-theme
|
- jekyll-remote-theme
|
||||||
|
@ -4,9 +4,10 @@
|
|||||||
[![Continuous Integration](https://github.com/mathieucarbou/ESPAsyncWebServer/actions/workflows/ci.yml/badge.svg)](https://github.com/mathieucarbou/ESPAsyncWebServer/actions/workflows/ci.yml)
|
[![Continuous Integration](https://github.com/mathieucarbou/ESPAsyncWebServer/actions/workflows/ci.yml/badge.svg)](https://github.com/mathieucarbou/ESPAsyncWebServer/actions/workflows/ci.yml)
|
||||||
[![PlatformIO Registry](https://badges.registry.platformio.org/packages/mathieucarbou/library/ESP%20Async%20WebServer.svg)](https://registry.platformio.org/libraries/mathieucarbou/ESP%20Async%20WebServer)
|
[![PlatformIO Registry](https://badges.registry.platformio.org/packages/mathieucarbou/library/ESP%20Async%20WebServer.svg)](https://registry.platformio.org/libraries/mathieucarbou/ESP%20Async%20WebServer)
|
||||||
|
|
||||||
Async Web Server for ESP31B
|
Asynchronous HTTP and WebSocket Server Library for ESP32.
|
||||||
|
Supports: WebSocket, SSE, Authentication, Arduino Json 7, File Upload, Static File serving, URL Rewrite, URL Redirect, etc.
|
||||||
|
|
||||||
This fork is based on https://github.com/yubox-node-org/ESPAsyncWebServer and includes all the concurrency fixes.
|
This fork is based on [yubox-node-org/ESPAsyncWebServer](https://github.com/yubox-node-org/ESPAsyncWebServer) and includes all the concurrency fixes.
|
||||||
|
|
||||||
## Changes in this fork
|
## Changes in this fork
|
||||||
|
|
||||||
@ -16,10 +17,14 @@ This fork is based on https://github.com/yubox-node-org/ESPAsyncWebServer and in
|
|||||||
- Some code cleanup
|
- Some code cleanup
|
||||||
- `SSE_MAX_QUEUED_MESSAGES` to control the maximum number of messages that can be queued for a SSE client
|
- `SSE_MAX_QUEUED_MESSAGES` to control the maximum number of messages that can be queued for a SSE client
|
||||||
- `write()` function public in `AsyncEventSource.h`
|
- `write()` function public in `AsyncEventSource.h`
|
||||||
- Arduino Json 7 compatibility and by default, still compatible with 6 (`AsyncJson.h`)
|
- Arduino Json 7 compatibility and backward compatible with 6 and 6 (changes in `AsyncJson.h`). The API to use Json has not changed. These are only internal changes.
|
||||||
- `WS_MAX_QUEUED_MESSAGES`: control the maximum number of messages that can be queued for a Websocket client
|
- `WS_MAX_QUEUED_MESSAGES`: control the maximum number of messages that can be queued for a Websocket client
|
||||||
- Resurrected `AsyncWebSocketMessageBuffer` and `makeBuffer()` in order to make the fork API-compatible with the original library from me-no-dev regarding WebSocket.
|
- Resurrected `AsyncWebSocketMessageBuffer` and `makeBuffer()` in order to make the fork API-compatible with the original library from me-no-dev regarding WebSocket.
|
||||||
- [#5](https://github.com/mathieucarbou/ESPAsyncWebServer/pull/5): set real "Last-Modified" header based on file's LastWrite time ([@vortigont](https://github.com/vortigont))
|
- [#5](https://github.com/mathieucarbou/ESPAsyncWebServer/pull/5) ([@vortigont](https://github.com/vortigont)): set real "Last-Modified" header based on file's LastWrite time
|
||||||
|
- [#13](https://github.com/mathieucarbou/ESPAsyncWebServer/pull/13) ([@tueddy](https://github.com/tueddy)): Compile with Arduino 3 (ESP-IDF 5.1)
|
||||||
|
- [#14](https://github.com/mathieucarbou/ESPAsyncWebServer/pull/14) ([@nilo85](https://github.com/nilo85)): Add support for Auth & GET requests in AsyncCallbackJsonWebHandler
|
||||||
|
- Depends on `mathieucarbou/Async TCP @ ^3.1.2`
|
||||||
|
- Arduino 3 / ESP-IDF 5.1 compatibility
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
|
|
||||||
|
@ -34,8 +34,15 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
void setup(){
|
void setup(){
|
||||||
//your other setup stuff...
|
Serial.begin(115200);
|
||||||
WiFi.softAP("esp-captive");
|
Serial.println();
|
||||||
|
Serial.println("Configuring access point...");
|
||||||
|
|
||||||
|
if (!WiFi.softAP("esp-captive")) {
|
||||||
|
Serial.println("Soft AP creation failed.");
|
||||||
|
while (1);
|
||||||
|
}
|
||||||
|
|
||||||
dnsServer.start(53, "*", WiFi.softAPIP());
|
dnsServer.start(53, "*", WiFi.softAPIP());
|
||||||
server.addHandler(new CaptiveRequestHandler()).setFilter(ON_AP_FILTER);//only when requested from AP
|
server.addHandler(new CaptiveRequestHandler()).setFilter(ON_AP_FILTER);//only when requested from AP
|
||||||
//more handlers...
|
//more handlers...
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "ESP Async WebServer",
|
"name": "ESP Async WebServer",
|
||||||
"version": "2.7.0",
|
"version": "2.9.5",
|
||||||
"description": "Asynchronous HTTP and WebSocket Server Library for ESP32. Supports: WebSocket, SSE, Authentication, Arduino Json 7, File Upload, Static File serving, URL Rewrite, URL Redirect, etc.",
|
"description": "Asynchronous HTTP and WebSocket Server Library for ESP32. Supports: WebSocket, SSE, Authentication, Arduino Json 7, File Upload, Static File serving, URL Rewrite, URL Redirect, etc.",
|
||||||
"keywords": "http,async,websocket,webserver",
|
"keywords": "http,async,websocket,webserver",
|
||||||
"homepage": "https://github.com/mathieucarbou/ESPAsyncWebServer",
|
"homepage": "https://github.com/mathieucarbou/ESPAsyncWebServer",
|
||||||
@ -20,13 +20,14 @@
|
|||||||
"license": "LGPL-3.0",
|
"license": "LGPL-3.0",
|
||||||
"frameworks": "arduino",
|
"frameworks": "arduino",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"espressif32"
|
"espressif32",
|
||||||
|
"espressif8266"
|
||||||
],
|
],
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
{
|
{
|
||||||
"owner": "esphome",
|
"owner": "mathieucarbou",
|
||||||
"name": "AsyncTCP-esphome",
|
"name": "Async TCP",
|
||||||
"version": "^2.1.1",
|
"version": "^3.1.2",
|
||||||
"platforms": "espressif32"
|
"platforms": "espressif32"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
name=ESP Async WebServer
|
name=ESP Async WebServer
|
||||||
version=2.7.0
|
version=2.9.5
|
||||||
author=Me-No-Dev
|
author=Me-No-Dev
|
||||||
maintainer=Mathieu Carbou <mathieu.carbou@gmail.com>
|
maintainer=Mathieu Carbou <mathieu.carbou@gmail.com>
|
||||||
sentence=Asynchronous HTTP and WebSocket Server Library for ESP32
|
sentence=Asynchronous HTTP and WebSocket Server Library for ESP32
|
||||||
paragraph=Supports: WebSocket, SSE, Authentication, Arduino Json 7, File Upload, Static File serving, URL Rewrite, URL Redirect, etc
|
paragraph=Supports: WebSocket, SSE, Authentication, Arduino Json 7, File Upload, Static File serving, URL Rewrite, URL Redirect, etc
|
||||||
category=Other
|
category=Other
|
||||||
url=https://github.com/mathieucarbou/ESPAsyncWebServer
|
url=https://github.com/mathieucarbou/ESPAsyncWebServer
|
||||||
architectures=esp32
|
architectures=*
|
||||||
license=LGPL-3.0
|
license=LGPL-3.0
|
||||||
|
@ -1,31 +1,46 @@
|
|||||||
[env]
|
[env]
|
||||||
framework = arduino
|
framework = arduino
|
||||||
|
build_flags =
|
||||||
build_flags = -Wall -Wextra
|
-Wall -Wextra
|
||||||
|
-D CONFIG_ARDUHAL_LOG_COLORS
|
||||||
|
-D CORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_DEBUG
|
||||||
|
lib_deps =
|
||||||
|
bblanchon/ArduinoJson @ 7.0.4
|
||||||
|
mathieucarbou/Async TCP @ ^3.1.2
|
||||||
upload_protocol = esptool
|
upload_protocol = esptool
|
||||||
upload_port = /dev/cu.usbserial-0001
|
|
||||||
|
|
||||||
monitor_port = /dev/cu.usbserial-0001
|
|
||||||
monitor_speed = 115200
|
monitor_speed = 115200
|
||||||
monitor_filters = esp32_exception_decoder, log2file
|
monitor_filters = esp32_exception_decoder, log2file
|
||||||
|
|
||||||
[platformio]
|
[platformio]
|
||||||
default_envs = esp8266
|
|
||||||
lib_dir = .
|
lib_dir = .
|
||||||
; src_dir = examples/CaptivePortal
|
src_dir = examples/CaptivePortal
|
||||||
src_dir = examples/SimpleServer
|
; src_dir = examples/SimpleServer
|
||||||
|
|
||||||
[env:esp32]
|
[env:v660]
|
||||||
platform = espressif32
|
platform = espressif32@6.6.0
|
||||||
|
board = esp32dev
|
||||||
|
|
||||||
|
[env:latest-espressif32]
|
||||||
|
platform = https://github.com/platformio/platform-espressif32.git
|
||||||
|
board = esp32dev
|
||||||
|
|
||||||
|
[env:latest-arduino]
|
||||||
|
platform = espressif32
|
||||||
|
platform_packages=
|
||||||
|
platformio/framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#master
|
||||||
|
platformio/framework-arduinoespressif32-libs @ https://github.com/espressif/esp32-arduino-libs.git#idf-release/v5.1
|
||||||
|
board = esp32dev
|
||||||
|
|
||||||
|
[env:v300-rc1]
|
||||||
|
platform = espressif32
|
||||||
|
platform_packages=
|
||||||
|
platformio/framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#3.0.0-rc1
|
||||||
|
platformio/framework-arduinoespressif32-libs @ https://github.com/espressif/esp32-arduino-libs.git#idf-release/v5.1
|
||||||
board = esp32dev
|
board = esp32dev
|
||||||
lib_deps =
|
|
||||||
bblanchon/ArduinoJson @ 7.0.2
|
|
||||||
esphome/AsyncTCP-esphome @ 2.1.1
|
|
||||||
|
|
||||||
[env:esp8266]
|
[env:esp8266]
|
||||||
platform = espressif8266
|
platform = espressif8266
|
||||||
board = huzzah
|
board = huzzah
|
||||||
lib_deps =
|
lib_deps =
|
||||||
bblanchon/ArduinoJson @ 7.0.2
|
bblanchon/ArduinoJson @ 7.0.4
|
||||||
esphome/ESPAsyncTCP-esphome @ 2.0.0
|
esphome/ESPAsyncTCP-esphome @ 2.0.0
|
||||||
|
@ -19,6 +19,9 @@
|
|||||||
*/
|
*/
|
||||||
#include "Arduino.h"
|
#include "Arduino.h"
|
||||||
#include "AsyncEventSource.h"
|
#include "AsyncEventSource.h"
|
||||||
|
#ifndef ESP8266
|
||||||
|
#include <rom/ets_sys.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
static String generateEventMessage(const char *message, const char *event, uint32_t id, uint32_t reconnect){
|
static String generateEventMessage(const char *message, const char *event, uint32_t id, uint32_t reconnect){
|
||||||
String ev;
|
String ev;
|
||||||
|
@ -137,7 +137,11 @@ class AsyncJsonResponse : public AsyncAbstractResponse {
|
|||||||
return _contentLength;
|
return _contentLength;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t getSize() { return _jsonBuffer.size(); }
|
size_t getSize() const { return _jsonBuffer.size(); }
|
||||||
|
|
||||||
|
#if ARDUINOJSON_VERSION_MAJOR >= 6
|
||||||
|
bool overflowed() const { return _jsonBuffer.overflowed(); }
|
||||||
|
#endif
|
||||||
|
|
||||||
size_t _fillBuffer(uint8_t* data, size_t len) {
|
size_t _fillBuffer(uint8_t* data, size_t len) {
|
||||||
ChunkPrint dest(data, _sentLength, len);
|
ChunkPrint dest(data, _sentLength, len);
|
||||||
@ -197,10 +201,10 @@ class AsyncCallbackJsonWebHandler : public AsyncWebHandler {
|
|||||||
public:
|
public:
|
||||||
#if ARDUINOJSON_VERSION_MAJOR == 6
|
#if ARDUINOJSON_VERSION_MAJOR == 6
|
||||||
AsyncCallbackJsonWebHandler(const String& uri, ArJsonRequestHandlerFunction onRequest, size_t maxJsonBufferSize = DYNAMIC_JSON_DOCUMENT_SIZE)
|
AsyncCallbackJsonWebHandler(const String& uri, ArJsonRequestHandlerFunction onRequest, size_t maxJsonBufferSize = DYNAMIC_JSON_DOCUMENT_SIZE)
|
||||||
: _uri(uri), _method(HTTP_POST | HTTP_PUT | HTTP_PATCH), _onRequest(onRequest), maxJsonBufferSize(maxJsonBufferSize), _maxContentLength(16384) {}
|
: _uri(uri), _method(HTTP_GET | HTTP_POST | HTTP_PUT | HTTP_PATCH), _onRequest(onRequest), maxJsonBufferSize(maxJsonBufferSize), _maxContentLength(16384) {}
|
||||||
#else
|
#else
|
||||||
AsyncCallbackJsonWebHandler(const String& uri, ArJsonRequestHandlerFunction onRequest)
|
AsyncCallbackJsonWebHandler(const String& uri, ArJsonRequestHandlerFunction onRequest)
|
||||||
: _uri(uri), _method(HTTP_POST | HTTP_PUT | HTTP_PATCH), _onRequest(onRequest), _maxContentLength(16384) {}
|
: _uri(uri), _method(HTTP_GET | HTTP_POST | HTTP_PUT | HTTP_PATCH), _onRequest(onRequest), _maxContentLength(16384) {}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void setMethod(WebRequestMethodComposite method) { _method = method; }
|
void setMethod(WebRequestMethodComposite method) { _method = method; }
|
||||||
@ -211,13 +215,14 @@ class AsyncCallbackJsonWebHandler : public AsyncWebHandler {
|
|||||||
if (!_onRequest)
|
if (!_onRequest)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (!(_method & request->method()))
|
WebRequestMethodComposite request_method = request->method();
|
||||||
|
if (!(_method & request_method))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (_uri.length() && (_uri != request->url() && !request->url().startsWith(_uri + "/")))
|
if (_uri.length() && (_uri != request->url() && !request->url().startsWith(_uri + "/")))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (!request->contentType().equalsIgnoreCase(JSON_MIMETYPE))
|
if (request_method != HTTP_GET && !request->contentType().equalsIgnoreCase(JSON_MIMETYPE))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
request->addInterestingHeader("ANY");
|
request->addInterestingHeader("ANY");
|
||||||
@ -225,8 +230,14 @@ class AsyncCallbackJsonWebHandler : public AsyncWebHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
virtual void handleRequest(AsyncWebServerRequest* request) override final {
|
virtual void handleRequest(AsyncWebServerRequest* request) override final {
|
||||||
|
if((_username != "" && _password != "") && !request->authenticate(_username.c_str(), _password.c_str()))
|
||||||
|
return request->requestAuthentication();
|
||||||
if (_onRequest) {
|
if (_onRequest) {
|
||||||
if (request->_tempObject != NULL) {
|
if (request->method() == HTTP_GET) {
|
||||||
|
JsonVariant json;
|
||||||
|
_onRequest(request, json);
|
||||||
|
return;
|
||||||
|
} else if (request->_tempObject != NULL) {
|
||||||
|
|
||||||
#if ARDUINOJSON_VERSION_MAJOR == 5
|
#if ARDUINOJSON_VERSION_MAJOR == 5
|
||||||
DynamicJsonBuffer jsonBuffer;
|
DynamicJsonBuffer jsonBuffer;
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
|
|
||||||
#ifndef ESP8266
|
#ifndef ESP8266
|
||||||
#include "mbedtls/sha1.h"
|
#include "mbedtls/sha1.h"
|
||||||
|
#include <rom/ets_sys.h>
|
||||||
#else
|
#else
|
||||||
#include <Hash.h>
|
#include <Hash.h>
|
||||||
#endif
|
#endif
|
||||||
@ -212,8 +213,6 @@ public:
|
|||||||
uint8_t opcode(){ return _opcode; }
|
uint8_t opcode(){ return _opcode; }
|
||||||
uint8_t len(){ return _len + 2; }
|
uint8_t len(){ return _len + 2; }
|
||||||
size_t send(AsyncClient *client){
|
size_t send(AsyncClient *client){
|
||||||
if (_finished)
|
|
||||||
return 0; // fix from https://github.com/me-no-dev/ESPAsyncWebServer/pull/1390/files
|
|
||||||
_finished = true;
|
_finished = true;
|
||||||
return webSocketSendFrame(client, true, _opcode & 0x0F, _mask, _data, _len);
|
return webSocketSendFrame(client, true, _opcode & 0x0F, _mask, _data, _len);
|
||||||
}
|
}
|
||||||
@ -1274,9 +1273,15 @@ AsyncWebSocketResponse::AsyncWebSocketResponse(const String& key, AsyncWebSocket
|
|||||||
(String&)key += WS_STR_UUID;
|
(String&)key += WS_STR_UUID;
|
||||||
mbedtls_sha1_context ctx;
|
mbedtls_sha1_context ctx;
|
||||||
mbedtls_sha1_init(&ctx);
|
mbedtls_sha1_init(&ctx);
|
||||||
|
#if ESP_IDF_VERSION_MAJOR == 5
|
||||||
|
mbedtls_sha1_starts(&ctx);
|
||||||
|
mbedtls_sha1_update(&ctx, (const unsigned char*)key.c_str(), key.length());
|
||||||
|
mbedtls_sha1_finish(&ctx, hash);
|
||||||
|
#else
|
||||||
mbedtls_sha1_starts_ret(&ctx);
|
mbedtls_sha1_starts_ret(&ctx);
|
||||||
mbedtls_sha1_update_ret(&ctx, (const unsigned char*)key.c_str(), key.length());
|
mbedtls_sha1_update_ret(&ctx, (const unsigned char*)key.c_str(), key.length());
|
||||||
mbedtls_sha1_finish_ret(&ctx, hash);
|
mbedtls_sha1_finish_ret(&ctx, hash);
|
||||||
|
#endif
|
||||||
mbedtls_sha1_free(&ctx);
|
mbedtls_sha1_free(&ctx);
|
||||||
#endif
|
#endif
|
||||||
base64_encodestate _state;
|
base64_encodestate _state;
|
||||||
|
@ -40,10 +40,10 @@
|
|||||||
#error Platform not supported
|
#error Platform not supported
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define ASYNCWEBSERVER_VERSION "2.7.0"
|
#define ASYNCWEBSERVER_VERSION "2.9.5"
|
||||||
#define ASYNCWEBSERVER_VERSION_MAJOR 2
|
#define ASYNCWEBSERVER_VERSION_MAJOR 2
|
||||||
#define ASYNCWEBSERVER_VERSION_MINOR 7
|
#define ASYNCWEBSERVER_VERSION_MINOR 9
|
||||||
#define ASYNCWEBSERVER_VERSION_REVISION 0
|
#define ASYNCWEBSERVER_VERSION_REVISION 5
|
||||||
#define ASYNCWEBSERVER_FORK_mathieucarbou
|
#define ASYNCWEBSERVER_FORK_mathieucarbou
|
||||||
|
|
||||||
#ifdef ASYNCWEBSERVER_REGEX
|
#ifdef ASYNCWEBSERVER_REGEX
|
||||||
|
@ -77,9 +77,15 @@ static bool getMD5(uint8_t * data, uint16_t len, char * output){//33 bytes or mo
|
|||||||
memset(_buf, 0x00, 16);
|
memset(_buf, 0x00, 16);
|
||||||
#ifdef ESP32
|
#ifdef ESP32
|
||||||
mbedtls_md5_init(&_ctx);
|
mbedtls_md5_init(&_ctx);
|
||||||
|
#if ESP_IDF_VERSION_MAJOR == 5
|
||||||
|
mbedtls_md5_starts(&_ctx);
|
||||||
|
mbedtls_md5_update(&_ctx, data, len);
|
||||||
|
mbedtls_md5_finish(&_ctx, _buf);
|
||||||
|
#else
|
||||||
mbedtls_md5_starts_ret(&_ctx);
|
mbedtls_md5_starts_ret(&_ctx);
|
||||||
mbedtls_md5_update_ret(&_ctx, data, len);
|
mbedtls_md5_update_ret(&_ctx, data, len);
|
||||||
mbedtls_md5_finish_ret(&_ctx, _buf);
|
mbedtls_md5_finish_ret(&_ctx, _buf);
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
MD5Init(&_ctx);
|
MD5Init(&_ctx);
|
||||||
MD5Update(&_ctx, data, len);
|
MD5Update(&_ctx, data, len);
|
||||||
|
@ -539,7 +539,7 @@ AsyncFileResponse::AsyncFileResponse(FS &fs, const String& path, const String& c
|
|||||||
snprintf_P(buf, sizeof (buf), PSTR("attachment; filename=\"%s\""), filename);
|
snprintf_P(buf, sizeof (buf), PSTR("attachment; filename=\"%s\""), filename);
|
||||||
} else {
|
} else {
|
||||||
// set filename and force rendering
|
// set filename and force rendering
|
||||||
snprintf_P(buf, sizeof (buf), PSTR("inline; filename=\"%s\""), filename);
|
snprintf_P(buf, sizeof (buf), PSTR("inline"));
|
||||||
}
|
}
|
||||||
addHeader(F("Content-Disposition"), buf);
|
addHeader(F("Content-Disposition"), buf);
|
||||||
}
|
}
|
||||||
@ -570,7 +570,7 @@ AsyncFileResponse::AsyncFileResponse(File content, const String& path, const Str
|
|||||||
if(download) {
|
if(download) {
|
||||||
snprintf_P(buf, sizeof (buf), PSTR("attachment; filename=\"%s\""), filename);
|
snprintf_P(buf, sizeof (buf), PSTR("attachment; filename=\"%s\""), filename);
|
||||||
} else {
|
} else {
|
||||||
snprintf_P(buf, sizeof (buf), PSTR("inline; filename=\"%s\""), filename);
|
snprintf_P(buf, sizeof (buf), PSTR("inline"));
|
||||||
}
|
}
|
||||||
addHeader(F("Content-Disposition"), buf);
|
addHeader(F("Content-Disposition"), buf);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user