report on invalid extension - Validate file name extension on file upload #1210

This commit is contained in:
Proddy
2023-07-08 14:10:33 +02:00
parent eb6e8d0c93
commit bea0922ee8
2 changed files with 9 additions and 6 deletions

View File

@@ -53,8 +53,10 @@ const UploadFileForm: FC = () => {
await sendUpload(files[0]).catch((err) => { await sendUpload(files[0]).catch((err) => {
if (err.message === 'The user aborted a request') { if (err.message === 'The user aborted a request') {
toast.warning(LL.UPLOAD() + ' ' + LL.ABORTED()); toast.warning(LL.UPLOAD() + ' ' + LL.ABORTED());
} else if (err.message === 'Network Error') {
toast.warning('Invalid file extension');
} else { } else {
toast.warning(err.message); toast.error(err.message);
} }
}); });
}; };

View File

@@ -42,7 +42,9 @@ void UploadFileService::handleUpload(AsyncWebServerRequest * request, const Stri
return; return;
} else { } else {
md5[0] = '\0'; md5[0] = '\0';
return; // unsupported file type handleError(request, 406); // Not Acceptable - unsupported file type
request->client()->abort();
return;
} }
if (is_firmware) { if (is_firmware) {
@@ -122,18 +124,17 @@ void UploadFileService::uploadComplete(AsyncWebServerRequest * request) {
request->send(response); request->send(response);
return; return;
} }
if (strlen(md5) == 32) { if (strlen(md5) == 32) {
auto * response = new AsyncJsonResponse(false, 256); auto * response = new AsyncJsonResponse(false, 256);
JsonObject root = response->getRoot(); JsonObject root = response->getRoot();
root["md5"] = md5; root["md5"] = md5;
response->setLength(); response->setLength();
request->send(response); request->send(response);
// AsyncWebServerResponse * response = request->beginResponse(201, "text/plain", md5); // created
// request->send(response);
return; return;
} }
handleError(request, 403); // send the forbidden response handleError(request, 406); // send the forbidden response
} }
void UploadFileService::handleError(AsyncWebServerRequest * request, int code) { void UploadFileService::handleError(AsyncWebServerRequest * request, int code) {
@@ -143,9 +144,9 @@ void UploadFileService::handleError(AsyncWebServerRequest * request, int code) {
} }
// send the error code to the client and record the error code in the temp object // send the error code to the client and record the error code in the temp object
request->_tempObject = new int(code);
AsyncWebServerResponse * response = request->beginResponse(code); AsyncWebServerResponse * response = request->beginResponse(code);
request->send(response); request->send(response);
handleEarlyDisconnect();
} }
void UploadFileService::handleEarlyDisconnect() { void UploadFileService::handleEarlyDisconnect() {