diff --git a/useful/stg312/.size.out b/useful/stg312/.size.out index 0d99857458ce8761e81a73517efd8809e496582d..00ab0c3375201fa89b6ae7a15302a9604c2240ab 100644 --- a/useful/stg312/.size.out +++ b/useful/stg312/.size.out @@ -1 +1 @@ -1729704 teste-versao-comentada.r1.tar.gz +1729732 teste-libs-inuteis.r1.tar.gz diff --git a/useful/stg312/.upid.out b/useful/stg312/.upid.out index bc0a8da65e34c6fd9d88ee9f973f659629268847..c18e07032f0c2d49bba1a63751f464d682ec7d42 100644 --- a/useful/stg312/.upid.out +++ b/useful/stg312/.upid.out @@ -1 +1 @@ -{"uploadid":"SKwGngE2ZgVnuqkUUMZrASSGPktr5iWQQeb","status":"ok","code":"003","msg":"New upload succesful"} \ No newline at end of file +{"uploadid":"xKo1qTyEi3RtsCyZow6VoeOHVF2sJfzSdtP","status":"ok","code":"003","msg":"New upload succesful"} \ No newline at end of file diff --git a/useful/stg312/openslx_gui b/useful/stg312/openslx_gui index a60e4435be36a17ef973b96338014689d38f500b..6bcb70548ab041c18e438a225b8f37ddeb7cd7ae 100755 Binary files a/useful/stg312/openslx_gui and b/useful/stg312/openslx_gui differ diff --git a/useful/stg312/openslx_gui.c b/useful/stg312/openslx_gui.c index d3520483fc4a8e17331c72bf46cd8052ad476b00..4da53e6631e4100d8b934e5f005926725be1b3bd 100644 --- a/useful/stg312/openslx_gui.c +++ b/useful/stg312/openslx_gui.c @@ -6,7 +6,6 @@ #include <sys/wait.h> #include "utils.h" #include "stg4.h" -#include <X11/Xlib.h> #include <gdk/gdkkeysyms.h> #include <unistd.h> #include <locale.h> @@ -18,12 +17,18 @@ //FUnção que mostra a tela de upload antigo, caso ele exista void tela_upload_antigo(GtkWidget *w,gpointer p){ + GtkWidget *window_upload_antigo, *janela_ant, *button_continua_upload, *button_nao_continua, *label_nome_imagem, *label_parte_upload; GtkBuilder *builder; FILE *upload_in_progress; char *old_upload; old_upload = malloc(255*sizeof(char)); + #ifdef DEBUG + puts("Entrou na tela de upload antigo"); + puts(""); + #endif /*DEBUG*/ + dados *data_ant = p; //Pega os dados recebidos pela chamada da função janela_ant = (GtkWidget*) data_ant->dado1; //Pega a janela antiga que chamou essa nova janela @@ -36,6 +41,11 @@ void tela_upload_antigo(GtkWidget *w,gpointer p){ label_nome_imagem = GTK_WIDGET(gtk_builder_get_object(builder, "label_nome_imagem")); label_parte_upload = GTK_WIDGET(gtk_builder_get_object(builder, "label_parte_upload")); + #ifdef DEBUG + puts("Vai abrir o arquivo de upload antigo"); + puts(""); + #endif /*DEBUG*/ + upload_in_progress = fopen(".progress.out", "a+"); //Abre o arquivo para ler os dados do upload antigo, abre com a+ para poder dar rewind printf("Linha %d\n", __LINE__); rewind(upload_in_progress); @@ -59,13 +69,24 @@ void tela_upload_antigo(GtkWidget *w,gpointer p){ //tela principal do programa, chamada após o login void tela_principal(GtkWidget *w,gpointer p){ + GtkWidget *janela_principal, *janela_ant, *button_stg4, *button_ajuda_tela_principal, *button_stg4_update, *label_greeting; GtkBuilder *builder; int status; + #ifdef DEBUG + puts("Entrou na tela principal"); + puts(""); + #endif /*DEBUG*/ + //Se não encontrou o arquivo .speed.out, calcula a velocidade de upload do usuário. if((access(".speed.out", F_OK) == -1)){ - puts("Entrou no if"); + + #ifdef DEBUG + puts("Entrou no if"); + puts(""); + #endif /*DEBUG*/ + g_spawn_command_line_sync("speedtest-cli --bytes --simple > .speed.out", NULL, NULL, &status, NULL); // Executa o script } @@ -89,11 +110,26 @@ void tela_principal(GtkWidget *w,gpointer p){ gtk_widget_hide(janela_ant); //Esconde a janela anterior } + #ifdef DEBUG + puts("Vai pegar dados do usuário"); + puts(""); + #endif /*DEBUG*/ + pega_dados_do_usuario(&dados_do_user); //Pega os dados do usuário recebidos no login - puts(dados_do_user.name); - puts(dados_do_user.login); - puts(dados_do_user.email); - puts(dados_do_user.city); + + #ifdef DEBUG + puts(dados_do_user.name); + puts(dados_do_user.login); + puts(dados_do_user.email); + puts(dados_do_user.city); + puts(""); + #endif /*DEBUG*/ + + #ifdef DEBUG + puts("Vai gerar arquivo de dados do usuário"); + puts(""); + #endif /*DEBUG*/ + gera_arquivo_dados_usuario(); //Cria o user_data.info strcpy(greeting_text, dados_do_user.name); strcat(greeting_text, "!"); @@ -125,23 +161,24 @@ void tela_principal(GtkWidget *w,gpointer p){ //Função que mostra a tela de login para o usuario void tela_login(){ + #ifdef DEBUG + puts("tela de login"); + puts(""); + #endif /*DEBUG*/ GtkWidget *window_login, *button_login, *entry_login, *entry_passwd, *label_login_erro; GtkBuilder *builder; builder = gtk_builder_new(); //Cria um novo Builder gtk gtk_builder_add_from_file (builder, "openslx_gui_v01.glade", NULL); //Carrega as coisas do arquivo .glade para utilizar nos widgets - printf("Linha %d\n", __LINE__); window_login = GTK_WIDGET(gtk_builder_get_object(builder, "window_login")); g_signal_connect(window_login, "destroy", G_CALLBACK(sair), NULL); - printf("Linha %d\n", __LINE__); button_login = GTK_WIDGET(gtk_builder_get_object(builder, "button_login")); label_login_erro = GTK_WIDGET(gtk_builder_get_object(builder, "label_login_erro")); entry_login = GTK_WIDGET(gtk_builder_get_object(builder, "entry_login")); entry_passwd = GTK_WIDGET(gtk_builder_get_object(builder, "entry_passwd")); - printf("Linha %d\n", __LINE__); struct dados *data = malloc(sizeof(*data)); data->dado1 = window_login; @@ -151,21 +188,28 @@ void tela_login(){ data->dado4 = entry_passwd; data->dado5 = label_login_erro; - printf("Linha %d\n", __LINE__); g_signal_connect (G_OBJECT (window_login), "key_press_event", G_CALLBACK (on_key_press), data); - printf("Linha %d\n", __LINE__); g_signal_connect(entry_passwd, "activate", G_CALLBACK(faz_login), data); g_signal_connect(button_login, "clicked", G_CALLBACK(faz_login), data); //Caso ele aperte enter com o foco no password - printf("Linha %d\n", __LINE__); gtk_widget_show_all(window_login); } // Main int main(int argc, char *argv[]){ - XInitThreads(); + + #ifdef DEBUG + puts("Vai iniciar o GTK"); + puts(""); + #endif /*DEBUG*/ + gtk_init(&argc, &argv); //Inicia o GTK + + #ifdef DEBUG + puts("Vai informar os locales para a tradução"); + puts(""); + #endif /*DEBUG*/ setlocale(LC_ALL, ""); bindtextdomain("openslx_gui_v01", "/usr/share/locale"); textdomain("openslx_gui_v01"); @@ -180,6 +224,11 @@ int main(int argc, char *argv[]){ GdkScreen *screen; GFile *css; + #ifdef DEBUG + puts("vai carregar os estilos css"); + puts(""); + #endif /*DEBUG*/ + css = g_file_new_for_path("./styles.css"); provider = gtk_css_provider_new(); diff --git a/useful/stg312/openslx_gui.h b/useful/stg312/openslx_gui.h index ddadd400eb04bbc720889c0ad10f57ca7c5d41d7..76bf7b06ba575f65de4dd93261a58be39127dba4 100644 --- a/useful/stg312/openslx_gui.h +++ b/useful/stg312/openslx_gui.h @@ -7,6 +7,8 @@ #include <curl/curl.h> #include <curl/easy.h> +#define DEBUG //Comment this for release version + // Using http://www.digip.org/jansson/ for dealing with Json packages for Login/upload. All code was found in their tutorials. // Using https://curl.haxx.se/libcurl/c/example.html for doing http requests for Login/upload, // the documenting and debugging of this library is a hellhole, i STRONGLY recommend coding this with the one responsible for the site API next to you diff --git a/useful/stg312/openslx_gui_v01.glade b/useful/stg312/openslx_gui_v01.glade index 9dab03a942c86a66323431d83a560392ad9b2a39..43f2e4391434e20f001431a9c086b96ed2a2960f 100644 --- a/useful/stg312/openslx_gui_v01.glade +++ b/useful/stg312/openslx_gui_v01.glade @@ -637,7 +637,7 @@ e clique em Gerenciamento de Imagens. Edite as configurações do sistema que fez upload e ele estará pronta para uso! Caso o navegador não abra, entre no site: -http://slxbox.dev.c3sl.br +http://slxboxdev.c3sl.br </property> </object> </child> diff --git a/useful/stg312/stg4.c b/useful/stg312/stg4.c index da1ab36e787464ac53885c6f2c1cc12839610420..4a75aed34b583e092801d5d595d669badf1b927c 100644 --- a/useful/stg312/stg4.c +++ b/useful/stg312/stg4.c @@ -5,7 +5,7 @@ #include <stdlib.h> #include <string.h> #include <errno.h> -#include <sys/wait.h> +//#include <sys/wait.h> #include "utils.h" #include "upload-utils.h" #include <gdk/gdkkeysyms.h> @@ -14,12 +14,20 @@ //Ultima tela do sistema, mostra ao usuario o que ele deve fazer para ter a imagem habilitada void stg4_tela_confirmacao_upload(GPid pid, gint status,gpointer p){ + #ifdef DEBUG + puts("stg4_tela_confirmação_upload"); + puts(""); + #endif /*DEBUG*/ GtkWidget *window_stg4_upload_confirm, *janela_ant, *button_return_upload_confirm, *button_site; GtkBuilder *builder; dados *data_ant = p; //Pega os dados recebidos pela chamada da função + #ifdef DEBUG + puts("Vai fechar o processo de upload"); + puts(""); + #endif /*DEBUG*/ GtkWidget *loading; loading = data_ant->dado6; pid = data_ant->pid; @@ -90,6 +98,11 @@ void stg4_tela_img_select(GtkWidget *w,gpointer p){ // // A função que exibe a 2a tela do programa, a tela de upload void stg4_2a_tela(GPid pid, gint status,gpointer p){ + #ifdef DEBUG + puts("stg4_2a_tela"); + puts(""); + #endif /*DEBUG*/ + GtkWidget *window_stg4_final, *button_stg4_final_sair, *janela_ant, *button_help_4at, *button_stg4_upload, *label_tempo_upload; GtkBuilder *builder; char *texto_tempo_upload, *temp; @@ -102,7 +115,10 @@ void stg4_2a_tela(GPid pid, gint status,gpointer p){ builder = gtk_builder_new(); //Cria um novo Builder gtk gtk_builder_add_from_file (builder, "openslx_gui_v01.glade", NULL); //Carrega as coisas do arquivo .glade para utilizar nos widgets - + #ifdef DEBUG + puts("Vai fechar o processo de clonagem de imagem"); + puts(""); + #endif /*DEBUG*/ GtkWidget *loading; loading = data_ant->dado6; pid = data_ant->pid; @@ -120,6 +136,12 @@ void stg4_2a_tela(GPid pid, gint status,gpointer p){ button_stg4_upload = GTK_WIDGET(gtk_builder_get_object(builder, "button_stg4_upload")); label_tempo_upload = GTK_WIDGET(gtk_builder_get_object(builder, "label_tempo_upload")); + + #ifdef DEBUG + puts("Vai calcular o tempo de upload estimado"); + puts(""); + #endif /*DEBUG*/ + strcpy(texto_tempo_upload, "Tempo estimado de upload: "); sprintf(temp, "%d",calcula_tempo_upload() ); //Estima o tempo de upload de imagem strcat(texto_tempo_upload, temp); @@ -148,6 +170,10 @@ void stg4_2a_tela(GPid pid, gint status,gpointer p){ //Função que chama o script que gera a imagem do usuario. void stg4_clique_2a_tela(GtkWidget *w,gpointer p){ + #ifdef DEBUG + puts("stg4_clique_2a_tela"); + puts(""); + #endif /*DEBUG*/ GPid pid; GChildWatchFunc handler; @@ -177,6 +203,11 @@ void stg4_clique_2a_tela(GtkWidget *w,gpointer p){ struct dados *data = malloc(sizeof(*data)); + #ifdef DEBUG + puts("Vai popular os parametros do script de clonagem da imagem"); + puts(""); + #endif /*DEBUG*/ + acha_tm_scripts(tmscripts); //Acha a pasta tm_scripts no sistema strcpy(version, gtk_entry_get_text(GTK_ENTRY(data_ant->dado4))); //Pega o nome da imagem que o usuario informou strcat(version, ".r1"); //versão será lidada pela api depois, por isso é a versão .r1 @@ -203,6 +234,11 @@ void stg4_clique_2a_tela(GtkWidget *w,gpointer p){ argv[8] = NULL;//ESSE ULTIMO PARAMETRO DEVE SER NULO, ele é o sentinela e informa o g_spawn onde acabam os parametros de invocação + #ifdef DEBUG + puts("Vai spawnar o processo com o script de clonagem de imagem"); + puts(""); + #endif /*DEBUG*/ + g_spawn_async_with_pipes(NULL, argv,NULL,G_SPAWN_DO_NOT_REAP_CHILD,NULL,NULL, &pid, NULL, NULL, NULL, NULL);//NAO USE FORK PARA SPAWNAR SCRIPTS, use essa função. Documentação em: https://developer.gnome.org/glib/stable/glib-Spawning-Processes.html#g-spawn-sync data->dado6 = loading_screen; @@ -215,6 +251,10 @@ void stg4_clique_2a_tela(GtkWidget *w,gpointer p){ handler = stg4_2a_tela; //Função que será chamada quando o g_spawn sair + #ifdef DEBUG + puts("Vai adicionar o processo ao child watch"); + puts(""); + #endif /*DEBUG*/ g_child_watch_add(pid, handler, data); //Chama o handler quando o spawn acabar @@ -223,6 +263,12 @@ void stg4_clique_2a_tela(GtkWidget *w,gpointer p){ // Função que exibe a segunda tela, pedindo os dados necessários ao usuário void stg4_clique_1a_tela(GtkWidget *w,gpointer p){ + + #ifdef DEBUG + puts("stg4_clique_1a_tela"); + puts(""); + #endif /*DEBUG*/ + GtkWidget *window_stg4_escolha, *janela_ant, *button_clonar, *entry_imagem, *file_chooser_local, *button_help_2at, *check_button_remove; GtkBuilder *builder; @@ -262,6 +308,11 @@ void stg4_clique_1a_tela(GtkWidget *w,gpointer p){ //função que exibe a primeira tela do processo de clonagem, informando o usuário que ele deve instalar os pacotes desejados void stg4_inicio(GtkWidget *w,gpointer p){ + #ifdef DEBUG + puts("stg4_inicio"); + puts(""); + #endif /*DEBUG*/ + GtkWidget *window_stg4_inic, *janela_ant, *button_geren, *button_stg4_proximo, *button_help_1at; GtkBuilder *builder; @@ -273,8 +324,6 @@ void stg4_inicio(GtkWidget *w,gpointer p){ button_stg4_proximo = GTK_WIDGET(gtk_builder_get_object(builder, "button_stg4_proximo")); window_stg4_inic = GTK_WIDGET(gtk_builder_get_object(builder, "window_stg4_inic")); button_geren = GTK_WIDGET(gtk_builder_get_object(builder, "button_geren")); - //button_shell = GTK_WIDGET(gtk_builder_get_object(builder, "button_shell")); - g_signal_connect(window_stg4_inic, "destroy", G_CALLBACK(chama_tela_principal), NULL); //Chama a tela principal ao destruir essa janela diff --git a/useful/stg312/stg4.h b/useful/stg312/stg4.h index 2a866f0f2a389d41a17d74fd90416310e015dcc0..acbab847de9dbe1d8d6fe3ee0867a608072fc3da 100644 --- a/useful/stg312/stg4.h +++ b/useful/stg312/stg4.h @@ -5,7 +5,6 @@ #include <stdlib.h> #include <string.h> #include <errno.h> -#include <sys/wait.h> //void stg4_tela_confirmacao_upload(GtkWidget *w,gpointer p); diff --git a/useful/stg312/upload b/useful/stg312/upload index 9c8adf2445df5c7a787c79480e14a9610f0dd17f..59c5cd22ecb28a43be4f8372bec1cd8958ecfd72 100755 Binary files a/useful/stg312/upload and b/useful/stg312/upload differ diff --git a/useful/stg312/upload-utils.c b/useful/stg312/upload-utils.c index b6abb937412914c402930c931bf81d093e938a6f..31ac060e51c433e33ec11eb5e77947cd8ab05fd1 100644 --- a/useful/stg312/upload-utils.c +++ b/useful/stg312/upload-utils.c @@ -4,7 +4,7 @@ #include <stdlib.h> #include <string.h> #include <errno.h> -#include <sys/wait.h> +//#include <sys/wait.h> #include <gdk/gdkkeysyms.h> #include <gdk/gdk.h> #include <glib.h> @@ -13,13 +13,18 @@ #include <curl/easy.h> #include <jansson.h> #include <time.h> -#include <gcrypt.h> +//#include <gcrypt.h> #include <sys/types.h> #include <signal.h> //Função que faz logout do sistema void logout(){ + #ifdef DEBUG + puts("logout"); + puts(""); + #endif /*DEBUG*/ + CURL *curl; @@ -39,6 +44,11 @@ void logout(){ curl_easy_setopt(curl, CURLOPT_URL, API_URL); curl_easy_setopt(curl, CURLOPT_POST, 1); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "request=logout"); + + #ifdef DEBUG + puts("Vai fazer o logout com o curl"); + puts(""); + #endif /*DEBUG*/ curl_easy_perform(curl); //faz logout } @@ -47,10 +57,21 @@ void logout(){ //Checa se existe algum upload antigo em progresso int checa_upload_antigo(){ + #ifdef DEBUG + puts("checa_upload_antigo"); + puts(""); + #endif /*DEBUG*/ + FILE *upload_in_progress; char *old_upload; old_upload = malloc(255*sizeof(char)); + + #ifdef DEBUG + puts("Vai abrir arquivo de upload em progresso"); + puts(""); + #endif /*DEBUG*/ + upload_in_progress = fopen(".progress.out", "a+"); //Abre o arquivo que contem os dados do upload antigo printf("Linha %d\n", __LINE__); rewind(upload_in_progress); @@ -67,7 +88,18 @@ int checa_upload_antigo(){ //Estima o tempo de upload, não faz a estimativa correta, mas só deus sabe como fazer essa joça realmente. O curl faz muita coisa que demora mais que só o upload, eu assumo int calcula_tempo_upload(){ + #ifdef DEBUG + puts("Calcula_tempo_upload"); + puts(""); + #endif /*DEBUG*/ + FILE *velocidade_upload; + + #ifdef DEBUG + puts("Vai abrir arquivo contendo a velocidade de upload"); + puts(""); + #endif /*DEBUG*/ + velocidade_upload = fopen(".speed.out", "r"); char *velocidade; @@ -75,25 +107,14 @@ int calcula_tempo_upload(){ int velocidade_f; fscanf(velocidade_upload, "%s", velocidade); //Le lixo e joga fora - puts(velocidade); fscanf(velocidade_upload, "%s", velocidade); //Le lixo e joga fora - puts(velocidade); fscanf(velocidade_upload, "%s", velocidade); //Le lixo e joga fora - puts(velocidade); fscanf(velocidade_upload, "%s", velocidade); //Le lixo e joga fora - puts(velocidade); fscanf(velocidade_upload, "%s", velocidade); //Le lixo e joga fora - puts(velocidade); fscanf(velocidade_upload, "%s", velocidade); //Le lixo e joga fora - puts(velocidade); fscanf(velocidade_upload, "%s", velocidade); //Le lixo e joga fora - puts(velocidade); fscanf(velocidade_upload, "%s", velocidade); //Le a velocidade de upload - puts(velocidade); - puts("vai calcular"); velocidade_f = atoi(velocidade); //Transforma em float - puts("calculou"); - puts("chegou aqui"); return((1953)/velocidade_f*3); // *3 para levar em conta problemas de rede. } @@ -101,9 +122,20 @@ int calcula_tempo_upload(){ // sera submetido junto à imagem quando o upload for feito. void gera_arquivo_dados_usuario(){ + #ifdef DEBUG + puts("gera_arquivo_dados_usuario"); + puts(""); + #endif /*DEBUG*/ + user_info dados_do_user; //Estrutura definida em openslx_gui.h para guardar os dados do usuario pega_dados_do_usuario(&dados_do_user); //Abre o arquivo gerado no Login e coloca os dados do usuario na estrutura dados_do_user FILE *user_data_file; + + #ifdef DEBUG + puts("Abre o arquivo de dados do usuario para sobrescrever"); + puts(""); + #endif /*DEBUG*/ + user_data_file = fopen("user_data.info", "wr"); //Arquivo com os dados do usuario que será feito o upload fputs("Nome do criador da imagem: ", user_data_file); @@ -115,96 +147,116 @@ void gera_arquivo_dados_usuario(){ fputs("\nCidade do criador da imagem: ", user_data_file); fputs(dados_do_user.city, user_data_file); + #ifdef DEBUG + puts("Vai pegar o tempo do sistema"); + puts(""); + #endif /*DEBUG*/ + time_t timer; time(&timer); //pega o tempo de criação da imagem fputs("\nData da criação da imagem: ", user_data_file); fputs(ctime(&timer), user_data_file); //Coloca o tempo de criação da imagem no arquivo + #ifdef DEBUG + puts("Vai pegar os dados do sistema rodando o software"); + puts(""); + #endif /*DEBUG*/ + fclose(user_data_file); system("uname -a >> user_data.info"); //Coloca informações sobre o usuario no arquivo system("lsb_release -a >> user_data.info"); //Coloca informações sobre o sistema no arquivo - - } //Função que checa o arquivo .login.out para verificar o suceso do login. int checa_sucesso_do_login(){ + #ifdef DEBUG + puts("checa_sucesso_do_login"); + puts(""); + #endif /*DEBUG*/ + FILE *login; char *user_data_str; + + #ifdef DEBUG + puts("Vai abrir o arquivo com o resultado do login"); + puts(""); + #endif /*DEBUG*/ + login = fopen(".login.out", "r"); //Arquivo que contem a resposta do login user_data_str = malloc(2550*sizeof(char)); fgets(user_data_str,2550*sizeof(char), login ); - printf("%zu tamanho da string\n", strlen(user_data_str)); - puts(user_data_str); + #ifdef DEBUG + puts("Dados lidos do pacote:"); + puts(user_data_str); + puts("Vai ler o pacote json recebido pelo servidor"); + puts(""); + #endif /*DEBUG*/ json_t *root; json_error_t error; root = json_loads(user_data_str,0, &error); //Pega os dados do arquivo em formato json - printf("Linha %d\n", __LINE__); if(!root){ //Caso não tenha conseguido carregar os dados - puts("erro ao carregar dados!"); - //exit(0); + puts("Erro ao carregar dados!"); } - printf("Linha %d\n", __LINE__); if(!json_is_object(root)) { fprintf(stderr, "Dados não estão em formato Json\n"); json_decref(root); } - printf("Linha %d\n", __LINE__); json_t *sha; - printf("Linha %d\n", __LINE__); const char *message_text; - printf("Linha %d\n", __LINE__); sha = json_object_get(root, "status"); //Pega o Status da resposta - printf("Linha %d\n", __LINE__); if(json_is_string(sha)) { - printf("Linha %d\n", __LINE__); message_text = json_string_value(sha); //coloca o valor de status na string - printf("Linha %d\n", __LINE__); - puts(message_text); - printf("Linha %d\n", __LINE__); }else{ - printf("Linha %d\n", __LINE__); - puts("error, not string"); + puts("Erro, o valor lido não é uma string"); return 0; - printf("Linha %d\n", __LINE__); } if(!(strcmp("ok", message_text))){ //Caso o status seja diferente de OK - printf("Linha %d\n", __LINE__); - puts(message_text); return 1; } - printf("Linha %d\n", __LINE__); return 0; - - } //Função que utiliza o arquivo gerado pela chamada Curl com os dados do usuario e coloca eles na estrutura user_info *dados void pega_dados_do_usuario(user_info *dados){ + #ifdef DEBUG + puts("pega_dados_do_usuario"); + puts(""); + #endif /*DEBUG*/ + FILE *user_data; char *user_data_str; user_data_str = malloc(2550*sizeof(char)); + + #ifdef DEBUG + puts("Vai abrir o arquivo com os dados do usuário"); + puts(""); + #endif /*DEBUG*/ + user_data = fopen(".data.out", "r"); //Abre arquivo contendo os dados do usuário fgets(user_data_str,2550*sizeof(char), user_data ); - puts("User data: "); - puts(user_data_str); - puts("User data end "); + + #ifdef DEBUG + puts("Dados lidos do pacote:"); + puts(user_data_str); + puts("Vai ler o pacote json recebido pelo servidor"); + puts(""); + #endif /*DEBUG*/ json_t *root; json_error_t error; @@ -230,7 +282,7 @@ void pega_dados_do_usuario(user_info *dados){ strcpy(dados->name, message_text); }else{ dados->name[0] = '\0'; //Caso o campo seja nulo no banco de dados - puts("error, not string"); + puts("Erro! O dado lido não é uma String."); } sha = json_object_get(root, "login"); //Pega nome @@ -242,7 +294,7 @@ void pega_dados_do_usuario(user_info *dados){ }else{ dados->login[0] = '\0'; //Caso o campo seja nulo no banco de dados - puts("error, not string"); + puts("Erro! O dado lido não é uma String."); } sha = json_object_get(root, "email"); //Pega nome @@ -254,7 +306,7 @@ void pega_dados_do_usuario(user_info *dados){ }else{ dados->email[0] = '\0'; //Caso o campo seja nulo no banco de dados - puts("error, not string"); + puts("Erro! O dado lido não é uma String."); } sha = json_object_get(root, "city"); //Pega nome @@ -266,20 +318,35 @@ void pega_dados_do_usuario(user_info *dados){ }else{ dados->city[0] = '\0'; //Caso o campo seja nulo no banco de dados - puts("error, not string"); + puts("Erro! O dado lido não é uma String."); } } int checa_sucesso_get_info(){ + #ifdef DEBUG + puts("checa_sucesso_get_info"); + puts(""); + #endif /*DEBUG*/ + FILE *user_data; char *user_data_str; user_data_str = malloc(2550*sizeof(char)); + + #ifdef DEBUG + puts("Vai abrir o arquivo que contem os dados do usuário recebido."); + puts(""); + #endif /*DEBUG*/ + user_data = fopen(".data.out", "r"); //Arquivo que contém o retorno do get info e os dados do usuário fgets(user_data_str,2550*sizeof(char), user_data ); - puts("User data: "); - puts(user_data_str); - puts("User data end "); + + #ifdef DEBUG + puts("Dados lidos do pacote:"); + puts(user_data_str); + puts("Vai ler o pacote json recebido pelo servidor"); + puts(""); + #endif /*DEBUG*/ json_t *root; json_error_t error; @@ -315,14 +382,13 @@ int checa_sucesso_get_info(){ } //Função que faz o Login do usuario no sistema. Utiliza a biblioteca Libcurlc para realizar as requisições http. // Guarda as saidas em arquivos para uso posterior. Guarda o cookie para uso posterior tbm -int faz_login_dummy(GtkWidget *w, gpointer p){ - dados *data_ant = p; //Pega os dados recebidos pela chamada da função - tela_principal(NULL, data_ant); - return 1; -} - int faz_login(GtkWidget *w, gpointer p){ + #ifdef DEBUG + puts("faz_login"); + puts(""); + #endif /*DEBUG*/ + dados *data_ant = p; //Pega os dados recebidos pela chamada da função CURL *curl; char *data = malloc(255*sizeof(char)); @@ -330,19 +396,28 @@ int faz_login(GtkWidget *w, gpointer p){ char * resp; FILE *dados_do_user, *login_out; resp = malloc(255*sizeof(char)); - puts("teste"); - puts(gtk_entry_get_text(GTK_ENTRY(data_ant->dado3))); + strcat(data, gtk_entry_get_text(GTK_ENTRY(data_ant->dado3))); //Login do usuario strcat(data, "&passwd="); strcat(data, gtk_entry_get_text(GTK_ENTRY(data_ant->dado4))); //Senha do usuario strcat(data, "&request=login"); - puts(data); + + #ifdef DEBUG + puts("Vai abrir os arquivos de dados do usuário e de resultado do login"); + puts(""); + #endif /*DEBUG*/ dados_do_user = fopen(".data.out", "wr"); login_out = fopen(".login.out", "wr"); curl = curl_easy_init(); + + #ifdef DEBUG + puts("Vai iniciar os processos de login com o curl"); + puts(""); + #endif /*DEBUG*/ + if(curl) { //para entender melhor o que é cada opção do Curl, leia: https://curl.haxx.se/libcurl/c/libcurl-tutorial.html @@ -358,12 +433,19 @@ int faz_login(GtkWidget *w, gpointer p){ curl_easy_setopt(curl, CURLOPT_URL, API_URL); curl_easy_setopt(curl, CURLOPT_POST, 1); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data); - puts("Fazendo login."); + + #ifdef DEBUG + puts("Fazendo login."); + puts(""); + #endif /*DEBUG*/ curl_easy_perform(curl); //Faz login - puts("teste 2"); fclose(login_out); - printf("Linha antes checagem %d\n", __LINE__); + + #ifdef DEBUG + puts("Vai checar o sucesso do login"); + puts(""); + #endif /*DEBUG*/ if(checa_sucesso_do_login()){ //Se o login foi bem sucedido, pega as informações do usuário printf("Linha %d\n", __LINE__); @@ -373,8 +455,11 @@ int faz_login(GtkWidget *w, gpointer p){ curl_easy_setopt(curl, CURLOPT_VERBOSE, 0); curl_easy_setopt(curl, CURLOPT_HEADER, 0); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data2); - printf("Linha %d\n", __LINE__); - puts("pegando informação."); + + #ifdef DEBUG + puts("Pegando informaçes do usuário."); + puts(""); + #endif /*DEBUG*/ curl_easy_perform(curl); //Pega informações fclose(dados_do_user); if(!(checa_sucesso_get_info())){ //nao conseguiu pegar informações @@ -391,6 +476,10 @@ int faz_login(GtkWidget *w, gpointer p){ puts("Nao pegou dados"); curl_easy_cleanup(curl); + #ifdef DEBUG + puts("Vai checar se tem um upload em progresso."); + puts(""); + #endif /*DEBUG*/ if(checa_upload_antigo()){ //Verifica se existe um upload antigo nessa máquina tela_upload_antigo(NULL, data_ant); //Se tiver, chama a tela de uplaod antigo }else{ @@ -398,11 +487,11 @@ int faz_login(GtkWidget *w, gpointer p){ } return 1; } - printf("Linha %d\n", __LINE__); + } - printf("Linha %d\n", __LINE__); + gtk_label_set_text(GTK_LABEL(data_ant->dado5), "Login nao encontrado!"); //O login não foi bem sucedido - printf("Linha %d\n", __LINE__); + return 0; } @@ -411,6 +500,11 @@ int faz_login(GtkWidget *w, gpointer p){ //função de teste que faz upload da imagem teste.r1 void faz_upload_teste(GtkWidget *w, gpointer p){ + #ifdef DEBUG + puts("faz_upload_teste"); + puts(""); + #endif /*DEBUG*/ + GtkWidget *loading; GtkBuilder *builder; dados *data_ant = p; //Pega os dados recebidos pela chamada da função @@ -444,7 +538,11 @@ void faz_upload_teste(GtkWidget *w, gpointer p){ void faz_upload(GtkWidget *w, gpointer p){ - printf("Linha faz upload %d\n", __LINE__); + #ifdef DEBUG + puts("faz_upload"); + puts(""); + #endif /*DEBUG*/ + GtkWidget *loading; dados *data_ant = p; //Pega os dados recebidos pela chamada da função GtkBuilder *builder; @@ -457,31 +555,40 @@ void faz_upload(GtkWidget *w, gpointer p){ for (i=0; i < 10; i++){ argv[i] = malloc(255*sizeof(char)); } - printf("Linha %d\n", __LINE__); builder = gtk_builder_new(); //Cria um novo Builder gtk gtk_builder_add_from_file (builder, "openslx_gui_v01.glade", NULL); //Carrega as coisas do arquivo .glade para utilizar nos widgets loading = GTK_WIDGET(gtk_builder_get_object(builder, "loading_screen")); - - printf("Linha %d\n", __LINE__); - gtk_widget_show_all(loading); - printf("Linha %d\n", __LINE__); + + #ifdef DEBUG + puts("Vai popular o vetor de argumentos para o script de upload."); + puts(""); + #endif /*DEBUG*/ strcpy(argv[0], "./upload"); //Comando a ser invocado pelo shell strcpy(argv[1], gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(data_ant->dado4))); //Caminho para a imagem criada pelo usuario strcpy(argv[2], gtk_entry_get_text(GTK_ENTRY(data_ant->dado3))); //Nome da imagem strcpy(argv[3], ".r1"); //versão, isso será depois lidado pela api, por isso o .r1 argv[4] = NULL; //ESSE ULTIMO PARAMETRO DEVE SER NULO, ele é o sentinela e informa o g_spawn onde acabam os parametros de invocação - printf("Linha %d\n", __LINE__); + + #ifdef DEBUG + puts("Vai spawnar o processo de upload."); + puts(""); + #endif /*DEBUG*/ g_spawn_async_with_pipes(NULL, argv,NULL,G_SPAWN_DO_NOT_REAP_CHILD,NULL,NULL, &pid, NULL, NULL, NULL, NULL); //NAO USE FORK PARA SPAWNAR SCRIPTS, use essa função. Documentação em: https://developer.gnome.org/glib/stable/glib-Spawning-Processes.html#g-spawn-sync - printf("Linha %d\n", __LINE__); + handler = stg4_tela_confirmacao_upload; //Função a ser chamada quando o g_spawn sair data->dado6 = loading; data->dado1 = data_ant->dado1; data->pid = pid; - printf("Linha %d\n", __LINE__); + + + #ifdef DEBUG + puts("Vai adicionar o processo ao child watch"); + puts(""); + #endif /*DEBUG*/ g_child_watch_add(pid, handler, data); //Chamará a função apontada por handler ao sair do processo criado pelo g_spawn } diff --git a/useful/stg312/upload-utils.h b/useful/stg312/upload-utils.h index 1dd972c482b3952ab93b9d82c96dc238bffabc49..234b0cdde9fc0d27046171450044811aa3c26ae0 100644 --- a/useful/stg312/upload-utils.h +++ b/useful/stg312/upload-utils.h @@ -4,7 +4,6 @@ #include <stdlib.h> #include <string.h> #include <errno.h> -#include <sys/wait.h> //Aviso a quem vai editar esse código. Boa sorte com a libcurl, a documentação é muito escassa e mal explicada, nada faz sentido // a opção de debug não indica nada importante e as soluções são extremamente Cripticas se vc não tem um conhecimento grande de diff --git a/useful/stg312/upload.c b/useful/stg312/upload.c index a1487308eb4ee9962bb7298698716c6b62f2afd6..a3e1f1c4f57e8517c9e0e2b05b215de45a839412 100644 --- a/useful/stg312/upload.c +++ b/useful/stg312/upload.c @@ -3,7 +3,7 @@ #include <stdlib.h> #include <string.h> #include <errno.h> -#include <sys/wait.h> +//#include <sys/wait.h> #include <gdk/gdkkeysyms.h> #include <gdk/gdk.h> #include <glib.h> @@ -12,7 +12,7 @@ #include <curl/easy.h> #include <jansson.h> #include <time.h> -#include <gcrypt.h> +//#include <gcrypt.h> #include <sys/types.h> #include <signal.h> #include "upload-utils.h" @@ -20,15 +20,28 @@ //Função que checa o sucesso do upload feito; int checa_sucesso_upload(){ + #ifdef DEBUG + puts("checa_sucesso_upload"); + puts(""); + #endif /*DEBUG*/ + FILE *user_data; char *user_data_str; user_data_str = malloc(2550*sizeof(char)); + + #ifdef DEBUG + puts("Vai abrir arquivo com a resposta do upload."); + puts(""); + #endif /*DEBUG*/ user_data = fopen(".upload.out", "r"); //Abre arquivo contendo a resposta do servidor - system("cat .upload.out"); //Para debug + fgets(user_data_str,2550*sizeof(char), user_data ); - puts("User data: "); - puts(user_data_str); - puts("User data end "); + #ifdef DEBUG + puts("Dados lidos do pacote:"); + system("cat .upload.out"); //Para debug + puts("Vai ler o pacote json recebido pelo servidor"); + puts(""); + #endif /*DEBUG*/ json_t *root; json_error_t error; @@ -54,7 +67,7 @@ int checa_sucesso_upload(){ message_text = json_string_value(sha); //Coloca o status no string puts(message_text); }else{ - puts("error, not string"); //Status não é um string + puts("Erro! O dado lido não é uma String."); //Status não é um string } @@ -68,12 +81,16 @@ int checa_sucesso_upload(){ message_text = json_string_value(sha); //Coloca o codigo em uma string puts(message_text); }else{ - puts("error, not string"); //O código não é uma string + puts("Erro! O dado lido não é uma String."); //O código não é uma string return 116; } //Para entender que erro é o que verifique documentação da API que está no Redmine (https://redmine.c3sl.ufpr.br/projects/openslx-dnbd3/files arquivo api_webservice_report) ou Taiga - puts("Irá procurar o erro."); + + #ifdef DEBUG + puts("Irá procurar o erro."); + puts(""); + #endif /*DEBUG*/ if(!(strcmp(message_text, "109"))){ puts("Erro 109: Uploadid nao informado, caso esteja vendo esse erro repita todo o processo de criação de imagem."); return 0; @@ -121,14 +138,28 @@ int checa_sucesso_upload(){ //Função que vai pegar o upload ip fornecido pela api int pega_upload_id(char *id){ + #ifdef DEBUG + puts("pega_uplaod_id"); + puts(""); + #endif /*DEBUG*/ + FILE *user_data; char *user_data_str; user_data_str = malloc(2550*sizeof(char)); + + #ifdef DEBUG + puts("Vai abrir o arquivo contendo o upload id"); + puts(""); + #endif /*DEBUG*/ user_data = fopen(".upid.out", "r"); //Abre o arquivo que contém o upload id fgets(user_data_str,2550*sizeof(char), user_data ); - puts("User data: "); - puts(user_data_str); - puts("User data end "); + + #ifdef DEBUG + puts("Dados lidos do pacote:"); + puts(user_data_str); + puts("Vai ler o pacote json recebido pelo servidor"); + puts(""); + #endif /*DEBUG*/ json_t *root; json_error_t error; @@ -153,7 +184,7 @@ int pega_upload_id(char *id){ message_text = json_string_value(sha); puts(message_text); }else{ - puts("error, not string"); + puts("Erro! O dado lido não é uma String."); } if(!(strcmp(message_text, "ok"))){ //Se o status estiver OK, continua @@ -163,7 +194,7 @@ int pega_upload_id(char *id){ message_text = json_string_value(sha); puts(message_text); }else{ - puts("error, not string"); + puts("Erro! O dado lido não é uma String."); } strcpy(id, message_text); //copia o uploadid pra id @@ -176,7 +207,7 @@ int pega_upload_id(char *id){ message_text = json_string_value(sha); puts(message_text); }else{ - puts("error, not string"); + puts("Erro! O dado lido não é uma String."); } if(!(strcmp(message_text, "108"))){ @@ -188,6 +219,11 @@ int pega_upload_id(char *id){ int main(int argc, char *argv[]){ + #ifdef DEBUG + puts("main do upload.c"); + puts(""); + #endif /*DEBUG*/ + system("echo n > .result.out"); //Inicia o arquivo de sucesso com falha CURL *curl; @@ -205,6 +241,11 @@ int main(int argc, char *argv[]){ //strcpy(version, ARQUIVO_TESTE); FILE *upid, *sha_calc, *upload_output, *upload_in_progress; + + #ifdef DEBUG + puts("Vai abrir o arquivo para o upload id"); + puts(""); + #endif /*DEBUG*/ upid = fopen(".upid.out", "wr"); curl = curl_easy_init(); @@ -221,14 +262,12 @@ int main(int argc, char *argv[]){ curl_easy_setopt(curl, CURLOPT_POST, 1); upload_in_progress = fopen(".progress.out", "a+"); //Abre o arquivo com o possível upload antigo em progresso. - printf("Linha %d\n", __LINE__); rewind(upload_in_progress); fscanf(upload_in_progress, "%s", old_upload); - printf("Linha %d\n", __LINE__); i = 0; - puts(old_upload); + if(!(strcmp(old_upload, "Upload"))){ //Verifica se existe um upload antigo puts("Achou um upload antigo, continuando ele"); fscanf(upload_in_progress, "%s", old_upload); @@ -250,15 +289,22 @@ int main(int argc, char *argv[]){ strcat(upload_name, "&version="); strcat(upload_name, argv[3]); - puts("Upload_name: "); - puts(upload_name); + + #ifdef DEBUG + puts("Upload_name: "); + puts(upload_name); + puts(""); + #endif /*DEBUG*/ curl_easy_setopt(curl, CURLOPT_POSTFIELDS, upload_name); curl_easy_setopt(curl, CURLOPT_WRITEDATA, upid); - puts("Pegando UploadId."); + + #ifdef DEBUG + puts("Pegando UploadId."); + puts(""); + #endif /*DEBUG*/ curl_easy_perform(curl); //Pega o uploadid - printf("Linha %d\n", __LINE__); fclose(upid); if(!(pega_upload_id(uploadid))){ @@ -272,26 +318,26 @@ int main(int argc, char *argv[]){ fclose(upload_in_progress); // Vai preparar pra fazer o upload. - - printf("Linha %d\n", __LINE__); char *calculated_sha = malloc(255*sizeof(char)); char *sha_command_line = malloc(255*sizeof(char)); - printf("Linha %d\n", __LINE__); + curl_easy_setopt(curl, CURLOPT_POST, 0); struct curl_slist *list = NULL; list = curl_slist_append(list, "Expect: "); curl_easy_setopt(curl,CURLOPT_HTTPHEADER,list); curl_formadd(&formpost,&lastptr,CURLFORM_COPYNAME, "request", CURLFORM_COPYCONTENTS,"upload",CURLFORM_END); - printf("Linha %d\n", __LINE__); curl_formadd(&formpost,&lastptr,CURLFORM_COPYNAME, "uploadid", CURLFORM_COPYCONTENTS, uploadid,CURLFORM_END); //começa a fazer o upload for(; i < NUMBER_OF_PARTS; ++i){ - puts(version); strcpy(upload_name, version); strcat(upload_name, part_suffix); + #ifdef DEBUG + puts("Vai abrir o arquivo que irá conter o upload antigo."); + puts(""); + #endif /*DEBUG*/ upload_output = fopen(".upload.out", "wr"); strcpy(sha_command_line, "openssl dgst -sha1 "); //calcula o sha do arquivo @@ -304,19 +350,30 @@ int main(int argc, char *argv[]){ curl_formadd(&formpost,&lastptr,CURLFORM_COPYNAME, "sha1", CURLFORM_COPYCONTENTS,calculated_sha,CURLFORM_END); curl_easy_setopt(curl, CURLOPT_WRITEDATA, upload_output); curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost); - puts("Fazendo Upload de:"); - puts(part_suffix); + + #ifdef DEBUG + puts("Fazendo Upload de:"); + puts(part_suffix); + puts(""); + #endif /*DEBUG*/ upload_in_progress = fopen(".progress.out", "wr"); //Abre o arquivo que conterá os dados necessários para continuar o upload caso esse falhe fprintf(upload_in_progress, "Upload\n%s\n%s\n%s\n%d\n%s", uploadid, upload_name, part_suffix, i, version); //Insere os dados necessários para continuar o upload em caso de falha fclose(upload_in_progress); //fecha o arquivo, obriga um sync dele + #ifdef DEBUG + puts("Vai fazer o upload usando o curl."); + puts(""); + #endif /*DEBUG*/ curl_easy_perform(curl); //Faz o upload propriamente dito fclose(upload_output); - printf("Linha %d\n", __LINE__); + + #ifdef DEBUG + puts("Vai checar o sucesos do upload:"); + puts(""); + #endif /*DEBUG*/ check_response = checa_sucesso_upload(); //Checa se o upload foi feito com sucesso - printf("Linha %d\n", __LINE__); if(check_response == 1){ puts("Parte enviada para o servidor com suceso."); part_suffix[9]++; @@ -338,14 +395,14 @@ int main(int argc, char *argv[]){ --i; } } - printf("Linha %d\n", __LINE__); + } //Fez o upload, vai atualizar o arquivo de upload em progresso - printf("Linha %d\n", __LINE__); + upload_in_progress = fopen(".progress.out", "wr"); - printf("Linha %d\n", __LINE__); + fprintf(upload_in_progress, "Nothing to see here, move along now"); - printf("Linha %d\n", __LINE__); + curl_easy_cleanup(curl); } system("echo s > .result.out"); //Terminou tudo corretamente, atualiza o arquivo de checagem de sucesso! diff --git a/useful/stg312/utils.c b/useful/stg312/utils.c index 9c2798426ae18e9d1ee7a011e479589ec8384c16..cea7ff9d967825ccd3c45c3249af31e967e0c2bc 100644 --- a/useful/stg312/utils.c +++ b/useful/stg312/utils.c @@ -5,7 +5,7 @@ #include <stdlib.h> #include <string.h> #include <errno.h> -#include <sys/wait.h> +//#include <sys/wait.h> #include <gdk/gdkkeysyms.h> #include <gdk/gdk.h> #include <glib.h> @@ -14,35 +14,40 @@ #include <curl/easy.h> #include <jansson.h> #include <time.h> -#include <gcrypt.h> +//#include <gcrypt.h> #include <sys/types.h> #include <signal.h> //FUnção que acha o caminho para o tm-scripts, utilizada no arquivo clone_stage4.sh void acha_tm_scripts(char *path){ - - char *cam_tm_scripts; - char *first_p; - char paths[1024]; - getcwd(paths, sizeof(paths)); // Pega o current working directory - cam_tm_scripts = strstr(paths, "tm-scripts"); //Acha onde esta escrito tm-scripts - puts(cam_tm_scripts); - first_p = strchr(cam_tm_scripts, 'p');//acha o primeiro 'p' em tm scripts - first_p += 3; //anda o ponteiro - *first_p = '\0'; //termina a string, sim, tem um leak de memoria. - strcpy(path, paths); - + #ifdef DEBUG + puts("acha_tm_scripts"); + puts(""); + #endif /*DEBUG*/ + + char *cam_tm_scripts; + char *first_p; + char paths[1024]; + getcwd(paths, sizeof(paths)); // Pega o current working directory + cam_tm_scripts = strstr(paths, "tm-scripts"); //Acha onde esta escrito tm-scripts + puts(cam_tm_scripts); + first_p = strchr(cam_tm_scripts, 'p');//acha o primeiro 'p' em tm scripts + first_p += 3; //anda o ponteiro + *first_p = '\0'; //termina a string, sim, tem um leak de memoria. + strcpy(path, paths); } //função que lida com os inputs do teclado. Ver https://git.gnome.org/browse/gtk+/plain/gdk/gdkkeysyms.h para uma lista completa das Macros de teclas. gboolean on_key_press (GtkWidget *w, GdkEventKey *event, gpointer p){ - + #ifdef DEBUG + puts("on_key_press"); + puts(""); + #endif /*DEBUG*/ gpointer window, button; window = w; dados *data_ant = p; //Pega os dados recebidos pela chamada da função button = data_ant->dado2; //Botão que da continuidade ao software, dado->2 por comodidade. - puts(gtk_widget_get_name(w)); switch (event->keyval){ @@ -51,8 +56,15 @@ gboolean on_key_press (GtkWidget *w, GdkEventKey *event, gpointer p){ break; case GDK_KEY_F6: //Apertou f6 - if(!strcmp(gtk_widget_get_name(w), "instal_window")) + + + if(!strcmp(gtk_widget_get_name(w), "instal_window")){ + #ifdef DEBUG + puts("Vai abrir o shell"); + puts(""); + #endif /*DEBUG*/ abre_shell(NULL, NULL); + } break; case GDK_KEY_Escape: //Apertou esc, destroi a janela @@ -73,7 +85,11 @@ return FALSE; //Função que abre o software center do sistema void abre_software_center(GtkWidget *w, gpointer p){ - + #ifdef DEBUG + puts("abre_software_center"); + puts("Vai abrir o synaptic."); + puts(""); + #endif /*DEBUG*/ int status; g_spawn_command_line_sync("synaptic", NULL, NULL, &status, NULL); //Abre o synaptic. Quando melhorarem o software center usar o software center @@ -81,18 +97,24 @@ void abre_software_center(GtkWidget *w, gpointer p){ //Função que abre um shell para instalar os pacotes. void abre_shell(GtkWidget *w, gpointer p){ - + #ifdef DEBUG + puts("abre_shell"); + puts("Vai abrir o shell."); + puts(""); + #endif /*DEBUG*/ int status; - g_spawn_command_line_sync("x-terminal-emulator", NULL, NULL, &status, NULL); // Abre o shell } void abre_site(GtkWidget *w, gpointer p){ - + #ifdef DEBUG + puts("abre_site"); + puts("Vai abrir o site do openslx."); + puts(""); + #endif /*DEBUG*/ int status; - g_spawn_command_line_sync("xdg-open http://slxboxdev.c3sl.ufpr.br", NULL, NULL, &status, NULL); // Abre o site. @@ -100,16 +122,23 @@ void abre_site(GtkWidget *w, gpointer p){ //Função que sai do programa, fazendo logout antes void sair(GtkWidget *w, gpointer p){ - + #ifdef DEBUG + puts("sair"); + puts("Vai fazer o logout."); + puts(""); + #endif /*DEBUG*/ logout(); gtk_main_quit(); } -// Função que checa se os scripts foram rodados com sucesso. Ela é utilizada tanto na tela 2 quanto na tela 3. +// Função que checa se os scripts foram rodados com sucesso. int checa_sucesso(){ - + #ifdef DEBUG + puts("checa_sucesso"); + puts(""); + #endif /*DEBUG*/ FILE *resultado; // Arquivo utilizado para ler o resultado do script. char controle; @@ -121,11 +150,19 @@ int checa_sucesso(){ dialogo = GTK_WIDGET(gtk_builder_get_object(builder, "error_dialog")); //Carrega o dialogo de erro + #ifdef DEBUG + puts("Vai abrir o arquivo contendo o resultdo da operação"); + puts(""); + #endif /*DEBUG*/ resultado = fopen(".result.out", "r"); // .result.out é o arquivo que armazena se o script foi executado corretamente ou não if(resultado != NULL){ fread(&controle, sizeof(char), 1, resultado); //Lê a saida do script - printf("Controle = %c\n", controle); + + #ifdef DEBUG + printf("Controle = %c\n", controle); + puts(""); + #endif /*DEBUG*/ if(controle == 's'){ //Caso o script não tenha sido executado com sucesso o programa informa o usuário por meio de uma janela de dialogo do GTK system("rm .result.out"); @@ -154,6 +191,11 @@ return(0); // Função que verifica se o usuário inseriu um nome com espaços no campo nome da imagem void stg4_clique_2a_tela_caller(GtkWidget *w, gpointer p){ + + #ifdef DEBUG + puts("stg4_clique_2a_tela_caller"); + puts(""); + #endif /*DEBUG*/ GtkWidget *entry; dados *data_ant = p; //Pega os dados recebidos pela chamada da função @@ -178,6 +220,11 @@ void stg4_clique_2a_tela_caller(GtkWidget *w, gpointer p){ //Altera o texto da janela de ajuda void altera_texto_help(GtkWidget *w, gpointer p){ + #ifdef DEBUG + puts("altera_texto_help"); + puts(""); + #endif /*DEBUG*/ + const char *nome; int nome_int; GtkWidget *label; @@ -217,6 +264,11 @@ void altera_texto_help(GtkWidget *w, gpointer p){ //Janela de ajuda void help_screen(GtkWidget *w, gpointer p){ + + #ifdef DEBUG + puts("help_screen"); + puts(""); + #endif /*DEBUG*/ GtkWidget *window_help, *button_help_inicio, *button_help_2a_tela, *button_help_3a_tela, *button_help_4a_tela, *button_help_5a_tela, *label_help_info; GtkBuilder *builder; @@ -251,12 +303,21 @@ void help_screen(GtkWidget *w, gpointer p){ //Sai do script chamado, verificando o sucesso void sai_do_script(GPid pid, gint status, gpointer p){ + #ifdef DEBUG + puts("sai_do_script"); + puts(""); + #endif /*DEBUG*/ + GtkWidget *loading; dados *data_ant = p; //Pega os dados recebidos pela chamada da função loading = data_ant->dado6; pid = data_ant->pid; gtk_widget_hide(loading); //Esconde a tela de loading - //gtk_widget_show(window); + + #ifdef DEBUG + puts("Vai checar o sucesso do script"); + puts(""); + #endif /*DEBUG*/ checa_sucesso(); //Checa se o script foi executdo corretamente g_spawn_close_pid(pid); //Mata o processo do script @@ -264,20 +325,24 @@ void sai_do_script(GPid pid, gint status, gpointer p){ //Fecha a janela que chama essa função e mostra a janela principal void mata_janela_e_chama_tela_principal(GtkWidget *w, gpointer p){ + + #ifdef DEBUG + puts("mata_janela_e_chama_tela_principal"); + puts(""); + #endif /*DEBUG*/ dados *data_ant = p; //Pega os dados recebidos pela chamada da função - puts("teste3"); GtkWidget *janela_ant; - puts("teste2"); janela_ant = data_ant->dado1; - puts("teste"); - gtk_widget_hide(janela_ant); //Esconde a janela anterior//Nao achou isso, nao cuspiu teste 4 - puts("teste4"); - g_signal_emit_by_name(janela_ant, "destroy"); - puts("teste5"); + gtk_widget_hide(janela_ant); //Esconde a janela anterior + g_signal_emit_by_name(janela_ant, "destroy"); //Emite o sinal de destroy pra janela pra fazer certo as coisas quando fechar } //Chama a tela principal void chama_tela_principal(GtkWidget *w, gpointer p){ + #ifdef DEBUG + puts("chama_tela_principal"); + puts(""); + #endif /*DEBUG*/ struct dados *data = malloc(sizeof(*data)); data->dado1 = NULL; tela_principal(NULL,data); diff --git a/useful/stg312/utils.h b/useful/stg312/utils.h index 01713a92b5263876b2f20a5bb297c996f20c86bf..9ed1ac756ce35aaa94c31c07ac790bca1292139c 100644 --- a/useful/stg312/utils.h +++ b/useful/stg312/utils.h @@ -5,7 +5,6 @@ #include <stdlib.h> #include <string.h> #include <errno.h> -#include <sys/wait.h> #include "openslx_gui.h" #include "stg4.h" #include "upload-utils.h" @@ -17,23 +16,6 @@ static const int NUMBER_OF_PARTS = 10; // static const char CLONE_STG4_SCRIPT[] = "./clone_stage4.sh"; static const char CLONE_STG4_SCRIPT_DUMMY[] = "./clone_stage4-dummy.sh"; static const char ARQUIVO_TESTE[] = "/home/ent13/Desktop/pasta-teste/teste.r1"; -/* -int calcula_tempo_upload(); - -void pega_dados_do_usuario(user_info *dados); - -void gera_arquivo_dados_usuario(); - -int faz_login_dummy(GtkWidget *w, gpointer p); - -int faz_login(GtkWidget *w, gpointer p); - -void faz_upload_dummy(GtkWidget *w, gpointer p); - -void faz_upload_teste(GtkWidget *w, gpointer p); - -void faz_upload(GtkWidget *w, gpointer p); -*/ void stg4_clique_2a_tela_caller(GtkWidget *w, gpointer p);