diff --git a/.github/ISSUE_TEMPLATE/issue_template.yml b/.github/ISSUE_TEMPLATE/issue_template.yml index 3003f364..d0e78bb3 100644 --- a/.github/ISSUE_TEMPLATE/issue_template.yml +++ b/.github/ISSUE_TEMPLATE/issue_template.yml @@ -21,7 +21,7 @@ body: attributes: label: Ventoy Version description: What version of ventoy are you running? - placeholder: 1.0.61 + placeholder: 1.0.62 validations: required: true - type: dropdown diff --git a/Plugson/build.sh b/Plugson/build.sh index d53b48c6..095d0709 100644 --- a/Plugson/build.sh +++ b/Plugson/build.sh @@ -76,4 +76,3 @@ build_func "gcc -m32" '32' 'i386' build_func "aarch64-linux-gnu-gcc" 'aa64' 'aarch64' build_func "mips-linux-gnu-gcc -mips64r2 -mabi=64" 'm64e' 'mips64el' - diff --git a/Plugson/pack.sh b/Plugson/pack.sh index 6eed00ed..46fbf032 100644 --- a/Plugson/pack.sh +++ b/Plugson/pack.sh @@ -17,6 +17,10 @@ if [ -f ./www.tar.xz ]; then rm -f ./www.tar.xz fi +[ -f ./www/helplist ] && rm -f ./www/helplist +ls -1 ../INSTALL/grub/help/ | while read line; do + echo -n ${line:0:5} >> ./www/helplist +done echo -n "$plugson_verion" > ./www/buildtime tar cf www.tar www diff --git a/Plugson/src/Web/ventoy_http.c b/Plugson/src/Web/ventoy_http.c index 7ecce221..7f17a4b5 100644 --- a/Plugson/src/Web/ventoy_http.c +++ b/Plugson/src/Web/ventoy_http.c @@ -60,12 +60,7 @@ static const char *g_ventoy_kbd_layout[] = NULL }; -static const char *g_ventoy_help_lang[] = -{ - "de_DE", "en_US", "fr_FR", "hr_HR", "id_ID", "pt_PT", "sr_CY", "sr_SR", "tr_TR", "zh_CN", - - NULL -}; +static char g_ventoy_help_lang[MAX_LANGUAGE][8]; static char g_pub_path[2 * MAX_PATH]; static data_control g_data_control[bios_max + 1]; @@ -622,7 +617,7 @@ int ventoy_data_json_control(data_control *ctrl, char *buf, int buflen) VTOY_JSON_FMT_KEY("help_list"); VTOY_JSON_FMT_ARY_BEGIN(); - for (i = 0; g_ventoy_help_lang[i]; i++) + for (i = 0; g_ventoy_help_lang[i][0]; i++) { VTOY_JSON_FMT_ITEM(g_ventoy_help_lang[i]); } @@ -3839,7 +3834,7 @@ static int ventoy_parse_control(VTOY_JSON *json, void *p) } else if (strcmp(child->pcName, "VTOY_HELP_TXT_LANGUAGE") == 0) { - for (i = 0; g_ventoy_help_lang[i]; i++) + for (i = 0; g_ventoy_help_lang[i][0]; i++) { if (strcmp(child->unData.pcStrVal, g_ventoy_help_lang[i]) == 0) { @@ -5051,11 +5046,41 @@ int ventoy_http_stop(void) int ventoy_http_init(void) { + int i = 0; + +#ifdef VENTOY_SIM + char *Buffer = NULL; + int BufLen = 0; + + ventoy_read_file_to_buf("www/helplist", 4, (void **)&Buffer, &BufLen); + if (Buffer) + { + for (i = 0; i < BufLen / 5; i++) + { + memcpy(g_ventoy_help_lang[i], Buffer + i * 5, 5); + g_ventoy_help_lang[i][5] = 0; + } + free(Buffer); + } +#else + ventoy_file *file; + file = ventoy_tar_find_file("www/helplist"); + if (file) + { + for (i = 0; i < file->size / 5; i++) + { + memcpy(g_ventoy_help_lang[i], (char *)(file->addr) + i * 5, 5); + g_ventoy_help_lang[i][5] = 0; + } + } +#endif + if (!g_pub_json_buffer) { g_pub_json_buffer = malloc(JSON_BUF_MAX * 2); g_pub_save_buffer = g_pub_json_buffer + JSON_BUF_MAX; - } + } + pthread_mutex_init(&g_api_mutex, NULL); return 0; diff --git a/Plugson/src/Web/ventoy_http.h b/Plugson/src/Web/ventoy_http.h index 904fe05e..d5607df1 100644 --- a/Plugson/src/Web/ventoy_http.h +++ b/Plugson/src/Web/ventoy_http.h @@ -22,6 +22,7 @@ #include +#define MAX_LANGUAGE 128 #define L1 " " #define L2 " " diff --git a/Plugson/vs/VentoyPlugson/Release/VentoyPlugson.exe b/Plugson/vs/VentoyPlugson/Release/VentoyPlugson.exe index d33e7be9..79fbbbef 100644 Binary files a/Plugson/vs/VentoyPlugson/Release/VentoyPlugson.exe and b/Plugson/vs/VentoyPlugson/Release/VentoyPlugson.exe differ diff --git a/Plugson/www/buildtime b/Plugson/www/buildtime index 38f77a72..483a8bfc 100644 --- a/Plugson/www/buildtime +++ b/Plugson/www/buildtime @@ -1 +1 @@ -20211201 20:08:18 \ No newline at end of file +20211203 17:44:10 \ No newline at end of file diff --git a/Plugson/www/helplist b/Plugson/www/helplist new file mode 100644 index 00000000..3cd79e60 --- /dev/null +++ b/Plugson/www/helplist @@ -0,0 +1 @@ +de_DEen_USfr_FRhr_HRid_IDja_JPpt_PTsr_CYsr_SRtr_TRzh_CN \ No newline at end of file diff --git a/Plugson/www/index.html b/Plugson/www/index.html index 66cc32ce..ed601cda 100644 --- a/Plugson/www/index.html +++ b/Plugson/www/index.html @@ -723,7 +723,7 @@ diff --git a/Plugson/www/plugson_menu_class.html b/Plugson/www/plugson_menu_class.html index 940bd6db..c451662c 100644 --- a/Plugson/www/plugson_menu_class.html +++ b/Plugson/www/plugson_menu_class.html @@ -169,11 +169,6 @@ } } - if (extra.indexOf("\"") >= 0) { - Message.error(g_current_language === 'en' ? "Class can not contains double quotes." : "Class 不能包含双引号。"); - return; - } - callVtoy({ method : 'class_add', index: current_tab_index, @@ -188,6 +183,11 @@ } function OnAddKeyClass(key, value) { + if (!ventoy_check_file_name_char(key)) { + Message.error(g_current_language === 'en' ? "As part of file name, key can not include invalid characters!" : "作为文件名的一部分,key 中不能包含特殊的符号!"); + return; + } + AddClassEntry(key, 0, 1, value); } diff --git a/Plugson/www/static/js/jquery.validate.vtoymethods.js b/Plugson/www/static/js/jquery.validate.vtoymethods.js index 624c40e5..9e640b9b 100644 --- a/Plugson/www/static/js/jquery.validate.vtoymethods.js +++ b/Plugson/www/static/js/jquery.validate.vtoymethods.js @@ -1,3 +1,16 @@ +function ventoy_check_file_name_char(path) { + for (var i = 0; i < path.length; i++) { + var cc = path[i]; + if (cc === '/' || cc === '\\' || cc === '*' || cc === '?' || cc === '"' || cc === '<' || cc === '>' || cc === '|') + { + return false; + } + } + + return true; +} + + (function(factory) { if (typeof define === "function" && define.amd) { define(["jquery", "../jquery.validate"], factory); @@ -62,6 +75,14 @@ return true; }, 'Can not contain double quotes'); + + $.validator.addMethod('filenamepart', function(value, element, params) { + if (this.optional(element)) { + return true; + } + + return ventoy_check_file_name_char(value); + }, 'Invalid characters'); $.validator.addMethod('printascii', function(value, element, params) { diff --git a/Plugson/www/static/js/vtoy.js b/Plugson/www/static/js/vtoy.js index aee33796..419dbbf1 100644 --- a/Plugson/www/static/js/vtoy.js +++ b/Plugson/www/static/js/vtoy.js @@ -896,6 +896,7 @@ function VtoyCommonChangeLanguage(newlang) { utfmaxlen: $.validator.format("The string exceeds the maximum supported length"), start_slash: $.validator.format("Must start with /"), noquotes: $.validator.format("Can not include double quotes"), + filenamepart:$.validator.format("As part of file name, can not include invalid characters"), printascii: $.validator.format("Can not include non-ascii characters.") }); @@ -941,6 +942,7 @@ function VtoyCommonChangeLanguage(newlang) { utfmaxlen: $.validator.format("超过最大长度"), start_slash: $.validator.format("必须以反斜杠 / 开头"), noquotes: $.validator.format("不能包含双引号"), + filenamepart:$.validator.format("作为文件名的一部分,不能包含特殊的符号"), printascii: $.validator.format("不能包含中文或其他非 ascii 字符。") }); @@ -1102,7 +1104,8 @@ var g_set_key_validator = $("#SetKeyForm").validate({ }, SetKeyValue : { required: true, - utfmaxlen: true + utfmaxlen: true, + filenamepart: true } },