Skip to content

Commit fb29f4e

Browse files
committed
Add file name check for firmware upload.
1 parent 9ff12b7 commit fb29f4e

File tree

2 files changed

+37
-12
lines changed

2 files changed

+37
-12
lines changed

Firmware/RTK_Surveyor/AP-Config/src/main.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -525,7 +525,7 @@ document.addEventListener("DOMContentLoaded", (event) => {
525525
ge("fixedEcefX").disabled = false;
526526
ge("fixedEcefY").disabled = false;
527527
ge("fixedEcefZ").disabled = false;
528-
//Disable Geographic inputs
528+
//Disable Geodetic inputs
529529
ge("fixedLat").disabled = true;
530530
ge("fixedLong").disabled = true;
531531
ge("fixedAltitude").disabled = true;
@@ -535,7 +535,7 @@ document.addEventListener("DOMContentLoaded", (event) => {
535535
ge("fixedEcefX").disabled = true;
536536
ge("fixedEcefY").disabled = true;
537537
ge("fixedEcefZ").disabled = true;
538-
//Disable Geographic inputs
538+
//Disable Geodetic inputs
539539
ge("fixedLat").disabled = false;
540540
ge("fixedLong").disabled = false;
541541
ge("fixedAltitude").disabled = false;
@@ -550,7 +550,7 @@ document.addEventListener("DOMContentLoaded", (event) => {
550550
ge("fixedEcefX").disabled = false;
551551
ge("fixedEcefY").disabled = false;
552552
ge("fixedEcefZ").disabled = false;
553-
//Disable Geographic inputs
553+
//Disable Geodetic inputs
554554
ge("fixedLat").disabled = true;
555555
ge("fixedLong").disabled = true;
556556
ge("fixedAltitude").disabled = true;
@@ -560,7 +560,7 @@ document.addEventListener("DOMContentLoaded", (event) => {
560560
ge("fixedEcefX").disabled = true;
561561
ge("fixedEcefY").disabled = true;
562562
ge("fixedEcefZ").disabled = true;
563-
//Disable Geographic inputs
563+
//Enable Geodetic inputs
564564
ge("fixedLat").disabled = false;
565565
ge("fixedLong").disabled = false;
566566
ge("fixedAltitude").disabled = false;
@@ -574,7 +574,7 @@ document.addEventListener("DOMContentLoaded", (event) => {
574574
ge("fixedEcefX").disabled = true;
575575
ge("fixedEcefY").disabled = true;
576576
ge("fixedEcefZ").disabled = true;
577-
//Enable Geographic inputs
577+
//Enable Geodetic inputs
578578
ge("fixedLat").disabled = false;
579579
ge("fixedLong").disabled = false;
580580
ge("fixedAltitude").disabled = false;
@@ -584,7 +584,7 @@ document.addEventListener("DOMContentLoaded", (event) => {
584584
ge("fixedEcefX").disabled = false;
585585
ge("fixedEcefY").disabled = false;
586586
ge("fixedEcefZ").disabled = false;
587-
//Disable Geographic inputs
587+
//Disable Geodetic inputs
588588
ge("fixedLat").disabled = true;
589589
ge("fixedLong").disabled = true;
590590
ge("fixedAltitude").disabled = true;

Firmware/RTK_Surveyor/Form.ino

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -183,14 +183,39 @@ void startConfigAP()
183183
#ifdef COMPILE_WIFI
184184
static void handleFirmwareFileUpload(AsyncWebServerRequest *request, String fileName, size_t index, uint8_t *data, size_t len, bool final)
185185
{
186-
//Todo check file name against valid firmware names
187-
188186
if (!index)
189187
{
190-
if (!Update.begin(UPDATE_SIZE_UNKNOWN))
188+
//Check file name against valid firmware names
189+
const char* BIN_EXT = "bin";
190+
const char* BIN_HEADER = "RTK_Surveyor_Firmware";
191+
192+
char fname[50]; //Handle long file names
193+
fileName.toCharArray(fname, sizeof(fname));
194+
fname[fileName.length()] = '\0'; //Terminate array
195+
196+
//Check 'bin' extension
197+
if (strcmp(BIN_EXT, &fname[strlen(fname) - strlen(BIN_EXT)]) == 0)
191198
{
192-
Update.printError(Serial);
193-
return request->send(400, "text/plain", "OTA could not begin");
199+
//Check for 'RTK_Surveyor_Firmware' start of file name
200+
if (strncmp(fname, BIN_HEADER, strlen(BIN_HEADER)) == 0)
201+
{
202+
//Begin update process
203+
if (!Update.begin(UPDATE_SIZE_UNKNOWN))
204+
{
205+
Update.printError(Serial);
206+
return request->send(400, "text/plain", "OTA could not begin");
207+
}
208+
}
209+
else
210+
{
211+
Serial.printf("Unknown: %s\n\r", fname);
212+
return request->send(400, "text/html", "<b>Error:</b> Unknown file type");
213+
}
214+
}
215+
else
216+
{
217+
Serial.printf("Unknown: %s\n\r", fname);
218+
return request->send(400, "text/html", "<b>Error:</b> Unknown file type");
194219
}
195220
}
196221

@@ -214,7 +239,7 @@ static void handleFirmwareFileUpload(AsyncWebServerRequest *request, String file
214239
Serial.println(fileName);
215240
request->send(200, "text/html", "<b>Done</b><br><br>Firmware update complete. RTK device is rebooting.");
216241
Serial.println("Restarting");
217-
delay(100);
242+
delay(500);
218243
ESP.restart();
219244
}
220245
}

0 commit comments

Comments
 (0)