From e0bbaf87779eaf0d53d96bf4bc2efd91a9fde28b Mon Sep 17 00:00:00 2001 From: Arne Fitzenreiter Date: Wed, 20 Oct 2010 20:01:24 +0200 Subject: [PATCH] Add license dialog to the installer. --- langs/de/install/lang_de.c | 11 ++++- langs/en/install/lang_en.c | 10 ++++- langs/es/install/lang_es.c | 8 +++- langs/fr/install/lang_fr.c | 10 +++-- make.sh | 1 + src/install+setup/install/main.c | 22 +++++++++- src/install+setup/libsmooth/libsmooth.h | 2 + src/install+setup/libsmooth/main.c | 55 +++++++++++++++++++++++++ 8 files changed, 112 insertions(+), 7 deletions(-) diff --git a/langs/de/install/lang_de.c b/langs/de/install/lang_de.c index b59b5d064..0a1d27537 100644 --- a/langs/de/install/lang_de.c +++ b/langs/de/install/lang_de.c @@ -1,7 +1,7 @@ /* * German (de) Data File * - * This file is part of the IPCop Firewall. + * This file is part of the IPFire. * * IPCop is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,6 +17,10 @@ * along with IPCop; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * + * (c) IPFire Team + * + * based on work of SmoothWall and IPCop + * * (c) The SmoothWall Team * * IPCop translation @@ -567,5 +571,10 @@ char *de_tr[] = { "Starte den DHCP-Server ...", /* TR_DHCP_STOPSERVER */ "Stoppe den DHCP-Server ...", +/* TR_LICENSE_ACCEPT */ +"Ich akzeptiere diese Lizens.", +/* TR_LICENSE_NOT_ACCEPTED */ +"Die Lizens wurde nicht akzeptiert. Abbruch!", + }; diff --git a/langs/en/install/lang_en.c b/langs/en/install/lang_en.c index 939d627ad..690a5868c 100644 --- a/langs/en/install/lang_en.c +++ b/langs/en/install/lang_en.c @@ -1,7 +1,7 @@ /* * English (en) Data File * - * This file is part of the IPCop Firewall. + * This file is part of the IPFire. * * IPCop is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,6 +17,10 @@ * along with IPCop; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * + * (c) IPFire Team + * + * based on work of SmoothWall and IPCop + * * (c) The SmoothWall Team * */ @@ -563,6 +567,10 @@ char *en_tr[] = { "Starting DHCP-Server ...", /* TR_DHCP_STOPSERVER */ "Stopping DHCP-Server ...", +/* TR_LICENSE_ACCEPT */ +"I accept this license.", +/* TR_LICENSE_NOT_ACCEPTED */ +"License not accepted. Exit!", }; diff --git a/langs/es/install/lang_es.c b/langs/es/install/lang_es.c index 2e32de279..b9601377b 100644 --- a/langs/es/install/lang_es.c +++ b/langs/es/install/lang_es.c @@ -1,7 +1,7 @@ /* * Spanish (es) Data File * - * This file is part of the IPFire Firewall. + * This file is part of the IPFire. * * IPFire is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,6 +17,8 @@ * along with IPFire; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * + * (c) IPFire Team + * */ #include "libsmooth.h" @@ -561,6 +563,10 @@ char *es_tr[] = { "Iniciando Servidor DHCP ...", /* TR_DHCP_STOPSERVER */ "Deteniendo Servidor DHCP ...", +/* TR_LICENSE_ACCEPT */ +"I accept this license.", +/* TR_LICENSE_NOT_ACCEPTED */ +"License not accepted. Exit!", }; diff --git a/langs/fr/install/lang_fr.c b/langs/fr/install/lang_fr.c index 2147284dd..25c313c7c 100644 --- a/langs/fr/install/lang_fr.c +++ b/langs/fr/install/lang_fr.c @@ -1,7 +1,7 @@ /* * French (fr) Data File * - * This file is part of the IPCop Firewall. + * This file is part of the IPFire. * * IPCop is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,8 +17,8 @@ * along with IPCop; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * (c) The SmoothWall Team - * + * (c) IPFire Team + * */ #include "libsmooth.h" @@ -563,6 +563,10 @@ char *fr_tr[] = { "Démarrage du serveur DHCP ...", /* TR_DHCP_STOPSERVER */ "Arrêt du serveur DHCP ...", +/* TR_LICENSE_ACCEPT */ +"I accept this license.", +/* TR_LICENSE_NOT_ACCEPTED */ +"License not accepted. Exit!", }; diff --git a/make.sh b/make.sh index 1f986bc82..cc2d3c500 100755 --- a/make.sh +++ b/make.sh @@ -689,6 +689,7 @@ buildinstaller() { ipfiremake mbr ipfiremake memtest ipfiremake installer + cp -f $BASEDIR/doc/COPYING $BASEDIR/build/install/initrd/ installmake strip ipfiremake initrd } diff --git a/src/install+setup/install/main.c b/src/install+setup/install/main.c index a46de921f..dc3ac1934 100644 --- a/src/install+setup/install/main.c +++ b/src/install+setup/install/main.c @@ -35,6 +35,9 @@ extern char *fr_tr[]; int main(int argc, char *argv[]) { + + char discl_msg[40000] = "Disclaimer\n"; + char *langnames[] = { "Deutsch", "English", "Français", "Español", NULL }; char *shortlangnames[] = { "de", "en", "fr", "es", NULL }; char **langtrs[] = { de_tr, en_tr, fr_tr, es_tr, NULL }; @@ -57,7 +60,7 @@ int main(int argc, char *argv[]) int allok_fastexit=0; int raid_disk = 0; struct keyvalue *ethernetkv = initkeyvalues(); - FILE *handle, *cmdfile; + FILE *handle, *cmdfile, *copying; char line[STRING_SIZE]; char string[STRING_SIZE]; long memory = 0, disk = 0, free; @@ -108,6 +111,16 @@ int main(int argc, char *argv[]) } } + // Read gpl ... + if (! (copying = fopen("/COPYING", "r"))) + { + fprintf(flog, "Couldn't open gpl (/COPYING)\n"); + sprintf(discl_msg, "Couldn't open gpl (/COPYING)\n"); + } else { + fread(discl_msg, 1, 40000, copying); + fclose(copying); + } + // Load common modules mysystem("/sbin/modprobe iso9660"); // CDROM mysystem("/sbin/modprobe ext2"); // Boot patition @@ -135,6 +148,13 @@ int main(int argc, char *argv[]) sprintf(message, ctr[TR_WELCOME], NAME); newtWinMessage(title, ctr[TR_OK], message); + if (!unattended) { + if (disclaimerbox(discl_msg)==0) { + errorbox(ctr[TR_LICENSE_NOT_ACCEPTED]); + goto EXIT; + } + } + switch (mysystem("/bin/mountsource.sh")) { case 0: break; diff --git a/src/install+setup/libsmooth/libsmooth.h b/src/install+setup/libsmooth/libsmooth.h index 54d702926..fb3819363 100644 --- a/src/install+setup/libsmooth/libsmooth.h +++ b/src/install+setup/libsmooth/libsmooth.h @@ -79,6 +79,8 @@ void reboot(void); void stripnl(char *s); int mysystem(char *command); void errorbox(char *message); +int statuswindowscroll(int width, int height, char *title, char *text, ...); +int disclaimerbox(char *message); void statuswindow(int width, int height, char *title, char *text, ...); int runcommandwithprogress(int width, int height, char *title, char *command, int lines, char *text, ...); diff --git a/src/install+setup/libsmooth/main.c b/src/install+setup/libsmooth/main.c index 710183a21..8de8c231e 100644 --- a/src/install+setup/libsmooth/main.c +++ b/src/install+setup/libsmooth/main.c @@ -45,6 +45,61 @@ void errorbox(char *message) newtWinMessage(ctr[TR_ERROR], ctr[TR_OK], message); } +int scrollmsgbox(int width, int height, char *title, char *text, ...) +{ + int rc = 0; + newtComponent t, f, b, c; + char *buf = NULL; + char checkbox; + int size = 0; + int i = 0; + va_list args; + + va_start(args, text); + + do { + size += 40000; + if (buf) free(buf); + buf = malloc(size); + i = vsnprintf(buf, size, text, args); + } while (i == size); + + va_end(args); + + newtCenteredWindow(width, height, title); + + b = newtCompactButton(width - 15 ,height - 2, ctr[TR_OK]); + c = newtCheckbox(3, height - 2, ctr[TR_LICENSE_ACCEPT], ' ', " *", &checkbox); + + t = newtTextbox(1, 1, width - 2, height - 4, NEWT_TEXTBOX_WRAP+NEWT_TEXTBOX_SCROLL); + newtTextboxSetText(t, buf); + + f = newtForm(NULL, NULL, 0); + free(buf); + + newtFormAddComponent(f, c); + newtFormAddComponent(f, b); + newtFormAddComponent(f, t); + + newtRunForm(f); + if (checkbox=='*') rc=1; + newtFormDestroy(f); + return rc; +} + +int disclaimerbox(char *message) +{ + int rc; + char title[STRING_SIZE]; + + sprintf (title, "%s v%s - %s", NAME, VERSION, SLOGAN); + rc = scrollmsgbox(75, 20, title, message); + newtPopWindow(); + + return rc; +} + + void statuswindow(int width, int height, char *title, char *text, ...) { newtComponent t, f; -- 2.39.2