Update ElegantOTA to v3.1.1

This commit is contained in:
Daniel 2024-03-29 00:09:13 +02:00
parent 271f0dfb1f
commit 18be0ead1b
6 changed files with 42 additions and 17 deletions

View file

@ -30,7 +30,7 @@ jobs:
- uses: actions/checkout@v2
with:
repository: adafruit/ci-arduino
repository: ayushsharma82/ci-arduino
path: ci
- name: pre-install
@ -55,7 +55,6 @@ jobs:
sed -i 's/ELEGANTOTA_USE_ASYNC_WEBSERVER 0/ELEGANTOTA_USE_ASYNC_WEBSERVER 1/' ElegantOTA.h
- name: Test Async Demo
continue-on-error: true
run: python3 ci/build_platform.py esp8266 esp32
Sync_CI:

View file

@ -1,5 +1,3 @@
This is commit 9ab44bd from https://github.com/ayushsharma82/ElegantOTA
<p><br/></p>
<p align="center"><img src="/docs/feature.png?sanitize=true&raw=true" width="700"></p>

View file

@ -15,7 +15,7 @@
"maintainer": true
}
],
"version": "3.1.0",
"version": "3.1.1",
"frameworks": "arduino",
"platforms": ["espressif8266", "espressif32", "raspberrypi"]
}

View file

@ -1,5 +1,5 @@
name=ElegantOTA
version=3.1.0
version=3.1.1
author=Ayush Sharma
category=Communication
maintainer=Ayush Sharma <asrocks5@gmail.com>

View file

@ -16,6 +16,7 @@ import requests
import hashlib
from urllib.parse import urlparse
import time
from requests.auth import HTTPDigestAuth
Import("env")
try:
@ -29,7 +30,9 @@ except ImportError:
def on_upload(source, target, env):
firmware_path = str(source[0])
upload_url_compatibility = env.GetProjectOption('upload_url')
auth = None
upload_url_compatibility = env.GetProjectOption('custom_upload_url')
upload_url = upload_url_compatibility.replace("/update", "")
with open(firmware_path, 'rb') as firmware:
@ -50,12 +53,37 @@ def on_upload(source, target, env):
'Referer': f'{upload_url}/update',
'Connection': 'keep-alive'
}
start_response = requests.get(start_url, headers=start_headers)
if start_response.status_code != 200:
print("start-request faild " + str(start_response.status_code))
return
checkAuthResponse = requests.get(f"{upload_url_compatibility}/update")
if checkAuthResponse.status_code == 401:
try:
username = env.GetProjectOption('custom_username')
password = env.GetProjectOption('custom_password')
except:
username = None
password = None
print("No authentication values specified.")
print('Please, add some Options in your .ini file like: \n\ncustom_username=username\ncustom_password=password\n')
if username is None or password is None:
print("Authentication required, but no credentials provided.")
return
print("Serverconfiguration: authentication needed.")
auth = HTTPDigestAuth(username, password)
doUpdateAuth = requests.get(start_url, headers=start_headers, auth=auth)
if doUpdateAuth.status_code != 200:
print("authentication faild " + str(doUpdateAuth.status_code))
return
print("Authentication successfull")
else:
auth = None
print("Serverconfiguration: autentication not needed.")
doUpdate = requests.get(start_url, headers=start_headers)
if doUpdate.status_code != 200:
print("start-request faild " + str(doUpdate.status_code))
return
firmware.seek(0)
encoder = MultipartEncoder(fields={
@ -87,7 +115,7 @@ def on_upload(source, target, env):
}
response = requests.post(f"{upload_url}/ota/upload", data=monitor, headers=post_headers)
response = requests.post(f"{upload_url}/ota/upload", data=monitor, headers=post_headers, auth=auth)
bar.close()
time.sleep(0.1)
@ -100,4 +128,4 @@ def on_upload(source, target, env):
tqdm.write(message)
env.Replace(UPLOADCMD=on_upload)
env.Replace(UPLOADCMD=on_upload)

View file

@ -24,7 +24,7 @@ _____ _ _ ___ _____ _
#include "elop.h"
#ifndef ELEGANTOTA_USE_ASYNC_WEBSERVER
#define ELEGANTOTA_USE_ASYNC_WEBSERVER 1
#define ELEGANTOTA_USE_ASYNC_WEBSERVER 0
#endif
#ifndef ELEGANTOTA_DEBUG
@ -64,8 +64,8 @@ _____ _ _ ___ _____ _
#include "Update.h"
#include "StreamString.h"
#if ELEGANTOTA_USE_ASYNC_WEBSERVER == 1
#include "../../me-no-dev-AsyncTCP/src/AsyncTCP.h"
#include "../../me-no-dev-ESPAsyncWebServer/src/ESPAsyncWebServer.h"
#include "AsyncTCP.h"
#include "ESPAsyncWebServer.h"
#define ELEGANTOTA_WEBSERVER AsyncWebServer
#else
#include "WiFi.h"