Skip to content

Commit 38b44c4

Browse files
committed
Add some file check when listing
Add check 8.3 filename for Marlin upload to avoid issue
1 parent 62dfc6c commit 38b44c4

File tree

8 files changed

+132
-13
lines changed

8 files changed

+132
-13
lines changed

index.html.gz

790 Bytes
Binary file not shown.

www/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<meta name="viewport" content="width=device-width, initial-scale=1">
77
<title>ESP3D WebUI</title>
88
<script>var target_firmware="";</script>
9-
<script>var web_ui_version="0.9.54LE";</script>
9+
<script>var web_ui_version="0.9.60LE";</script>
1010
<script>var direct_sd=false;</script>
1111
<script>var fw_version="";</script>
1212
<script>var primary_sd= "/ext/";</script>
@@ -58,7 +58,7 @@
5858
</center>
5959
</div>
6060
<div class="menu-divider"></div>
61-
<a href="https://github.com/luc-github/ESP3D" >
61+
<a href="https://github.com/luc-github/ESP3D" >
6262
<span class="pull-right" translate>Firmware</span>
6363
<span class="pull-left">
6464
<svg width='1.3em' height='1.2em' viewBox='0 0 1300 1200'>

www/js/files.js

Lines changed: 40 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,19 @@ function files_serial_M20_list_success(response_text){
368368
files_serial_M20_list_display();
369369
}
370370

