Skip to content
Snippets Groups Projects
Commit 85ad2aba authored by Enris Nogare Von Tein's avatar Enris Nogare Von Tein
Browse files

Merge branch 'issue-3063-stg4clnr' into develop

Conflicts:
	.gitignore
parents 9b522246 646936f4
Branches
No related tags found
No related merge requests found
Showing
with 1249 additions and 284 deletions
......@@ -9,12 +9,14 @@ build/
.fetched_source
list*
test
scripts/.resut.out
logs/
server/local_builds/
/config
remote/modules/systemd/dltmp.systemd-204.tar.xz
scripts/home/
stage4/
useful/backup-por-facilidade/
useful/ainda-nao-sei-usar-o-git.tar.gz
useful/ainda-nao-sei-usar-o-git/
useful/stg312-dummy/
......@@ -29,10 +31,10 @@ useful/stg312/po/
useful/stg312/stage4-cloner-doc.odt
useful/stg312/stage4_cloner
useful/stg312/transl-test.txt
useful/stg312/upload
useful/stg312/user_data.info
useful/stg4cloner/cloner.desktop
useful/unused/
/server/configs/enris/
/server/modules/image-creator/
server/configs/enris/
server/modules/image-creator/
......@@ -54,5 +54,5 @@ else
fi
pinfo "Cloning via rsync"
cat "$INCLUDE" "$EXCLUDE" | rsync -a --delete --delete-excluded --numeric-ids -v --exclude-from=- "${RSYNC_OPTS}" "${RSYNC_SOURCE}" "${TARGET_DIR}" || perror "rsync from '${RSYNC_SOURCE}' to '${TARGET_DIR}' failed."
cat "$INCLUDE" "$EXCLUDE" | rsync -a --delete --exclude="${TARGET_DIR}" --delete-excluded --numeric-ids -v --exclude-from=- "${RSYNC_OPTS}" "${RSYNC_SOURCE}" "${TARGET_DIR}" || perror "rsync from '${RSYNC_SOURCE}' to '${TARGET_DIR}' failed."
{"login":"root","name":"MEGA ROOT","email":"root@root.com","city":null,"status":"ok","msg":"Get informations of user successful","code":"002"}
\ No newline at end of file
{"login":"root","name":"Alessandro Elias","email":"ae11@c3sl.ufpr.br","city":null,"status":"ok","msg":"Get informations of user successful","code":"002"}
\ No newline at end of file
Nothing to see here, move along now
\ No newline at end of file
s
1727784 testando-linha-de-comando-4.r1.tar.gz
1729632 testando-versao0-release.r1.tar.gz
Ping: 2.781 ms
Download: 48.69 Mbyte/s
Upload: 18.60 Mbyte/s
Ping: 2.766 ms
Download: 47.71 Mbyte/s
Upload: 27.54 Mbyte/s
{"uploadid":"dqjl1SbOqGCRIVYorSppGBme18HGNzEfS3R","status":"ok","code":"003","msg":"New upload succesful"}
\ No newline at end of file
{"uploadid":"ITMF3PllC6JxmO50UpfeBaM23FlxePUBXmp","status":"ok","code":"003","msg":"New upload succesful"}
\ No newline at end of file
......@@ -2,6 +2,7 @@
#$1 é o caminho para o tm-scripts, $2 é a pasta selecionada pelo usuario, $3 é "local", $4 é a pasta onde será clonado o stage 4, $5 é o nome da imagem, $6 é se a pasta não compactada deve ser removida ou não
#pwd
#./loading_screen_openslx &
echo n > .result.out
mkdir -p $2
echo criou o dir
caminho=$(pwd)
......@@ -26,16 +27,20 @@ else
#echo Escreveu
#cat .result.out
echo "Sucesso ao clonar."
cd "$2"
if mksquashfs "$4" "$5" -b 1M ; then
mv "$5" "$2"
cd $caminho
echo move do 5 pro 2
#mv "$5" "$2"
if [ $6 == "1" ]; then
rm -rf "$4"
fi
cd "$2"
/root/dnbd3/build/dnbd3-server --crc "$5"
tar cvzf "$5".tar.gz user_data.info "$5" "$5".crc
#/root/dnbd3/build/dnbd3-server --crc "$5"
tar cvzf "$5".tar.gz user_data.info "$5"
split --verbose -n $7 "$5".tar.gz "$5".tar.gz.
du "$5".tar.gz > .size.out
echo move do .size
mv .size.out "$caminho"
cd "$caminho"
#echo Caminho novo
......
apt-get update
apt-get install -y squashfs-tools
apt-get install -y synaptic
apt-get install -y libjansson-dev
apt-get install -y libjansson4
apt-get install -y python-setuptools
easy_install speedtest_cli
apt-get install -y libcurl4-openssl-dev
apt-get install -y libgtk-3-dev
useful/stg312/line-s.png

