From 85c84d992e3d0705a3f857664c419e9780d60ab5 Mon Sep 17 00:00:00 2001 From: Luiza Wille <lmwc14@inf.ufpr.br> Date: Thu, 1 Jun 2017 11:12:06 -0300 Subject: [PATCH] fixed the mount ipxe program and created an english version for it Signed-off-by: Luiza Wille <lmwc14@inf.ufpr.br> --- useful/mount-ipxe/makefile | 3 +- useful/mount-ipxe/mountIPXE | Bin 0 -> 19936 bytes useful/mount-ipxe/mountIPXE-en | Bin 0 -> 19936 bytes useful/mount-ipxe/mountIPXE-en.c | 245 +++++++++++++++++++++++++++++++ useful/mount-ipxe/mountIPXE.c | 5 +- 5 files changed, 249 insertions(+), 4 deletions(-) create mode 100755 useful/mount-ipxe/mountIPXE create mode 100755 useful/mount-ipxe/mountIPXE-en create mode 100644 useful/mount-ipxe/mountIPXE-en.c diff --git a/useful/mount-ipxe/makefile b/useful/mount-ipxe/makefile index ae6d7136..819d505e 100644 --- a/useful/mount-ipxe/makefile +++ b/useful/mount-ipxe/makefile @@ -2,6 +2,7 @@ all: mountIPXE mountIPXE: mountIPXE.c gcc `pkg-config --cflags gtk+-3.0` -o mountIPXE mountIPXE.c `pkg-config --libs gtk+-3.0` - + gcc `pkg-config --cflags gtk+-3.0` -o mountIPXE-en mountIPXE-en.c `pkg-config --libs gtk+-3.0` clean: rm mountIPXE + rm mountIPXE-en diff --git a/useful/mount-ipxe/mountIPXE b/useful/mount-ipxe/mountIPXE new file mode 100755 index 0000000000000000000000000000000000000000..7f4c555cc95af6cbc7808e31a0fbcd84f4658846 GIT binary patch literal 19936 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 Xp!|u=ehE8}W(J0Du!x6nG3*BbGx3zE literal 0 HcmV?d00001 diff --git a/useful/mount-ipxe/mountIPXE-en b/useful/mount-ipxe/mountIPXE-en new file mode 100755 index 0000000000000000000000000000000000000000..3322f4344c7997e3e2cfb1f19c96e35174a26215 GIT binary patch literal 19936 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 KMLdLyVLt$`w16A{ literal 0 HcmV?d00001 diff --git a/useful/mount-ipxe/mountIPXE-en.c b/useful/mount-ipxe/mountIPXE-en.c new file mode 100644 index 00000000..de0454d6 --- /dev/null +++ b/useful/mount-ipxe/mountIPXE-en.c @@ -0,0 +1,245 @@ +#include <gtk/gtk.h> +#include <stdlib.h> +#include <stdio.h> +#include <string.h> + +#define NUM_COUNT 5 // how many time until give up to get disks +#define ARQUIVO "./tmp" // file where the script writes the returns + +// global widgets +GtkEntry *entry; +GtkComboBoxText *comboboxtext; + +void remove_tmp_file (){ + int pid, status; + + pid = fork(); + if (pid == 0){ + execlp("./script.sh", "script.sh", "2", NULL); // call script to remove tmp file + exit(0); + } + waitpid(pid, &status, 0); // wait until remove the file +} + +// opens a file choose dialog +static void openFileDialog (GtkWidget *widget, gpointer data) +{ + GtkWidget *dialog; + gint res; + + dialog = gtk_file_chooser_dialog_new ("Open File", NULL, GTK_FILE_CHOOSER_ACTION_OPEN, ("_Cancel"), GTK_RESPONSE_CANCEL, ("_Open"), GTK_RESPONSE_ACCEPT, NULL); + res = gtk_dialog_run (GTK_DIALOG(dialog)); + if (res == GTK_RESPONSE_ACCEPT) + { + // when a file is selected text in the entry has to be changed too + gtk_entry_set_text (GTK_ENTRY(data), gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog))); + } + gtk_widget_destroy(dialog); +} + +// gets the pen drive and the file selected, verify and call the script +static void confirm (GObject *widget, gpointer data) +{ + FILE *file; + int resp, pid, status; + GtkWidget *dialog; + gchar *disk; + gchar *image; + + // store the strings for the pen drive and the file + disk = gtk_combo_box_text_get_active_text(comboboxtext); + image = (gchar *) gtk_entry_get_text(entry); + + // verify if a file was selected + if (!strcmp(image, "")){ + dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "Error!\n No file was selected."); + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); + return; + } + + // verify if a pen drive was selected + if (disk == NULL){ + dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "Error!\n No pen drive was selected."); + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); + return; + } + + // asks the user to confirm + dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, "Are you sure you want to format your device?\nContinuing, all the data inside the pen drive %s will be deleted!", disk); + resp = gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); + + if (resp == GTK_RESPONSE_OK){ + // after confirmation it will call the script to format the pen drive + pid = fork(); + if (pid == 0){ + execlp("./script.sh", "script.sh", "1", strtok(disk, " "), image, NULL); + exit(0); + } + waitpid(pid, &status, 0); // wait until script is finished + + // the script will return to a file that should be created every time + file = fopen(ARQUIVO, "r"); + if (file == NULL) + resp = 3; // should never go here, but strange things can happen and we must be prepared + else{ + fscanf(file, "%d", &resp); // get the script response + fclose(file); + } + + if (resp == 0){ + // format sucess + dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "Success!\nThe pen drive %s was formated correctly and it is ready to boot.", disk); + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); + } + + // errors may have ocurred + if (resp == 1){ + // format error (mkfs) + dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "Error!\n It was not possible to format the pen drive %s correctly.", disk); + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); + } + if (resp == 2){ + // error while copying the image to pen drive + dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "Error!\n It was not possible to save the image %s in the pen drive %s", image, disk); + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); + } + if (resp == 3){ + // error while copying the image to pen drive + dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "Error!\n Some unexpected error happened!"); + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); + } + remove_tmp_file(); + } +} + +// gets all pen drives connected, has to be called after the script +char *get_disks(){ + GtkWidget *dialog; + FILE *file; + int tam, cont = 0; + char *buf; + int pid, status; + + pid = fork(); + if (pid == 0){ + execlp("./script.sh", "script.sh", "0", NULL); // call get_disks from the script + exit(0); + } + + waitpid(pid, &status, 0); + + // wait until the file is created by the script with the pen drives connected + file = fopen(ARQUIVO, "r"); + + if (file == NULL){ + // no pen drive connected + dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "Error!\n No pen drive was found. Insert one and click to refresh."); + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); + return NULL; + } + + // got the file, now store all information in a string + fseek(file, 0, SEEK_END); + tam = ftell(file); + fseek(file, 0, SEEK_SET); + buf = (char *) malloc (tam*sizeof(char)); + fread(buf, tam, 1, file); + + fclose(file); + remove_tmp_file(); + return buf; +} + +// update the list of pen drives connected in the combo box text +void box_update(){ + char *usb_disks, *disk; + + // remove all lines in combo box + gtk_combo_box_text_remove_all(comboboxtext); + + // gets the new list of pen drives connected and for each one + usb_disks = get_disks(); + if (usb_disks != NULL){ + disk = strtok(usb_disks, "\n"); + while (disk != NULL){ + gtk_combo_box_text_append_text(comboboxtext, disk); + disk = strtok(NULL, "\n"); + } + + // sets the first on the list as active + gtk_combo_box_set_active(GTK_COMBO_BOX(comboboxtext), 0); + + free(usb_disks); + } +} + +// control the layout and callbacks of events +static void activate (GtkApplication* app, gpointer user_data) +{ + GtkWidget *window; + GtkWidget *label; + GtkWidget *button; + GtkWidget *grid; + + window = gtk_application_window_new(app); + gtk_window_set_title(GTK_WINDOW (window), "Create bootable USB device."); + //gtk_window_set_default_size(GTK_WINDOW (window), 400, 300); + gtk_container_set_border_width(GTK_CONTAINER (window), 10); + + grid = gtk_grid_new(); + gtk_grid_set_row_spacing(GTK_GRID(grid), 5); + gtk_grid_set_column_spacing(GTK_GRID(grid), 5); + gtk_container_add(GTK_CONTAINER (window), grid); + + label = gtk_label_new("Select the IPXE boot file:"); + gtk_grid_attach(GTK_GRID (grid), label, 0, 0, 1, 1); + + entry = GTK_ENTRY(gtk_entry_new()); + gtk_grid_attach(GTK_GRID (grid), GTK_WIDGET(entry), 0, 1, 6, 1); + + button = gtk_button_new_with_label("..."); + gtk_grid_attach_next_to(GTK_GRID (grid), button, GTK_WIDGET(entry), GTK_POS_RIGHT, 1, 1); + g_signal_connect(button, "clicked", G_CALLBACK(openFileDialog), entry); + + label = gtk_label_new("Select the device that will be used:"); + gtk_grid_attach(GTK_GRID (grid), label, 0, 2, 1, 1); + + comboboxtext = GTK_COMBO_BOX_TEXT(gtk_combo_box_text_new()); + + gtk_grid_attach(GTK_GRID(grid), GTK_WIDGET(comboboxtext), 0, 3, 1, 1); + + button = gtk_button_new_with_label("Refresh"); + g_signal_connect_swapped(button, "clicked", G_CALLBACK(box_update), NULL); + gtk_grid_attach_next_to(GTK_GRID(grid), button, GTK_WIDGET(comboboxtext), GTK_POS_RIGHT, 1, 1); + + button = gtk_button_new_with_label("Cancel"); + g_signal_connect_swapped(button, "clicked", G_CALLBACK(gtk_widget_destroy), window); + gtk_grid_attach(GTK_GRID(grid), button, 0, 4, 1, 1); + + button = gtk_button_new_with_label("Create"); + g_signal_connect(button, "clicked", G_CALLBACK(confirm), NULL); + gtk_grid_attach(GTK_GRID(grid), button, 1, 4, 1, 1); + + gtk_widget_show_all(window); +} + +int main (int argc, char **argv) +{ + GtkApplication *app; + int status; + + app = gtk_application_new("org.gtk.example", G_APPLICATION_FLAGS_NONE); + g_signal_connect(app, "activate", G_CALLBACK(activate), NULL); + status = g_application_run(G_APPLICATION(app), argc, argv); + g_object_unref(app); + + return status; +} diff --git a/useful/mount-ipxe/mountIPXE.c b/useful/mount-ipxe/mountIPXE.c index 1288de5e..3e1df76c 100644 --- a/useful/mount-ipxe/mountIPXE.c +++ b/useful/mount-ipxe/mountIPXE.c @@ -199,7 +199,7 @@ static void activate (GtkApplication* app, gpointer user_data) gtk_grid_set_column_spacing(GTK_GRID(grid), 5); gtk_container_add(GTK_CONTAINER (window), grid); - label = gtk_label_new("Selcione o arquivo de boot do IPXE:"); + label = gtk_label_new("Selecione o arquivo de boot do IPXE:"); gtk_grid_attach(GTK_GRID (grid), label, 0, 0, 1, 1); entry = GTK_ENTRY(gtk_entry_new()); @@ -209,7 +209,7 @@ static void activate (GtkApplication* app, gpointer user_data) gtk_grid_attach_next_to(GTK_GRID (grid), button, GTK_WIDGET(entry), GTK_POS_RIGHT, 1, 1); g_signal_connect(button, "clicked", G_CALLBACK(openFileDialog), entry); - label = gtk_label_new("Selcione o dispositivo que serĂ¡ utilizado:"); + label = gtk_label_new("Selecione o dispositivo que serĂ¡ utilizado:"); gtk_grid_attach(GTK_GRID (grid), label, 0, 2, 1, 1); comboboxtext = GTK_COMBO_BOX_TEXT(gtk_combo_box_text_new()); @@ -235,7 +235,6 @@ int main (int argc, char **argv) { GtkApplication *app; int status; - app = gtk_application_new("org.gtk.example", G_APPLICATION_FLAGS_NONE); g_signal_connect(app, "activate", G_CALLBACK(activate), NULL); status = g_application_run(G_APPLICATION(app), argc, argv); -- GitLab