371+
function files_is_filename (file_name) {
372+
var answer = true;
373+
var s_name = String(file_name);
374+
var rg1=/^[^\\/:\*\?"<>\|]+$/; // forbidden characters \ / : * ? " < > |
375+
var rg2=/^\./; // cannot start with dot (.)
376+
var rg3=/^(nul|prn|con|lpt[0-9]|com[0-9])(\.|$)/i; // forbidden file names
377+
//a
378+
answer = rg1.test(file_name)&&!rg2.test(file_name)&&!rg3.test(file_name)
379+
if ((s_name.length == 0) || (s_name.indexOf(":") != -1) || (s_name.indexOf("..") != -1)) answer = false;
380+
381+
return answer;
382+
}
383+
371384
function files_serial_ls_list_success(response_text){
372385
var tlist = response_text.split("\n");
373386
for (var i=0; i < tlist.length; i++){
@@ -388,8 +401,10 @@ function files_serial_ls_list_success(response_text){
388401
fsize = files_format_size(parseInt(line.substr(pos+1)));
389402
}
390403
var isprint = files_showprintbutton(file_name,isdirectory);
391-
var file_entry = {name:file_name, size: fsize, isdir: isdirectory, datetime: d, isprintable: isprint};
392-
files_file_list.push(file_entry);
404+
if (files_is_filename (file_name)) {
405+
var file_entry = {name:file_name, size: fsize, isdir: isdirectory, datetime: d, isprintable: isprint};
406+
files_file_list.push(file_entry);
407+
}
393408
}
394409
}
395410
files_build_display_filelist();
@@ -544,7 +559,26 @@ function files_select_upload(){
544559
}
545560

546561
function files_check_if_upload(){
547-
562+
var canupload = true;
563+
var files = document.getElementById("files_input_file").files;
564+
if ( target_firmware == "marlin" ) {
565+
for (var i = 0; i < files.length; i++) {
566+
var filename = files[i].name;
567+
//check base name can only by 8
568+
var sizename = filename.indexOf(".");
569+
if (sizename == -1) sizename = filename.length;
570+
if (sizename > 8) canupload = false;
571+
//check extension cano be more than 4 ".xxx"
572+
if ((filename.length - sizename)>4) canupload = false;
573+
//check only one dot
574+
if (filename.indexOf(".") != filename.lastIndexOf("."))canupload = false;
575+
}
576+
if (canupload == false)
577+
{
578+
alertdlg (translate_text_item("Error"), translate_text_item("Please use 8.3 filename only."));
579+
return;
580+
}
581+
}
548582
if (direct_sd && !( target_firmware == "smoothieware" && files_currentPath.startsWith(secondary_sd))){
549583
SendPrinterCommand("[ESP200]", false, process_check_sd_presence );
550584
} else {
@@ -591,10 +625,10 @@ function files_start_upload(){
591625
}
592626
var url = "/upload";
593627
var path = files_currentPath;
594-
if (direct_sd && !( target_firmware == "smoothieware" && files_currentPath.startsWith(secondary_sd))){
628+
if (direct_sd && (target_firmware == "smoothieware" ) && (files_currentPath.startsWith(primary_sd))){
595629
path = files_currentPath.substring(primary_sd.length);
596630
}
597-
if (!direct_sd || ( target_firmware == "smoothieware" && files_currentPath.startsWith(secondary_sd))){
631+
if (!direct_sd || ( target_firmware == "smoothieware" && files_currentPath.startsWith(secondary_sd))){
598632
url = "/upload_serial";
599633
if (target_firmware == "smoothieware" ) {
600634
if (files_currentPath.startsWith(secondary_sd)) path = files_currentPath.substring(secondary_sd.length);
@@ -603,6 +637,7 @@ function files_start_upload(){
603637
}
604638
//console.log("upload from " + path );
605639
var files = document.getElementById("files_input_file").files;
640+
606641
if (files.value == "" || typeof files[0].name === 'undefined') {
607642
console.log("nothing to upload");
608643
return;

www/js/language/fr.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,5 +222,7 @@ var frenchtrans = {
222222
"Login":"Connexion",
223223
"Log out":"D&eacute;connexion",
224224
"Password":"Mot de passe",
225-
"No SD Card":"Pas de Carte SD"
225+
"No SD Card":"Pas de Carte SD",
226+
"Check for Update":"V&eacute;rification de MAJ au d&eacute;marrage",
227+
"Please use 8.3 filename only.":"Utilisez des noms de fichier au format 8.3 uniquement."
226228
};

www/js/language/ge.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,5 +222,7 @@ var germantrans = {
222222
"Login":"Login",
223223
"Log out":"Log out",
224224
"Password":"Password",
225-
"No SD Card":"No SD Card"
225+
"No SD Card":"No SD Card",
226+
"Check for Update":"Auf update &uuml;berpr&uuml;fen",
227+
"Please use 8.3 filename only.":"Bitte verwenden sie nur den 8.3-dateinamen."
226228
};

www/js/language/sp.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,5 +222,7 @@ var spanishtrans = {
222222
"Login":"Acceder",
223223
"Log out":"Cerrar sesi&oacute;n",
224224
"Password":"Contrase&ntilde;a",
225-
"No SD Card":"No Tarjeta SD"
225+
"No SD Card":"No Tarjeta SD",
226+
"Check for Update":"Buscar actualizaciones",
227+
"Please use 8.3 filename only.":"Utilizar s&oacute;lo el nombre de archivo de formato 8.3"
226228
};

www/js/setup.js

Lines changed: 73 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
//setup dialog
22

33
var active_wizard_page = 0;
4-
var maz_page_wizard = 4;
4+
var maz_page_wizard = 5;
55

66
function setupdlg () {
77
setup_is_done = false;
@@ -21,6 +21,18 @@ function setupdlg () {
2121
document.getElementById("step2link").className = "steplinks disabled";
2222
//reset page 3
2323
document.getElementById("step2link").className= document.getElementById("step2link").className.replace( " wizard_done", "");
24+
document.getElementById("wizard_line3").style.background = "#e0e0e0";
25+
document.getElementById("step3link").disabled = true;
26+
document.getElementById("step3link").className = "steplinks disabled";
27+
if (!direct_sd) {
28+
document.getElementById("step3link").style.display='none';
29+
document.getElementById("wizard_line4").style.display='none';
30+
}else {
31+
document.getElementById("step3link").style.display='block';
32+
document.getElementById("wizard_line4").style.display='block';
33+
}
34+
//reset page 4
35+
document.getElementById("step3link").className= document.getElementById("step3link").className.replace( " wizard_done", "");
2436
document.getElementById("wizard_line4").style.background = "#e0e0e0";
2537
document.getElementById("endsteplink").disabled = true;
2638
document.getElementById("endsteplink").className = "steplinks disabled";
@@ -59,9 +71,17 @@ function continue_setup_wizard(){
5971
enablestep2();
6072
break;
6173
case 3:
62-
enablestep4();
74+
if (!direct_sd) {
75+
active_wizard_page++;
76+
document.getElementById("wizard_line3").style.background = "#337AB7";
77+
enablestep4();
78+
}
79+
else enablestep3();
6380
break;
6481
case 4:
82+
enablestep4();
83+
break;
84+
case 5:
6585
closeModal('ok')
6686
break;
6787
default:
@@ -156,11 +176,61 @@ function enablestep2() {
156176
document.getElementById("step2link").click();
157177
}
158178

159-
function enablestep4() {
179+
function define_sd_role(index) {
180+
if (setting_configList[index].defaultvalue == 1){
181+
document.getElementById("setup_SD").style.display = "block";
182+
if (target_firmware == "smoothieware")document.getElementById("setup_primary_SD").style.display = "block";
183+
else document.getElementById("setup_primary_SD").style.display = "none";
184+
} else {
185+
document.getElementById("setup_SD").style.display = "none";
186+
document.getElementById("setup_primary_SD").style.display = "none";
187+
}
188+
}
189+
190+
function enablestep3() {
191+
var content ="";
160192
if (document.getElementById("step2link").className.indexOf("wizard_done") == -1){
161193
document.getElementById("step2link").className += " wizard_done";
162194
if (!can_revert_wizard) document.getElementById("step2link").className += " no_revert_wizard";
163195
}
196+
document.getElementById("wizard_line3").style.background = "#337AB7";
197+
document.getElementById("step3link").disabled = "";
198+
document.getElementById("step3link").className=document.getElementById("step3link").className.replace(" disabled", "");
199+
index = get_index_from_eeprom_pos(850);
200+
content+= "<h4>" + translate_text_item( "SD Card Configuration") + "</h4><hr>";
201+
content+= translate_text_item( "Is ESP connected to SD card:") + "<table><tr><td>";
202+
content+=build_control_from_index(index, "define_sd_role");
203+
content+= "</td></tr></table>";
204+
content+="<hr>\n";
205+
content+="<div id='setup_SD'>";
206+
index = get_index_from_eeprom_pos(853);
207+
content+= translate_text_item( "Check update using direct SD access:") + "<table><tr><td>";
208+
content+=build_control_from_index(index);
209+
content+= "</td></tr></table>";
210+
content+="<hr>\n";
211+
content+="<div id='setup_primary_SD'>";
212+
index = get_index_from_eeprom_pos(851);
213+
content+= translate_text_item( "SD card connected to ESP") + "<table><tr><td>";
214+
content+=build_control_from_index(index);
215+
content+= "</td></tr></table>";
216+
content+="<hr>\n";
217+
index = get_index_from_eeprom_pos(852);
218+
content+= translate_text_item( "SD card connected to printer") + "<table><tr><td>";
219+
content+=build_control_from_index(index);
220+
content+= "</td></tr></table>";
221+
content+="<hr>\n";
222+
content+="</div>";
223+
content+="</div>";
224+
document.getElementById("step3").innerHTML =content;
225+
define_sd_role(get_index_from_eeprom_pos(850));
226+
document.getElementById("step3link").click();
227+
}
228+
229+
function enablestep4() {
230+
if (document.getElementById("step3link").className.indexOf("wizard_done") == -1){
231+
document.getElementById("step3link").className += " wizard_done";
232+
if (!can_revert_wizard) document.getElementById("step3link").className += " no_revert_wizard";
233+
}
164234
document.getElementById("wizard_button").innerHTML = translate_text_item( "Close");
165235
document.getElementById("wizard_line4").style.background = "#337AB7";
166236
document.getElementById("endsteplink").disabled = "";

www/sub/setupdlg.html

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,14 @@
3030
</g>
3131
</svg>
3232
</button>
33+
<div class="steplinks connecting-line" id="wizard_line3"></div>
34+
<button class="steplinks disabled" onclick="openstep(event, 'step3')" id="step3link" disabled>
35+
<svg width='1.3em' height='1.2em' viewBox='0 0 1300 1200'>
36+
<g transform='translate(50,1200) scale(1, -1)'>
37+
<path fill='currentColor' d='M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z' />
38+
</g>
39+
</svg>
40+
</button>
3341
<div class="steplinks connecting-line" id="wizard_line4"></div>
3442
<button class="steplinks disabled" onclick="openstep(event, 'endstep')" id="endsteplink" disabled>
3543
<svg width='1.3em' height='1.2em' viewBox='0 0 1300 1200'>

0 commit comments

Comments
 (0)