X-Git-Url: https://glassweightruler.freedombox.rocks/gitweb/Ventoy.git/blobdiff_plain/44ff3dd8d4bd8152368e6d2da8b8ff3feabfbca6..9b7d6cbc3dc75d0d5fe998f57195e7c39dd0fcd4:/Plugson/src/Web/ventoy_http.c diff --git a/Plugson/src/Web/ventoy_http.c b/Plugson/src/Web/ventoy_http.c index a8a86df..aa1d87d 100644 --- a/Plugson/src/Web/ventoy_http.c +++ b/Plugson/src/Web/ventoy_http.c @@ -71,7 +71,7 @@ static const char *g_plugin_name[plugin_type_max] = "auto_memdisk", "dud" }; -static char g_ventoy_help_lang[MAX_LANGUAGE][8]; +static char g_ventoy_menu_lang[MAX_LANGUAGE][8]; static char g_pub_path[2 * MAX_PATH]; static data_control g_data_control[bios_max + 1]; @@ -521,7 +521,7 @@ void ventoy_data_default_control(data_control *data) data->secondary_menu_timeout = 0; strlcpy(data->default_kbd_layout, "QWERTY_USA"); - strlcpy(data->help_text_language, "en_US"); + strlcpy(data->menu_language, "en_US"); } int ventoy_data_cmp_control(data_control *data1, data_control *data2) @@ -551,7 +551,7 @@ int ventoy_data_cmp_control(data_control *data1, data_control *data2) if (strcmp(data1->default_search_root, data2->default_search_root) || strcmp(data1->default_image, data2->default_image) || strcmp(data1->default_kbd_layout, data2->default_kbd_layout) || - strcmp(data1->help_text_language, data2->help_text_language)) + strcmp(data1->menu_language, data2->menu_language)) { return 1; } @@ -594,7 +594,7 @@ int ventoy_data_save_control(data_control *data, const char *title, char *buf, i VTOY_JSON_FMT_CTRL_INT(L2, "VTOY_SECONDARY_TIMEOUT", secondary_menu_timeout); VTOY_JSON_FMT_CTRL_STRN(L2, "VTOY_DEFAULT_KBD_LAYOUT", default_kbd_layout); - VTOY_JSON_FMT_CTRL_STRN(L2, "VTOY_HELP_TXT_LANGUAGE", help_text_language); + VTOY_JSON_FMT_CTRL_STRN(L2, "VTOY_MENU_LANGUAGE", menu_language); if (strcmp(def->default_search_root, data->default_search_root)) { @@ -641,7 +641,7 @@ int ventoy_data_json_control(data_control *ctrl, char *buf, int buflen) VTOY_JSON_FMT_SINT("menu_timeout", ctrl->menu_timeout); VTOY_JSON_FMT_SINT("secondary_menu_timeout", ctrl->secondary_menu_timeout); VTOY_JSON_FMT_STRN("default_kbd_layout", ctrl->default_kbd_layout); - VTOY_JSON_FMT_STRN("help_text_language", ctrl->help_text_language); + VTOY_JSON_FMT_STRN("menu_language", ctrl->menu_language); valid = 0; if (ctrl->default_search_root[0] && ventoy_is_directory_exist("%s%s", g_cur_dir, ctrl->default_search_root)) @@ -660,16 +660,15 @@ int ventoy_data_json_control(data_control *ctrl, char *buf, int buflen) VTOY_JSON_FMT_STRN("default_image", ctrl->default_image); VTOY_JSON_FMT_SINT("default_image_valid", valid); - VTOY_JSON_FMT_KEY("help_list"); + VTOY_JSON_FMT_KEY("menu_list"); VTOY_JSON_FMT_ARY_BEGIN(); - for (i = 0; g_ventoy_help_lang[i][0]; i++) + for (i = 0; g_ventoy_menu_lang[i][0]; i++) { - VTOY_JSON_FMT_ITEM(g_ventoy_help_lang[i]); + VTOY_JSON_FMT_ITEM(g_ventoy_menu_lang[i]); } VTOY_JSON_FMT_ARY_ENDEX(); - - + VTOY_JSON_FMT_OBJ_END(); VTOY_JSON_FMT_END(pos); @@ -712,7 +711,7 @@ static int ventoy_api_save_control(struct mg_connection *conn, VTOY_JSON *json) VTOY_JSON_STR("default_image", ctrl->default_image); VTOY_JSON_STR("default_search_root", ctrl->default_search_root); - VTOY_JSON_STR("help_text_language", ctrl->help_text_language); + VTOY_JSON_STR("menu_language", ctrl->menu_language); VTOY_JSON_STR("default_kbd_layout", ctrl->default_kbd_layout); ret = ventoy_data_save_all(); @@ -919,9 +918,11 @@ static int ventoy_api_theme_add_file(struct mg_connection *conn, VTOY_JSON *json int ret; int index = 0; const char *path = NULL; + const char *realpath = NULL; path_node *node = NULL; path_node *cur = NULL; data_theme *data = NULL; + char pathbuf[MAX_PATH]; vtoy_json_get_int(json, "index", &index); data = g_data_theme + index; @@ -929,6 +930,19 @@ static int ventoy_api_theme_add_file(struct mg_connection *conn, VTOY_JSON *json path = VTOY_JSON_STR_EX("path"); if (path) { + realpath = ventoy_real_path(path); + scnprintf(pathbuf, sizeof(pathbuf), "%s", realpath); + + for (node = data->filelist; node; node = node->next) + { + realpath = ventoy_real_path(node->path); + if (strcmp(pathbuf, realpath) == 0) + { + ventoy_json_result(conn, VTOY_JSON_DUPLICATE); + return 0; + } + } + node = zalloc(sizeof(path_node)); if (node) { @@ -981,16 +995,31 @@ static int ventoy_api_theme_add_font(struct mg_connection *conn, VTOY_JSON *json int ret; int index = 0; const char *path = NULL; + const char *realpath = NULL; path_node *node = NULL; path_node *cur = NULL; data_theme *data = NULL; - + char pathbuf[MAX_PATH]; + vtoy_json_get_int(json, "index", &index); data = g_data_theme + index; path = VTOY_JSON_STR_EX("path"); if (path) { + realpath = ventoy_real_path(path); + scnprintf(pathbuf, sizeof(pathbuf), "%s", realpath); + + for (node = data->fontslist; node; node = node->next) + { + realpath = ventoy_real_path(node->path); + if (strcmp(pathbuf, realpath) == 0) + { + ventoy_json_result(conn, VTOY_JSON_DUPLICATE); + return 0; + } + } + node = zalloc(sizeof(path_node)); if (node) { @@ -3692,7 +3721,7 @@ static int ventoy_api_preview_json(struct mg_connection *conn, VTOY_JSON *json) goto json; } - utf16enclen = utf8_to_utf16((unsigned char *)JSON_SAVE_BUFFER, len, utf16buf, len + 2); + utf16enclen = (int)utf8_to_utf16((unsigned char *)JSON_SAVE_BUFFER, len, utf16buf, len + 2); encodebuf = (char *)malloc(utf16enclen * 4 + 16); if (!encodebuf) @@ -4074,13 +4103,13 @@ static int ventoy_parse_control(VTOY_JSON *json, void *p) } } } - else if (strcmp(child->pcName, "VTOY_HELP_TXT_LANGUAGE") == 0) + else if (strcmp(child->pcName, "VTOY_MENU_LANGUAGE") == 0) { - for (i = 0; g_ventoy_help_lang[i][0]; i++) + for (i = 0; g_ventoy_menu_lang[i][0]; i++) { - if (strcmp(child->unData.pcStrVal, g_ventoy_help_lang[i]) == 0) + if (strcmp(child->unData.pcStrVal, g_ventoy_menu_lang[i]) == 0) { - strlcpy(data->help_text_language, child->unData.pcStrVal); + strlcpy(data->menu_language, child->unData.pcStrVal); break; } } @@ -5316,25 +5345,26 @@ int ventoy_http_init(void) char *Buffer = NULL; int BufLen = 0; - ventoy_read_file_to_buf("www/helplist", 4, (void **)&Buffer, &BufLen); + ventoy_read_file_to_buf("www/menulist", 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; + memcpy(g_ventoy_menu_lang[i], Buffer + i * 5, 5); + g_ventoy_menu_lang[i][5] = 0; } free(Buffer); } #else ventoy_file *file; - file = ventoy_tar_find_file("www/helplist"); + + file = ventoy_tar_find_file("www/menulist"); 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; + memcpy(g_ventoy_menu_lang[i], (char *)(file->addr) + i * 5, 5); + g_ventoy_menu_lang[i][5] = 0; } } #endif