[ai] improve web stability
This commit is contained in:
52
src/main.cpp
52
src/main.cpp
@@ -330,7 +330,9 @@ void handleMoveFile(AsyncWebServerRequest *request)
|
||||
|
||||
if (SD.exists(from))
|
||||
{
|
||||
sd_lock_acquire();
|
||||
SD.rename(from, to);
|
||||
sd_lock_release();
|
||||
Serial.println("Moved file: " + from + " to " + to);
|
||||
// Rebuild directory tree to update file list
|
||||
rootNode.buildDirectoryTree("/");
|
||||
@@ -351,7 +353,9 @@ void handleDeleteFile(AsyncWebServerRequest *request)
|
||||
|
||||
if (SD.exists(filename))
|
||||
{
|
||||
sd_lock_acquire();
|
||||
SD.remove(filename.c_str());
|
||||
sd_lock_release();
|
||||
Serial.println("Deleted file: " + filename);
|
||||
// Rebuild directory tree to update file list
|
||||
rootNode.buildDirectoryTree("/");
|
||||
@@ -800,6 +804,8 @@ void saveMappingToFile(const String filename)
|
||||
// Function to handle edit requests
|
||||
void editMapping(AsyncWebServerRequest *request)
|
||||
{
|
||||
webreq_enter();
|
||||
request->onDisconnect([](){ webreq_exit(); });
|
||||
if (request->hasParam("rfid", true) && request->hasParam("song", true))
|
||||
{
|
||||
String rfid = request->getParam("rfid", true)->value();
|
||||
@@ -1166,6 +1172,7 @@ server.on("/", HTTP_GET, [](AsyncWebServerRequest *request)
|
||||
if (SD.exists(htmlPath))
|
||||
{
|
||||
AsyncWebServerResponse *response = request->beginResponse(SD, htmlPath, "text/html");
|
||||
response->addHeader("Cache-Control", "no-store");
|
||||
request->send(response);
|
||||
}
|
||||
else
|
||||
@@ -1186,7 +1193,11 @@ server.on("/", HTTP_GET, [](AsyncWebServerRequest *request)
|
||||
String cssPath = getSysDir("style.css");
|
||||
if (SD.exists(cssPath))
|
||||
{
|
||||
request->send(SD, cssPath, "text/css");
|
||||
{
|
||||
AsyncWebServerResponse *resp = request->beginResponse(SD, cssPath, "text/css");
|
||||
resp->addHeader("Cache-Control", "public, max-age=300");
|
||||
request->send(resp);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1205,7 +1216,11 @@ server.on("/", HTTP_GET, [](AsyncWebServerRequest *request)
|
||||
String jsPath = getSysDir("script.js");
|
||||
if (SD.exists(jsPath))
|
||||
{
|
||||
request->send(SD, jsPath, "application/javascript");
|
||||
{
|
||||
AsyncWebServerResponse *resp = request->beginResponse(SD, jsPath, "application/javascript");
|
||||
resp->addHeader("Cache-Control", "public, max-age=300");
|
||||
request->send(resp);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1218,48 +1233,59 @@ server.on("/", HTTP_GET, [](AsyncWebServerRequest *request)
|
||||
// Dynamic endpoints to avoid template processing heap spikes
|
||||
server.on("/directory", HTTP_GET, [](AsyncWebServerRequest *request)
|
||||
{
|
||||
webreq_enter();
|
||||
request->onDisconnect([](){ webreq_exit(); });
|
||||
String html = processor(String("DIRECTORY"));
|
||||
request->send(200, "text/html; charset=UTF-8", html);
|
||||
});
|
||||
|
||||
server.on("/mapping", HTTP_GET, [](AsyncWebServerRequest *request)
|
||||
{
|
||||
webreq_enter();
|
||||
request->onDisconnect([](){ webreq_exit(); });
|
||||
String html = processor(String("MAPPING"));
|
||||
request->send(200, "text/html; charset=UTF-8", html);
|
||||
});
|
||||
|
||||
server.on("/state", HTTP_GET, [](AsyncWebServerRequest *request)
|
||||
{
|
||||
webreq_enter();
|
||||
request->onDisconnect([](){ webreq_exit(); });
|
||||
String state = getState();
|
||||
request->send(200, "application/json charset=UTF-8", state.c_str()); });
|
||||
request->send(200, "application/json; charset=UTF-8", state.c_str()); });
|
||||
|
||||
server.on("/start", HTTP_GET, [](AsyncWebServerRequest *request)
|
||||
{
|
||||
|
||||
request->send(200, "text/plain charset=UTF-8", "start");
|
||||
webreq_enter();
|
||||
request->onDisconnect([](){ webreq_exit(); });
|
||||
request->send(200, "text/plain; charset=UTF-8", "start");
|
||||
start(); });
|
||||
|
||||
server.on("/toggleplaypause", HTTP_GET, [](AsyncWebServerRequest *request)
|
||||
{
|
||||
|
||||
request->send(200, "text/plain charset=UTF-8", "toggleplaypause");
|
||||
webreq_enter();
|
||||
request->onDisconnect([](){ webreq_exit(); });
|
||||
request->send(200, "text/plain; charset=UTF-8", "toggleplaypause");
|
||||
togglePlayPause(); });
|
||||
|
||||
server.on("/stop", HTTP_GET, [](AsyncWebServerRequest *request)
|
||||
{
|
||||
|
||||
webreq_enter();
|
||||
request->onDisconnect([](){ webreq_exit(); });
|
||||
request->send(200, "text/plain", "stop");
|
||||
stop(); });
|
||||
|
||||
server.on("/next", HTTP_GET, [](AsyncWebServerRequest *request)
|
||||
{
|
||||
|
||||
webreq_enter();
|
||||
request->onDisconnect([](){ webreq_exit(); });
|
||||
request->send(200, "text/plain", "next");
|
||||
next(); });
|
||||
|
||||
server.on("/previous", HTTP_GET, [](AsyncWebServerRequest *request)
|
||||
{
|
||||
|
||||
webreq_enter();
|
||||
request->onDisconnect([](){ webreq_exit(); });
|
||||
request->send(200, "text/plain", "previous");
|
||||
previous(); });
|
||||
|
||||
@@ -1410,6 +1436,8 @@ void setup()
|
||||
|
||||
void id_song_action(AsyncWebServerRequest *request)
|
||||
{
|
||||
webreq_enter();
|
||||
request->onDisconnect([](){ webreq_exit(); });
|
||||
int params = request->params();
|
||||
for (int i = 0; i < params; i++)
|
||||
{
|
||||
@@ -1425,6 +1453,8 @@ void id_song_action(AsyncWebServerRequest *request)
|
||||
|
||||
void progress_action(AsyncWebServerRequest *request)
|
||||
{
|
||||
webreq_enter();
|
||||
request->onDisconnect([](){ webreq_exit(); });
|
||||
|
||||
int params = request->params();
|
||||
for (int i = 0; i < params; i++)
|
||||
@@ -1441,6 +1471,8 @@ void progress_action(AsyncWebServerRequest *request)
|
||||
|
||||
void volume_action(AsyncWebServerRequest *request)
|
||||
{
|
||||
webreq_enter();
|
||||
request->onDisconnect([](){ webreq_exit(); });
|
||||
|
||||
int params = request->params();
|
||||
for (int i = 0; i < params; i++)
|
||||
|
||||
Reference in New Issue
Block a user