diff --git a/Plugson/src/Core/ventoy_util.h b/Plugson/src/Core/ventoy_util.h index 5866c0b8..357dccca 100644 --- a/Plugson/src/Core/ventoy_util.h +++ b/Plugson/src/Core/ventoy_util.h @@ -87,6 +87,7 @@ typedef struct SYSINFO { char buildtime[128]; int syntax_error; + int invalid_config; int language; int pathcase; diff --git a/Plugson/src/Web/ventoy_http.c b/Plugson/src/Web/ventoy_http.c index 96a6fa51..be24e375 100644 --- a/Plugson/src/Web/ventoy_http.c +++ b/Plugson/src/Web/ventoy_http.c @@ -322,6 +322,9 @@ static int ventoy_api_sysinfo(struct mg_connection *conn, VTOY_JSON *json) //read clear VTOY_JSON_FMT_SINT("syntax_error", g_sysinfo.syntax_error); g_sysinfo.syntax_error = 0; + + VTOY_JSON_FMT_SINT("invalid_config", g_sysinfo.invalid_config); + g_sysinfo.invalid_config = 0; #if defined(_MSC_VER) || defined(WIN32) @@ -4917,6 +4920,7 @@ static int ventoy_load_old_json(const char *filename) unsigned char *start = NULL; VTOY_JSON *json = NULL; VTOY_JSON *node = NULL; + VTOY_JSON *next = NULL; ret = ventoy_read_file_to_buf(filename, 4, (void **)&buffer, &buflen); if (ret) @@ -4950,6 +4954,18 @@ static int ventoy_load_old_json(const char *filename) { vlog("parse ventoy.json success\n"); + for (node = json->pstChild; node; node = node->pstNext) + for (next = node->pstNext; next; next = next->pstNext) + { + if (node->pcName && next->pcName && strcmp(node->pcName, next->pcName) == 0) + { + vlog("ventoy.json contains duplicate key <%s>.\n", node->pcName); + g_sysinfo.invalid_config = 1; + ret = 1; + goto end; + } + } + for (node = json->pstChild; node; node = node->pstNext) { ventoy_parse_json(control); @@ -4975,6 +4991,7 @@ static int ventoy_load_old_json(const char *filename) ret = 1; } +end: vtoy_json_destroy(json); free(buffer); diff --git a/Plugson/vs/VentoyPlugson/Release/VentoyPlugson.exe b/Plugson/vs/VentoyPlugson/Release/VentoyPlugson.exe index 8efd516b..21fcdbac 100644 Binary files a/Plugson/vs/VentoyPlugson/Release/VentoyPlugson.exe and b/Plugson/vs/VentoyPlugson/Release/VentoyPlugson.exe differ diff --git a/Plugson/www/index.html b/Plugson/www/index.html index 45731a0c..9037a947 100644 --- a/Plugson/www/index.html +++ b/Plugson/www/index.html @@ -723,7 +723,7 @@ @@ -777,6 +777,7 @@ //Main process var m_syntax_error; + var m_invalid_config; callVtoySync({ method : 'sysinfo' }, function(data) { @@ -784,6 +785,7 @@ g_current_dir = data.curdir; g_current_os = data.os; m_syntax_error = data.syntax_error; + m_invalid_config = data.invalid_config; @@ -833,6 +835,14 @@ }); m_syntax_error = 0; } + + if (m_invalid_config === 1 && typeof(Modal) === 'object') { + var title = g_current_language == 'en' ? g_vtoy_cur_language_en.STR_INFO : g_vtoy_cur_language_cn.STR_INFO; + var msg = g_current_language == 'en' ? g_vtoy_cur_language_en.STR_INVALID_CONFIG_TIP : g_vtoy_cur_language_cn.STR_INVALID_CONFIG_TIP; + Modal.alert({title:title,msg:msg}).on(function(e) { + }); + m_invalid_config = 0; + } setTimeout(function() { ventoy_handshake(); diff --git a/Plugson/www/static/js/vtoy.js b/Plugson/www/static/js/vtoy.js index cbffd04a..21f71b43 100644 --- a/Plugson/www/static/js/vtoy.js +++ b/Plugson/www/static/js/vtoy.js @@ -479,6 +479,7 @@ var g_vtoy_cur_language_en = "STR_SECURE_BOOT_ENABLE": "Enable", "STR_SECURE_BOOT_DISABLE": "Disable", "STR_SYNTAX_ERROR_TIP": "Syntax error detected in ventoy.json, so the configuration is not loaded!", + "STR_INVALID_CONFIG_TIP": "Invalid configuration detected in ventoy.json, so the configuration is not loaded!", "STR_XXX": "xxx" }; @@ -613,6 +614,7 @@ var g_vtoy_cur_language_cn = "STR_SECURE_BOOT_ENABLE": "开启", "STR_SECURE_BOOT_DISABLE": "未开启", "STR_SYNTAX_ERROR_TIP": "ventoy.json 文件中存在语法错误,配置未加载!", + "STR_INVALID_CONFIG_TIP": "ventoy.json 文件中存在错误配置,配置未加载!",