tomb

the crypto undertaker
git clone git://parazyd.org/tomb.git
Log | Files | Refs | README | LICENSE

commit 8f25001f57a056486d42a98fbcd7f5f63cfce233
parent fa75d0f7bc374b88911c2bc5746bafb156987286
Author: Jaromil <jaromil@dyne.org>
Date:   Sun,  8 Sep 2013 16:10:19 +0200

fixed versioning and extras reorganization

Diffstat:
MREADME | 3++-
Aextras/gtk-tray/Makefile | 7+++++++
Rextras/monmort.xpm -> extras/gtk-tray/monmort.xpm | 0
Aextras/gtk-tray/tomb-gtk-tray.c | 341+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rextras/kdf/.gitignore -> extras/kdf-keys/.gitignore | 0
Rextras/kdf/Makefile -> extras/kdf-keys/Makefile | 0
Rextras/kdf/README -> extras/kdf-keys/README | 0
Rextras/kdf/benchmark.c -> extras/kdf-keys/benchmark.c | 0
Rextras/kdf/gen_salt.c -> extras/kdf-keys/gen_salt.c | 0
Rextras/kdf/hexencode.c -> extras/kdf-keys/hexencode.c | 0
Rextras/kdf/pbkdf2.c -> extras/kdf-keys/pbkdf2.c | 0
Rextras/kdf/test.sh -> extras/kdf-keys/test.sh | 0
Rextras/kdf/test.txt -> extras/kdf-keys/test.txt | 0
Dextras/tomb-status.c | 341-------------------------------------------------------------------------------
Mtomb | 2+-
15 files changed, 351 insertions(+), 343 deletions(-)