327 B

NAME=openslx_gui
CFLAGS=-g -Wall -fdiagnostics-show-option
GTKFLAGS=-export-dynamic `pkg-config --cflags --libs gtk+-3.0 jansson` -lX11 -lcurl
SRCS=openslx_gui.c stg4.c utils.c
SRCS=openslx_gui.c stg4.c utils.c upload-utils.c
CC=gcc
# top-level rule to create the program.
......
No preview for this file type
......@@ -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>
......@@ -14,19 +13,27 @@
#include <gdk/gdk.h>
#include <glib.h>
#include <jansson.h>
#include "upload-utils.h"
//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));
dados *data_ant = p;
janela_ant = (GtkWidget*) data_ant->dado1;
#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
builder = gtk_builder_new();
gtk_builder_add_from_file (builder, "openslx_gui_v01.glade", NULL);
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
button_continua_upload = GTK_WIDGET(gtk_builder_get_object(builder, "button_continua_upload"));
button_nao_continua = GTK_WIDGET(gtk_builder_get_object(builder, "button_nao_continua"));
......@@ -34,11 +41,16 @@ 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"));
upload_in_progress = fopen(".progress.out", "a+");
printf("Linha %d\n", __LINE__);
#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
rewind(upload_in_progress);
fscanf(upload_in_progress, "%s", old_upload);
printf("Linha %d\n", __LINE__);
fscanf(upload_in_progress, "%s", old_upload);
fscanf(upload_in_progress, "%s", old_upload);
gtk_label_set_text(GTK_LABEL(label_nome_imagem), old_upload);
......@@ -48,33 +60,46 @@ void tela_upload_antigo(GtkWidget *w,gpointer p){
data_ant->dado1 = window_upload_antigo;
g_signal_connect(window_upload_antigo, "destroy", G_CALLBACK(sair), NULL);
g_signal_connect(button_continua_upload, "clicked", G_CALLBACK(faz_upload_teste), data_ant);
g_signal_connect(button_continua_upload, "clicked", G_CALLBACK(faz_upload_teste), data_ant); //Isso chama a teste pois o upload.c lida com os dados do arquivo a ser feito o upload.
g_signal_connect(button_nao_continua, "clicked", G_CALLBACK(tela_principal), data_ant);
gtk_widget_hide(janela_ant);
gtk_widget_hide(janela_ant); //Esconde a janela anterior
gtk_widget_show_all(window_upload_antigo);
}
//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)){
#ifdef DEBUG
puts("Entrou no if");
g_spawn_command_line_sync("./squash.sh 1", NULL, NULL, &status, NULL); // Executa o script
puts("");
#endif /*DEBUG*/
g_spawn_command_line_sync("speedtest-cli --bytes --simple > .speed.out", NULL, NULL, &status, NULL); // Executa o script
}
builder = gtk_builder_new();
gtk_builder_add_from_file (builder, "openslx_gui_v01.glade", NULL);
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
dados *data_ant = p;
dados *data_ant = p; //Pega os dados recebidos pela chamada da função
FILE *upload_antigo = fopen(".progress.out", "w");
FILE *upload_antigo = fopen(".progress.out", "w"); //Zera o arquivo de upload antigo, o programa só chega aqui se o usuario ja lidou com o upload antigo
fclose(upload_antigo);
if(data_ant){
janela_ant = (GtkWidget*) data_ant->dado1;
//if(data_ant){ //ver se isso faz alguma coisa
janela_ant = (GtkWidget*) data_ant->dado1; //Pega a janela antiga que chamou essa nova janela
char *greeting_text;
greeting_text = malloc(255*sizeof(char));
......@@ -82,23 +107,35 @@ void tela_principal(GtkWidget *w,gpointer p){
user_info dados_do_user;
if(janela_ant){
gtk_widget_hide(janela_ant);
gtk_widget_hide(janela_ant); //Esconde a janela anterior
}
pega_dados_do_usuario(&dados_do_user);
#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
#ifdef DEBUG
puts(dados_do_user.name);
puts(dados_do_user.login);
puts(dados_do_user.email);
puts(dados_do_user.city);
gera_arquivo_dados_usuario();
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, "!");
label_greeting = GTK_WIDGET(gtk_builder_get_object(builder, "label_greeting"));
gtk_label_set_text(GTK_LABEL(label_greeting), greeting_text);
/*
* FAZ LOGIN
*/
}
//}
......@@ -111,7 +148,6 @@ void tela_principal(GtkWidget *w,gpointer p){
data->dado1 = janela_principal;
data->builder = builder;
data->dado2 = button_stg4;
data->control = 0;
g_signal_connect(janela_principal, "destroy", G_CALLBACK(sair), NULL);
g_signal_connect (G_OBJECT (janela_principal), "key_press_event", G_CALLBACK (on_key_press), data); //Conecta os sinais pra quando apertar uma tecla
......@@ -123,24 +159,26 @@ void tela_principal(GtkWidget *w,gpointer p){
gtk_widget_show_all(janela_principal);
}
//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();
gtk_builder_add_from_file (builder, "openslx_gui_v01.glade", NULL);
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
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;
......@@ -149,24 +187,29 @@ void tela_login(){
data->dado3 = entry_login;
data->dado4 = entry_passwd;
data->dado5 = label_login_erro;
data->control = 0;
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);
//g_signal_connect(button_login, "clicked", G_CALLBACK(faz_login_dummy), data);
//g_signal_connect(entry_passwd, "activate", G_CALLBACK(faz_login_dummy), data);
printf("Linha %d\n", __LINE__);
g_signal_connect(button_login, "clicked", G_CALLBACK(faz_login), data); //Caso ele aperte enter com o foco no password
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");
......@@ -174,13 +217,18 @@ int main(int argc, char *argv[]){
pid_t pid;
int status;
if (argc == 1){
if (argc == 1){ //Caso seja chamado para mostrar a GUI
GtkCssProvider *provider;
GdkDisplay *display;
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();
......@@ -193,7 +241,7 @@ int main(int argc, char *argv[]){
gtk_main();
}else{
if (argc == 6){
if (argc == 6){ //Se for a opção com parametros
......@@ -206,7 +254,6 @@ int main(int argc, char *argv[]){
gtk_entry_set_text(GTK_ENTRY(login), argv[4]);
gtk_entry_set_text(GTK_ENTRY(senha), argv[5]);
data->control = 2;
data->dado3 = login;
data->dado4 = senha;
......
......@@ -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
......@@ -24,7 +26,6 @@ typedef struct dados{
GtkWidget *dado6;
GtkBuilder *builder;
GPid pid;
int control;
user_info informacoes;
}dados;
......
This diff is collapsed.
This diff is collapsed.
......@@ -5,10 +5,10 @@
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <sys/wait.h>
void stg4_tela_confirmacao_upload(GtkWidget *w,gpointer p);
//void stg4_tela_confirmacao_upload(GtkWidget *w,gpointer p);
void stg4_tela_confirmacao_upload(GPid pid, gint status,gpointer p);
// A função que exibe a quarta tela do programa, a tela final
......
File added
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment