]> glassweightruler.freedombox.rocks Git - Ventoy.git/blobdiff - Plugson/src/Web/ventoy_http.c
Fix Plugson Web update issue.
[Ventoy.git] / Plugson / src / Web / ventoy_http.c
index 7ecce2215a325e0b37364cfa34cacb4f78b53dde..96a6fa51589930db652db33ac674371b74659dfe 100644 (file)
@@ -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];
@@ -510,6 +505,7 @@ int ventoy_data_cmp_control(data_control *data1, data_control *data2)
         data1->filter_vhd != data2->filter_vhd ||
         data1->filter_vtoy != data2->filter_vtoy ||
         data1->win11_bypass_check != data2->win11_bypass_check ||
+        data1->linux_remount != data2->linux_remount ||
         data1->menu_timeout != data2->menu_timeout)
     {
         return 1;
@@ -554,6 +550,7 @@ int ventoy_data_save_control(data_control *data, const char *title, char *buf, i
     VTOY_JSON_FMT_CTRL_INT(L2, "VTOY_FILE_FLT_VHD", filter_vhd);
     VTOY_JSON_FMT_CTRL_INT(L2, "VTOY_FILE_FLT_VTOY", filter_vtoy);
     VTOY_JSON_FMT_CTRL_INT(L2, "VTOY_WIN11_BYPASS_CHECK",  win11_bypass_check);
+    VTOY_JSON_FMT_CTRL_INT(L2, "VTOY_LINUX_REMOUNT",  linux_remount);
     VTOY_JSON_FMT_CTRL_INT(L2, "VTOY_MENU_TIMEOUT",  menu_timeout);
 
     VTOY_JSON_FMT_CTRL_STRN(L2, "VTOY_DEFAULT_KBD_LAYOUT", default_kbd_layout);        
@@ -598,6 +595,7 @@ int ventoy_data_json_control(data_control *ctrl, char *buf, int buflen)
     VTOY_JSON_FMT_SINT("filter_vhd", ctrl->filter_vhd);
     VTOY_JSON_FMT_SINT("filter_vtoy", ctrl->filter_vtoy);
     VTOY_JSON_FMT_SINT("win11_bypass_check",  ctrl->win11_bypass_check);
+    VTOY_JSON_FMT_SINT("linux_remount",  ctrl->linux_remount);
     VTOY_JSON_FMT_SINT("menu_timeout",  ctrl->menu_timeout);
     VTOY_JSON_FMT_STRN("default_kbd_layout",  ctrl->default_kbd_layout);
     VTOY_JSON_FMT_STRN("help_text_language",  ctrl->help_text_language);
@@ -622,7 +620,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]);        
     }
@@ -663,6 +661,7 @@ static int ventoy_api_save_control(struct mg_connection *conn, VTOY_JSON *json)
     VTOY_JSON_INT("filter_vhd", ctrl->filter_vhd);
     VTOY_JSON_INT("filter_vtoy", ctrl->filter_vtoy);
     VTOY_JSON_INT("win11_bypass_check", ctrl->win11_bypass_check);
+    VTOY_JSON_INT("linux_remount", ctrl->linux_remount);
     VTOY_JSON_INT("menu_timeout", ctrl->menu_timeout);
 
     VTOY_JSON_STR("default_image", ctrl->default_image);
@@ -3795,6 +3794,10 @@ static int ventoy_parse_control(VTOY_JSON *json, void *p)
             {
                 CONTROL_PARSE_INT(child, data->win11_bypass_check);
             }
+            else if (strcmp(child->pcName, "VTOY_LINUX_REMOUNT") == 0)
+            {
+                CONTROL_PARSE_INT(child, data->linux_remount);
+            }
             else if (strcmp(child->pcName, "VTOY_TREE_VIEW_MENU_STYLE") == 0)
             {
                 CONTROL_PARSE_INT(child, data->treeview_style);
@@ -3839,7 +3842,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 +5054,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;