diff --git a/README b/README @@ -68,7 +68,7 @@ Tomb is an evolution of the 'mknest' tool developed for the dyne:bolic GNU/Linux distribution, which is used by its 'nesting' mechanism to encrypt the Home directory of users, a system implemented already in 2001. Since then, the same shell routines kept being maintained and in -2007 they were adapted to work on Debian and Arch distributions. +2007 they were adapted to work on various other GNU/Linux distributions. As of today, Tomb is a well stable tool also used in mission critical situations by a number of activists in endangered zones. It has been @@ -93,3 +93,4 @@ http://lists.dyne.org or via IRC on https://irc.dyne.org channel #dyne Some enthusiastic ideas are in the TODO file. Information on developers involved is found in the AUTHORS file. + diff --git a/extras/gtk-tray/Makefile b/extras/gtk-tray/Makefile @@ -0,0 +1,7 @@ + +all: + gcc -I. `pkg-config --cflags libnotify gtk+-2.0` $(CFLAGS) -c tomb-gtk-tray.c + gcc tomb-gtk-tray.o `pkg-config --libs libnotify gtk+-2.0` -o tomb-gtk-tray + +clean: + rm *.o tomb-gtk-tray diff --git a/extras/monmort.xpm b/extras/gtk-tray/monmort.xpm diff --git a/extras/gtk-tray/tomb-gtk-tray.c b/extras/gtk-tray/tomb-gtk-tray.c @@ -0,0 +1,341 @@ +/* Tomb - encrypted storage undertaker + * + * (c) Copyright 2007-2011 Denis Roio <jaromil@dyne.org> + * + * This source code is free software; you can redistribute it and/or + * modify it under the terms of the GNU Public License as published + * by the Free Software Foundation; either version 3 of the License, + * or (at your option) any later version. + * + * This source code is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * Please refer to the GNU Public License for more details. + * + * You should have received a copy of the GNU Public License along with + * this source code; if not, write to: + * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <string.h> +#include <errno.h> +#include <libgen.h> + +#include <sys/types.h> +#include <sys/wait.h> + +#include <gtk/gtk.h> +#include <libnotify/notify.h> + +/* The Tomb icon is an artwork by Jordi aka MonMort + a nomadic graffiti artist from Barcelona */ +#include <monmort.xpm> + +GdkPixbuf *pb_monmort; +GtkStatusIcon *status_tomb; +GtkMenu *menu_left, *menu_right; + +NotifyNotification *notice; +GError *error; + +char mapper[256]; +char filename[256]; +char mountpoint[256]; + +// forward declaration of callbacks +gboolean left_click(GtkWidget *w, GdkEvent *e); +gboolean cb_view(GtkWidget *w, GdkEvent *e); +gboolean cb_close(GtkWidget *w, GdkEvent *e); +gboolean cb_slam(GtkWidget *w, GdkEvent *e); + +gboolean right_click(GtkWidget *w, GdkEvent *e); +gboolean cb_about(GtkWidget *w, GdkEvent *e); + + +int main(int argc, char **argv) { + GtkWidget *item_close, *item_slam; + GtkWidget *item_view, *item_about; + gint menu_x, menu_y; + gboolean push_in = TRUE; + + char tomb_file[512]; + char tooltip[256]; + + gtk_set_locale(); + gtk_init(&argc, &argv); + + // get the information from commandline + if(argc<2) { + fprintf(stderr, "error: need at least one argument, the path to a dm-crypt device mapper\n"); + exit(1); + } else { + // TODO: check if mapper really exists + snprintf(mapper,255, "%s", argv[1]); + } + + if(argc<3) sprintf(filename, "unknown"); + else snprintf(filename,255, "%s", argv[2]); + + if(argc<4) sprintf(mountpoint,"unknown"); + else snprintf(mountpoint,255, "%s", argv[3]); + + // libnotify + notify_init("Tomb"); + + // set and show the status icon + pb_monmort = gdk_pixbuf_new_from_xpm_data(monmort); + status_tomb = gtk_status_icon_new_from_pixbuf(pb_monmort); + // gtk_status_icon_set_name(status_tomb, "tomb"); + gtk_status_icon_set_title(status_tomb, "Tomb"); + + snprintf(tooltip,255,"%s",mountpoint); + gtk_status_icon_set_tooltip_text (status_tomb, tooltip); + + // LEFT click menu + menu_left = (GtkMenu*) gtk_menu_new(); + // view + item_view = gtk_menu_item_new_with_label("Explore"); + gtk_menu_attach(menu_left, item_view, 0, 1, 0, 1); + g_signal_connect_swapped(item_view, "activate", G_CALLBACK(cb_view), NULL); + gtk_widget_show(item_view); + // close + item_close = gtk_menu_item_new_with_label("Close"); + gtk_menu_attach(menu_left, item_close, 0, 1, 1, 2); + g_signal_connect_swapped(item_close, "activate", G_CALLBACK(cb_close), NULL); + gtk_widget_show(item_close); + // slam + item_slam = gtk_menu_item_new_with_label("Slam"); + gtk_menu_attach(menu_left, item_slam, 0, 1, 2, 3); + g_signal_connect_swapped(item_slam, "activate", G_CALLBACK(cb_slam), NULL); + gtk_widget_show(item_slam); + + // connect it + g_signal_connect_swapped(status_tomb, "activate", G_CALLBACK(left_click), menu_left); + + + // RIGHT click menu + menu_right = (GtkMenu*) gtk_menu_new(); + // about + item_about = gtk_menu_item_new_with_label("About"); + gtk_menu_attach(menu_right, item_about, 0, 1, 0, 1); + g_signal_connect_swapped(item_about, "activate", G_CALLBACK(cb_about), NULL); + g_signal_connect_swapped(item_about, "popup-menu", G_CALLBACK(cb_about), NULL); + gtk_widget_show(item_about); + // connect it + g_signal_connect_swapped(status_tomb, "popup-menu", G_CALLBACK(right_click), menu_right); + + // status icon +#if (HAVE_NOTIFY_NOTIFICATION_NEW_WITH_STATUS_ICON) + notice = notify_notification_new_with_status_icon + ("Tomb encrypted undertaker", + "We started digging out bones", + NULL, status_tomb); +#else + notice = notify_notification_new + ("Tomb encrypted undertaker", + "We started digging out bones", + NULL); +#endif + notify_notification_set_icon_from_pixbuf(notice, pb_monmort); + + notify_notification_show(notice, &error); + + gtk_main(); + + notify_uninit(); + + exit(0); + +} + +// callbacks left click +gboolean left_click(GtkWidget *w, GdkEvent *e) { + gtk_menu_popup(menu_left, NULL, NULL, + gtk_status_icon_position_menu, status_tomb, + 1, gtk_get_current_event_time()); + return TRUE; +} +gboolean cb_view(GtkWidget *w, GdkEvent *e) { + int pipefd[2]; + pid_t cpid; + char buf; + int c, res; + char map[256]; + + if (pipe(pipefd) <0) { + fprintf(stderr,"pipe creation error: %s\n", strerror(errno)); + return FALSE; + } + + cpid = fork(); + if (cpid == -1) { + fprintf(stderr,"fork error: %s\n", strerror(errno)); + return FALSE; + } + if (cpid == 0) { // Child + close(pipefd[1]); // close unused write end + for(c=0; read(pipefd[0], &buf, 1) > 0; c++) + map[c] = buf; + close(pipefd[0]); + map[c] = 0; + execlp("tomb-open", "tomb-open", map, (char*)NULL); + _exit(1); + } + close(pipefd[0]); // close unused read end + write(pipefd[1], mountpoint, strlen(mountpoint)); + close(pipefd[1]); // reader will see EOF + + return TRUE; +} + + +gboolean cb_close(GtkWidget *w, GdkEvent *e) { + int pipefd[2]; + pid_t cpid; + char buf; + int c, res; + char map[256]; + + if (pipe(pipefd) <0) { + fprintf(stderr,"pipe creation error: %s\n", strerror(errno)); + return FALSE; + } + + cpid = fork(); + if (cpid == -1) { + fprintf(stderr,"fork error: %s\n", strerror(errno)); + return FALSE; + } + if (cpid == 0) { // Child + close(pipefd[1]); // close unused write end + for(c=0; read(pipefd[0], &buf, 1) > 0; c++) + map[c] = buf; + close(pipefd[0]); + map[c] = 0; + execlp("tomb", "tomb", "close", map, (char*)NULL); + _exit(1); + } + close(pipefd[0]); // close unused read end + write(pipefd[1], mapper, strlen(mapper)); + close(pipefd[1]); // reader will see EOF + + waitpid(cpid, &res, 0); + if(res==0) { + gtk_main_quit(); + notify_uninit(); + exit(0); + } + /* tomb-notify "Tomb '$tombname' is too busy." \ + "Close all applications and file managers, then try again." + */ + return TRUE; +} + + +gboolean cb_slam(GtkWidget *w, GdkEvent *e) { + int pipefd[2]; + pid_t cpid; + char buf; + int c, res; + char map[256]; + + if (pipe(pipefd) <0) { + fprintf(stderr,"pipe creation error: %s\n", strerror(errno)); + return FALSE; + } + + cpid = fork(); + if (cpid == -1) { + fprintf(stderr,"fork error: %s\n", strerror(errno)); + return FALSE; + } + if (cpid == 0) { // Child + close(pipefd[1]); // close unused write end + for(c=0; read(pipefd[0], &buf, 1) > 0; c++) + map[c] = buf; + close(pipefd[0]); + map[c] = 0; + execlp("tomb", "tomb", "slam", map, (char*)NULL); + _exit(1); + } + close(pipefd[0]); // close unused read end + write(pipefd[1], mapper, strlen(mapper)); + close(pipefd[1]); // reader will see EOF + + waitpid(cpid, &res, 0); + if(res==0) { + gtk_main_quit(); + notify_uninit(); + exit(0); + } + /* tomb-notify "Tomb '$tombname' is too busy." \ + "Close all applications and file managers, then try again." + */ + return TRUE; +} + +// callbacks right click +gboolean right_click(GtkWidget *w, GdkEvent *e) { + gtk_menu_popup(menu_right, NULL, NULL, + gtk_status_icon_position_menu, status_tomb, + 1, gtk_get_current_event_time()); + return TRUE; +} +gboolean cb_about(GtkWidget *w, GdkEvent *e) { + const gchar *authors[] = {"Jaromil - http://jaromil.dyne.org", + "Code reviews and contributions by:", + "Dreamer, Hellekin O. Wolf, Shining, Mancausoft,", + "Anathema, Boyska and Nignux", NULL}; + const gchar *artists[] = {"Món Mort - http://monmort.blogspot.com", + "Asbesto Molesto - http://freaknet.org/asbesto", + NULL}; + GtkWidget *dialog = gtk_about_dialog_new(); + gtk_about_dialog_set_name(GTK_ABOUT_DIALOG(dialog), "Tomb GTK Tray"); + gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(dialog), "1.4"); + gtk_about_dialog_set_copyright(GTK_ABOUT_DIALOG(dialog), + "(C)2007-2013 Jaromil @ Dyne.org Foundation"); + gtk_about_dialog_set_artists(GTK_ABOUT_DIALOG(dialog), artists); + gtk_about_dialog_set_authors(GTK_ABOUT_DIALOG(dialog), authors); + + gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(dialog), + "The Crypto Undertaker\n" +"\n" +"This program helps people keeping their bones together by taking care of their private data inside encrypted storage filesystems that are easy to access and transport.\n" +"\n" +"The level of security provided by this program is fairly strong: it uses AES/SHA256 (cbc-essiv) to access the encrypted volumes in realtime so that all what is physically stored on your disc is only in an encrypted form.\n" +"Tomb also encourages users to separate keys from data, for instance storing them on USB.\n" +"\n" +); + gtk_about_dialog_set_website(GTK_ABOUT_DIALOG(dialog), "http://tomb.dyne.org"); + gtk_about_dialog_set_logo(GTK_ABOUT_DIALOG(dialog), pb_monmort); + gtk_about_dialog_set_logo_icon_name(GTK_ABOUT_DIALOG(dialog), "monmort"); + // this below is active since gtk 3.0 so too early for it now + // gtk_about_dialog_set_license_type(GTK_ABOUT_DIALOG(dialog), GtkLicense.GTK_LICENSE_GPL_3_0); + gtk_about_dialog_set_license(GTK_ABOUT_DIALOG(dialog), +"This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n" +"\n" +"This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n" +"\n" +"You should have received a copy of the GNU General Public License along with this program.\n" +"If not, see <http://www.gnu.org/licenses>\n" +"\n" +" The latest Tomb sourcecode is published on <http://tomb.dyne.org>\n"); + gtk_about_dialog_set_wrap_license(GTK_ABOUT_DIALOG(dialog), TRUE); + gtk_dialog_run(GTK_DIALOG (dialog)); + gtk_widget_destroy(dialog); + return TRUE; +} + + + // GtkWidget *dialog = + // gtk_message_dialog_new (NULL, + // GTK_DIALOG_DESTROY_WITH_PARENT, + // GTK_MESSAGE_INFO, + // GTK_BUTTONS_CLOSE, + // "Tomb '%s' open on '%s'\n" + // "device mapper: %s", filename, mountpoint, mapper); + // gtk_dialog_run (GTK_DIALOG (dialog)); + // gtk_widget_destroy (dialog); diff --git a/extras/kdf/.gitignore b/extras/kdf-keys/.gitignore diff --git a/extras/kdf/Makefile b/extras/kdf-keys/Makefile diff --git a/extras/kdf/README b/extras/kdf-keys/README diff --git a/extras/kdf/benchmark.c b/extras/kdf-keys/benchmark.c diff --git a/extras/kdf/gen_salt.c b/extras/kdf-keys/gen_salt.c diff --git a/extras/kdf/hexencode.c b/extras/kdf-keys/hexencode.c diff --git a/extras/kdf/pbkdf2.c b/extras/kdf-keys/pbkdf2.c diff --git a/extras/kdf/test.sh b/extras/kdf-keys/test.sh diff --git a/extras/kdf/test.txt b/extras/kdf-keys/test.txt Binary files differ. diff --git a/extras/tomb-status.c b/extras/tomb-status.c @@ -1,341 +0,0 @@ -/* Tomb - encrypted storage undertaker - * - * (c) Copyright 2007-2011 Denis Roio <jaromil@dyne.org> - * - * This source code is free software; you can redistribute it and/or - * modify it under the terms of the GNU Public License as published - * by the Free Software Foundation; either version 3 of the License, - * or (at your option) any later version. - * - * This source code is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * Please refer to the GNU Public License for more details. - * - * You should have received a copy of the GNU Public License along with - * this source code; if not, write to: - * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <string.h> -#include <errno.h> -#include <libgen.h> - -#include <sys/types.h> -#include <sys/wait.h> - -#include <gtk/gtk.h> -#include <libnotify/notify.h> - -/* The Tomb icon is an artwork by Jordi aka MonMort - a nomadic graffiti artist from Barcelona */ -#include <monmort.xpm> - -GdkPixbuf *pb_monmort; -GtkStatusIcon *status_tomb; -GtkMenu *menu_left, *menu_right; - -NotifyNotification *notice; -GError *error; - -char mapper[256]; -char filename[256]; -char mountpoint[256]; - -// forward declaration of callbacks -gboolean left_click(GtkWidget *w, GdkEvent *e); -gboolean cb_view(GtkWidget *w, GdkEvent *e); -gboolean cb_close(GtkWidget *w, GdkEvent *e); -gboolean cb_slam(GtkWidget *w, GdkEvent *e); - -gboolean right_click(GtkWidget *w, GdkEvent *e); -gboolean cb_about(GtkWidget *w, GdkEvent *e); - - -int main(int argc, char **argv) { - GtkWidget *item_close, *item_slam; - GtkWidget *item_view, *item_about; - gint menu_x, menu_y; - gboolean push_in = TRUE; - - char tomb_file[512]; - char tooltip[256]; - - gtk_set_locale(); - gtk_init(&argc, &argv); - - // get the information from commandline - if(argc<2) { - fprintf(stderr, "error: need at least one argument, the path to a dm-crypt device mapper\n"); - exit(1); - } else { - // TODO: check if mapper really exists - snprintf(mapper,255, "%s", argv[1]); - } - - if(argc<3) sprintf(filename, "unknown"); - else snprintf(filename,255, "%s", argv[2]); - - if(argc<4) sprintf(mountpoint,"unknown"); - else snprintf(mountpoint,255, "%s", argv[3]); - - // libnotify - notify_init(PACKAGE); - - // set and show the status icon - pb_monmort = gdk_pixbuf_new_from_xpm_data(monmort); - status_tomb = gtk_status_icon_new_from_pixbuf(pb_monmort); - // gtk_status_icon_set_name(status_tomb, "tomb"); - gtk_status_icon_set_title(status_tomb, "Tomb"); - - snprintf(tooltip,255,"%s",mountpoint); - gtk_status_icon_set_tooltip_text (status_tomb, tooltip); - - // LEFT click menu - menu_left = (GtkMenu*) gtk_menu_new(); - // view - item_view = gtk_menu_item_new_with_label("Explore"); - gtk_menu_attach(menu_left, item_view, 0, 1, 0, 1); - g_signal_connect_swapped(item_view, "activate", G_CALLBACK(cb_view), NULL); - gtk_widget_show(item_view); - // close - item_close = gtk_menu_item_new_with_label("Close"); - gtk_menu_attach(menu_left, item_close, 0, 1, 1, 2); - g_signal_connect_swapped(item_close, "activate", G_CALLBACK(cb_close), NULL); - gtk_widget_show(item_close); - // slam - item_slam = gtk_menu_item_new_with_label("Slam"); - gtk_menu_attach(menu_left, item_slam, 0, 1, 2, 3); - g_signal_connect_swapped(item_slam, "activate", G_CALLBACK(cb_slam), NULL); - gtk_widget_show(item_slam); - - // connect it - g_signal_connect_swapped(status_tomb, "activate", G_CALLBACK(left_click), menu_left); - - - // RIGHT click menu - menu_right = (GtkMenu*) gtk_menu_new(); - // about - item_about = gtk_menu_item_new_with_label("About"); - gtk_menu_attach(menu_right, item_about, 0, 1, 0, 1); - g_signal_connect_swapped(item_about, "activate", G_CALLBACK(cb_about), NULL); - g_signal_connect_swapped(item_about, "popup-menu", G_CALLBACK(cb_about), NULL); - gtk_widget_show(item_about); - // connect it - g_signal_connect_swapped(status_tomb, "popup-menu", G_CALLBACK(right_click), menu_right); - - // status icon -#if (HAVE_NOTIFY_NOTIFICATION_NEW_WITH_STATUS_ICON) - notice = notify_notification_new_with_status_icon - ("Tomb encrypted undertaker", - "We started digging out bones", - NULL, status_tomb); -#else - notice = notify_notification_new - ("Tomb encrypted undertaker", - "We started digging out bones", - NULL); -#endif - notify_notification_set_icon_from_pixbuf(notice, pb_monmort); - - notify_notification_show(notice, &error); - - gtk_main(); - - notify_uninit(); - - exit(0); - -} - -// callbacks left click -gboolean left_click(GtkWidget *w, GdkEvent *e) { - gtk_menu_popup(menu_left, NULL, NULL, - gtk_status_icon_position_menu, status_tomb, - 1, gtk_get_current_event_time()); - return TRUE; -} -gboolean cb_view(GtkWidget *w, GdkEvent *e) { - int pipefd[2]; - pid_t cpid; - char buf; - int c, res; - char map[256]; - - if (pipe(pipefd) <0) { - fprintf(stderr,"pipe creation error: %s\n", strerror(errno)); - return FALSE; - } - - cpid = fork(); - if (cpid == -1) { - fprintf(stderr,"fork error: %s\n", strerror(errno)); - return FALSE; - } - if (cpid == 0) { // Child - close(pipefd[1]); // close unused write end - for(c=0; read(pipefd[0], &buf, 1) > 0; c++) - map[c] = buf; - close(pipefd[0]); - map[c] = 0; - execlp("tomb-open", "tomb-open", map, (char*)NULL); - _exit(1); - } - close(pipefd[0]); // close unused read end - write(pipefd[1], mountpoint, strlen(mountpoint)); - close(pipefd[1]); // reader will see EOF - - return TRUE; -} - - -gboolean cb_close(GtkWidget *w, GdkEvent *e) { - int pipefd[2]; - pid_t cpid; - char buf; - int c, res; - char map[256]; - - if (pipe(pipefd) <0) { - fprintf(stderr,"pipe creation error: %s\n", strerror(errno)); - return FALSE; - } - - cpid = fork(); - if (cpid == -1) { - fprintf(stderr,"fork error: %s\n", strerror(errno)); - return FALSE; - } - if (cpid == 0) { // Child - close(pipefd[1]); // close unused write end - for(c=0; read(pipefd[0], &buf, 1) > 0; c++) - map[c] = buf; - close(pipefd[0]); - map[c] = 0; - execlp("tomb", "tomb", "close", map, (char*)NULL); - _exit(1); - } - close(pipefd[0]); // close unused read end - write(pipefd[1], mapper, strlen(mapper)); - close(pipefd[1]); // reader will see EOF - - waitpid(cpid, &res, 0); - if(res==0) { - gtk_main_quit(); - notify_uninit(); - exit(0); - } - /* tomb-notify "Tomb '$tombname' is too busy." \ - "Close all applications and file managers, then try again." - */ - return TRUE; -} - - -gboolean cb_slam(GtkWidget *w, GdkEvent *e) { - int pipefd[2]; - pid_t cpid; - char buf; - int c, res; - char map[256]; - - if (pipe(pipefd) <0) { - fprintf(stderr,"pipe creation error: %s\n", strerror(errno)); - return FALSE; - } - - cpid = fork(); - if (cpid == -1) { - fprintf(stderr,"fork error: %s\n", strerror(errno)); - return FALSE; - } - if (cpid == 0) { // Child - close(pipefd[1]); // close unused write end - for(c=0; read(pipefd[0], &buf, 1) > 0; c++) - map[c] = buf; - close(pipefd[0]); - map[c] = 0; - execlp("tomb", "tomb", "slam", map, (char*)NULL); - _exit(1); - } - close(pipefd[0]); // close unused read end - write(pipefd[1], mapper, strlen(mapper)); - close(pipefd[1]); // reader will see EOF - - waitpid(cpid, &res, 0); - if(res==0) { - gtk_main_quit(); - notify_uninit(); - exit(0); - } - /* tomb-notify "Tomb '$tombname' is too busy." \ - "Close all applications and file managers, then try again." - */ - return TRUE; -} - -// callbacks right click -gboolean right_click(GtkWidget *w, GdkEvent *e) { - gtk_menu_popup(menu_right, NULL, NULL, - gtk_status_icon_position_menu, status_tomb, - 1, gtk_get_current_event_time()); - return TRUE; -} -gboolean cb_about(GtkWidget *w, GdkEvent *e) { - const gchar *authors[] = {"Jaromil - http://jaromil.dyne.org", - "Code reviews and contributions by:", - "Dreamer, Hellekin O. Wolf, Shining, Mancausoft,", - "Anathema, Boyska and Nignux", NULL}; - const gchar *artists[] = {"Món Mort - http://monmort.blogspot.com", - "Asbesto Molesto - http://freaknet.org/asbesto", - NULL}; - GtkWidget *dialog = gtk_about_dialog_new(); - gtk_about_dialog_set_name(GTK_ABOUT_DIALOG(dialog), PACKAGE); - gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(dialog), VERSION); - gtk_about_dialog_set_copyright(GTK_ABOUT_DIALOG(dialog), - "(C)2007-2011 Jaromil @ Dyne.org Foundation"); - gtk_about_dialog_set_artists(GTK_ABOUT_DIALOG(dialog), artists); - gtk_about_dialog_set_authors(GTK_ABOUT_DIALOG(dialog), authors); - - gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(dialog), - "The Crypto Undertaker\n" -"\n" -"This program helps people keeping their bones together by taking care of their private data inside encrypted storage filesystems that are easy to access and transport.\n" -"\n" -"The level of security provided by this program is fairly strong: it uses AES/SHA256 (cbc-essiv) to access the encrypted volumes in realtime so that all what is physically stored on your disc is only in an encrypted form.\n" -"Tomb also encourages users to separate keys from data, for instance storing them on USB.\n" -"\n" -); - gtk_about_dialog_set_website(GTK_ABOUT_DIALOG(dialog), PACKAGE_URL); - gtk_about_dialog_set_logo(GTK_ABOUT_DIALOG(dialog), pb_monmort); - gtk_about_dialog_set_logo_icon_name(GTK_ABOUT_DIALOG(dialog), "monmort"); - // this below is active since gtk 3.0 so too early for it now - // gtk_about_dialog_set_license_type(GTK_ABOUT_DIALOG(dialog), GtkLicense.GTK_LICENSE_GPL_3_0); - gtk_about_dialog_set_license(GTK_ABOUT_DIALOG(dialog), -"This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License along with this program.\n" -"If not, see <http://www.gnu.org/licenses>\n" -"\n" -" The latest Tomb sourcecode is published on <http://tomb.dyne.org>\n"); - gtk_about_dialog_set_wrap_license(GTK_ABOUT_DIALOG(dialog), TRUE); - gtk_dialog_run(GTK_DIALOG (dialog)); - gtk_widget_destroy(dialog); - return TRUE; -} - - - // GtkWidget *dialog = - // gtk_message_dialog_new (NULL, - // GTK_DIALOG_DESTROY_WITH_PARENT, - // GTK_MESSAGE_INFO, - // GTK_BUTTONS_CLOSE, - // "Tomb '%s' open on '%s'\n" - // "device mapper: %s", filename, mountpoint, mapper); - // gtk_dialog_run (GTK_DIALOG (dialog)); - // gtk_widget_destroy (dialog); diff --git a/tomb b/tomb @@ -40,7 +40,7 @@ # {{{ Global variables -VERSION=1.3.1 +VERSION=1.4 DATE="Jun/2013" TOMBEXEC=$0 typeset -a OLDARGS