From 128c0700b8547ab157dd676ea8fbc05d204ed117 Mon Sep 17 00:00:00 2001 From: Mathieu Carbou Date: Thu, 30 May 2024 22:55:36 +0200 Subject: [PATCH 1/7] Fix CI --- .github/workflows/ci.yml | 164 +++++++++++++-------- .gitignore | 3 +- examples/AsyncDemo/.picow_rp2040.test.skip | 0 library.json | 8 + platformio.ini | 40 +++++ 5 files changed, 155 insertions(+), 60 deletions(-) delete mode 100644 examples/AsyncDemo/.picow_rp2040.test.skip create mode 100644 platformio.ini diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 85d6685..271f131 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,85 +1,131 @@ name: Arduino Library CI -on: +on: push: paths-ignore: - - '**/**.md' - - '/keywords.txt' - - '/library.json' - - '/library.properties' - - '/ui' - - '/docs' + - "**/**.md" + - "/keywords.txt" + - "/library.json" + - "/library.properties" + - "/vue-frontend" + - "/docs" pull_request: paths-ignore: - - '**/**.md' - - '/keywords.txt' - - '/library.json' - - '/library.properties' - - '/ui' - - '/docs' + - "**/**.md" + - "/keywords.txt" + - "/library.json" + - "/library.properties" + - "/vue-frontend" + - "/docs" jobs: - Async_CI: + arduino: + name: arduino ${{ matrix.name }} runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + include: + - name: package_esp32_index.json + core: esp32:esp32 + board: esp32:esp32:esp32 + index_url: https://espressif.github.io/arduino-esp32/package_esp32_index.json + - name: package_esp32_dev_index.json + core: esp32:esp32 + board: esp32:esp32:esp32 + index_url: https://espressif.github.io/arduino-esp32/package_esp32_dev_index.json + - name: package_esp8266com_index.json + core: esp8266:esp8266 + board: esp8266:esp8266:huzzah + index_url: https://arduino.esp8266.com/stable/package_esp8266com_index.json + steps: - - uses: actions/setup-python@v1 - with: - python-version: '3.x' - - - uses: actions/checkout@v2 + - name: Checkout + uses: actions/checkout@v4 - - uses: actions/checkout@v2 + - name: Arduino Lint + uses: arduino/arduino-lint-action@v1 with: - repository: ayushsharma82/ci-arduino - path: ci + library-manager: update - - name: pre-install - run: bash ci/actions_install.sh + - name: Install arduino-cli + run: curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | BINDIR=/usr/local/bin sh - - name: Set configuration - run: arduino-cli config set library.enable_unsafe_install true + - name: Update core index + run: arduino-cli core update-index --additional-urls "${{ matrix.index_url }}" - - name: Install test dependencies - run: arduino-cli lib install --git-url https://github.com/me-no-dev/ESPAsyncWebServer --git-url https://github.com/me-no-dev/ESPAsyncTCP --git-url https://github.com/me-no-dev/AsyncTCP - - - name: Skip SyncDemo Example - run: | - cd examples - cd Demo - touch .esp32.test.skip - touch .esp8266.test.skip + - name: Install core + run: arduino-cli core install --additional-urls "${{ matrix.index_url }}" ${{ matrix.core }} + + - name: Install AsyncTCP + run: ARDUINO_LIBRARY_ENABLE_UNSAFE_INSTALL=true arduino-cli lib install --git-url https://github.com/mathieucarbou/AsyncTCP#v3.1.4 + + - name: Install ESPAsyncTCP + run: ARDUINO_LIBRARY_ENABLE_UNSAFE_INSTALL=true arduino-cli lib install --git-url https://github.com/mathieucarbou/esphome-ESPAsyncTCP#v2.0.0 + + - name: Install ESPAsyncWebServer + run: ARDUINO_LIBRARY_ENABLE_UNSAFE_INSTALL=true arduino-cli lib install --git-url https://github.com/mathieucarbou/ESPAsyncWebServer#v2.10.1 + + - name: Build Demo + run: arduino-cli compile --library . --warnings none -b ${{ matrix.board }} "examples/Demo/Demo.ino" - name: Configure ElegantOTA to Async Mode run: | cd src sed -i 's/ELEGANTOTA_USE_ASYNC_WEBSERVER 0/ELEGANTOTA_USE_ASYNC_WEBSERVER 1/' ElegantOTA.h - - - name: Test Async Demo - run: python3 ci/build_platform.py esp8266 esp32 - Sync_CI: + - name: Build AsyncDemo + run: arduino-cli compile --library . --warnings none -b ${{ matrix.board }} "examples/AsyncDemo/AsyncDemo.ino" + + platformio: + name: pio ${{ matrix.name }} runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + include: + - name: esp32dev|arduino + board: esp32dev + platform: espressif32 + opts: + - name: esp32dev|arduino-2 + board: esp32dev + platform: espressif32@6.7.0 + opts: + - name: esp32dev|arduino-3 + board: esp32dev + platform: espressif32 + opts: "--project-option 'platform_packages=platformio/framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#3.0.0, platform_packages=platformio/framework-arduinoespressif32-libs @ https://github.com/espressif/arduino-esp32/releases/download/3.0.0/esp32-arduino-libs-3.0.0.zip'" + - name: esp32-s3-devkitc-1|arduino + board: esp32-s3-devkitc-1 + platform: espressif32 + opts: + - name: esp32-s3-devkitc-1|arduino-2 + board: esp32-s3-devkitc-1 + platform: espressif32@6.7.0 + opts: + - name: esp32-s3-devkitc-1|arduino-3 + board: esp32-s3-devkitc-1 + platform: espressif32 + opts: "--project-option 'platform_packages=platformio/framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#3.0.0, platform_packages=platformio/framework-arduinoespressif32-libs @ https://github.com/espressif/arduino-esp32/releases/download/3.0.0/esp32-arduino-libs-3.0.0.zip'" + - name: huzzah|espressif8266 + board: huzzah + platform: espressif8266 + opts: steps: - - uses: actions/setup-python@v1 + - uses: actions/checkout@v4 + - name: Set up cache + uses: actions/cache@v4 with: - python-version: '3.x' - - - uses: actions/checkout@v2 - - - uses: actions/checkout@v2 + path: | + ~/.platformio + ~/.cache/pip + key: ${{ matrix.name }} + - uses: actions/setup-python@v5 with: - repository: adafruit/ci-arduino - path: ci - - - name: pre-install - run: bash ci/actions_install.sh - - - name: Skip AsyncDemo Example - run: | - cd examples - cd AsyncDemo - touch .esp32.test.skip - touch .esp8266.test.skip + python-version: "3.x" + - run: pip install platformio + - run: platformio platform install ${{ matrix.platform }} - - name: Test Sync Demo - run: python3 ci/build_platform.py esp8266 esp32 picow_rp2040 + - run: platformio ci "examples/Demo/Demo.ino" -l '.' -b ${{ matrix.board }} ${{ matrix.opts }} + - run: PLATFORMIO_BUILD_FLAGS="-DELEGANTOTA_USE_ASYNC_WEBSERVER=1" platformio ci "examples/AsyncDemo/AsyncDemo.ino" -l '.' -b ${{ matrix.board }} ${{ matrix.opts }} diff --git a/.gitignore b/.gitignore index 78a7633..e1a65ae 100644 --- a/.gitignore +++ b/.gitignore @@ -36,4 +36,5 @@ node_modules .DS_Store .vscode /build -/portal \ No newline at end of file +/portal +.pio diff --git a/examples/AsyncDemo/.picow_rp2040.test.skip b/examples/AsyncDemo/.picow_rp2040.test.skip deleted file mode 100644 index e69de29..0000000 diff --git a/library.json b/library.json index b685a6d..5cf33d8 100644 --- a/library.json +++ b/library.json @@ -15,6 +15,14 @@ "maintainer": true } ], + "dependencies": [ + { + "owner": "mathieucarbou", + "name": "ESP Async WebServer", + "version": "^2.10.1", + "platforms": ["espressif8266", "espressif32"] + } + ], "version": "3.1.1", "frameworks": "arduino", "platforms": ["espressif8266", "espressif32", "raspberrypi"] diff --git a/platformio.ini b/platformio.ini new file mode 100644 index 0000000..6cacae9 --- /dev/null +++ b/platformio.ini @@ -0,0 +1,40 @@ +[env] +framework = arduino +build_flags = + -Wall -Wextra + -D CONFIG_ARDUHAL_LOG_COLORS + -D CORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_DEBUG + -D ELEGANTOTA_USE_ASYNC_WEBSERVER=1 +lib_deps = + mathieucarbou/Async TCP @ ^3.1.4 + mathieucarbou/ESP Async WebServer @ 2.10.1 +upload_protocol = esptool +monitor_speed = 115200 +monitor_filters = esp32_exception_decoder, log2file + +[platformio] +lib_dir = . +; src_dir = examples/Demo +src_dir = examples/AsyncDemo + +[env:arduino] +platform = espressif32 +board = esp32-s3-devkitc-1 + +[env:arduino-2] +platform = espressif32@6.7.0 +board = esp32-s3-devkitc-1 + +[env:arduino-3] +platform = espressif32 +platform_packages= + platformio/framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#3.0.0 + platformio/framework-arduinoespressif32-libs @ https://github.com/espressif/arduino-esp32/releases/download/3.0.0/esp32-arduino-libs-3.0.0.zip +board = esp32-s3-devkitc-1 + +[env:esp8266] +platform = espressif8266 +board = huzzah +lib_deps = + mathieucarbou/ESP Async WebServer @ 2.10.1 + esphome/ESPAsyncTCP-esphome @ 2.0.0 From bc43e148ee217fe40dc1ca80613fa03a123ac087 Mon Sep 17 00:00:00 2001 From: Ayush Sharma Date: Mon, 3 Jun 2024 05:37:41 +0530 Subject: [PATCH 2/7] fix: added raspberry to CI --- .github/workflows/ci.yml | 22 ++++++++++++++++++---- library.json | 2 +- platformio.ini | 4 ++-- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 271f131..af1a86e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,6 +38,10 @@ jobs: core: esp8266:esp8266 board: esp8266:esp8266:huzzah index_url: https://arduino.esp8266.com/stable/package_esp8266com_index.json + - name: package_rp2040_index.json + core: rp2040:rp2040 + board: rp2040:rp2040:rpipicow + index_url: https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json steps: - name: Checkout @@ -64,7 +68,7 @@ jobs: run: ARDUINO_LIBRARY_ENABLE_UNSAFE_INSTALL=true arduino-cli lib install --git-url https://github.com/mathieucarbou/esphome-ESPAsyncTCP#v2.0.0 - name: Install ESPAsyncWebServer - run: ARDUINO_LIBRARY_ENABLE_UNSAFE_INSTALL=true arduino-cli lib install --git-url https://github.com/mathieucarbou/ESPAsyncWebServer#v2.10.1 + run: ARDUINO_LIBRARY_ENABLE_UNSAFE_INSTALL=true arduino-cli lib install --git-url https://github.com/mathieucarbou/ESPAsyncWebServer#v2.10.4 - name: Build Demo run: arduino-cli compile --library . --warnings none -b ${{ matrix.board }} "examples/Demo/Demo.ino" @@ -75,6 +79,7 @@ jobs: sed -i 's/ELEGANTOTA_USE_ASYNC_WEBSERVER 0/ELEGANTOTA_USE_ASYNC_WEBSERVER 1/' ElegantOTA.h - name: Build AsyncDemo + if: ${{ matrix.core != 'rp2040:rp2040' }} run: arduino-cli compile --library . --warnings none -b ${{ matrix.board }} "examples/AsyncDemo/AsyncDemo.ino" platformio: @@ -112,6 +117,12 @@ jobs: board: huzzah platform: espressif8266 opts: + - name: rp2040|raspberrypi + board: pico + platform: raspberrypi + - name: rp2040|raspberrypi-1 + board: pico + platform: raspberrypi@1.13.0 steps: - uses: actions/checkout@v4 - name: Set up cache @@ -124,8 +135,11 @@ jobs: - uses: actions/setup-python@v5 with: python-version: "3.x" - - run: pip install platformio - - run: platformio platform install ${{ matrix.platform }} + - name: Install PlatformIO + run: pip install platformio + - name: Install Platform + run: platformio platform install ${{ matrix.platform }} - run: platformio ci "examples/Demo/Demo.ino" -l '.' -b ${{ matrix.board }} ${{ matrix.opts }} - - run: PLATFORMIO_BUILD_FLAGS="-DELEGANTOTA_USE_ASYNC_WEBSERVER=1" platformio ci "examples/AsyncDemo/AsyncDemo.ino" -l '.' -b ${{ matrix.board }} ${{ matrix.opts }} + - if: ${{ !contains(matrix.platform, 'raspberrypi') }} + run: PLATFORMIO_BUILD_FLAGS="-DELEGANTOTA_USE_ASYNC_WEBSERVER=1" platformio ci "examples/AsyncDemo/AsyncDemo.ino" -l '.' -b ${{ matrix.board }} ${{ matrix.opts }} diff --git a/library.json b/library.json index 5cf33d8..1e7724e 100644 --- a/library.json +++ b/library.json @@ -19,7 +19,7 @@ { "owner": "mathieucarbou", "name": "ESP Async WebServer", - "version": "^2.10.1", + "version": "^2.10.4", "platforms": ["espressif8266", "espressif32"] } ], diff --git a/platformio.ini b/platformio.ini index 6cacae9..a113cf3 100644 --- a/platformio.ini +++ b/platformio.ini @@ -7,7 +7,7 @@ build_flags = -D ELEGANTOTA_USE_ASYNC_WEBSERVER=1 lib_deps = mathieucarbou/Async TCP @ ^3.1.4 - mathieucarbou/ESP Async WebServer @ 2.10.1 + mathieucarbou/ESP Async WebServer @ 2.10.4 upload_protocol = esptool monitor_speed = 115200 monitor_filters = esp32_exception_decoder, log2file @@ -36,5 +36,5 @@ board = esp32-s3-devkitc-1 platform = espressif8266 board = huzzah lib_deps = - mathieucarbou/ESP Async WebServer @ 2.10.1 + mathieucarbou/ESP Async WebServer @ 2.10.4 esphome/ESPAsyncTCP-esphome @ 2.0.0 From 18b6e9d5bf11a76c75316b2f15f0cb979f24414f Mon Sep 17 00:00:00 2001 From: Ayush Sharma Date: Mon, 3 Jun 2024 05:48:57 +0530 Subject: [PATCH 3/7] fix: remove rp2040 for pio CI --- .github/workflows/ci.yml | 10 ++-------- platformio.ini | 6 ++++++ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index af1a86e..5d594c6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -74,6 +74,7 @@ jobs: run: arduino-cli compile --library . --warnings none -b ${{ matrix.board }} "examples/Demo/Demo.ino" - name: Configure ElegantOTA to Async Mode + if: ${{ matrix.core != 'rp2040:rp2040' }} run: | cd src sed -i 's/ELEGANTOTA_USE_ASYNC_WEBSERVER 0/ELEGANTOTA_USE_ASYNC_WEBSERVER 1/' ElegantOTA.h @@ -117,12 +118,6 @@ jobs: board: huzzah platform: espressif8266 opts: - - name: rp2040|raspberrypi - board: pico - platform: raspberrypi - - name: rp2040|raspberrypi-1 - board: pico - platform: raspberrypi@1.13.0 steps: - uses: actions/checkout@v4 - name: Set up cache @@ -141,5 +136,4 @@ jobs: run: platformio platform install ${{ matrix.platform }} - run: platformio ci "examples/Demo/Demo.ino" -l '.' -b ${{ matrix.board }} ${{ matrix.opts }} - - if: ${{ !contains(matrix.platform, 'raspberrypi') }} - run: PLATFORMIO_BUILD_FLAGS="-DELEGANTOTA_USE_ASYNC_WEBSERVER=1" platformio ci "examples/AsyncDemo/AsyncDemo.ino" -l '.' -b ${{ matrix.board }} ${{ matrix.opts }} + - run: PLATFORMIO_BUILD_FLAGS="-DELEGANTOTA_USE_ASYNC_WEBSERVER=1" platformio ci "examples/AsyncDemo/AsyncDemo.ino" -l '.' -b ${{ matrix.board }} ${{ matrix.opts }} diff --git a/platformio.ini b/platformio.ini index a113cf3..7876d33 100644 --- a/platformio.ini +++ b/platformio.ini @@ -38,3 +38,9 @@ board = huzzah lib_deps = mathieucarbou/ESP Async WebServer @ 2.10.4 esphome/ESPAsyncTCP-esphome @ 2.0.0 + +[env:pico] +platform = https://github.com/maxgerhardt/platform-raspberrypi.git +board = pico +framework = arduino +board_build.core = earlephilhower \ No newline at end of file From 86b1ec33295b5d26b2d9af360bd2b68e2613ef77 Mon Sep 17 00:00:00 2001 From: Ayush Sharma Date: Mon, 3 Jun 2024 05:56:02 +0530 Subject: [PATCH 4/7] chore: bump version --- library.json | 2 +- library.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/library.json b/library.json index 1e7724e..5c183e3 100644 --- a/library.json +++ b/library.json @@ -23,7 +23,7 @@ "platforms": ["espressif8266", "espressif32"] } ], - "version": "3.1.1", + "version": "3.1.2", "frameworks": "arduino", "platforms": ["espressif8266", "espressif32", "raspberrypi"] } diff --git a/library.properties b/library.properties index 5a4010a..e5342ff 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=ElegantOTA -version=3.1.1 +version=3.1.2 author=Ayush Sharma category=Communication maintainer=Ayush Sharma From 420ac2cedb54dfa2e28e6ed4575bc5148ee4c7db Mon Sep 17 00:00:00 2001 From: Mathieu Carbou Date: Wed, 5 Jun 2024 15:33:49 +0200 Subject: [PATCH 5/7] Arduino 3.0.1 --- .github/workflows/ci.yml | 4 ++-- platformio.ini | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5d594c6..dabf2ed 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -101,7 +101,7 @@ jobs: - name: esp32dev|arduino-3 board: esp32dev platform: espressif32 - opts: "--project-option 'platform_packages=platformio/framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#3.0.0, platform_packages=platformio/framework-arduinoespressif32-libs @ https://github.com/espressif/arduino-esp32/releases/download/3.0.0/esp32-arduino-libs-3.0.0.zip'" + opts: "--project-option 'platform_packages=platformio/framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#3.0.1, platform_packages=platformio/framework-arduinoespressif32-libs @ https://github.com/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip'" - name: esp32-s3-devkitc-1|arduino board: esp32-s3-devkitc-1 platform: espressif32 @@ -113,7 +113,7 @@ jobs: - name: esp32-s3-devkitc-1|arduino-3 board: esp32-s3-devkitc-1 platform: espressif32 - opts: "--project-option 'platform_packages=platformio/framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#3.0.0, platform_packages=platformio/framework-arduinoespressif32-libs @ https://github.com/espressif/arduino-esp32/releases/download/3.0.0/esp32-arduino-libs-3.0.0.zip'" + opts: "--project-option 'platform_packages=platformio/framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#3.0.1, platform_packages=platformio/framework-arduinoespressif32-libs @ https://github.com/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip'" - name: huzzah|espressif8266 board: huzzah platform: espressif8266 diff --git a/platformio.ini b/platformio.ini index 7876d33..79ce2aa 100644 --- a/platformio.ini +++ b/platformio.ini @@ -28,8 +28,8 @@ board = esp32-s3-devkitc-1 [env:arduino-3] platform = espressif32 platform_packages= - platformio/framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#3.0.0 - platformio/framework-arduinoespressif32-libs @ https://github.com/espressif/arduino-esp32/releases/download/3.0.0/esp32-arduino-libs-3.0.0.zip + platformio/framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#3.0.1 + platformio/framework-arduinoespressif32-libs @ https://github.com/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip board = esp32-s3-devkitc-1 [env:esp8266] From 4417cc36ea0927ebadd03d466528793a10e7b7d6 Mon Sep 17 00:00:00 2001 From: Mathieu Carbou Date: Mon, 10 Jun 2024 15:46:06 +0200 Subject: [PATCH 6/7] Lower memory usage --- src/ElegantOTA.cpp | 36 +++++++++++++++++------------------- src/ElegantOTA.h | 4 ++-- 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/src/ElegantOTA.cpp b/src/ElegantOTA.cpp index 4bf7bfa..af979ed 100644 --- a/src/ElegantOTA.cpp +++ b/src/ElegantOTA.cpp @@ -16,7 +16,7 @@ void ElegantOTAClass::begin(ELEGANTOTA_WEBSERVER *server, const char * username, #if ELEGANTOTA_USE_ASYNC_WEBSERVER == 1 _server->on("/update", HTTP_GET, [&](AsyncWebServerRequest *request){ - if(_authenticate && !request->authenticate(_username, _password)){ + if(_authenticate && !request->authenticate(_username.c_str(), _password.c_str())){ return request->requestAuthentication(); } AsyncWebServerResponse *response = request->beginResponse_P(200, "text/html", ELEGANT_HTML, sizeof(ELEGANT_HTML)); @@ -25,7 +25,7 @@ void ElegantOTAClass::begin(ELEGANTOTA_WEBSERVER *server, const char * username, }); #else _server->on("/update", HTTP_GET, [&](){ - if (_authenticate && !_server->authenticate(_username, _password)) { + if (_authenticate && !_server->authenticate(_username.c_str(), _password.c_str())) { return _server->requestAuthentication(); } _server->sendHeader("Content-Encoding", "gzip"); @@ -35,7 +35,7 @@ void ElegantOTAClass::begin(ELEGANTOTA_WEBSERVER *server, const char * username, #if ELEGANTOTA_USE_ASYNC_WEBSERVER == 1 _server->on("/ota/start", HTTP_GET, [&](AsyncWebServerRequest *request) { - if (_authenticate && !request->authenticate(_username, _password)) { + if (_authenticate && !request->authenticate(_username.c_str(), _password.c_str())) { return request->requestAuthentication(); } @@ -84,7 +84,7 @@ void ElegantOTAClass::begin(ELEGANTOTA_WEBSERVER *server, const char * username, StreamString str; Update.printError(str); _update_error_str = str.c_str(); - _update_error_str += "\n"; + _update_error_str.concat("\n"); ELEGANTOTA_DEBUG_MSG(_update_error_str.c_str()); } #elif defined(ESP32) @@ -94,7 +94,7 @@ void ElegantOTAClass::begin(ELEGANTOTA_WEBSERVER *server, const char * username, StreamString str; Update.printError(str); _update_error_str = str.c_str(); - _update_error_str += "\n"; + _update_error_str.concat("\n"); ELEGANTOTA_DEBUG_MSG(_update_error_str.c_str()); } #endif @@ -103,7 +103,7 @@ void ElegantOTAClass::begin(ELEGANTOTA_WEBSERVER *server, const char * username, }); #else _server->on("/ota/start", HTTP_GET, [&]() { - if (_authenticate && !_server->authenticate(_username, _password)) { + if (_authenticate && !_server->authenticate(_username.c_str(), _password.c_str())) { return _server->requestAuthentication(); } @@ -152,7 +152,7 @@ void ElegantOTAClass::begin(ELEGANTOTA_WEBSERVER *server, const char * username, StreamString str; Update.printError(str); _update_error_str = str.c_str(); - _update_error_str += "\n"; + _update_error_str.concat("\n"); ELEGANTOTA_DEBUG_MSG(_update_error_str.c_str()); } #elif defined(ESP32) @@ -162,7 +162,7 @@ void ElegantOTAClass::begin(ELEGANTOTA_WEBSERVER *server, const char * username, StreamString str; Update.printError(str); _update_error_str = str.c_str(); - _update_error_str += "\n"; + _update_error_str.concat("\n"); ELEGANTOTA_DEBUG_MSG(_update_error_str.c_str()); } #elif defined(TARGET_RP2040) @@ -191,7 +191,7 @@ void ElegantOTAClass::begin(ELEGANTOTA_WEBSERVER *server, const char * username, #if ELEGANTOTA_USE_ASYNC_WEBSERVER == 1 _server->on("/ota/upload", HTTP_POST, [&](AsyncWebServerRequest *request) { - if(_authenticate && !request->authenticate(_username, _password)){ + if(_authenticate && !request->authenticate(_username.c_str(), _password.c_str())){ return request->requestAuthentication(); } // Post-OTA update callback @@ -210,7 +210,7 @@ void ElegantOTAClass::begin(ELEGANTOTA_WEBSERVER *server, const char * username, }, [&](AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final) { //Upload handler chunks in data if(_authenticate){ - if(!request->authenticate(_username, _password)){ + if(!request->authenticate(_username.c_str(), _password.c_str())){ return request->requestAuthentication(); } } @@ -236,7 +236,7 @@ void ElegantOTAClass::begin(ELEGANTOTA_WEBSERVER *server, const char * username, StreamString str; Update.printError(str); _update_error_str = str.c_str(); - _update_error_str += "\n"; + _update_error_str.concat("\n"); ELEGANTOTA_DEBUG_MSG(_update_error_str.c_str()); } }else{ @@ -245,7 +245,7 @@ void ElegantOTAClass::begin(ELEGANTOTA_WEBSERVER *server, const char * username, }); #else _server->on("/ota/upload", HTTP_POST, [&](){ - if (_authenticate && !_server->authenticate(_username, _password)) { + if (_authenticate && !_server->authenticate(_username.c_str(), _password.c_str())) { return _server->requestAuthentication(); } // Post-OTA update callback @@ -264,7 +264,7 @@ void ElegantOTAClass::begin(ELEGANTOTA_WEBSERVER *server, const char * username, HTTPUpload& upload = _server->upload(); if (upload.status == UPLOAD_FILE_START) { // Check authentication - if (_authenticate && !_server->authenticate(_username, _password)) { + if (_authenticate && !_server->authenticate(_username.c_str(), _password.c_str())) { ELEGANTOTA_DEBUG_MSG("Authentication Failed on UPLOAD_FILE_START\n"); return; } @@ -289,7 +289,7 @@ void ElegantOTAClass::begin(ELEGANTOTA_WEBSERVER *server, const char * username, StreamString str; Update.printError(str); _update_error_str = str.c_str(); - _update_error_str += "\n"; + _update_error_str.concat("\n"); ELEGANTOTA_DEBUG_MSG(_update_error_str.c_str()); } @@ -304,11 +304,9 @@ void ElegantOTAClass::begin(ELEGANTOTA_WEBSERVER *server, const char * username, } void ElegantOTAClass::setAuth(const char * username, const char * password){ - if (strlen(username) > 0 && strlen(password) > 0) { - strlcpy(_username, username, sizeof(_username)); - strlcpy(_password, password, sizeof(_password)); - _authenticate = true; - } + _username = username; + _password = password; + _authenticate = _username.length() && _password.length(); } void ElegantOTAClass::clearAuth(){ diff --git a/src/ElegantOTA.h b/src/ElegantOTA.h index eb961cb..ab50231 100644 --- a/src/ElegantOTA.h +++ b/src/ElegantOTA.h @@ -119,8 +119,8 @@ class ElegantOTAClass{ ELEGANTOTA_WEBSERVER *_server; bool _authenticate; - char _username[64]; - char _password[64]; + String _username; + String _password; bool _auto_reboot = true; bool _reboot = false; From c855c2dbaca7da82470362aeb28dc852806ff310 Mon Sep 17 00:00:00 2001 From: Ayush Sharma Date: Thu, 13 Jun 2024 23:27:21 +0530 Subject: [PATCH 7/7] Create stale.yml --- .github/workflows/stale.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 .github/workflows/stale.yml diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 0000000..4279cc6 --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,17 @@ +name: 'Close stale issues and PR' +on: + schedule: + - cron: '30 6 * * *' + +jobs: + stale: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v9 + with: + stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.' + stale-pr-message: 'This PR is marked as stale because it has been open 45 days with no activity. You can remove stale label or comment if this PR is still valid.' + close-issue-message: 'This issue was closed because it has been stalled for 5 days with no activity.' + days-before-stale: 30 + days-before-close: 5 + days-before-pr-close: -1