Merge branch 'dev' into dev2

This commit is contained in:
MichaelDvP
2024-01-08 11:26:17 +01:00
109 changed files with 271 additions and 355 deletions

View File

@@ -75,7 +75,7 @@ class APSettings {
&& subnetMask == settings.subnetMask;
}
static void read(APSettings & settings, JsonObject & root) {
static void read(APSettings & settings, JsonObject root) {
root["provision_mode"] = settings.provisionMode;
root["ssid"] = settings.ssid;
root["password"] = settings.password;
@@ -87,7 +87,7 @@ class APSettings {
root["subnet_mask"] = settings.subnetMask.toString();
}
static StateUpdateResult update(JsonObject & root, APSettings & settings) {
static StateUpdateResult update(JsonObject root, APSettings & settings) {
APSettings newSettings = {};
newSettings.provisionMode = root["provision_mode"] | FACTORY_AP_PROVISION_MODE;
switch (settings.provisionMode) {

View File

@@ -34,7 +34,7 @@ String ArduinoJsonJWT::sign(String & payload) {
return encode((char *)hmacResult, 32);
}
String ArduinoJsonJWT::buildJWT(JsonObject & payload) {
String ArduinoJsonJWT::buildJWT(JsonObject payload) {
// serialize, then encode payload
String jwt;
serializeJson(payload, jwt);

View File

@@ -25,7 +25,7 @@ class ArduinoJsonJWT {
void setSecret(String secret);
String getSecret();
String buildJWT(JsonObject & payload);
String buildJWT(JsonObject payload);
void parseJWT(String jwt, JsonDocument & jsonDocument);
};

View File

@@ -25,6 +25,7 @@ ESP8266React::ESP8266React(AsyncWebServer * server, FS * fs)
ArRequestHandlerFunction requestHandler = [contentType, content, len](AsyncWebServerRequest * request) {
AsyncWebServerResponse * response = request->beginResponse_P(200, contentType, content, len);
response->addHeader("Content-Encoding", "gzip");
response->addHeader("Cache-Control", "public, immutable, max-age=31536000");
// response->addHeader("Content-Encoding", "br"); // only works over HTTPS
request->send(response);
};
@@ -53,6 +54,7 @@ void ESP8266React::begin() {
DefaultHeaders::Instance().addHeader("Access-Control-Allow-Headers", "Accept, Content-Type, Authorization");
DefaultHeaders::Instance().addHeader("Access-Control-Allow-Credentials", "true");
}
DefaultHeaders::Instance().addHeader("Server", networkSettings.hostname); // TODO use hostname
});
_apSettingsService.begin();
_ntpSettingsService.begin();

View File

@@ -8,19 +8,19 @@
class JsonUtils {
public:
static void readIP(JsonObject & root, const String & key, IPAddress & ip, const String & def) {
static void readIP(JsonObject root, const String & key, IPAddress & ip, const String & def) {
IPAddress defaultIp = {};
if (!defaultIp.fromString(def)) {
defaultIp = INADDR_NONE;
}
readIP(root, key, ip, defaultIp);
}
static void readIP(JsonObject & root, const String & key, IPAddress & ip, const IPAddress & defaultIp = INADDR_NONE) {
static void readIP(JsonObject root, const String & key, IPAddress & ip, const IPAddress & defaultIp = INADDR_NONE) {
if (!root[key].is<String>() || !ip.fromString(root[key].as<String>())) {
ip = defaultIp;
}
}
static void writeIP(JsonObject & root, const String & key, const IPAddress & ip) {
static void writeIP(JsonObject root, const String & key, const IPAddress & ip) {
if (IPUtils::isSet(ip)) {
root[key] = ip.toString();
}

View File

@@ -216,7 +216,7 @@ bool MqttSettingsService::configureMqtt() {
return false;
}
void MqttSettings::read(MqttSettings & settings, JsonObject & root) {
void MqttSettings::read(MqttSettings & settings, JsonObject root) {
#if CONFIG_IDF_TARGET_ESP32S3
#ifndef TASMOTA_SDK
root["enableTLS"] = settings.enableTLS;
@@ -253,7 +253,7 @@ void MqttSettings::read(MqttSettings & settings, JsonObject & root) {
root["send_response"] = settings.send_response;
}
StateUpdateResult MqttSettings::update(JsonObject & root, MqttSettings & settings) {
StateUpdateResult MqttSettings::update(JsonObject root, MqttSettings & settings) {
MqttSettings newSettings = {};
bool changed = false;

View File

@@ -98,8 +98,8 @@ class MqttSettings {
bool send_response;
uint8_t entity_format;
static void read(MqttSettings & settings, JsonObject & root);
static StateUpdateResult update(JsonObject & root, MqttSettings & settings);
static void read(MqttSettings & settings, JsonObject root);
static StateUpdateResult update(JsonObject root, MqttSettings & settings);
};
class MqttSettingsService : public StatefulService<MqttSettings> {

View File

@@ -36,14 +36,14 @@ class NTPSettings {
String tzFormat;
String server;
static void read(NTPSettings & settings, JsonObject & root) {
static void read(NTPSettings & settings, JsonObject root) {
root["enabled"] = settings.enabled;
root["server"] = settings.server;
root["tz_label"] = settings.tzLabel;
root["tz_format"] = settings.tzFormat;
}
static StateUpdateResult update(JsonObject & root, NTPSettings & settings) {
static StateUpdateResult update(JsonObject root, NTPSettings & settings) {
settings.enabled = root["enabled"] | FACTORY_NTP_ENABLED;
settings.server = root["server"] | FACTORY_NTP_SERVER;
settings.tzLabel = root["tz_label"] | FACTORY_NTP_TIME_ZONE_LABEL;

View File

@@ -50,7 +50,7 @@ class NetworkSettings {
IPAddress dnsIP1;
IPAddress dnsIP2;
static void read(NetworkSettings & settings, JsonObject & root) {
static void read(NetworkSettings & settings, JsonObject root) {
// connection settings
root["ssid"] = settings.ssid;
root["bssid"] = settings.bssid;
@@ -73,7 +73,7 @@ class NetworkSettings {
JsonUtils::writeIP(root, "dns_ip_2", settings.dnsIP2);
}
static StateUpdateResult update(JsonObject & root, NetworkSettings & settings) {
static StateUpdateResult update(JsonObject root, NetworkSettings & settings) {
auto enableCORS = settings.enableCORS;
auto CORSOrigin = settings.CORSOrigin;
auto ssid = settings.ssid;

View File

@@ -28,13 +28,13 @@ class OTASettings {
int port;
String password;
static void read(OTASettings & settings, JsonObject & root) {
static void read(OTASettings & settings, JsonObject root) {
root["enabled"] = settings.enabled;
root["port"] = settings.port;
root["password"] = settings.password;
}
static StateUpdateResult update(JsonObject & root, OTASettings & settings) {
static StateUpdateResult update(JsonObject root, OTASettings & settings) {
settings.enabled = root["enabled"] | FACTORY_OTA_ENABLED;
settings.port = root["port"] | FACTORY_OTA_PORT;
settings.password = root["password"] | FACTORY_OTA_PASSWORD;

View File

@@ -63,12 +63,12 @@ Authentication SecuritySettingsService::authenticate(const String & username, co
return Authentication();
}
inline void populateJWTPayload(JsonObject & payload, User * user) {
inline void populateJWTPayload(JsonObject payload, User * user) {
payload["username"] = user->username;
payload["admin"] = user->admin;
}
boolean SecuritySettingsService::validatePayload(JsonObject & parsedPayload, User * user) {
boolean SecuritySettingsService::validatePayload(JsonObject parsedPayload, User * user) {
JsonDocument jsonDocument;
JsonObject payload = jsonDocument.to<JsonObject>();
populateJWTPayload(payload, user);

View File

@@ -35,7 +35,7 @@ class SecuritySettings {
String jwtSecret;
std::list<User> users;
static void read(SecuritySettings & settings, JsonObject & root) {
static void read(SecuritySettings & settings, JsonObject root) {
// secret
root["jwt_secret"] = settings.jwtSecret;
@@ -49,7 +49,7 @@ class SecuritySettings {
}
}
static StateUpdateResult update(JsonObject & root, SecuritySettings & settings) {
static StateUpdateResult update(JsonObject root, SecuritySettings & settings) {
// secret
settings.jwtSecret = root["jwt_secret"] | FACTORY_JWT_SECRET;
@@ -98,7 +98,7 @@ class SecuritySettingsService : public StatefulService<SecuritySettings>, public
/*
* Verify the payload is correct
*/
boolean validatePayload(JsonObject & parsedPayload, User * user);
boolean validatePayload(JsonObject parsedPayload, User * user);
};
#else

View File

@@ -17,10 +17,10 @@ enum class StateUpdateResult {
};
template <typename T>
using JsonStateUpdater = std::function<StateUpdateResult(JsonObject & root, T & settings)>;
using JsonStateUpdater = std::function<StateUpdateResult(JsonObject root, T & settings)>;
template <typename T>
using JsonStateReader = std::function<void(T & settings, JsonObject & root)>;
using JsonStateReader = std::function<void(T & settings, JsonObject root)>;
typedef size_t update_handler_id_t;
typedef std::function<void(const String & originId)> StateUpdateCallback;
@@ -81,7 +81,7 @@ class StatefulService {
return result;
}
StateUpdateResult update(JsonObject & jsonObject, JsonStateUpdater<T> stateUpdater, const String & originId) {
StateUpdateResult update(JsonObject jsonObject, JsonStateUpdater<T> stateUpdater, const String & originId) {
beginTransaction();
StateUpdateResult result = stateUpdater(jsonObject, _state);
endTransaction();
@@ -91,7 +91,7 @@ class StatefulService {
return result;
}
StateUpdateResult updateWithoutPropagation(JsonObject & jsonObject, JsonStateUpdater<T> stateUpdater) {
StateUpdateResult updateWithoutPropagation(JsonObject jsonObject, JsonStateUpdater<T> stateUpdater) {
beginTransaction();
StateUpdateResult result = stateUpdater(jsonObject, _state);
endTransaction();
@@ -104,7 +104,7 @@ class StatefulService {
endTransaction();
}
void read(JsonObject & jsonObject, JsonStateReader<T> stateReader) {
void read(JsonObject jsonObject, JsonStateReader<T> stateReader) {
beginTransaction();
stateReader(_state, jsonObject);
endTransaction();