From 8d1c3aa9c44248c6edb4b45a16b9f7755586e6d2 Mon Sep 17 00:00:00 2001 From: lars Date: Wed, 26 Oct 2005 01:02:57 +0000 Subject: [PATCH] migrate to luks -- diese und die folgenden Zeilen werden ignoriert -- A https://svn.systemausfall.org/svn/cryptobox/branches/luks --- luks/CHANGELOG | 22 + luks/README | 24 + .../_offline/doc/de/CryptoBox.html | 136 + .../_offline/doc/de/CryptoBoxDev.html | 150 + .../doc/de/CryptoBoxDevBackground.html | 104 + .../doc/de/CryptoBoxDevCustomBuild.html | 128 + .../doc/de/CryptoBoxDevCustomConfigure.html | 103 + .../doc/de/CryptoBoxDevKnownProblems.html | 82 + .../doc/de/CryptoBoxDevPreparation.html | 120 + .../doc/de/CryptoBoxDevValidation.html | 121 + .../_offline/doc/de/CryptoBoxDevWorkFlow.html | 194 ++ .../_offline/doc/de/CryptoBoxUser.html | 102 + .../doc/de/CryptoBoxUserConfiguration.html | 152 + .../doc/de/CryptoBoxUserDailyUse.html | 167 + .../doc/de/CryptoBoxUserGettingStarted.html | 100 + .../_offline/doc/de/doc_footer.inc | 6 + .../_offline/doc/de/doc_header.inc | 13 + luks/cbox-tree.d/_offline/doc/doc_footer.inc | 7 + luks/cbox-tree.d/_offline/doc/doc_header.inc | 17 + .../_offline/doc/en/CryptoBox.html | 132 + .../_offline/doc/en/CryptoBoxDev.html | 150 + .../doc/en/CryptoBoxDevBackground.html | 104 + .../doc/en/CryptoBoxDevCustomBuild.html | 128 + .../doc/en/CryptoBoxDevCustomConfigure.html | 103 + .../doc/en/CryptoBoxDevKnownProblems.html | 82 + .../doc/en/CryptoBoxDevPreparation.html | 120 + .../doc/en/CryptoBoxDevValidation.html | 121 + .../_offline/doc/en/CryptoBoxDevWorkFlow.html | 194 ++ .../_offline/doc/en/CryptoBoxUser.html | 103 + .../doc/en/CryptoBoxUserConfiguration.html | 146 + .../doc/en/CryptoBoxUserDailyUse.html | 157 + .../doc/en/CryptoBoxUserGettingStarted.html | 107 + .../_offline/doc/en/doc_footer.inc | 6 + .../_offline/doc/en/doc_header.inc | 13 + luks/cbox-tree.d/_offline/shellopn.exe | Bin 0 -> 23552 bytes luks/cbox-tree.d/_offline/shellopn.zip | Bin 0 -> 18785 bytes luks/cbox-tree.d/autorun.inf | 2 + luks/cbox-tree.d/etc/cron.d/cryptobox | 1 + luks/cbox-tree.d/etc/cryptobox/cryptobox.conf | 43 + luks/cbox-tree.d/etc/cryptobox/openssl.cnf | 65 + luks/cbox-tree.d/etc/cryptobox/revision | 1 + luks/cbox-tree.d/etc/init.d/cb-finish-boot | 44 + .../cbox-tree.d/etc/init.d/cb-mount-config.sh | 26 + luks/cbox-tree.d/etc/init.d/cb-network.sh | 26 + luks/cbox-tree.d/etc/init.d/cb-services.sh | 25 + luks/cbox-tree.d/etc/issue | 1 + luks/cbox-tree.d/etc/rc0.d/K22cb-services | 1 + luks/cbox-tree.d/etc/rc0.d/K34cb-network | 1 + luks/cbox-tree.d/etc/rc0.d/K39cb-mount-config | 1 + luks/cbox-tree.d/etc/rc3.d/S98cb-services | 1 + luks/cbox-tree.d/etc/rc3.d/S99cb-finish-boot | 1 + luks/cbox-tree.d/etc/rc6.d/K22cb-services | 1 + luks/cbox-tree.d/etc/rc6.d/K34cb-network | 1 + luks/cbox-tree.d/etc/rc6.d/K39cb-mount-config | 1 + luks/cbox-tree.d/etc/rcS.d/S37cb-mount-config | 1 + luks/cbox-tree.d/etc/rcS.d/S38cb-network | 1 + luks/cbox-tree.d/etc/samba/smb.conf | 237 ++ luks/cbox-tree.d/mnt/crypto/info.txt | 1 + luks/cbox-tree.d/start.html | 11 + .../usr/lib/cryptobox/cbox-manage.sh | 523 +++ .../usr/lib/cryptobox/check_smb_idle.sh | 78 + .../usr/lib/cryptobox/chroot-start.sh | 48 + .../usr/lib/cryptobox/configure-cryptobox.sh | 121 + .../usr/lib/cryptobox/devel-features.sh | 71 + .../cbox-tree.d/usr/lib/cryptobox/firewall.sh | 56 + .../usr/lib/cryptobox/make_stunnel_cert.sh | 36 + luks/cbox-tree.d/usr/lib/perl5/ClearSilver.pm | 68 + .../usr/lib/perl5/auto/ClearSilver/.packlist | 4 + .../lib/perl5/auto/ClearSilver/ClearSilver.bs | 0 .../lib/perl5/auto/ClearSilver/ClearSilver.so | Bin 0 -> 394590 bytes .../usr/share/cryptobox/defaults/admin_pw | 0 .../usr/share/cryptobox/defaults/cipher | 1 + .../usr/share/cryptobox/defaults/hash | 1 + .../usr/share/cryptobox/defaults/ip | 1 + .../usr/share/cryptobox/defaults/language | 1 + .../usr/share/cryptobox/defaults/timeout | 1 + .../usr/share/cryptobox/defaults/version | 1 + .../usr/share/cryptobox/lang/README | 28 + .../cbox-tree.d/usr/share/cryptobox/lang/TODO | 16 + .../usr/share/cryptobox/lang/de.hdf | 215 ++ .../usr/share/cryptobox/lang/en.hdf | 215 ++ .../usr/share/cryptobox/lang/si.hdf | 215 ++ .../usr/share/cryptobox/templates/empty.cs | 3 + .../usr/share/cryptobox/templates/error.cs | 3 + .../usr/share/cryptobox/templates/footer.cs | 31 + .../share/cryptobox/templates/form_config.cs | 31 + .../share/cryptobox/templates/form_init.cs | 34 + .../share/cryptobox/templates/form_mount.cs | 15 + .../cryptobox/templates/form_shutdown.cs | 19 + .../share/cryptobox/templates/form_umount.cs | 12 + .../usr/share/cryptobox/templates/header.cs | 47 + .../usr/share/cryptobox/templates/macros.cs | 93 + .../usr/share/cryptobox/templates/main.cs | 16 + .../usr/share/cryptobox/templates/nav.cs | 22 + .../usr/share/cryptobox/templates/show_doc.cs | 7 + .../usr/share/cryptobox/templates/show_log.cs | 13 + .../share/cryptobox/templates/show_status.cs | 5 + .../doc/cryptobox/html/de/CryptoBox.html | 93 + .../doc/cryptobox/html/de/CryptoBoxDev.html | 107 + .../html/de/CryptoBoxDevBackground.html | 61 + .../html/de/CryptoBoxDevCustomBuild.html | 85 + .../html/de/CryptoBoxDevCustomConfigure.html | 60 + .../html/de/CryptoBoxDevKnownProblems.html | 39 + .../html/de/CryptoBoxDevPreparation.html | 77 + .../html/de/CryptoBoxDevValidation.html | 78 + .../html/de/CryptoBoxDevWorkFlow.html | 151 + .../doc/cryptobox/html/de/CryptoBoxUser.html | 59 + .../html/de/CryptoBoxUserConfiguration.html | 109 + .../html/de/CryptoBoxUserDailyUse.html | 124 + .../html/de/CryptoBoxUserGettingStarted.html | 57 + .../doc/cryptobox/html/en/CryptoBox.html | 89 + .../doc/cryptobox/html/en/CryptoBoxDev.html | 107 + .../html/en/CryptoBoxDevBackground.html | 61 + .../html/en/CryptoBoxDevCustomBuild.html | 85 + .../html/en/CryptoBoxDevCustomConfigure.html | 60 + .../html/en/CryptoBoxDevKnownProblems.html | 39 + .../html/en/CryptoBoxDevPreparation.html | 77 + .../html/en/CryptoBoxDevValidation.html | 78 + .../html/en/CryptoBoxDevWorkFlow.html | 151 + .../doc/cryptobox/html/en/CryptoBoxUser.html | 60 + .../html/en/CryptoBoxUserConfiguration.html | 103 + .../html/en/CryptoBoxUserDailyUse.html | 114 + .../html/en/CryptoBoxUserGettingStarted.html | 64 + luks/cbox-tree.d/var/www/cgi-bin/cryptobox.pl | 692 ++++ luks/cbox-tree.d/var/www/cryptobox | 1 + .../var/www/cryptobox-img/antlogo100px.png | Bin 0 -> 7318 bytes .../www/cryptobox-img/antlogo100px_green.png | Bin 0 -> 8624 bytes .../www/cryptobox-img/antlogo100px_red.png | Bin 0 -> 8142 bytes .../var/www/cryptobox-img/backg.gif | Bin 0 -> 13018 bytes .../var/www/cryptobox-img/list.gif | Bin 0 -> 51 bytes .../cryptobox-img/screenshots/de_config.png | Bin 0 -> 80374 bytes .../www/cryptobox-img/screenshots/de_init.png | Bin 0 -> 62123 bytes .../cryptobox-img/screenshots/de_mount.png | Bin 0 -> 59615 bytes .../screenshots/de_w98_login.png | Bin 0 -> 3650 bytes .../screenshots/de_w98_network_drive.png | Bin 0 -> 3345 bytes .../screenshots/de_w98_not_logged_in.png | Bin 0 -> 2914 bytes .../cryptobox-img/screenshots/en_config.png | Bin 0 -> 85007 bytes .../cryptobox-img/screenshots/en_mount.png | Bin 0 -> 71564 bytes .../screenshots/en_w98_login.png | Bin 0 -> 3504 bytes .../screenshots/en_w98_network_drive.png | Bin 0 -> 3013 bytes .../screenshots/en_w98_not_logged_in.png | Bin 0 -> 2853 bytes .../var/www/cryptobox-img/smile.png | Bin 0 -> 356 bytes .../var/www/cryptobox-img/smile4.png | Bin 0 -> 275 bytes .../var/www/cryptobox-img/somerights20.gif | Bin 0 -> 1835 bytes luks/cbox-tree.d/var/www/cryptobox.css | 388 +++ luks/cbox-tree.d/var/www/errors/err404.html | 27 + luks/cbox-tree.d/var/www/favicon.ico | Bin 0 -> 3638 bytes luks/cbox-tree.d/var/www/index.html | 1 + luks/configure-examples.d/README | 35 + .../import_authorized_keys | 19 + luks/configure-examples.d/set_default_ip | 3 + .../configure-examples.d/set_default_language | 3 + luks/configure-examples.d/set_default_timeout | 5 + luks/configure-examples.d/set_hostname | 3 + luks/configure-examples.d/set_root_pw | 10 + luks/configure-examples.d/set_scan_devices | 3 + luks/cover/antlogo-big.jpg | Bin 0 -> 42982 bytes luks/cover/antlogo-big.png | Bin 0 -> 53154 bytes luks/cover/antlogo-small.png | Bin 0 -> 7190 bytes luks/cover/cover_de.pdf | 1048 ++++++ luks/cover/cover_de.sxw | Bin 0 -> 80818 bytes luks/cover/cover_en.pdf | Bin 0 -> 99586 bytes luks/cover/cover_en.sxw | Bin 0 -> 80703 bytes luks/etc-defaults.d/README | 4 + luks/etc-defaults.d/cbox-dev.conf | 50 + luks/etc-defaults.d/dfs-cbox.conf | 245 ++ luks/etc-defaults.d/qemu-ifup | 57 + luks/etc-defaults.d/qemu-ifup.default | 55 + luks/etc-defaults.d/ssh-options.default | 17 + luks/etc-defaults.d/ssh_config | 17 + luks/etc-defaults.d/userdocexport.sh | 22 + luks/hints/codecoop-website-upload.txt | 6 + luks/hints/dev-requirements | 5 + luks/hints/install_clearsilver.txt | 26 + luks/hints/kernel-build.txt | 23 + luks/hints/release-policy.txt | 26 + luks/hints/starting_uml.txt | 7 + luks/hints/trac-wiki.txt | 27 + luks/kernel/config-2.6.12.6_cryptobox0.3 | 1281 ++++++++ luks/kernel/info.txt | 3 + ...ernel-image-2.6.12.6_cryptobox0.3_i386.deb | Bin 0 -> 2800984 bytes luks/kernel/uml-kernel-2.6.12.3-cryptobox | Bin 0 -> 3239616 bytes luks/logo/ameisenkopp.svg | 2883 +++++++++++++++++ luks/logo/antlogo100px.png | Bin 0 -> 7318 bytes luks/logo/antlogo100px_green.png | Bin 0 -> 8624 bytes luks/logo/antlogo100px_red.png | Bin 0 -> 8142 bytes luks/logo/boesetest.svg | 392 +++ luks/logo/bubblebutton.svg | 774 +++++ luks/logo/entwurf.svg | 945 ++++++ luks/logo/evil_stick.png | Bin 0 -> 18297 bytes luks/logo/evil_stick.svg | 811 +++++ luks/logo/evil_stick2.png | Bin 0 -> 17008 bytes luks/logo/evil_stick2.svg | 820 +++++ luks/logo/evil_stick3.png | Bin 0 -> 17744 bytes luks/logo/evil_stick3.svg | 909 ++++++ luks/logo/vault_pingu_gross.png | Bin 0 -> 93838 bytes luks/logo/vault_pingu_uncut.png | Bin 0 -> 121097 bytes luks/scripts/cbox-build.sh | 171 + luks/scripts/cbox-dev.sh | 166 + luks/scripts/common.sh.inc | 61 + luks/scripts/show_TODO.sh | 3 + luks/scripts/userdocexport.sh | 126 + luks/scripts/validate.sh | 141 + luks/validation/templates/README | 17 + luks/validation/templates/footer | 12 + luks/validation/templates/header | 25 + luks/validation/templates/result-error | 1 + luks/validation/templates/result-ok | 1 + luks/validation/templates/single_footer | 2 + luks/validation/templates/single_header | 5 + .../test-cases/1-init/000-reset/description | 1 + .../test-cases/1-init/000-reset/input.curl | 4 + .../test-cases/1-init/000-reset/output | 7 + .../test-cases/1-init/003-no_ssl/description | 1 + .../test-cases/1-init/003-no_ssl/input.curl | 2 + .../test-cases/1-init/003-no_ssl/output | 7 + .../1-init/005-file_not_found_404/description | 1 + .../1-init/005-file_not_found_404/input.curl | 2 + .../1-init/005-file_not_found_404/output | 0 .../1-init/007-index_url/description | 1 + .../1-init/007-index_url/input.curl | 2 + .../test-cases/1-init/007-index_url/output | 7 + .../1-init/010-init_ask/description | 1 + .../test-cases/1-init/010-init_ask/input.curl | 3 + .../test-cases/1-init/010-init_ask/output | 7 + .../1-init/020-init_empty_pw/description | 1 + .../1-init/020-init_empty_pw/input.curl | 6 + .../1-init/020-init_empty_pw/output | 7 + .../1-init/030-init_different_pw/description | 1 + .../1-init/030-init_different_pw/input.curl | 6 + .../1-init/030-init_different_pw/output | 7 + .../040-init_wrong_confirmation/description | 1 + .../040-init_wrong_confirmation/input.curl | 6 + .../1-init/040-init_wrong_confirmation/output | 7 + .../050-mount_ask_before_init/description | 1 + .../050-mount_ask_before_init/input.curl | 3 + .../1-init/050-mount_ask_before_init/output | 7 + .../060-mount_do_before_init/description | 1 + .../060-mount_do_before_init/input.curl | 4 + .../1-init/060-mount_do_before_init/output | 7 + .../070-umount_ask_before_init/description | 1 + .../070-umount_ask_before_init/input.curl | 3 + .../1-init/070-umount_ask_before_init/output | 7 + .../080-umount_do_before_init/description | 1 + .../080-umount_do_before_init/input.curl | 3 + .../1-init/080-umount_do_before_init/output | 7 + .../090-config_ask_before_init/description | 1 + .../090-config_ask_before_init/input.curl | 3 + .../1-init/090-config_ask_before_init/output | 7 + .../100-config_do_before_init/description | 1 + .../100-config_do_before_init/input.curl | 6 + .../1-init/100-config_do_before_init/output | 7 + .../1-init/105-status_before_init/description | 1 + .../1-init/105-status_before_init/input.curl | 3 + .../1-init/105-status_before_init/output | 7 + .../1-init/110-init_valid/description | 1 + .../1-init/110-init_valid/input.curl | 6 + .../test-cases/1-init/110-init_valid/output | 7 + .../120-mount_ask_during_init/description | 1 + .../120-mount_ask_during_init/input.curl | 3 + .../1-init/120-mount_ask_during_init/output | 7 + .../130-mount_do_during_init/description | 1 + .../130-mount_do_during_init/input.curl | 4 + .../1-init/130-mount_do_during_init/output | 7 + .../140-umount_ask_during_init/description | 1 + .../140-umount_ask_during_init/input.curl | 3 + .../1-init/140-umount_ask_during_init/output | 7 + .../150-umount_do_during_init/description | 1 + .../150-umount_do_during_init/input.curl | 3 + .../1-init/150-umount_do_during_init/output | 7 + .../160-config_ask_during_init/description | 1 + .../160-config_ask_during_init/input.curl | 3 + .../1-init/160-config_ask_during_init/output | 7 + .../170-config_do_during_init/description | 1 + .../170-config_do_during_init/input.curl | 6 + .../1-init/170-config_do_during_init/output | 7 + .../180-init_ask_during_init/description | 1 + .../180-init_ask_during_init/input.curl | 3 + .../1-init/180-init_ask_during_init/output | 7 + .../1-init/190-init_do_during_init/delay | 1 + .../190-init_do_during_init/description | 1 + .../1-init/190-init_do_during_init/input.curl | 6 + .../1-init/190-init_do_during_init/output | 7 + .../1-init/200-status_during_init/description | 1 + .../1-init/200-status_during_init/input.curl | 3 + .../1-init/200-status_during_init/output | 7 + .../900-reset_configuration/description | 1 + .../1-init/900-reset_configuration/input.curl | 6 + .../1-init/900-reset_configuration/output | 7 + .../2-mount/010-mount_ask/description | 1 + .../2-mount/010-mount_ask/input.curl | 3 + .../test-cases/2-mount/010-mount_ask/output | 7 + .../2-mount/020-mount_empty_pw/description | 1 + .../2-mount/020-mount_empty_pw/input.curl | 4 + .../2-mount/020-mount_empty_pw/output | 7 + .../2-mount/025-mount_no_pw/description | 1 + .../2-mount/025-mount_no_pw/input.curl | 3 + .../test-cases/2-mount/025-mount_no_pw/output | 7 + .../030-mount_do_invalid_pw/description | 1 + .../030-mount_do_invalid_pw/input.curl | 4 + .../2-mount/030-mount_do_invalid_pw/output | 7 + .../2-mount/040-mount_do_valid/description | 1 + .../2-mount/040-mount_do_valid/input.curl | 4 + .../2-mount/040-mount_do_valid/output | 7 + .../050-mount_ask_while_mounted/description | 1 + .../050-mount_ask_while_mounted/input.curl | 3 + .../050-mount_ask_while_mounted/output | 7 + .../060-mount_do_while_mounted/description | 1 + .../060-mount_do_while_mounted/input.curl | 4 + .../2-mount/060-mount_do_while_mounted/output | 7 + .../2-mount/070-umount_ask/description | 1 + .../2-mount/070-umount_ask/input.curl | 3 + .../test-cases/2-mount/070-umount_ask/output | 7 + .../2-mount/080-umount_do/description | 1 + .../2-mount/080-umount_do/input.curl | 3 + .../test-cases/2-mount/080-umount_do/output | 7 + .../100-config_invalid_lang/description | 1 + .../100-config_invalid_lang/input.curl | 6 + .../3-config/100-config_invalid_lang/output | 7 + .../110-config_invalid_ip/description | 1 + .../3-config/110-config_invalid_ip/input.curl | 6 + .../3-config/110-config_invalid_ip/output | 7 + .../120-config_invalid_timeout/description | 1 + .../120-config_invalid_timeout/input.curl | 6 + .../120-config_invalid_timeout/output | 7 + .../3-config/500-config_valid/delay | 1 + .../3-config/500-config_valid/description | 1 + .../3-config/500-config_valid/input.curl | 6 + .../3-config/500-config_valid/output | 7 + .../3-config/510-config-restore/delay | 1 + .../3-config/510-config-restore/description | 1 + .../3-config/510-config-restore/input.curl | 6 + .../3-config/510-config-restore/output | 7 + .../010-init_different_admin_pw/description | 1 + .../010-init_different_admin_pw/input.curl | 8 + .../010-init_different_admin_pw/output | 7 + .../4-admin_pw/020-init_with_admin_pw/delay | 1 + .../020-init_with_admin_pw/description | 1 + .../020-init_with_admin_pw/input.curl | 8 + .../4-admin_pw/020-init_with_admin_pw/output | 7 + .../050-config_wrong_admin_pw/description | 1 + .../050-config_wrong_admin_pw/input.curl | 8 + .../050-config_wrong_admin_pw/output | 7 + .../060-config_right_admin_pw/delay | 1 + .../060-config_right_admin_pw/description | 1 + .../060-config_right_admin_pw/input.curl | 7 + .../060-config_right_admin_pw/output | 7 + .../070-init_wrong_admin_pw/description | 1 + .../070-init_wrong_admin_pw/input.curl | 9 + .../4-admin_pw/070-init_wrong_admin_pw/output | 7 + .../4-admin_pw/200-init_remove_admin_pw/delay | 1 + .../200-init_remove_admin_pw/description | 1 + .../200-init_remove_admin_pw/input.curl | 7 + .../200-init_remove_admin_pw/output | 7 + .../test-cases/5-misc/010-logfile/description | 1 + .../test-cases/5-misc/010-logfile/input.curl | 3 + .../test-cases/5-misc/010-logfile/output | 7 + .../5-misc/020-docpage-first/description | 1 + .../5-misc/020-docpage-first/input.curl | 3 + .../5-misc/020-docpage-first/output | 7 + .../5-misc/030-docpage-another/description | 1 + .../5-misc/030-docpage-another/input.curl | 4 + .../5-misc/030-docpage-another/output | 7 + luks/validation/test-cases/README | 8 + 364 files changed, 21139 insertions(+) create mode 100644 luks/CHANGELOG create mode 100644 luks/README create mode 100644 luks/cbox-tree.d/_offline/doc/de/CryptoBox.html create mode 100644 luks/cbox-tree.d/_offline/doc/de/CryptoBoxDev.html create mode 100644 luks/cbox-tree.d/_offline/doc/de/CryptoBoxDevBackground.html create mode 100644 luks/cbox-tree.d/_offline/doc/de/CryptoBoxDevCustomBuild.html create mode 100644 luks/cbox-tree.d/_offline/doc/de/CryptoBoxDevCustomConfigure.html create mode 100644 luks/cbox-tree.d/_offline/doc/de/CryptoBoxDevKnownProblems.html create mode 100644 luks/cbox-tree.d/_offline/doc/de/CryptoBoxDevPreparation.html create mode 100644 luks/cbox-tree.d/_offline/doc/de/CryptoBoxDevValidation.html create mode 100644 luks/cbox-tree.d/_offline/doc/de/CryptoBoxDevWorkFlow.html create mode 100644 luks/cbox-tree.d/_offline/doc/de/CryptoBoxUser.html create mode 100644 luks/cbox-tree.d/_offline/doc/de/CryptoBoxUserConfiguration.html create mode 100644 luks/cbox-tree.d/_offline/doc/de/CryptoBoxUserDailyUse.html create mode 100644 luks/cbox-tree.d/_offline/doc/de/CryptoBoxUserGettingStarted.html create mode 100644 luks/cbox-tree.d/_offline/doc/de/doc_footer.inc create mode 100644 luks/cbox-tree.d/_offline/doc/de/doc_header.inc create mode 100644 luks/cbox-tree.d/_offline/doc/doc_footer.inc create mode 100644 luks/cbox-tree.d/_offline/doc/doc_header.inc create mode 100644 luks/cbox-tree.d/_offline/doc/en/CryptoBox.html create mode 100644 luks/cbox-tree.d/_offline/doc/en/CryptoBoxDev.html create mode 100644 luks/cbox-tree.d/_offline/doc/en/CryptoBoxDevBackground.html create mode 100644 luks/cbox-tree.d/_offline/doc/en/CryptoBoxDevCustomBuild.html create mode 100644 luks/cbox-tree.d/_offline/doc/en/CryptoBoxDevCustomConfigure.html create mode 100644 luks/cbox-tree.d/_offline/doc/en/CryptoBoxDevKnownProblems.html create mode 100644 luks/cbox-tree.d/_offline/doc/en/CryptoBoxDevPreparation.html create mode 100644 luks/cbox-tree.d/_offline/doc/en/CryptoBoxDevValidation.html create mode 100644 luks/cbox-tree.d/_offline/doc/en/CryptoBoxDevWorkFlow.html create mode 100644 luks/cbox-tree.d/_offline/doc/en/CryptoBoxUser.html create mode 100644 luks/cbox-tree.d/_offline/doc/en/CryptoBoxUserConfiguration.html create mode 100644 luks/cbox-tree.d/_offline/doc/en/CryptoBoxUserDailyUse.html create mode 100644 luks/cbox-tree.d/_offline/doc/en/CryptoBoxUserGettingStarted.html create mode 100644 luks/cbox-tree.d/_offline/doc/en/doc_footer.inc create mode 100644 luks/cbox-tree.d/_offline/doc/en/doc_header.inc create mode 100644 luks/cbox-tree.d/_offline/shellopn.exe create mode 100644 luks/cbox-tree.d/_offline/shellopn.zip create mode 100644 luks/cbox-tree.d/autorun.inf create mode 100644 luks/cbox-tree.d/etc/cron.d/cryptobox create mode 100644 luks/cbox-tree.d/etc/cryptobox/cryptobox.conf create mode 100644 luks/cbox-tree.d/etc/cryptobox/openssl.cnf create mode 100644 luks/cbox-tree.d/etc/cryptobox/revision create mode 100755 luks/cbox-tree.d/etc/init.d/cb-finish-boot create mode 100755 luks/cbox-tree.d/etc/init.d/cb-mount-config.sh create mode 100755 luks/cbox-tree.d/etc/init.d/cb-network.sh create mode 100755 luks/cbox-tree.d/etc/init.d/cb-services.sh create mode 100644 luks/cbox-tree.d/etc/issue create mode 120000 luks/cbox-tree.d/etc/rc0.d/K22cb-services create mode 120000 luks/cbox-tree.d/etc/rc0.d/K34cb-network create mode 120000 luks/cbox-tree.d/etc/rc0.d/K39cb-mount-config create mode 120000 luks/cbox-tree.d/etc/rc3.d/S98cb-services create mode 120000 luks/cbox-tree.d/etc/rc3.d/S99cb-finish-boot create mode 120000 luks/cbox-tree.d/etc/rc6.d/K22cb-services create mode 120000 luks/cbox-tree.d/etc/rc6.d/K34cb-network create mode 120000 luks/cbox-tree.d/etc/rc6.d/K39cb-mount-config create mode 120000 luks/cbox-tree.d/etc/rcS.d/S37cb-mount-config create mode 120000 luks/cbox-tree.d/etc/rcS.d/S38cb-network create mode 100644 luks/cbox-tree.d/etc/samba/smb.conf create mode 100644 luks/cbox-tree.d/mnt/crypto/info.txt create mode 100644 luks/cbox-tree.d/start.html create mode 100755 luks/cbox-tree.d/usr/lib/cryptobox/cbox-manage.sh create mode 100755 luks/cbox-tree.d/usr/lib/cryptobox/check_smb_idle.sh create mode 100755 luks/cbox-tree.d/usr/lib/cryptobox/chroot-start.sh create mode 100755 luks/cbox-tree.d/usr/lib/cryptobox/configure-cryptobox.sh create mode 100755 luks/cbox-tree.d/usr/lib/cryptobox/devel-features.sh create mode 100755 luks/cbox-tree.d/usr/lib/cryptobox/firewall.sh create mode 100755 luks/cbox-tree.d/usr/lib/cryptobox/make_stunnel_cert.sh create mode 100644 luks/cbox-tree.d/usr/lib/perl5/ClearSilver.pm create mode 100644 luks/cbox-tree.d/usr/lib/perl5/auto/ClearSilver/.packlist create mode 100644 luks/cbox-tree.d/usr/lib/perl5/auto/ClearSilver/ClearSilver.bs create mode 100755 luks/cbox-tree.d/usr/lib/perl5/auto/ClearSilver/ClearSilver.so create mode 100644 luks/cbox-tree.d/usr/share/cryptobox/defaults/admin_pw create mode 100644 luks/cbox-tree.d/usr/share/cryptobox/defaults/cipher create mode 100644 luks/cbox-tree.d/usr/share/cryptobox/defaults/hash create mode 100644 luks/cbox-tree.d/usr/share/cryptobox/defaults/ip create mode 100644 luks/cbox-tree.d/usr/share/cryptobox/defaults/language create mode 100644 luks/cbox-tree.d/usr/share/cryptobox/defaults/timeout create mode 100644 luks/cbox-tree.d/usr/share/cryptobox/defaults/version create mode 100644 luks/cbox-tree.d/usr/share/cryptobox/lang/README create mode 100644 luks/cbox-tree.d/usr/share/cryptobox/lang/TODO create mode 100644 luks/cbox-tree.d/usr/share/cryptobox/lang/de.hdf create mode 100644 luks/cbox-tree.d/usr/share/cryptobox/lang/en.hdf create mode 100644 luks/cbox-tree.d/usr/share/cryptobox/lang/si.hdf create mode 100644 luks/cbox-tree.d/usr/share/cryptobox/templates/empty.cs create mode 100644 luks/cbox-tree.d/usr/share/cryptobox/templates/error.cs create mode 100644 luks/cbox-tree.d/usr/share/cryptobox/templates/footer.cs create mode 100644 luks/cbox-tree.d/usr/share/cryptobox/templates/form_config.cs create mode 100644 luks/cbox-tree.d/usr/share/cryptobox/templates/form_init.cs create mode 100644 luks/cbox-tree.d/usr/share/cryptobox/templates/form_mount.cs create mode 100644 luks/cbox-tree.d/usr/share/cryptobox/templates/form_shutdown.cs create mode 100644 luks/cbox-tree.d/usr/share/cryptobox/templates/form_umount.cs create mode 100644 luks/cbox-tree.d/usr/share/cryptobox/templates/header.cs create mode 100644 luks/cbox-tree.d/usr/share/cryptobox/templates/macros.cs create mode 100644 luks/cbox-tree.d/usr/share/cryptobox/templates/main.cs create mode 100644 luks/cbox-tree.d/usr/share/cryptobox/templates/nav.cs create mode 100644 luks/cbox-tree.d/usr/share/cryptobox/templates/show_doc.cs create mode 100644 luks/cbox-tree.d/usr/share/cryptobox/templates/show_log.cs create mode 100644 luks/cbox-tree.d/usr/share/cryptobox/templates/show_status.cs create mode 100644 luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBox.html create mode 100644 luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxDev.html create mode 100644 luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxDevBackground.html create mode 100644 luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxDevCustomBuild.html create mode 100644 luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxDevCustomConfigure.html create mode 100644 luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxDevKnownProblems.html create mode 100644 luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxDevPreparation.html create mode 100644 luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxDevValidation.html create mode 100644 luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxDevWorkFlow.html create mode 100644 luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxUser.html create mode 100644 luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxUserConfiguration.html create mode 100644 luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxUserDailyUse.html create mode 100644 luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxUserGettingStarted.html create mode 100644 luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBox.html create mode 100644 luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxDev.html create mode 100644 luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxDevBackground.html create mode 100644 luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxDevCustomBuild.html create mode 100644 luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxDevCustomConfigure.html create mode 100644 luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxDevKnownProblems.html create mode 100644 luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxDevPreparation.html create mode 100644 luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxDevValidation.html create mode 100644 luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxDevWorkFlow.html create mode 100644 luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxUser.html create mode 100644 luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxUserConfiguration.html create mode 100644 luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxUserDailyUse.html create mode 100644 luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxUserGettingStarted.html create mode 100755 luks/cbox-tree.d/var/www/cgi-bin/cryptobox.pl create mode 120000 luks/cbox-tree.d/var/www/cryptobox create mode 100644 luks/cbox-tree.d/var/www/cryptobox-img/antlogo100px.png create mode 100644 luks/cbox-tree.d/var/www/cryptobox-img/antlogo100px_green.png create mode 100644 luks/cbox-tree.d/var/www/cryptobox-img/antlogo100px_red.png create mode 100644 luks/cbox-tree.d/var/www/cryptobox-img/backg.gif create mode 100644 luks/cbox-tree.d/var/www/cryptobox-img/list.gif create mode 100644 luks/cbox-tree.d/var/www/cryptobox-img/screenshots/de_config.png create mode 100644 luks/cbox-tree.d/var/www/cryptobox-img/screenshots/de_init.png create mode 100644 luks/cbox-tree.d/var/www/cryptobox-img/screenshots/de_mount.png create mode 100644 luks/cbox-tree.d/var/www/cryptobox-img/screenshots/de_w98_login.png create mode 100644 luks/cbox-tree.d/var/www/cryptobox-img/screenshots/de_w98_network_drive.png create mode 100644 luks/cbox-tree.d/var/www/cryptobox-img/screenshots/de_w98_not_logged_in.png create mode 100644 luks/cbox-tree.d/var/www/cryptobox-img/screenshots/en_config.png create mode 100644 luks/cbox-tree.d/var/www/cryptobox-img/screenshots/en_mount.png create mode 100644 luks/cbox-tree.d/var/www/cryptobox-img/screenshots/en_w98_login.png create mode 100644 luks/cbox-tree.d/var/www/cryptobox-img/screenshots/en_w98_network_drive.png create mode 100644 luks/cbox-tree.d/var/www/cryptobox-img/screenshots/en_w98_not_logged_in.png create mode 100644 luks/cbox-tree.d/var/www/cryptobox-img/smile.png create mode 100644 luks/cbox-tree.d/var/www/cryptobox-img/smile4.png create mode 100644 luks/cbox-tree.d/var/www/cryptobox-img/somerights20.gif create mode 100644 luks/cbox-tree.d/var/www/cryptobox.css create mode 100644 luks/cbox-tree.d/var/www/errors/err404.html create mode 100644 luks/cbox-tree.d/var/www/favicon.ico create mode 120000 luks/cbox-tree.d/var/www/index.html create mode 100644 luks/configure-examples.d/README create mode 100644 luks/configure-examples.d/import_authorized_keys create mode 100644 luks/configure-examples.d/set_default_ip create mode 100644 luks/configure-examples.d/set_default_language create mode 100644 luks/configure-examples.d/set_default_timeout create mode 100644 luks/configure-examples.d/set_hostname create mode 100644 luks/configure-examples.d/set_root_pw create mode 100644 luks/configure-examples.d/set_scan_devices create mode 100644 luks/cover/antlogo-big.jpg create mode 100644 luks/cover/antlogo-big.png create mode 100644 luks/cover/antlogo-small.png create mode 100644 luks/cover/cover_de.pdf create mode 100644 luks/cover/cover_de.sxw create mode 100644 luks/cover/cover_en.pdf create mode 100644 luks/cover/cover_en.sxw create mode 100644 luks/etc-defaults.d/README create mode 100644 luks/etc-defaults.d/cbox-dev.conf create mode 100644 luks/etc-defaults.d/dfs-cbox.conf create mode 100755 luks/etc-defaults.d/qemu-ifup create mode 100755 luks/etc-defaults.d/qemu-ifup.default create mode 100644 luks/etc-defaults.d/ssh-options.default create mode 100644 luks/etc-defaults.d/ssh_config create mode 100755 luks/etc-defaults.d/userdocexport.sh create mode 100644 luks/hints/codecoop-website-upload.txt create mode 100644 luks/hints/dev-requirements create mode 100644 luks/hints/install_clearsilver.txt create mode 100644 luks/hints/kernel-build.txt create mode 100644 luks/hints/release-policy.txt create mode 100644 luks/hints/starting_uml.txt create mode 100644 luks/hints/trac-wiki.txt create mode 100644 luks/kernel/config-2.6.12.6_cryptobox0.3 create mode 100644 luks/kernel/info.txt create mode 100644 luks/kernel/kernel-image-2.6.12.6_cryptobox0.3_i386.deb create mode 100755 luks/kernel/uml-kernel-2.6.12.3-cryptobox create mode 100644 luks/logo/ameisenkopp.svg create mode 100644 luks/logo/antlogo100px.png create mode 100644 luks/logo/antlogo100px_green.png create mode 100644 luks/logo/antlogo100px_red.png create mode 100644 luks/logo/boesetest.svg create mode 100644 luks/logo/bubblebutton.svg create mode 100644 luks/logo/entwurf.svg create mode 100644 luks/logo/evil_stick.png create mode 100644 luks/logo/evil_stick.svg create mode 100644 luks/logo/evil_stick2.png create mode 100644 luks/logo/evil_stick2.svg create mode 100644 luks/logo/evil_stick3.png create mode 100644 luks/logo/evil_stick3.svg create mode 100644 luks/logo/vault_pingu_gross.png create mode 100644 luks/logo/vault_pingu_uncut.png create mode 100755 luks/scripts/cbox-build.sh create mode 100755 luks/scripts/cbox-dev.sh create mode 100644 luks/scripts/common.sh.inc create mode 100755 luks/scripts/show_TODO.sh create mode 100755 luks/scripts/userdocexport.sh create mode 100755 luks/scripts/validate.sh create mode 100644 luks/validation/templates/README create mode 100644 luks/validation/templates/footer create mode 100644 luks/validation/templates/header create mode 100644 luks/validation/templates/result-error create mode 100644 luks/validation/templates/result-ok create mode 100644 luks/validation/templates/single_footer create mode 100644 luks/validation/templates/single_header create mode 100644 luks/validation/test-cases/1-init/000-reset/description create mode 100644 luks/validation/test-cases/1-init/000-reset/input.curl create mode 100644 luks/validation/test-cases/1-init/000-reset/output create mode 100644 luks/validation/test-cases/1-init/003-no_ssl/description create mode 100644 luks/validation/test-cases/1-init/003-no_ssl/input.curl create mode 100644 luks/validation/test-cases/1-init/003-no_ssl/output create mode 100644 luks/validation/test-cases/1-init/005-file_not_found_404/description create mode 100644 luks/validation/test-cases/1-init/005-file_not_found_404/input.curl create mode 100644 luks/validation/test-cases/1-init/005-file_not_found_404/output create mode 100644 luks/validation/test-cases/1-init/007-index_url/description create mode 100644 luks/validation/test-cases/1-init/007-index_url/input.curl create mode 100644 luks/validation/test-cases/1-init/007-index_url/output create mode 100644 luks/validation/test-cases/1-init/010-init_ask/description create mode 100644 luks/validation/test-cases/1-init/010-init_ask/input.curl create mode 100644 luks/validation/test-cases/1-init/010-init_ask/output create mode 100644 luks/validation/test-cases/1-init/020-init_empty_pw/description create mode 100644 luks/validation/test-cases/1-init/020-init_empty_pw/input.curl create mode 100644 luks/validation/test-cases/1-init/020-init_empty_pw/output create mode 100644 luks/validation/test-cases/1-init/030-init_different_pw/description create mode 100644 luks/validation/test-cases/1-init/030-init_different_pw/input.curl create mode 100644 luks/validation/test-cases/1-init/030-init_different_pw/output create mode 100644 luks/validation/test-cases/1-init/040-init_wrong_confirmation/description create mode 100644 luks/validation/test-cases/1-init/040-init_wrong_confirmation/input.curl create mode 100644 luks/validation/test-cases/1-init/040-init_wrong_confirmation/output create mode 100644 luks/validation/test-cases/1-init/050-mount_ask_before_init/description create mode 100644 luks/validation/test-cases/1-init/050-mount_ask_before_init/input.curl create mode 100644 luks/validation/test-cases/1-init/050-mount_ask_before_init/output create mode 100644 luks/validation/test-cases/1-init/060-mount_do_before_init/description create mode 100644 luks/validation/test-cases/1-init/060-mount_do_before_init/input.curl create mode 100644 luks/validation/test-cases/1-init/060-mount_do_before_init/output create mode 100644 luks/validation/test-cases/1-init/070-umount_ask_before_init/description create mode 100644 luks/validation/test-cases/1-init/070-umount_ask_before_init/input.curl create mode 100644 luks/validation/test-cases/1-init/070-umount_ask_before_init/output create mode 100644 luks/validation/test-cases/1-init/080-umount_do_before_init/description create mode 100644 luks/validation/test-cases/1-init/080-umount_do_before_init/input.curl create mode 100644 luks/validation/test-cases/1-init/080-umount_do_before_init/output create mode 100644 luks/validation/test-cases/1-init/090-config_ask_before_init/description create mode 100644 luks/validation/test-cases/1-init/090-config_ask_before_init/input.curl create mode 100644 luks/validation/test-cases/1-init/090-config_ask_before_init/output create mode 100644 luks/validation/test-cases/1-init/100-config_do_before_init/description create mode 100644 luks/validation/test-cases/1-init/100-config_do_before_init/input.curl create mode 100644 luks/validation/test-cases/1-init/100-config_do_before_init/output create mode 100644 luks/validation/test-cases/1-init/105-status_before_init/description create mode 100644 luks/validation/test-cases/1-init/105-status_before_init/input.curl create mode 100644 luks/validation/test-cases/1-init/105-status_before_init/output create mode 100644 luks/validation/test-cases/1-init/110-init_valid/description create mode 100644 luks/validation/test-cases/1-init/110-init_valid/input.curl create mode 100644 luks/validation/test-cases/1-init/110-init_valid/output create mode 100644 luks/validation/test-cases/1-init/120-mount_ask_during_init/description create mode 100644 luks/validation/test-cases/1-init/120-mount_ask_during_init/input.curl create mode 100644 luks/validation/test-cases/1-init/120-mount_ask_during_init/output create mode 100644 luks/validation/test-cases/1-init/130-mount_do_during_init/description create mode 100644 luks/validation/test-cases/1-init/130-mount_do_during_init/input.curl create mode 100644 luks/validation/test-cases/1-init/130-mount_do_during_init/output create mode 100644 luks/validation/test-cases/1-init/140-umount_ask_during_init/description create mode 100644 luks/validation/test-cases/1-init/140-umount_ask_during_init/input.curl create mode 100644 luks/validation/test-cases/1-init/140-umount_ask_during_init/output create mode 100644 luks/validation/test-cases/1-init/150-umount_do_during_init/description create mode 100644 luks/validation/test-cases/1-init/150-umount_do_during_init/input.curl create mode 100644 luks/validation/test-cases/1-init/150-umount_do_during_init/output create mode 100644 luks/validation/test-cases/1-init/160-config_ask_during_init/description create mode 100644 luks/validation/test-cases/1-init/160-config_ask_during_init/input.curl create mode 100644 luks/validation/test-cases/1-init/160-config_ask_during_init/output create mode 100644 luks/validation/test-cases/1-init/170-config_do_during_init/description create mode 100644 luks/validation/test-cases/1-init/170-config_do_during_init/input.curl create mode 100644 luks/validation/test-cases/1-init/170-config_do_during_init/output create mode 100644 luks/validation/test-cases/1-init/180-init_ask_during_init/description create mode 100644 luks/validation/test-cases/1-init/180-init_ask_during_init/input.curl create mode 100644 luks/validation/test-cases/1-init/180-init_ask_during_init/output create mode 100644 luks/validation/test-cases/1-init/190-init_do_during_init/delay create mode 100644 luks/validation/test-cases/1-init/190-init_do_during_init/description create mode 100644 luks/validation/test-cases/1-init/190-init_do_during_init/input.curl create mode 100644 luks/validation/test-cases/1-init/190-init_do_during_init/output create mode 100644 luks/validation/test-cases/1-init/200-status_during_init/description create mode 100644 luks/validation/test-cases/1-init/200-status_during_init/input.curl create mode 100644 luks/validation/test-cases/1-init/200-status_during_init/output create mode 100644 luks/validation/test-cases/1-init/900-reset_configuration/description create mode 100644 luks/validation/test-cases/1-init/900-reset_configuration/input.curl create mode 100644 luks/validation/test-cases/1-init/900-reset_configuration/output create mode 100644 luks/validation/test-cases/2-mount/010-mount_ask/description create mode 100644 luks/validation/test-cases/2-mount/010-mount_ask/input.curl create mode 100644 luks/validation/test-cases/2-mount/010-mount_ask/output create mode 100644 luks/validation/test-cases/2-mount/020-mount_empty_pw/description create mode 100644 luks/validation/test-cases/2-mount/020-mount_empty_pw/input.curl create mode 100644 luks/validation/test-cases/2-mount/020-mount_empty_pw/output create mode 100644 luks/validation/test-cases/2-mount/025-mount_no_pw/description create mode 100644 luks/validation/test-cases/2-mount/025-mount_no_pw/input.curl create mode 100644 luks/validation/test-cases/2-mount/025-mount_no_pw/output create mode 100644 luks/validation/test-cases/2-mount/030-mount_do_invalid_pw/description create mode 100644 luks/validation/test-cases/2-mount/030-mount_do_invalid_pw/input.curl create mode 100644 luks/validation/test-cases/2-mount/030-mount_do_invalid_pw/output create mode 100644 luks/validation/test-cases/2-mount/040-mount_do_valid/description create mode 100644 luks/validation/test-cases/2-mount/040-mount_do_valid/input.curl create mode 100644 luks/validation/test-cases/2-mount/040-mount_do_valid/output create mode 100644 luks/validation/test-cases/2-mount/050-mount_ask_while_mounted/description create mode 100644 luks/validation/test-cases/2-mount/050-mount_ask_while_mounted/input.curl create mode 100644 luks/validation/test-cases/2-mount/050-mount_ask_while_mounted/output create mode 100644 luks/validation/test-cases/2-mount/060-mount_do_while_mounted/description create mode 100644 luks/validation/test-cases/2-mount/060-mount_do_while_mounted/input.curl create mode 100644 luks/validation/test-cases/2-mount/060-mount_do_while_mounted/output create mode 100644 luks/validation/test-cases/2-mount/070-umount_ask/description create mode 100644 luks/validation/test-cases/2-mount/070-umount_ask/input.curl create mode 100644 luks/validation/test-cases/2-mount/070-umount_ask/output create mode 100644 luks/validation/test-cases/2-mount/080-umount_do/description create mode 100644 luks/validation/test-cases/2-mount/080-umount_do/input.curl create mode 100644 luks/validation/test-cases/2-mount/080-umount_do/output create mode 100644 luks/validation/test-cases/3-config/100-config_invalid_lang/description create mode 100644 luks/validation/test-cases/3-config/100-config_invalid_lang/input.curl create mode 100644 luks/validation/test-cases/3-config/100-config_invalid_lang/output create mode 100644 luks/validation/test-cases/3-config/110-config_invalid_ip/description create mode 100644 luks/validation/test-cases/3-config/110-config_invalid_ip/input.curl create mode 100644 luks/validation/test-cases/3-config/110-config_invalid_ip/output create mode 100644 luks/validation/test-cases/3-config/120-config_invalid_timeout/description create mode 100644 luks/validation/test-cases/3-config/120-config_invalid_timeout/input.curl create mode 100644 luks/validation/test-cases/3-config/120-config_invalid_timeout/output create mode 100644 luks/validation/test-cases/3-config/500-config_valid/delay create mode 100644 luks/validation/test-cases/3-config/500-config_valid/description create mode 100644 luks/validation/test-cases/3-config/500-config_valid/input.curl create mode 100644 luks/validation/test-cases/3-config/500-config_valid/output create mode 100644 luks/validation/test-cases/3-config/510-config-restore/delay create mode 100644 luks/validation/test-cases/3-config/510-config-restore/description create mode 100644 luks/validation/test-cases/3-config/510-config-restore/input.curl create mode 100644 luks/validation/test-cases/3-config/510-config-restore/output create mode 100644 luks/validation/test-cases/4-admin_pw/010-init_different_admin_pw/description create mode 100644 luks/validation/test-cases/4-admin_pw/010-init_different_admin_pw/input.curl create mode 100644 luks/validation/test-cases/4-admin_pw/010-init_different_admin_pw/output create mode 100644 luks/validation/test-cases/4-admin_pw/020-init_with_admin_pw/delay create mode 100644 luks/validation/test-cases/4-admin_pw/020-init_with_admin_pw/description create mode 100644 luks/validation/test-cases/4-admin_pw/020-init_with_admin_pw/input.curl create mode 100644 luks/validation/test-cases/4-admin_pw/020-init_with_admin_pw/output create mode 100644 luks/validation/test-cases/4-admin_pw/050-config_wrong_admin_pw/description create mode 100644 luks/validation/test-cases/4-admin_pw/050-config_wrong_admin_pw/input.curl create mode 100644 luks/validation/test-cases/4-admin_pw/050-config_wrong_admin_pw/output create mode 100644 luks/validation/test-cases/4-admin_pw/060-config_right_admin_pw/delay create mode 100644 luks/validation/test-cases/4-admin_pw/060-config_right_admin_pw/description create mode 100644 luks/validation/test-cases/4-admin_pw/060-config_right_admin_pw/input.curl create mode 100644 luks/validation/test-cases/4-admin_pw/060-config_right_admin_pw/output create mode 100644 luks/validation/test-cases/4-admin_pw/070-init_wrong_admin_pw/description create mode 100644 luks/validation/test-cases/4-admin_pw/070-init_wrong_admin_pw/input.curl create mode 100644 luks/validation/test-cases/4-admin_pw/070-init_wrong_admin_pw/output create mode 100644 luks/validation/test-cases/4-admin_pw/200-init_remove_admin_pw/delay create mode 100644 luks/validation/test-cases/4-admin_pw/200-init_remove_admin_pw/description create mode 100644 luks/validation/test-cases/4-admin_pw/200-init_remove_admin_pw/input.curl create mode 100644 luks/validation/test-cases/4-admin_pw/200-init_remove_admin_pw/output create mode 100644 luks/validation/test-cases/5-misc/010-logfile/description create mode 100644 luks/validation/test-cases/5-misc/010-logfile/input.curl create mode 100644 luks/validation/test-cases/5-misc/010-logfile/output create mode 100644 luks/validation/test-cases/5-misc/020-docpage-first/description create mode 100644 luks/validation/test-cases/5-misc/020-docpage-first/input.curl create mode 100644 luks/validation/test-cases/5-misc/020-docpage-first/output create mode 100644 luks/validation/test-cases/5-misc/030-docpage-another/description create mode 100644 luks/validation/test-cases/5-misc/030-docpage-another/input.curl create mode 100644 luks/validation/test-cases/5-misc/030-docpage-another/output create mode 100644 luks/validation/test-cases/README diff --git a/luks/CHANGELOG b/luks/CHANGELOG new file mode 100644 index 0000000..5c3c3a3 --- /dev/null +++ b/luks/CHANGELOG @@ -0,0 +1,22 @@ +Version 0.2.1 - 10/22/02005 + * fixed a critical bug in the initialisation process + * default cipher changed to "aes-cbc-essiv:sha256" (more secure) + * the boot menue (grub) is now protected + * support for usb and firewire harddisks + * new kernel: Linux 2.6.12.6 + * minor language improvements + +Version 0.2 - 10/04/02005 + * first public release + * fully configurable via web interface + * AES encryption via device-mapper + * Samba v3.0.14a-3 + * Linux 2.6.11 + * based on Debian GNU/Linux 3.1 + * documentation languages: + * English + * German + * interface languages: + * English + * German + * Slovenian diff --git a/luks/README b/luks/README new file mode 100644 index 0000000..7161412 --- /dev/null +++ b/luks/README @@ -0,0 +1,24 @@ +$Id$ +CryptoBox version 0.3 + +1) Documentation +The documentation is available at https://systemausfall.org/trac/cryptobox/wiki/CryptoBoxUser + +2) Building a LiveCD +try: "scripts/cbox-build.sh release" +or look at the developer's documentation: https://systemausfall.org/trac/cryptobox/wiki/CryptoBoxDev + +3) Bug reporting +Use our issue tracker at https://systemausfall.org/trac/cryptobox/newticket + +4) Licence +All scripts are GPL code (v2.0 or above). +The documentation is licenced under "Creative Commons 2.5 share-alike" (http://creativecommons.org/licenses/by-sa/2.5/). + +5) Contributors +Clavdia Horvat, Tadej Brce & Dušan Rebolj - slovenian translation + +6) Contact +email: cryptobox@systemausfall.org + +The CryptoBox project is mainly driven by sense.lab (https://systemausfall.org/senselab). diff --git a/luks/cbox-tree.d/_offline/doc/de/CryptoBox.html b/luks/cbox-tree.d/_offline/doc/de/CryptoBox.html new file mode 100644 index 0000000..ebcc8f9 --- /dev/null +++ b/luks/cbox-tree.d/_offline/doc/de/CryptoBox.html @@ -0,0 +1,136 @@ + + + + + CryptoBox + + + + + + +
+ English
+ Deutsch
+
+ +
+ + +
+ + +
+ + + + + +
+

+

+ +

+

Die CryptoBox

+

+English version +

+

Neuigkeiten

+

+Das erste Release der CryptoBox ist unter https://codecoop.org/projects/cryptobox/ verfügbar. +

+

Überblick

+

+Die CryptoBox ist eine Live-CD mit der sich jeder alte Rechner in Sekundenschnelle in einen verschlüsselnden Server umwandeln lässt. Damit kannst du sensible Daten speichern, ohne dass du etwas über Kryptografie wissen musst. +

+

Download

+

Spezifikation

+ +
SystemDebian GNU/Linux-basierte Live-CD +
benötigter Computer"ausrangierter" PC (i386 ab p1 mind. 32MB RAM) +
unterstützte Clients*nix; *bsd; Windows; Mac OS +
interner Fileserversamba (Netzwerkfreigaben) +
Benutzerschnittstelleper Browser bedienbares Web-Interface +
VerschlüsselungAES via device-mapper +
+

+Das Web-Interface der CryptoBox ünterstützt derzeit folgende Sprachen: +

+
  • deutsch +
  • englisch +
  • slowenisch +

+Du kannst gern weitere Übersetzungen in andere Sprachen hinzufügen (idealerweise utf-encodiert). +

+

Dokumentation

+

+Das Nutzerhandbuch ist unter CryptoBoxUser verfügbar. +

+

Entwicklung

+

+Beteilige dich an der Entwicklung der CryptoBox und werde reich und schön! ;)
+Nee im Ernst, wir freuen uns über jeden partizipierenden Menschen. Du wirst in einem entspannten Team reichlich Erfahrungen sammeln, eine nützliche Sache voranbringen und - wer weiß - vielleicht macht dich das auch schön. Schreib eine Mail an cryptobox[at]systemausfall.org und hab Spaß. +

+

+Probleme und Anregungen kannst du in unserer Fehlerdatenbank melden. +

+

+Die englischsprachige Entwickler-Doku findest du unter CryptoBoxDev. +

+

+Die Quell-Daten kannst du hier begutachten. +

+

+Für allgemeine Fragen, schreibe eine Email an cryptobox[at]systemausfall.org. +

+

Mitwirkende

+

+

  • Clavdia Horvat, Tadej Brce & Dušan Rebolj - slovenian translation +
  • http://codecoop.org - webspace +
+

+

Rechtliches

+
  1. Alle Skripte unterliegen der GPL - sie sind also quasi vollständig frei. +
  2. Die Dokumentation unterliegt einer Creative Commons-Lizenz, damit wird die Möglichkeit der freien Verbreitung des gesammelten Wissens gewährleistet. +
  3. Wir übernehmen keinerlei Haftung für eventuelle Folgen, die durch die Nutzung einer CryptoBox entstehen könnten. +

+

Kommentare

+

+ +

+
+
+ + + + +
+
+ + + + diff --git a/luks/cbox-tree.d/_offline/doc/de/CryptoBoxDev.html b/luks/cbox-tree.d/_offline/doc/de/CryptoBoxDev.html new file mode 100644 index 0000000..f5e3cda --- /dev/null +++ b/luks/cbox-tree.d/_offline/doc/de/CryptoBoxDev.html @@ -0,0 +1,150 @@ + + + + + CryptoBox + + + + + + +
+ English
+ Deutsch
+
+ +
+ + +
+ + +
+ + + + + +
+

+

+ +

+

+Navigation: ( CryptoBox/de, CryptoBox/en) + +

+
+

Development documentation

+

+The following pages are written for developers only.
+Users of the CryptoBox should read CryptoBoxUser instead. +

+

Source

+

+You may browse the source code. +

+

Contact

+

+We are waiting for your emails to cryptobox[at]systemausfall.org. +

+

Bug reports

+

+Please use our issue tracker, if you discover problems: https://systemausfall.org/trac/cryptobox/newticket +

+
+
+ + + +
+ + + + +
+
+ + + + diff --git a/luks/cbox-tree.d/_offline/doc/de/CryptoBoxDevBackground.html b/luks/cbox-tree.d/_offline/doc/de/CryptoBoxDevBackground.html new file mode 100644 index 0000000..f078431 --- /dev/null +++ b/luks/cbox-tree.d/_offline/doc/de/CryptoBoxDevBackground.html @@ -0,0 +1,104 @@ + + + + + CryptoBox + + + + + + +
+ English
+ Deutsch
+
+ +
+ + +
+ + +
+ + + + + +
+

+

+

Table of Contents

+
    +
  1. dfsbuild
  2. +
  3. the kernel
  4. +
  5. qemu
  6. +
  7. alternative LiveCDs
  8. +
  9. Comments
  10. +
+
+ +

+

+Navigation: ( CryptoBoxDev) + +

+
+

Details of the CryptoBox

+

dfsbuild

+

+The base system of the CryptoBox Live-CD is created by dfsbuild. +

+

+It is recommended to use some kind of caching tool for the retrieval of the debian packages (e.g.: apt-cacher, apt-proxy or approx). This saves a lot of bandwidth and time. +

+

+The documentation for dfsbuild is sparse. But it is quite unlikely, that you will get in direct contact with it, as it is wrapped by cbox-build. However the following links may help you for specific problems: +

+

the kernel

+

+The linux kernel for the CryptoBox is compiled statically. If you want to change it, you could follow this steps: +

+
  1. get the sources: apt-get install kernel-tree-2.6.11 (or the version of your choice) +
  2. copy the exisiting config file kernel/config-2.6.11 as .config into your kernel source directory +
  3. build the debian kernel package make-kpkg --revision=1.dfs --rootcmd=fakeroot kernel_image +
  4. change the kernel in the unpackdebs setting in dfs-cbox.conf (see CryptoBoxDevCustomBuild for details) +

qemu

+

+Qemu is a portable system emulator. It is a convenient tool to ease the development workflow, as you do not need to burn LiveCDs for testing. +

+

alternative LiveCDs

+

+We tried some other LiveCDs before we decided to use dfsbuild. The following pages describe their advantages and disadvantages as the base system for the CryptoBox: +

+
+

Comments

+

+ +

+
+
+ + + + +
+
+ + + + diff --git a/luks/cbox-tree.d/_offline/doc/de/CryptoBoxDevCustomBuild.html b/luks/cbox-tree.d/_offline/doc/de/CryptoBoxDevCustomBuild.html new file mode 100644 index 0000000..cd8953d --- /dev/null +++ b/luks/cbox-tree.d/_offline/doc/de/CryptoBoxDevCustomBuild.html @@ -0,0 +1,128 @@ + + + + + CryptoBox + + + + + + +
+ English
+ Deutsch
+
+ +
+ + +
+ + +
+ + + + + +
+

+

+ +

+

+Navigation: ( CryptoBoxDev, CryptoBoxDevBackground, CryptoBoxDevPreparation, CryptoBoxDevWorkFlow) + +

+
+

Custom builds of the CryptoBox

+

Overview

+

+The following sections are useful, if you want to change the default settings of your personal CryptoBox development environment. +

+

+You should have completed the steps described in CryptoBoxDevPreparation. +

+

Settings

+

dfsbuild settings

+

+All settings for dfsbuild can be found in etc-defaults.d/dfs-cbox.conf. +

+

+If you want to change any of them, you should do the following: +

+
  1. copy etc-defaults.d/dfs-cbox.conf file to etc-local.d/ +
  2. change etc-local.d/dfs-cbox.conf according to your needs +

+This allows you to use your own (personal) settings, without interfering with files under version control. +

+

CryptoBox development configuration

+

+Some settings regarding the building, configuring and validating of the CryptoBox can be found in etc-defaults.d/cbox-dev.conf. +

+

+If you want to change any of them, you should do the following: +

+
  1. copy etc-defaults.d/cbox-dev.conf file to etc-local.d/ +
  2. change etc-local.d/cbox-dev.conf according to your needs +

SSH connection

+

+The file ssh_config is used to establish a connection to a running CryptoBox system. +

+

+It can be necessary to change these settings, if: +

+
  • you do not want to use the default IP for the CryptoBox +
  • or the CryptoBox is not within your local network. +

+If you want to change some settings, you should do the following: +

+
  1. copy etc-defaults.d/ssh_config file to etc-local.d/ +
  2. change etc-local.d/ssh_config according to your needs +

qemu network configuration

+

+The file etc-defauolts.d/qemu-ifup is used for the CryptoBox emulation with qemu. See man qemu for details. +

+

+If you want to change some settings, you should do the following: +

+
  1. copy etc-defaults.d/qemu-ifup file to etc-local.d/ +
  2. change etc-local.d/qemu-ifup according to your needs +

+

Comments

+

+ +

+
+
+ + + + +
+
+ + + + diff --git a/luks/cbox-tree.d/_offline/doc/de/CryptoBoxDevCustomConfigure.html b/luks/cbox-tree.d/_offline/doc/de/CryptoBoxDevCustomConfigure.html new file mode 100644 index 0000000..cf5a1a9 --- /dev/null +++ b/luks/cbox-tree.d/_offline/doc/de/CryptoBoxDevCustomConfigure.html @@ -0,0 +1,103 @@ + + + + + CryptoBox + + + + + + +
+ English
+ Deutsch
+
+ +
+ + +
+ + +
+ + + + + +
+

+

+

Table of Contents

+
    +
  1. Overview
  2. +
  3. Locations
  4. +
  5. Examples
  6. +
  7. Comments
  8. +
+
+ +

+

+Navigation: ( CryptoBoxDev) + +

+
+

Custom configuration of the CryptoBox

+

Overview

+

+You may change nearly every aspect of the CryptoBox by using the custom configuration hook directory. +

+

+Any script inside of this directory will be executed after the default configuration procedure (see CryptoBoxDevWorkFlow). +

+

+The order of execution is defined by the names of the scripts (alphabetically). +

+

Locations

+

+Some example customization scripts can be found in configure-examples.d/. +

+

+You may put your scripts into configure-local.d/. They will be sourced by cbox-build.sh. +

+

Examples

+

+The examples in configure-examples.d/ can be copied to configure-local.d/ and adjusted to your needs. +

+ +
set_default_ipchange the default IP address of the CryptoBox +
set_default_languageset the default language +
set_default_timeoutset the default idle time for automatic unmounting +
set_hostnamechange the default hostname +
set_root_pwchange the password of root (only useful for a development CryptoBox) +
import_authorized_keysupload a ssh key for passwordless access to a development CryptoBox +
set_scan_deviceswhere to look for usable harddisks +
+
+

Comments

+

+ +

+
+
+ + + + +
+
+ + + + diff --git a/luks/cbox-tree.d/_offline/doc/de/CryptoBoxDevKnownProblems.html b/luks/cbox-tree.d/_offline/doc/de/CryptoBoxDevKnownProblems.html new file mode 100644 index 0000000..ccc5897 --- /dev/null +++ b/luks/cbox-tree.d/_offline/doc/de/CryptoBoxDevKnownProblems.html @@ -0,0 +1,82 @@ + + + + + CryptoBox + + + + + + +
+ English
+ Deutsch
+
+ +
+ + +
+ + +
+ + + + + +
+

+

+ +

+

+Navigation: ( CryptoBoxDev) + +

+
+

Known problems

+

qemu

+

interleaved files not (yet) supported

+

+You should update qemu to version 0.7 or higher. +

+

smbd: segfault

+

+This happens under certain circumstances. We do not know a solution for this problem. +

+
+

Comments

+

+ +

+
+
+ + + + +
+
+ + + + diff --git a/luks/cbox-tree.d/_offline/doc/de/CryptoBoxDevPreparation.html b/luks/cbox-tree.d/_offline/doc/de/CryptoBoxDevPreparation.html new file mode 100644 index 0000000..0c1ed1b --- /dev/null +++ b/luks/cbox-tree.d/_offline/doc/de/CryptoBoxDevPreparation.html @@ -0,0 +1,120 @@ + + + + + CryptoBox + + + + + + +
+ English
+ Deutsch
+
+ +
+ + +
+ + +
+ + + + + +
+

+

+ +

+

+Navigation: ( CryptoBoxDev, CryptoBoxDevCustomBuild, CryptoBoxDevWorkFlow) + +

+
+

Preparations for developers

+

Software requirements

+

Packages

+

+We use Debian as our development environment. This was a natural choice, as the CryptoBox-LiveCD is also based on Debian. Other distributions should work too, of course - your mileage may vary. +

+

+required: +

+

+recommended: +

+

Kernel

+

+If you want to use qemu to test your CryptoBox in a virtual environment, then you will need the tun/tap kernel feature. +

+
CONFIG_TUN=m
+

Get the source

+

+Download the latest release from our subversion-Repository: +

+
svn checkout https://svn.systemausfall.org/svn/cryptobox/trunk
+

First build

+

+run scripts/cbox-build.sh release as root - hopefully, there should be no errors :) +

+

+Hint: This step will fail, if you did not install apt-cacher. See CryptoBoxDevCustomBuild for details on how to change the build-configuration settings (in this case: mirror in dfs-cbox.conf). +

+

Finished

+

+Now you can start to pariticipate in the development of the CryptoBox or simply customize your own CryptoBox-LiveCD. +

+

+See CryptoBoxDevWorkFlow for details of how to use the developer's tools of the CryptoBox. +

+

+CryptoBoxDevCustomBuild shows some examples for local customizations of the CryptoBox. +

+
+

Comments

+

+ +

+
+
+ + + + +
+
+ + + + diff --git a/luks/cbox-tree.d/_offline/doc/de/CryptoBoxDevValidation.html b/luks/cbox-tree.d/_offline/doc/de/CryptoBoxDevValidation.html new file mode 100644 index 0000000..52267cc --- /dev/null +++ b/luks/cbox-tree.d/_offline/doc/de/CryptoBoxDevValidation.html @@ -0,0 +1,121 @@ + + + + + CryptoBox + + + + + + +
+ English
+ Deutsch
+
+ +
+ + +
+ + +
+ + + + + +
+

+

+

Table of Contents

+
    +
  1. Overview
  2. +
  3. Validate
  4. +
  5. How to create a test
  6. +
  7. Comments
  8. +
+
+ +

+

+Navigation: ( CryptoBoxDev) + +

+
+

Validation of the CryptoBox

+

Overview

+

+The validation feature helps you to check the programming logic of the CryptoBox. A lot of test cases are defined to verify as many functions of the CryptoBox as possible. +

+

+The requests are processed with curl. +

+

+The received web page is saved to allow a later design review or css debugging. +

+

+The current state of the CryptoBox is represented by ten single values (e.g.: box is configured, IP of the box, current language setting, ...), which are invisibly a part of each html page (as comments). The returned status of every request is compared to the predicted value of the test case. +

+

+Similar test cases are pooled into test groups (e.g.: initialization, configuration and mounting). +

+

Validate

+

+Run scripts/validate.sh] to conduct all tests of all groups. See scripts/validate.sh help for other actions. +

+

+The results will be saved in validation/report. +

+

+In addition to every single retrieved page, a html page called summary-?.html is created, which contains the state checks of all tests in a group. +

+

How to create a test

+

+All test cases can be found in validation/test-cases. +

+

+Every test consists of the following files: +

+ +
input.curlthe configuration file for the curl request +
outputthe predicted state of the CryptoBox after the call +
descriptiona short description of the test (will be used for the summary) +
delay[optional] time to wait after this test +
+

+Use the existing test cases as templates for new tests. +

+

+Read validation/test-cases/README for details. +

+

+Every logical path of the web interface CGI should be validated by a test case. +

+
+

Comments

+

+ +

+
+
+ + + + +
+
+ + + + diff --git a/luks/cbox-tree.d/_offline/doc/de/CryptoBoxDevWorkFlow.html b/luks/cbox-tree.d/_offline/doc/de/CryptoBoxDevWorkFlow.html new file mode 100644 index 0000000..2c8c24d --- /dev/null +++ b/luks/cbox-tree.d/_offline/doc/de/CryptoBoxDevWorkFlow.html @@ -0,0 +1,194 @@ + + + + + CryptoBox + + + + + + +
+ English
+ Deutsch
+
+ +
+ + +
+ + +
+ + + + + +
+

+

+ +

+

+Navigation: ( CryptoBoxDev, CryptoBoxDevCustomConfigure, CryptoBoxDevPreparation) + +

+
+

Development workflow

+

Preparations

+

+You should have completed the steps described in CryptoBoxDevPreparation. +

+

Create a CryptoBox-LiveCD

+

+The following steps can be executed in the order of their appearance. +

+

+Usually there is no need to repeat the whole process, after you changed some parts of the CryptoBox. Especially the first step (building of the base system with dfsbuild) may usually be skipped. +

+

+Every step of the building process must be executed as root. +

+

Build the base system

+

+Run scripts/cbox-build.sh dfsbuild to create the base system for the LiveCD. +

+

+The result can be found in _builddir/cd1/image. +

+

+If you do not want to use the apt-cacher to save bandwidth and time, then you should modify the mirror-setting in dfs-cbox.conf (see CryptoBoxDevCustomBuild for details). +

+

Configure the base image

+

+Run scripts/cbox-build.sh config to copy the CryptoBox-specific files to the base image. +

+

+TODO: link to cbox-build.sh-manpage +

+

Remove development features

+

+The original base system, that was created by dfsbuild contains a lot packages and some scripts, that are only useful during development. You should remove them, as they cause severe security implications. +

+

+To reduce the CryptoBox-LiveCD to the usable minimum for operational use, you should run scripts/cbox-build.sh harden. +

+

Create an iso image

+

+To burn a CryptoBox-LiveCD, you need an bootable iso9660-image. +

+

+Create the iso image with scripts/cbox-build.sh iso. The resulting file can be found at _builddir/cd1/cryptobox.iso. +

+

Burn the CD

+

+Do it manually: +

+
cdrecord -v dev=0,0,0 _builddir/cryptobox.iso
+

+(change the dev setting according to your setup). +

+

+Let the script do it for you: scripts/cbox-build.sh burn (maybe you have to change the CDWRITER setting in cbox-dev.conf - see CryptoBoxDevCustomBuild). +

+

+Of course, it is not wise to use CD-R media. CD-RW consume less resources. +

+

Test the CryptoBox-LiveCD

+

+This section is only useful for developers, who want to improve or change the CryptoBox system. +

+

Chroot: quick & dirty tests

+

+If you modified the perl- or shell-scripts of the CryptoBox, then you can check for syntax errors by running them in a chroot environment. Be careful: you have access to all ressources of your computer, while you are working within a chroot environment - so you can easily repartition your real disk ... +

+

+To start a chroot environment, you can execute scripts/cbox-dev.sh chroot. +

+

+For more intensive tests, you may use qemu (see below) or burn real LiveCDs - of course this would take much more time. +

+

Qemu: nearly complete emulation

+

+The processor emulator qemu allows you test the CryptoBox in a virtual environment, that is completely separated from your real computer's resources. It is the tool of choice, if you do nat have a real computer around for testing. +

+

+Beware - there are some problems, when using qemu: +

+
  • smbd does not start (segfault) +
  • ??? +

+To start a qemu emulation of the iso image, you may type: +

+
scripts/cbox-dev.sh qemu
+

Debugging and merging

+

+This section is only useful for developers, who want to develop on a running CryptoBox system (emulated or real). +

+

+You may access the CryptoBox directly or you can use ssh to open a remote session: +

+
./cbox-dev.sh ssh
+

Development on a running system

+

+When you run an emulation or test a real LiveCD, you may encounter problems and bugs. To test your fixes for these problems, it is convenient, to change the running test system. Afterwards you can merge these changes to your local development copy. +

+

+Type scripts/cbox-dev.sh diff to see the changes, you made on the running CryptoBox system. +

+

+Type scripts/cbox-dev.sh merge to merge these changes to your local working copy. +

+

Uploading a new release

+

+Alternatively you may also upload a new version of your local working copy to the running CryptoBox system. +

+

+Type scripts/cbox-dev.sh upload - beware: all recent changes you made to the running CryptoBox system, are lost. +

+
+

Comments

+

+ +

+
+
+ + + + +
+
+ + + + diff --git a/luks/cbox-tree.d/_offline/doc/de/CryptoBoxUser.html b/luks/cbox-tree.d/_offline/doc/de/CryptoBoxUser.html new file mode 100644 index 0000000..c2237db --- /dev/null +++ b/luks/cbox-tree.d/_offline/doc/de/CryptoBoxUser.html @@ -0,0 +1,102 @@ + + + + + CryptoBox + + + + + + +
+ English
+ Deutsch
+
+ +
+ + +
+ + +
+ + + + + +
+

+

+ +

+

+Navigation: ( CryptoBox/de) + +

+
+

Nutzerhandbuch

+

+Die folgenden Seiten beschreiben die Nutzung der CryptoBox. +

+

+Die online-Version dieses Handbuchs ist ein Wiki. Das bedeutet, dass du diese Seiten verändern kannst. Falls du also Fragen oder Anregungen hast, schreibe bitte deine Anmerkungen in den Kommentar-Abschnitt am Ende der jeweiligen Seite. Die Entwickler werden deine Fragen beantworten und das Handbuch schnellstmöglich aktualisieren. Auf diese Art und Weise kannst du die Nutzbarkeit der CryptoBox für alle Nutzer verbessern! +

+
  1. CryptoBoxUserGettingStarted -- die Vorbereitung der Hardware +
  2. CryptoBoxUserConfiguration -- die Einrichtung deines neuen verschlüsselten Dateiservers +
  3. CryptoBoxUserDailyUse -- die tägliche Nutzung der CryptoBox +

+Die online-Version dieses Handbuchs befindet sich unter https://systemausfall.org/trac/cryptobox/wiki/CryptoBoxUser/de. +

+
+

+ +

+
+
+ + + + +
+
+ + + + diff --git a/luks/cbox-tree.d/_offline/doc/de/CryptoBoxUserConfiguration.html b/luks/cbox-tree.d/_offline/doc/de/CryptoBoxUserConfiguration.html new file mode 100644 index 0000000..ef42883 --- /dev/null +++ b/luks/cbox-tree.d/_offline/doc/de/CryptoBoxUserConfiguration.html @@ -0,0 +1,152 @@ + + + + + CryptoBox + + + + + + +
+ English
+ Deutsch
+
+ +
+ + +
+ + +
+ + + + + +
+

+

+ +

+

+Navigation: ( CryptoBoxUser/de) + +

+
+

Die Konfiguration deiner CryptoBox

+

Überblick

+

+Alle Funktionen der CryptoBox können durch das komfortable Web-Interface bedient werden. Zur Erst-Einrichtung der CryptoBox folge einfach den folgenden Schritten. +

+

+Falls du in Eile bist, kannst du das Vorwort überspringen. +

+

+Die Initialisierung erklärt die Einrichtung der Festplatte. Dieser Schritt ist nur bei der ersten Einrichtung oder nach einem Festplattenwechsel notwendig. +

+

+Im Konfigurations-Abschnitt werden die verfügbaren Einstellungen der CryptoBox beschrieben. Hier kannst du beispielsweise die Sprache des Web-Interfaces oder die Netzwerkadresse deiner CryptoBox einstellen. +

+

+Vergiss nicht, auch den Hinweise/Fallstricke-Abschnitt zu lesen. +

+

Vorwort

+

+Du bist den Anweisungen aus CryptoBoxUserGettingStarted gefolgt und sitzt nun vor deinem Arbeits-Rechner. Nun kannst du in deinem Web-Browser das Web-Interface der CryptoBox ansteuern: https://192.168.0.23. +

+

+Bevor du Daten auf deiner CryptoBox speichern kannst, muss die Festplatte mit einem verschlüsselten Dateisystem versehen werden. Das klingt kompliziert, ist jedoch mit einem Klick erledigt. :) +

+

Initialisierung

+

+Klicke auf Initialisierung in der Menü-Zeile. +

+

+Jetzt wirst du zur Eingabe zweier Passworte aufgefordert (jeweils mit Wiederholung - zum Training deiner Tipp-Fertigkeiten ;)). +

+

+de_init.png +

+
  • Das erste Passwort ist das Administrations-Password. +
    • Es schützt die Konfiguration deiner CryptoBox. +
    • Dies ist notwendig, um zu verhindern, dass jemand unerlaubt die Daten auf deiner CryptoBox durch eine erneute Initialisierung löscht. +
    • Wahrscheinlich wirst du dieses Passwort nie wieder benötigen. +
    • Du kannst das Administrations-Passwort leer lassen - dies wird jedoch nicht empfohlen. +
  • Das Crypto-Passwort ist wesentlich wichtiger, da es der einzige Schutz der Daten auf der verschlüsselten Festplatte ist. Wähle es mit Sorgfalt! +
    • Du benötigst es, um auf deine Daten zuzugreifen. +
    • Ein sicheres Passwort sollte aus mindestens 15 Zeichen (einschließlich Ziffern und Sonderzeichen) bestehen. Die Sicherheit deiner Daten steht und fällt mit der Qualität dieses Passworts. +
  • Um dich daran zu erinnern, dass dieser Schritt die Festplatte der CryptoBox komplett löschen wird, musst du den angezeigten roten Warnhinweis im letzten Formularfeld eingeben. +
  • Nun kannst du die Initialisierung durch einen Klick auf Initialisiere die CryptoBox abschließen. +

+Das war es dann auch schon. Kryptographie war wohl nie einfacher zu verwenden, oder? ;) +

+

+Der Initialisierungsvorgang läuft nun im Hintergrund ab und wird nach wenigen Minuten (abhängig von der Größe deiner Festplatte) abgeschlossen. +

+

Konfiguration

+

+Im Gegensatz zur Initialisierung, die nur einmal durchgeführt werden muss, kannst du die Konfiguration jederzeit deinen Wünschen anpassen. Dazu klickst du einfach auf Konfiguration in der Menü-Zeile des Web-Interfaces. Nun wird dir ein Formular mit vier Feldern präsentiert: +

+

+de_config.png +

+
  • Falls du ein Administrator-Passwort während der Initialisierung festgelegt hast, musst du es nun eingeben. Andernfalls wird dieses Formularfeld nicht angezeigt. +
  • Du kannst die voreingestellte Netzwerk-Adresse (IP) verändern, falls sie nicht zu deiner Netzwerk-Struktur passt. +
  • Die Zeitabschaltung sorgt dafür, dass nach einer festgelegten Dauer von Inaktivität (in Minuten), das Crypto-Dateisystem deaktiviert wird (damit sind deine Daten wieder geschützt). Laufende Dateiübertragungen werden dadurch natürlich nicht gestört. +
    • Es ist ratsam, eine kurze Abschalt-Zeit einzustellen (wenige Minuten). +
    • Der Wert 0 deaktiviert die automatische Abschaltung. +
  • Die Sprache ist der Standard für alle Nutzer des CryptoBox-Web-Interfaces. Sie kann individuell durch die Sprach-Links am rechten oberen Bildschirmrand überschrieben werden. +

+Speichere deine neuen Einstellungen durch einen Klick auf Speichere Konfiguration. +

+

+Das ist alles - deine CryptoBox ist jetzt bereit für die tägliche Nutzung! +

+

Hinweise / Fallstricke

+
  • Alle Daten auf der Festplatte in der CryptoBox werden bei der Initialisierung gelöscht. +
  • Die Passworte müssen jeweils zweimal eingegeben werden, um die Gefahr von Tipp-Fehlern zu vermindern. +
  • Das optionale Administrations-Passwort ist nur für die Konfiguration oder eine erneute Initialisierung erforderlich. +
  • Das Crypto-Passwort beschützt deine sensiblen Daten. +
  • Falls die CryptoBox nicht über die Adresse 192.168.0.23 erreichbar ist, musst du die Netzwerk-Adresse deines Arbeits-Rechners für die Dauer der Initialisierung der CryptoBox vorübergehend ändern. +

+zurück zu CryptoBoxUser +

+
+

Kommentare

+

+ +

+
+
+ + + + +
+
+ + + + diff --git a/luks/cbox-tree.d/_offline/doc/de/CryptoBoxUserDailyUse.html b/luks/cbox-tree.d/_offline/doc/de/CryptoBoxUserDailyUse.html new file mode 100644 index 0000000..d1e583d --- /dev/null +++ b/luks/cbox-tree.d/_offline/doc/de/CryptoBoxUserDailyUse.html @@ -0,0 +1,167 @@ + + + + + CryptoBox + + + + + + +
+ English
+ Deutsch
+
+ +
+ + +
+ + +
+ + + + + +
+

+

+ +

+

+Navigation: ( CryptoBoxUser/de, CryptoBoxUserConfiguration/de) + +

+
+

Tägliche Nutzung

+

Aktivieren des verschlüsselten Dateisystems

+

+Du kannst dein verschlüsseltes Dateisystem mit folgenden Schritten aktivieren: +

+
  • Wähle mit deinem Web-Browser die Adresse deiner CryptoBox an. Die Voreinstellung ist https://192.168.0.23. +
  • Klicke auf Aktivieren der Crypto-Daten. Daraufhin erscheint ein Formular zur Eingabe des Crypto-Passworts. +
  • Gib dein Crypto-Passwort ein und klicke auf die darunterliegende Schaltfläche. +

+de_mount.png +

+

+Nun ist das verschlüsselte Dateisystem verfügbar. Um es zu nutzen, suche in deiner Netzwerkumgebung nach der Netzwerk-Adresse deiner CryptoBox (Voreinstellung: 192.168.0.23). Nun kannst du das Netzlaufwerk wie üblich verwenden. +

+

Zugriff auf die verschlüsselten Daten

+

Linux - Kommandozeile

+

+Um als normaler Nutzer auf die Crypto-Partition zuzugreifen, solltest du folgende Zeile zur /etc/fstab hinzufügen: +

+
//192.168.0.23/public   /mnt/    smbfs   defaults,noexec,noauto,user,guest      0       0
+

+Nun kannst du die Crypto-Partition nach /mnt mounten: +

+
mount /mnt/
+

+bzw. unmounten: +

+
smbumount /mnt
+

Windows

+

+Starte den Windows Explorer und wähle im Menü unter Extras die Option Netzlaufwerke verbinden aus. +

+

+de_w98_network_drive.png +

+

+Trage unter Pfad die Adresse des Verzeichnisse der CryptoBox ein, auf das du zugreifen willst (Standard: \\192.168.0.23\public). Soll die Verbindung beim jedem Start von Windows wiederhergestellt werden, aktiviere Verbindung beim Start wiederherstellen. +

+

+Nun kannst du auf das verschlüsselte Dateisystem wie jedes andere Laufwerk benutzen. +

+

Abschalten des verschlüsselten Dateisystems

+

+Du kannst das verschlüsselte Dateisystem abschalten, indem du in der Menü-Zeile des Web-Interfaces der CryptoBox auf Deaktivierung der Crypto-Daten klickst. +

+

+Deine Daten sind nun wieder vor jedem Zugriff geschützt. +

+

Abschaltung der CryptoBox

+

+Klicke auf System in der Menü-Zeile des Web-Interfaces. Nun kannst du zwischen Abschaltung und Neustart wählen. Die Abschaltung dauert einige Sekunden. +

+

+Falls dein CryptoBox-Rechner relativ neu ist (ungefähr ab Baujahr 02000), wird er sich nun selbständig abschalten. Andernfalls musst du dies per Hand tun. +

+

Notfall-Abschaltung

+

+Falls du deine Daten wirklich schnell vor neugierigen Augen schützen musst, dann ziehe einfach den Stecker der CryptoBox. Dies ist nicht besonders sauber und kann (in sehr seltenen Ausnahmefällen) geöffnete Dateien beschädigen. Es ist jedoch die schnellste Methode zur Sicherung deiner Daten vor unbefugtem Zugriff. +

+

+zurück zu CryptoBoxUser +

+
+

Fragen und Antworten

+

Windows: Netzlaufwerk kann nicht verbunden werden

+

+de_w98_not_logged_in.png +

+

+Erscheint diese Fehlermeldung, hast du dich beim Start von Windows nicht angemeldet bzw. das Anmeldefenster mit der Taste Esc (Escape) verschwinden lassen. Klicke auf Start und Abmelden und melde dich neu an - sobald das Anmeldefenster erscheint, klicke auf OK: +

+

+de_w98_login.png +

+

Linux: only root can unmount //192.168.0.23/public

+

+Das Unmounten der Crypto-Partition mit umount funktioniert nicht. +

+

+Lösung: Verwende stattdessen: +

+
smbumount /mnt
+

Linux: Operation not permitted / smbmnt failed: 1

+

+Der Versuch die Partition als normaler Nutzer zu mounten schlägt fehl: +

+
cannot mount on /mnt/: Operation not permitted
+smbmnt failed: 1
+

+Lösung: Das Mount-Verzeichnis muss dem selben Nutzer gehören, der den mount-Befehl ausführt (bspw. phil): +

+
chown phil. /mnt
+

+

Kommentare

+

+ +

+
+
+ + + + +
+
+ + + + diff --git a/luks/cbox-tree.d/_offline/doc/de/CryptoBoxUserGettingStarted.html b/luks/cbox-tree.d/_offline/doc/de/CryptoBoxUserGettingStarted.html new file mode 100644 index 0000000..4c51deb --- /dev/null +++ b/luks/cbox-tree.d/_offline/doc/de/CryptoBoxUserGettingStarted.html @@ -0,0 +1,100 @@ + + + + + CryptoBox + + + + + + +
+ English
+ Deutsch
+
+ +
+ + +
+ + +
+ + + + + +
+

+

+

Table of Contents

+
    +
  1. Erste Schritte
  2. +
  3. Hinweise / Fallstricke
  4. +
  5. Kommentare
  6. +
+
+ +

+

+Navigation: ( CryptoBoxUser/de, CryptoBoxUserConfiguration/de) + +

+
+

Wie geht es los

+

Erste Schritte

+

+Die CryptoBox ist schnell aufgebaut: +

+
  1. Du brauchst einen alten Computer (mindestens 100MHZ, 48MB RAM) (Faustregel: nach 1996 gekauft). Dazu eine passende Netzwerkkarte, ein CD-ROM Laufwerk und eine riesige Festplatte. +
    • Die Festplatte muss nicht riesig sein, je nachdem was du speichern willst, reicht auch 'ne kleine ;) +
    • Du brauchst keinen Monitor, keine Tastatur und keine Maus, um die CryptoBox zu benutzen (bzw. nur für die Erst-Einrichtung). +
    • Du kannst natürlich einen schnelleren Rechner verwenden - der unbedeutende Performance-Zuwachs wird jedoch wohl nicht durch den erhöhten Energiebedarf gerechtfertigt. +
  2. Lade die aktuellste Version der CryptoBox als iso-image herunter und brenne dieses auf einen CD-Rohling. +
  3. Konfiguriere den PC, so dass er vom CD Laufwerk bootet. Dazu solltest du im BIOS als "boot device" "CD-ROM" einstellen. +
  4. Pack die frisch gebrannte CryptoBox CD ins Laufwerk und starte den Computer. +

+Wenn der Computer jetzt von der CD startet, hast du alle Anforderungen erfüllt. +

+

+Du kannst nun zu deinem Arbeits-Rechner in demselben Netzwerk gehen und "https://192.168.0.23" ansurfen. Dort sollte die CryptoBox-Konfigurationsseite erscheinen. Ist doch kinderleicht, oder? +

+

+Die weiteren Schritte werden unter CryptoBoxUserConfiguration beschrieben. +

+

Hinweise / Fallstricke

+
  • Eventuell musst du für die Einrichtung der CryptoBox kurzzeitig deine Netzwerkaddresse (IP) ändern. Falls du nicht weißt, wie und warum, dann frage jemanden um Rat ... (wahrscheinlich klappt es aber ohne Änderungen) +
  • Falls du eine neue Festplatte kaufen willst, beachte, dass alte PCs nicht mit modernen Festplattengrößen klarkommen. +
  • Einige alte PCs können nicht vom CD-ROM-Laufwerk booten. +
  • Falls dir der Begriff "BIOS" nichts sagt, bitte Menschen um Hilfe, bevor du was veränderst ;) +
  • Vergiss nicht, den CryptoBox-Rechner ans Netzwerk anzuschliessen! +
  • Du brauchst einen Monitor und eine Tastatur für die Konfiguration des BIOS. +

+

Kommentare

+

+ +

+
+
+ + + + +
+
+ + + + diff --git a/luks/cbox-tree.d/_offline/doc/de/doc_footer.inc b/luks/cbox-tree.d/_offline/doc/de/doc_footer.inc new file mode 100644 index 0000000..4ec37b7 --- /dev/null +++ b/luks/cbox-tree.d/_offline/doc/de/doc_footer.inc @@ -0,0 +1,6 @@ + + + + diff --git a/luks/cbox-tree.d/_offline/doc/de/doc_header.inc b/luks/cbox-tree.d/_offline/doc/de/doc_header.inc new file mode 100644 index 0000000..3b0f14f --- /dev/null +++ b/luks/cbox-tree.d/_offline/doc/de/doc_header.inc @@ -0,0 +1,13 @@ + + +
+ + +
diff --git a/luks/cbox-tree.d/_offline/doc/doc_footer.inc b/luks/cbox-tree.d/_offline/doc/doc_footer.inc new file mode 100644 index 0000000..e134874 --- /dev/null +++ b/luks/cbox-tree.d/_offline/doc/doc_footer.inc @@ -0,0 +1,7 @@ + +
+
+ + + + diff --git a/luks/cbox-tree.d/_offline/doc/doc_header.inc b/luks/cbox-tree.d/_offline/doc/doc_header.inc new file mode 100644 index 0000000..ab5fd45 --- /dev/null +++ b/luks/cbox-tree.d/_offline/doc/doc_header.inc @@ -0,0 +1,17 @@ + + + + + CryptoBox + + + + + + +
+ English
+ Deutsch
+
+ +
diff --git a/luks/cbox-tree.d/_offline/doc/en/CryptoBox.html b/luks/cbox-tree.d/_offline/doc/en/CryptoBox.html new file mode 100644 index 0000000..263520d --- /dev/null +++ b/luks/cbox-tree.d/_offline/doc/en/CryptoBox.html @@ -0,0 +1,132 @@ + + + + + CryptoBox + + + + + + + + +
+ + +
+ + +
+ + + + + +
+

+

+ +

+

The CryptoBox

+

+deutsche Version +

+

News

+

+The first release of the CryptoBox is available at https://codecoop.org/projects/cryptobox/ +

+

Overview

+

+The CryptoBox is a Debian/Linux based live-cd. This CD boots up, starting a secure fileserver. Even non-technical users are able to store their data on its encrypted harddisk. There is no special knowledge about cryptography or servers required at all. +

+

Download

+

Specs

+ +
systemDebian/Linux based Live-CD +
needed hardware "outdated" PC (i386 p1-100 32MB RAM minimum) +
supported clients*nix; *bsd; Windows; Mac OS +
fileserversamba (network shares) +
userinterfacefully remote controlled via webbrowser +
encryptionAES via device-mapper +
+

+The web interface of the CryptoBox supports the following languages: +

+
  • English +
  • German +
  • Slovenian +

+Feel free to contribute a translation for another language (preferably utf-encoded). +

+

Documentation

+

+The user documentation has its home at CryptoBoxUser. +

+

Development

+

+Take a look at the developer's documentation at CryptoBoxDev. +

+

+Report bugs to https://systemausfall.org/trac/cryptobox/newticket. +

+

+Browse the source code. +

+

+Anything else? Write us an email: cryptobox[at]systemausfall.org +

+

Acknowledgements

+

+

  • Clavdia Horvat, Tadej Brce & Dušan Rebolj - slovenian translation +
  • http://codecoop.org - webspace +
+

+

Legal stuff

+
  1. All scripts are GPL licensed +
  2. The documentation is licensed under a Creative Commons License +
  3. We do not take any warranty for the functionality or usability of the CryptoBox. +

+

Comments

+

+ +

+
+
+ + + + +
+
+ + + + diff --git a/luks/cbox-tree.d/_offline/doc/en/CryptoBoxDev.html b/luks/cbox-tree.d/_offline/doc/en/CryptoBoxDev.html new file mode 100644 index 0000000..dbc7c3c --- /dev/null +++ b/luks/cbox-tree.d/_offline/doc/en/CryptoBoxDev.html @@ -0,0 +1,150 @@ + + + + + CryptoBox + + + + + + + + +
+ + +
+ + +
+ + + + + +
+

+

+ +

+

+Navigation: ( CryptoBox/de, CryptoBox/en) + +

+
+

Development documentation

+

+The following pages are written for developers only.
+Users of the CryptoBox should read CryptoBoxUser instead. +

+

Source

+

+You may browse the source code. +

+

Contact

+

+We are waiting for your emails to cryptobox[at]systemausfall.org. +

+

Bug reports

+

+Please use our issue tracker, if you discover problems: https://systemausfall.org/trac/cryptobox/newticket +

+
+
+ + + +
+ + + + +
+
+ + + + diff --git a/luks/cbox-tree.d/_offline/doc/en/CryptoBoxDevBackground.html b/luks/cbox-tree.d/_offline/doc/en/CryptoBoxDevBackground.html new file mode 100644 index 0000000..77c961e --- /dev/null +++ b/luks/cbox-tree.d/_offline/doc/en/CryptoBoxDevBackground.html @@ -0,0 +1,104 @@ + + + + + CryptoBox + + + + + + + + +
+ + +
+ + +
+ + + + + +
+

+

+

Table of Contents

+
    +
  1. dfsbuild
  2. +
  3. the kernel
  4. +
  5. qemu
  6. +
  7. alternative LiveCDs
  8. +
  9. Comments
  10. +
+
+ +

+

+Navigation: ( CryptoBoxDev) + +

+
+

Details of the CryptoBox

+

dfsbuild

+

+The base system of the CryptoBox Live-CD is created by dfsbuild. +

+

+It is recommended to use some kind of caching tool for the retrieval of the debian packages (e.g.: apt-cacher, apt-proxy or approx). This saves a lot of bandwidth and time. +

+

+The documentation for dfsbuild is sparse. But it is quite unlikely, that you will get in direct contact with it, as it is wrapped by cbox-build. However the following links may help you for specific problems: +

+

the kernel

+

+The linux kernel for the CryptoBox is compiled statically. If you want to change it, you could follow this steps: +

+
  1. get the sources: apt-get install kernel-tree-2.6.11 (or the version of your choice) +
  2. copy the exisiting config file kernel/config-2.6.11 as .config into your kernel source directory +
  3. build the debian kernel package make-kpkg --revision=1.dfs --rootcmd=fakeroot kernel_image +
  4. change the kernel in the unpackdebs setting in dfs-cbox.conf (see CryptoBoxDevCustomBuild for details) +

qemu

+

+Qemu is a portable system emulator. It is a convenient tool to ease the development workflow, as you do not need to burn LiveCDs for testing. +

+

alternative LiveCDs

+

+We tried some other LiveCDs before we decided to use dfsbuild. The following pages describe their advantages and disadvantages as the base system for the CryptoBox: +

+
+

Comments

+

+ +

+
+
+ + + + +
+
+ + + + diff --git a/luks/cbox-tree.d/_offline/doc/en/CryptoBoxDevCustomBuild.html b/luks/cbox-tree.d/_offline/doc/en/CryptoBoxDevCustomBuild.html new file mode 100644 index 0000000..61aa60b --- /dev/null +++ b/luks/cbox-tree.d/_offline/doc/en/CryptoBoxDevCustomBuild.html @@ -0,0 +1,128 @@ + + + + + CryptoBox + + + + + + + + +
+ + +
+ + +
+ + + + + +
+

+

+ +

+

+Navigation: ( CryptoBoxDev, CryptoBoxDevBackground, CryptoBoxDevPreparation, CryptoBoxDevWorkFlow) + +

+
+

Custom builds of the CryptoBox

+

Overview

+

+The following sections are useful, if you want to change the default settings of your personal CryptoBox development environment. +

+

+You should have completed the steps described in CryptoBoxDevPreparation. +

+

Settings

+

dfsbuild settings

+

+All settings for dfsbuild can be found in etc-defaults.d/dfs-cbox.conf. +

+

+If you want to change any of them, you should do the following: +

+
  1. copy etc-defaults.d/dfs-cbox.conf file to etc-local.d/ +
  2. change etc-local.d/dfs-cbox.conf according to your needs +

+This allows you to use your own (personal) settings, without interfering with files under version control. +

+

CryptoBox development configuration

+

+Some settings regarding the building, configuring and validating of the CryptoBox can be found in etc-defaults.d/cbox-dev.conf. +

+

+If you want to change any of them, you should do the following: +

+
  1. copy etc-defaults.d/cbox-dev.conf file to etc-local.d/ +
  2. change etc-local.d/cbox-dev.conf according to your needs +

SSH connection

+

+The file ssh_config is used to establish a connection to a running CryptoBox system. +

+

+It can be necessary to change these settings, if: +

+
  • you do not want to use the default IP for the CryptoBox +
  • or the CryptoBox is not within your local network. +

+If you want to change some settings, you should do the following: +

+
  1. copy etc-defaults.d/ssh_config file to etc-local.d/ +
  2. change etc-local.d/ssh_config according to your needs +

qemu network configuration

+

+The file etc-defauolts.d/qemu-ifup is used for the CryptoBox emulation with qemu. See man qemu for details. +

+

+If you want to change some settings, you should do the following: +

+
  1. copy etc-defaults.d/qemu-ifup file to etc-local.d/ +
  2. change etc-local.d/qemu-ifup according to your needs +

+

Comments

+

+ +

+
+
+ + + + +
+
+ + + + diff --git a/luks/cbox-tree.d/_offline/doc/en/CryptoBoxDevCustomConfigure.html b/luks/cbox-tree.d/_offline/doc/en/CryptoBoxDevCustomConfigure.html new file mode 100644 index 0000000..b827885 --- /dev/null +++ b/luks/cbox-tree.d/_offline/doc/en/CryptoBoxDevCustomConfigure.html @@ -0,0 +1,103 @@ + + + + + CryptoBox + + + + + + + + +
+ + +
+ + +
+ + + + + +
+

+

+

Table of Contents

+
    +
  1. Overview
  2. +
  3. Locations
  4. +
  5. Examples
  6. +
  7. Comments
  8. +
+
+ +

+

+Navigation: ( CryptoBoxDev) + +

+
+

Custom configuration of the CryptoBox

+

Overview

+

+You may change nearly every aspect of the CryptoBox by using the custom configuration hook directory. +

+

+Any script inside of this directory will be executed after the default configuration procedure (see CryptoBoxDevWorkFlow). +

+

+The order of execution is defined by the names of the scripts (alphabetically). +

+

Locations

+

+Some example customization scripts can be found in configure-examples.d/. +

+

+You may put your scripts into configure-local.d/. They will be sourced by cbox-build.sh. +

+

Examples

+

+The examples in configure-examples.d/ can be copied to configure-local.d/ and adjusted to your needs. +

+ +
set_default_ipchange the default IP address of the CryptoBox +
set_default_languageset the default language +
set_default_timeoutset the default idle time for automatic unmounting +
set_hostnamechange the default hostname +
set_root_pwchange the password of root (only useful for a development CryptoBox) +
import_authorized_keysupload a ssh key for passwordless access to a development CryptoBox +
set_scan_deviceswhere to look for usable harddisks +
+
+

Comments

+

+ +

+
+
+ + + + +
+
+ + + + diff --git a/luks/cbox-tree.d/_offline/doc/en/CryptoBoxDevKnownProblems.html b/luks/cbox-tree.d/_offline/doc/en/CryptoBoxDevKnownProblems.html new file mode 100644 index 0000000..7dcd277 --- /dev/null +++ b/luks/cbox-tree.d/_offline/doc/en/CryptoBoxDevKnownProblems.html @@ -0,0 +1,82 @@ + + + + + CryptoBox + + + + + + + + +
+ + +
+ + +
+ + + + + +
+

+

+ +

+

+Navigation: ( CryptoBoxDev) + +

+
+

Known problems

+

qemu

+

interleaved files not (yet) supported

+

+You should update qemu to version 0.7 or higher. +

+

smbd: segfault

+

+This happens under certain circumstances. We do not know a solution for this problem. +

+
+

Comments

+

+ +

+
+
+ + + + +
+
+ + + + diff --git a/luks/cbox-tree.d/_offline/doc/en/CryptoBoxDevPreparation.html b/luks/cbox-tree.d/_offline/doc/en/CryptoBoxDevPreparation.html new file mode 100644 index 0000000..2adfe65 --- /dev/null +++ b/luks/cbox-tree.d/_offline/doc/en/CryptoBoxDevPreparation.html @@ -0,0 +1,120 @@ + + + + + CryptoBox + + + + + + + + +
+ + +
+ + +
+ + + + + +
+

+

+ +

+

+Navigation: ( CryptoBoxDev, CryptoBoxDevCustomBuild, CryptoBoxDevWorkFlow) + +

+
+

Preparations for developers

+

Software requirements

+

Packages

+

+We use Debian as our development environment. This was a natural choice, as the CryptoBox-LiveCD is also based on Debian. Other distributions should work too, of course - your mileage may vary. +

+

+required: +

+

+recommended: +

+

Kernel

+

+If you want to use qemu to test your CryptoBox in a virtual environment, then you will need the tun/tap kernel feature. +

+
CONFIG_TUN=m
+

Get the source

+

+Download the latest release from our subversion-Repository: +

+
svn checkout https://svn.systemausfall.org/svn/cryptobox/trunk
+

First build

+

+run scripts/cbox-build.sh release as root - hopefully, there should be no errors :) +

+

+Hint: This step will fail, if you did not install apt-cacher. See CryptoBoxDevCustomBuild for details on how to change the build-configuration settings (in this case: mirror in dfs-cbox.conf). +

+

Finished

+

+Now you can start to pariticipate in the development of the CryptoBox or simply customize your own CryptoBox-LiveCD. +

+

+See CryptoBoxDevWorkFlow for details of how to use the developer's tools of the CryptoBox. +

+

+CryptoBoxDevCustomBuild shows some examples for local customizations of the CryptoBox. +

+
+

Comments

+

+ +

+
+
+ + + + +
+
+ + + + diff --git a/luks/cbox-tree.d/_offline/doc/en/CryptoBoxDevValidation.html b/luks/cbox-tree.d/_offline/doc/en/CryptoBoxDevValidation.html new file mode 100644 index 0000000..cf6a290 --- /dev/null +++ b/luks/cbox-tree.d/_offline/doc/en/CryptoBoxDevValidation.html @@ -0,0 +1,121 @@ + + + + + CryptoBox + + + + + + + + +
+ + +
+ + +
+ + + + + +
+

+

+

Table of Contents

+
    +
  1. Overview
  2. +
  3. Validate
  4. +
  5. How to create a test
  6. +
  7. Comments
  8. +
+
+ +

+

+Navigation: ( CryptoBoxDev) + +

+
+

Validation of the CryptoBox

+

Overview

+

+The validation feature helps you to check the programming logic of the CryptoBox. A lot of test cases are defined to verify as many functions of the CryptoBox as possible. +

+

+The requests are processed with curl. +

+

+The received web page is saved to allow a later design review or css debugging. +

+

+The current state of the CryptoBox is represented by ten single values (e.g.: box is configured, IP of the box, current language setting, ...), which are invisibly a part of each html page (as comments). The returned status of every request is compared to the predicted value of the test case. +

+

+Similar test cases are pooled into test groups (e.g.: initialization, configuration and mounting). +

+

Validate

+

+Run scripts/validate.sh] to conduct all tests of all groups. See scripts/validate.sh help for other actions. +

+

+The results will be saved in validation/report. +

+

+In addition to every single retrieved page, a html page called summary-?.html is created, which contains the state checks of all tests in a group. +

+

How to create a test

+

+All test cases can be found in validation/test-cases. +

+

+Every test consists of the following files: +

+ +
input.curlthe configuration file for the curl request +
outputthe predicted state of the CryptoBox after the call +
descriptiona short description of the test (will be used for the summary) +
delay[optional] time to wait after this test +
+

+Use the existing test cases as templates for new tests. +

+

+Read validation/test-cases/README for details. +

+

+Every logical path of the web interface CGI should be validated by a test case. +

+
+

Comments

+

+ +

+
+
+ + + + +
+
+ + + + diff --git a/luks/cbox-tree.d/_offline/doc/en/CryptoBoxDevWorkFlow.html b/luks/cbox-tree.d/_offline/doc/en/CryptoBoxDevWorkFlow.html new file mode 100644 index 0000000..ad36d34 --- /dev/null +++ b/luks/cbox-tree.d/_offline/doc/en/CryptoBoxDevWorkFlow.html @@ -0,0 +1,194 @@ + + + + + CryptoBox + + + + + + + + +
+ + +
+ + +
+ + + + + +
+

+

+ +

+

+Navigation: ( CryptoBoxDev, CryptoBoxDevCustomConfigure, CryptoBoxDevPreparation) + +

+
+

Development workflow

+

Preparations

+

+You should have completed the steps described in CryptoBoxDevPreparation. +

+

Create a CryptoBox-LiveCD

+

+The following steps can be executed in the order of their appearance. +

+

+Usually there is no need to repeat the whole process, after you changed some parts of the CryptoBox. Especially the first step (building of the base system with dfsbuild) may usually be skipped. +

+

+Every step of the building process must be executed as root. +

+

Build the base system

+

+Run scripts/cbox-build.sh dfsbuild to create the base system for the LiveCD. +

+

+The result can be found in _builddir/cd1/image. +

+

+If you do not want to use the apt-cacher to save bandwidth and time, then you should modify the mirror-setting in dfs-cbox.conf (see CryptoBoxDevCustomBuild for details). +

+

Configure the base image

+

+Run scripts/cbox-build.sh config to copy the CryptoBox-specific files to the base image. +

+

+TODO: link to cbox-build.sh-manpage +

+

Remove development features

+

+The original base system, that was created by dfsbuild contains a lot packages and some scripts, that are only useful during development. You should remove them, as they cause severe security implications. +

+

+To reduce the CryptoBox-LiveCD to the usable minimum for operational use, you should run scripts/cbox-build.sh harden. +

+

Create an iso image

+

+To burn a CryptoBox-LiveCD, you need an bootable iso9660-image. +

+

+Create the iso image with scripts/cbox-build.sh iso. The resulting file can be found at _builddir/cd1/cryptobox.iso. +

+

Burn the CD

+

+Do it manually: +

+
cdrecord -v dev=0,0,0 _builddir/cryptobox.iso
+

+(change the dev setting according to your setup). +

+

+Let the script do it for you: scripts/cbox-build.sh burn (maybe you have to change the CDWRITER setting in cbox-dev.conf - see CryptoBoxDevCustomBuild). +

+

+Of course, it is not wise to use CD-R media. CD-RW consume less resources. +

+

Test the CryptoBox-LiveCD

+

+This section is only useful for developers, who want to improve or change the CryptoBox system. +

+

Chroot: quick & dirty tests

+

+If you modified the perl- or shell-scripts of the CryptoBox, then you can check for syntax errors by running them in a chroot environment. Be careful: you have access to all ressources of your computer, while you are working within a chroot environment - so you can easily repartition your real disk ... +

+

+To start a chroot environment, you can execute scripts/cbox-dev.sh chroot. +

+

+For more intensive tests, you may use qemu (see below) or burn real LiveCDs - of course this would take much more time. +

+

Qemu: nearly complete emulation

+

+The processor emulator qemu allows you test the CryptoBox in a virtual environment, that is completely separated from your real computer's resources. It is the tool of choice, if you do nat have a real computer around for testing. +

+

+Beware - there are some problems, when using qemu: +

+
  • smbd does not start (segfault) +
  • ??? +

+To start a qemu emulation of the iso image, you may type: +

+
scripts/cbox-dev.sh qemu
+

Debugging and merging

+

+This section is only useful for developers, who want to develop on a running CryptoBox system (emulated or real). +

+

+You may access the CryptoBox directly or you can use ssh to open a remote session: +

+
./cbox-dev.sh ssh
+

Development on a running system

+

+When you run an emulation or test a real LiveCD, you may encounter problems and bugs. To test your fixes for these problems, it is convenient, to change the running test system. Afterwards you can merge these changes to your local development copy. +

+

+Type scripts/cbox-dev.sh diff to see the changes, you made on the running CryptoBox system. +

+

+Type scripts/cbox-dev.sh merge to merge these changes to your local working copy. +

+

Uploading a new release

+

+Alternatively you may also upload a new version of your local working copy to the running CryptoBox system. +

+

+Type scripts/cbox-dev.sh upload - beware: all recent changes you made to the running CryptoBox system, are lost. +

+
+

Comments

+

+ +

+
+
+ + + + +
+
+ + + + diff --git a/luks/cbox-tree.d/_offline/doc/en/CryptoBoxUser.html b/luks/cbox-tree.d/_offline/doc/en/CryptoBoxUser.html new file mode 100644 index 0000000..3f4c0be --- /dev/null +++ b/luks/cbox-tree.d/_offline/doc/en/CryptoBoxUser.html @@ -0,0 +1,103 @@ + + + + + CryptoBox + + + + + + + + +
+ + +
+ + +
+ + + + + +
+

+

+ +

+

+Navigation: ( CryptoBox/en, CryptoBoxUser) + +

+
+

User Documentation

+

+The following pages describe the easy use of the CryptoBox. +

+

+The online version of this manual is a wiki, which means you can edit the pages. So if you have a question or you perceive a description as unclear, please post it on the bottom of the relevant page. The developers will answer your questions and update the manual as fast as possible. This way you can contribute in making the CryptoBox a better experience for everyone! +

+
  1. CryptoBoxUserGettingStarted -- first steps to get the Cryptobox up and running +
  2. CryptoBoxUserConfiguration -- configure the details of your new encrypted fileserver +
  3. CryptoBoxUserDailyUse -- daily use of your CryptoBox +

+The online version of this manual can be found at https://systemausfall.org/trac/cryptobox/wiki/CryptoBoxUser/en. +

+
+

Comments

+

+ +

+
+
+ + + + +
+
+ + + + diff --git a/luks/cbox-tree.d/_offline/doc/en/CryptoBoxUserConfiguration.html b/luks/cbox-tree.d/_offline/doc/en/CryptoBoxUserConfiguration.html new file mode 100644 index 0000000..422b77f --- /dev/null +++ b/luks/cbox-tree.d/_offline/doc/en/CryptoBoxUserConfiguration.html @@ -0,0 +1,146 @@ + + + + + CryptoBox + + + + + + + + +
+ + +
+ + +
+ + + + + +
+

+

+ +

+

+Navigation: ( CryptoBoxUser/en, CryptoBoxUserConfiguration) + +

+
+

Configuration of your CryptoBox

+

Overview

+

+All parts of administration of the CryptoBox are done through a comfortable web interface. If this is the first time you use the CryptoBox, just follow the steps below. +

+

+You can safely ignore the Foreword if you are in a hurry. +

+

+Initialization describes the process of integrating a new harddisk. You usually have to perform this steps if you start with a new CryptoBox or after replacing the harddisk. +

+

+In the Configuration section, you can configure the CryptoBox according to your personal needs, e.g. change your desired language for the web interface or change the IP address of the CryptoBox. +

+

+Do not forget to read the Hints / Caveats section too. +

+

Foreword

+

+Okay, you finished the CryptoBoxUserGettingStarted and are now sitting in front of a computer that is connected via network with your CryptoBox. You point a browser to "https://192.168.0.23" and the CryptoBox interface appears. +

+

+Before you can save data on your CryptoBox, its harddisk has to be formatted with a cryptographic filesystem. Sounds complicated but don't be scared - it's really a "one click" thing. :) +

+

Initialization

+

+Click on Initialize CryptoBox in the title bar. +

+

+Now you are promted to enter two passwords twice (because we want to train your typing skills ;). +

+
  • The first password is the administration password. +
    • It is used to protect the configuration of the CryptoBox. +
    • This is necessary to make sure, that no one without your permission can destroy your data by re-initializing the CryptoBox. +
    • Chances are good, that you will only need it once. +
    • You may leave it empty, but this is not recommended. +
  • The crypto password is the more important password, protecting the data on your harddisk. Choose it wisely! +
    • You will need it, whenever you want to access your encrypted data. +
    • For a secure password consider a length of at least 15 characters including digits and special characters. The security of your encrypted data stands or falls with a good password. +
  • To avoid mistakes and to remind you on what you're going to do, you have to type the displayed red phrase into the last field. +
  • Now you can complete the initialization by clicking on the Initialize !CryptoBox button at the bottom of the form. +

+That's all. Wasn't it a real "one click" thing? Cryptography has never been easier to use. ;) +

+

+The initialization process takes place in the background and will be completed after a few minutes, depending on your harddisk's size. +

+

Configuration

+

+While the initialization is usually done only once, the configuration can be changed at any time you want. You can reach it by clicking at Configuration in the menu bar of the website. Now you see a form with four fields: +

+
  • If you defined a administration passwort during Initialization, you have to enter it first. Otherwise this field does not appear. +
  • If the default network address (IP) doesn't fit into your network infrastructure, you can change it in the second field. +
  • The timeout defines the amount of time (in minutes) after that the CryptoBox deactivates the access to the encrypted data. If you e.g. copy a file on the box, it starts counting at zero, so down-/uploads won't be interrupted. +
  • It's good choice to enter a small number (few minutes). +
  • A timeout of 0 turns off the automatic deactivation - this is not recommended. +
  • At language preferences you can select the default language for the CryptoBox interface. +

+Complete your changes by clicking on Save configuration. +

+

+That's all - your CryptoBox is now ready for daily use! +

+

Hints / Caveats

+
  • All data on the CryptoBox harddisk will be erased during Initialization. +
  • All passwords have to be typed twice to reduce the chance of a typo. +
  • The optional adminstration password is necessary for configuration only. +
  • The crypto password protects your beloved data. +
  • If the cryptobox is not reachable by browsing to 192.168.0.23, you may have to adjust the network settings of your computer for initialization of the CryptoBox. +

+back to CryptoBoxUser +

+
+

Comments

+

+ +

+
+
+ + + + +
+
+ + + + diff --git a/luks/cbox-tree.d/_offline/doc/en/CryptoBoxUserDailyUse.html b/luks/cbox-tree.d/_offline/doc/en/CryptoBoxUserDailyUse.html new file mode 100644 index 0000000..5422ac0 --- /dev/null +++ b/luks/cbox-tree.d/_offline/doc/en/CryptoBoxUserDailyUse.html @@ -0,0 +1,157 @@ + + + + + CryptoBox + + + + + + + + +
+ + +
+ + +
+ + + + + +
+

+

+ +

+

+Navigation: ( CryptoBoxUser/en, CryptoBoxUserConfiguration/en, CryptoBoxUserDailyUse) + +

+
+

Daily use of the CryptoBox

+

Activate your encrypted filesystem

+

+You can activate your encrypted filesystem by doing following these steps: +

+
  • Point your web browser at the address of your CryptoBox. The default is https://192.168.0.23. +
  • Click on Activation of encrypted data. A new page asking for your crypto password appears. +
  • Enter your crypto password and click on the button below labeled activate encrypted filesystem. +

+Now the filesystem is accessible. To use it, search for a computer in your network neighborhood. When asked for the name, enter the above IP address (default: 192.168.0.23). Now you can use it like any other network resource. +

+

Use your encrypted data

+

Linux - command line

+

+To use the encrypted data partition with regular user rights add the line below to your /etc/fstab: +

+
//192.168.0.23/public   /mnt/    smbfs   defaults,noexec,noauto,user,guest      0       0
+

+Now you can mount the encrypted data partition to /mnt: +

+
mount /mnt
+

+resp. unmount: +

+
smbumount /mnt
+

Windows

+

+Run the the Windows Explorer and choose Map network drive in the Extras menu: +

+
  • select a drive of your choice +
  • enter \\192.168.0.23\public (default setting) as target +

+Now you can use your encrypted data like any other network resource. +

+

Deactivate your encrypted filesystem

+

+You can deactivate the encrypted filesystem by clicking at Deactivation of encrypted data in the web interface of your CryptoBox. +

+

+Your data is now protected again. +

+

Shut down your CryptoBox

+

+Click at the Shutdown link in the menu of the web interface. There you can choose poweroff or reboot. The shutdown takes some seconds. +

+

+If the hardware of your CryptoBox is quite recent, it will power-off automatically. Otherwise you have to do it manually. +

+

In case of emergency

+

+If you have to protect the drive really fast, just power-off the CryptoBox machine instantly by pulling the plug or pushing the power button. This is not very clean and can (in very rare circumstances) corrupt open files, but it is the fasted method to secure your data. +

+

+back to CryptoBoxUser +

+
+

Questions and Answers

+

Windows: network drive cannot be mapped

+

+This error message may appear, if you did not login during the booting of you windows machine (or you closed the login dialog by pressing ESC). +

+

+Solution: Choose Logout in the Start menu and login again. +

+

Linux: only root can unmount //192.168.0.23/public

+

+You can't unmount the partition with umount. +

+

+Solution: Use smbumount instead: +

+
smbumount /mnt
+

Linux: Operation not permitted / smbmnt failed: 1

+

+The attempt to mount the partition as a regular user ends up with: +

+
cannot mount on /mnt/: Operation not permitted
+smbmnt failed: 1
+

+Solution: Set the directory's owner to the same user that mounts the share (e.g. phil): +

+
chown phil. /mnt
+

+

Comments

+

+ +

+
+
+ + + + +
+
+ + + + diff --git a/luks/cbox-tree.d/_offline/doc/en/CryptoBoxUserGettingStarted.html b/luks/cbox-tree.d/_offline/doc/en/CryptoBoxUserGettingStarted.html new file mode 100644 index 0000000..c36e496 --- /dev/null +++ b/luks/cbox-tree.d/_offline/doc/en/CryptoBoxUserGettingStarted.html @@ -0,0 +1,107 @@ + + + + + CryptoBox + + + + + + + + +
+ + +
+ + +
+ + + + + +
+

+

+

Table of Contents

+
    +
  1. First Steps
  2. +
  3. Hints / Caveats
  4. +
  5. Comments
  6. +
+
+ +

+

+Navigation: ( CryptoBoxUser/en, CryptoBoxUserConfiguration/en, CryptoBoxUserGettingStarted) + +

+
+

Getting started

+

First Steps

+

+Getting the CryptoBox started doesn't take much: +

+
  1. You need an old Computer (at least 100MHz, 48MB RAM) (rule of thumb: bought at least after 1996). This PC needs a network card, a CD-ROM drive and a huge harddisk. +
    • Well the disk doesn't need to be huge, it should just suit your filestorage needs ;) +
    • You don't need a monitor or a keyboard to use your CryptoBox (with one exception, see below). +
    • Of course, you may use a faster computer, but they usually consume much more energy and do not provide signifcant advantages. +
  2. Then download the latest version of the CryptoBox as an iso-image and burn this image onto a CD. +
  3. Configure your PC, so it can boot from the CD. Therefore you have to enter the BIOS and configure the CD-ROM as boot device. +
  4. Insert the shiny new CryptoBox CD you've just burned and start the computer. +

+ +If it now boots from the CD, you accomplished all of the requirements. +

+

+Now you can just go to your current desktop computer and point your browser to https://192.168.0.23 where the CryptoBox interface should be displayed. Easy - isn't it? +

+

+For further steps go to CryptoBoxUserConfiguration. +

+

Hints / Caveats

+

+ +

+
  • Maybe you need to change the network address (IP) of your PC to configure the CryptoBox for the first time. Ask someone for help, if you don't know how and why ... +
  • If you're going to buy a new harddisk keep in mind that very old hardware can't handle current disk sizes! +
  • Some old PCs are not able to boot from CD. +
  • If you don't know what a BIOS is, better ask someone, before you try to change something. ;) +
  • Don't forget to connect your PC to your local area network! +
  • To configure the BIOS, you need a keyboard and a monitor. But this has to be done only once. +

+back to CryptoBoxUser +

+
+

Comments

+

+ +

+
+
+ + + + +
+
+ + + + diff --git a/luks/cbox-tree.d/_offline/doc/en/doc_footer.inc b/luks/cbox-tree.d/_offline/doc/en/doc_footer.inc new file mode 100644 index 0000000..3e2a7f1 --- /dev/null +++ b/luks/cbox-tree.d/_offline/doc/en/doc_footer.inc @@ -0,0 +1,6 @@ +
+ + + diff --git a/luks/cbox-tree.d/_offline/doc/en/doc_header.inc b/luks/cbox-tree.d/_offline/doc/en/doc_header.inc new file mode 100644 index 0000000..086ed0b --- /dev/null +++ b/luks/cbox-tree.d/_offline/doc/en/doc_header.inc @@ -0,0 +1,13 @@ + + +
+ + +
diff --git a/luks/cbox-tree.d/_offline/shellopn.exe b/luks/cbox-tree.d/_offline/shellopn.exe new file mode 100644 index 0000000000000000000000000000000000000000..e7d91bf6107f2d19435a0ebefab3e190f32a71ce GIT binary patch literal 23552 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�W0i?Lkq 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 for +# sending the correct chat script for the passwd program in Debian Potato). + passwd program = /usr/bin/passwd %u + passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n . + +# This boolean controls whether PAM will be used for password changes +# when requested by an SMB client instead of the program listed in +# 'passwd program'. The default is 'no'. +; pam password change = no + + +########## Printing ########## + +# If you want to automatically load your printer list rather +# than setting them up individually then you'll need this +; load printers = yes + +# lpr(ng) printing. You may wish to override the location of the +# printcap file +; printing = bsd +; printcap name = /etc/printcap + +# CUPS printing. See also the cupsaddsmb(8) manpage in the +# cupsys-client package. +; printing = cups +; printcap name = cups + +# When using [print$], root is implicitly a 'printer admin', but you can +# also give this right to other users to add drivers and set printer +# properties +; printer admin = @ntadmin + + +######## File sharing ######## + +# Name mangling options + preserve case = yes + short preserve case = yes + + +############ Misc ############ + +# Using the following line enables you to customise your configuration +# on a per machine basis. The %m gets replaced with the netbios name +# of the machine that is connecting +; include = /home/samba/etc/smb.conf.%m + +# Most people will find that this option gives better performance. +# See smb.conf(5) and /usr/share/doc/samba-doc/htmldocs/speed.html +# for details +# You may want to add the following on a Linux system: +# SO_RCVBUF=8192 SO_SNDBUF=8192 + socket options = TCP_NODELAY + +# The following parameter is useful only if you have the linpopup package +# installed. The samba maintainer and the linpopup maintainer are +# working to ease installation and configuration of linpopup and samba. +; message command = /bin/sh -c '/usr/bin/linpopup "%f" "%m" %s; rm %s' & + +# Domain Master specifies Samba to be the Domain Master Browser. If this +# machine will be configured as a BDC (a secondary logon server), you +# must set this to 'no'; otherwise, the default behavior is recommended. +domain master = no +local master = no +preferred master = no + +# Some defaults for winbind (make sure you're not using the ranges +# for something else.) +; idmap uid = 10000-20000 +; idmap gid = 10000-20000 +; template shell = /bin/bash + +#======================= Share Definitions ======================= + +;[homes] +; comment = Home Directories +; browseable = no + +[public] + comment = encrypted share + path = /mnt/crypto + public = yes + guest ok = yes + +# By default, the home directories are exported read-only. Change next +# parameter to 'yes' if you want to be able to write to them. + writable = yes + +# File creation mask is set to 0700 for security reasons. If you want to +# create files with group=rw permissions, set next parameter to 0775. + create mask = 0700 + +# Directory creation mask is set to 0700 for security reasons. If you want to +# create dirs. with group=rw permissions, set next parameter to 0775. + directory mask = 0700 + +# Un-comment the following and create the netlogon directory for Domain Logons +# (you need to configure Samba to act as a domain controller too.) +;[netlogon] +; comment = Network Logon Service +; path = /home/samba/netlogon +; guest ok = yes +; writable = no +; share modes = no + +;[printers] +; comment = All Printers +; browseable = no +; path = /tmp +; printable = yes +; public = no +; writable = no +; create mode = 0700 + +# Windows clients look for this share name as a source of downloadable +# printer drivers +#[print$] +# comment = Printer Drivers +# path = /var/lib/samba/printers +# browseable = yes +# read only = yes +# guest ok = no +# Uncomment to allow remote administration of Windows print drivers. +# Replace 'ntadmin' with the name of the group your admin users are +# members of. +; write list = root, @ntadmin + +# The next two parameters show how to auto-mount a CD-ROM when the +# cdrom share is accesed. For this to work /etc/fstab must contain +# an entry like this: +# +# /dev/scd0 /cdrom iso9660 defaults,noauto,ro,user 0 0 +# +# The CD-ROM gets unmounted automatically after the connection to the +# +# If you don't want to use auto-mounting/unmounting make sure the CD +# is mounted on /cdrom +# +; preexec = /bin/mount /cdrom +; postexec = /bin/umount /cdrom + diff --git a/luks/cbox-tree.d/mnt/crypto/info.txt b/luks/cbox-tree.d/mnt/crypto/info.txt new file mode 100644 index 0000000..b5fc21b --- /dev/null +++ b/luks/cbox-tree.d/mnt/crypto/info.txt @@ -0,0 +1 @@ +Hallo diff --git a/luks/cbox-tree.d/start.html b/luks/cbox-tree.d/start.html new file mode 100644 index 0000000..da53401 --- /dev/null +++ b/luks/cbox-tree.d/start.html @@ -0,0 +1,11 @@ + + + + + Die CryptoBox + + + Automatische Weiterleitung zur Dokumentation ... + + + diff --git a/luks/cbox-tree.d/usr/lib/cryptobox/cbox-manage.sh b/luks/cbox-tree.d/usr/lib/cryptobox/cbox-manage.sh new file mode 100755 index 0000000..80f765c --- /dev/null +++ b/luks/cbox-tree.d/usr/lib/cryptobox/cbox-manage.sh @@ -0,0 +1,523 @@ +#!/bin/sh +# $Id$ +# +# this script does EVERYTHING +# all other scripts are only frontends :) +# +# called by: +# - some rc-scripts +# - the web frontend cgi +# + +set -eu + +# parse config file +. /etc/cryptobox/cryptobox.conf + +## configuration +CONFIG_MARKER="$CONFIG_DIR/cryptobox.marker" +CERT_TEMP=/tmp/stunnel.pem + +##### + +function log_msg() +{ + # the log file is not writable during boot - try before writing ... + [ -w "$LOG_FILE" ] || return 0 + echo >>"$LOG_FILE" + echo "##### `date` #####" >>"$LOG_FILE" + echo "$1" >>"$LOG_FILE" +} + + +function error_msg() +# parameters: ExitCode ErrorMessage +{ + echo "[`date`] - $2" | tee -a "$LOG_FILE" >&2 + # print the execution stack - not usable with busybox + #caller | sed 's/^/\t/' >&2 + exit "$1" +} + + +function initial_checks() +# Parameter: device +{ + local device="$1" + [ ! -b "$device" ] && log_msg "blockdevice $device does not exist" && return 1 + [ ! -x "$SFDISK" ] && log_msg "$SFDISK not found" && return 1 + log_msg "inital checks successful" + return 0 +} + + +function create_partitions() +# Parameter: device +{ + local device="$1" + # first partition size is 1 sector, second goes til end + # sfdisk -n doesn't actually write (for testing purpose) + echo -e "0,1,L \n,,L\n" | $SFDISK "$device" +} + + +function config_set_value() +# parameters: SettingName SettingValue +{ + mount -o rw,remount "$CONFIG_DIR" + echo -n "$2" > "$CONFIG_DIR/$1" + mount -o ro,remount "$CONFIG_DIR" +} + + +function config_get_value() +# parameters: SettingName +{ + # use mounted config, if it exists - otherwise use defaults + local conf_dir + if is_config_mounted + then conf_dir=$CONFIG_DIR + else conf_dir=$CONFIG_DEFAULTS_DIR + fi + [ -z "$1" ] && error_msg 1 "empty setting name" + # check for existence - maybe use default values (for old releases without this setting) + if [ ! -e "$conf_dir/$1" ] + then case "$1" in + version ) + echo -n "0.2" + ;; + cipher ) + echo -n "aes" + ;; + hash ) + echo -n "sha512" + ;; + * ) + error_msg 2 "unknown configuration value ($1)" + # empty output + ;; + esac + else echo -n $(cat "$conf_dir/$1") + # this removes the trailing line break + fi + # always return without error + true +} + + +function create_config() +# Parameter: device +{ + local device="${1}1" + log_msg "Creating config filesystem ..." + # filter output through 'tr' to replace tabs + $MKFS_CONFIG "$device" | tr '\010' ' ' + # mount the config partition rw + log_msg "Mounting config partition ..." + mount "$device" "$CONFIG_DIR" + # create a marker to recognize a cryptobox partition + date -I >"$CONFIG_MARKER" + log_msg "Copying configuration defaults ..." + cp -a "$CONFIG_DEFAULTS_DIR/." "$CONFIG_DIR" + + log_msg "Copying temporary certificate file to config filesystem ..." + # beware: the temp file should always be there - even after reboot - see "mount_config" + cp -p "$CERT_TEMP" "$CERT_FILE" + + log_msg "Setting inital values ..." + # beware: config_set_value remounts the config partition read-only + config_set_value "device" "$1" + config_set_value "ip" "$(get_current_ip)" + + # reinitialise configuration + log_msg "Unmounting config partition ..." + umount "$CONFIG_DIR" + log_msg "Reload configuration ..." + mount_config +} + + +function get_current_ip() +# not necessarily the same as configured (necessary for validation) +{ + # filter the output of ifconfig and remove trailing line break + echo -n $(ifconfig $NET_IFACE | grep "inet" | cut -d ":" -f2 | cut -d " " -f1) +} + + +function create_crypto() +# Parameter: device +{ + local device="$1" + # passphrase may be passed via command line + log_msg "Creating crypto partition with -h $(config_get_value hash) -c $(config_get_value cipher) on ${device}2" + $CRYPTSETUP -h "$(config_get_value hash)" -c "$(config_get_value cipher)" create "`basename $CRYPTMAPPER_DEV`" "${device}2" +} + + +function mkfs_crypto() +# split from create_crypto to allow background execution via web interface +{ + local device=$(find_harddisk) + + # flood the crypto partition with noise + # writing to the real partition is faster + # TODO: this takes _much_ too long - maybe add a "secure wipe" switch to the interface? + #dd if=/dev/urandom of="${device}2" bs=512 + + # filter output through 'tr' to replace tabs + $MKFS_DATA "$CRYPTMAPPER_DEV" | tr '\0101' ' ' +} + + +function config_mount_test() +# Parameter: device +{ + local device="${1}" + local STATUS=0 + mount "${device}1" "$CONFIG_DIR" &>/dev/null || true + is_config_mounted && STATUS=1 + umount "$CONFIG_DIR" &>/dev/null || true + # return code is the result of this expression + [ 1 -eq "$STATUS" ] && return 0 + return 1 +} + + +function is_config_mounted() +{ + mount | grep -q " ${CONFIG_DIR} " && [ -f "$CONFIG_MARKER" ] +} + + +function is_crypto_mounted() +{ + mount | grep -q " ${CRYPTO_DIR} " +} + + +function is_init_running() +{ + check_at_command_queue " box-init-bg" +} + + +# check if a specified command is in an at-queue +# Parameter: a regular expression of the commandline +# Return: the command is part of an at-queue (0) or not (1) +function check_at_command_queue() +{ + # 1) get the available job numbers + # 2) remove empty lines (especially the last one) + # 3) check every associated command for the regexp + at -l | cut -f 1 | while read jobnum + do at -c $jobnum | sed '/^$/d' | tail -1 + done | grep -q "$1" +} + + +function find_harddisk() +# look for the harddisk to be partitioned +{ + local dev=$( + if is_config_mounted + then config_get_value "device" + else for a in $SCAN_DEVICES + do grep -q " `basename $a`$" /proc/partitions && echo "$a" && break + done + fi ) + if [ -z "$dev" ] ; then + log_msg "no valid harddisk for initialisation found!" + cat /proc/partitions >>"$LOG_FILE" + # do not return with an error, to avoid a failing of the script ('break on error') + # the caller of this function should handle an empty return string + fi + echo -n "$dev" +} + +function get_available_disks() +# looks which allowed disks are at the moment connected with the cbox +{ + local dev=$( + for a in $SCAN_DEVICES + do grep -q " `basename $a`$" /proc/partitions && echo "$a" + done ) + echo -n "$dev" +} + + +function mount_config() +{ + is_config_mounted && error_msg 3 "configuration directory ($CONFIG_DIR) is already mounted!" + local device=$( + for a in $SCAN_DEVICES + do log_msg "Trying to load configuration from $a ..." + config_mount_test "$a" && echo "$a" && break + done ) + if [ -n "$device" ] && mount "${device}1" "$CONFIG_DIR" + then log_msg "configuraton found on $device" + config_set_value "device" "$device" + # copy certificate to /tmp in case of re-initialization + # /tmp should be writable, so tmpfs has to be mounted before (/etc/rcS.d) + cp "$CERT_FILE" "$CERT_TEMP" + return 0 + else log_msg "failed to locate harddisk" + return 1 + fi +} + + +function mount_crypto() +{ + is_crypto_mounted && echo "The cryptofilesystem is already active!" && return + local device=`find_harddisk` + [ -z "$device" ] && error_msg 4 'No valid harddisk found!' && return 1 + # passphrase is read from stdin + log_msg "Mounting crypto partition with -h $(config_get_value hash) -c $(config_get_value cipher) on ${device}2" + $CRYPTSETUP -h "$(config_get_value hash)" -c "$(config_get_value cipher)" create "`basename $CRYPTMAPPER_DEV`" "${device}2" + if mount "$CRYPTMAPPER_DEV" "$CRYPTO_DIR" + then log_msg "Mount succeded - now starting samba ..." + /etc/init.d/samba start + else log_msg "Mount failed - removing dev-mapper ..." + dmsetup remove $(basename $CRYPTMAPPER_DEV) + return 1 + fi +} + + +function umount_crypto() +{ + # do not break on error + set +e + if ps -e | grep -q " [sn]mbd$" + then log_msg "Stopping samba ..." + /etc/init.d/samba stop + ps -e | grep -q " smbd$" && killall smbd + ps -e | grep -q " nmbd$" && killall nmbd + ps -e | grep -q " smbd$" && killall -9 smbd + ps -e | grep -q " nmbd$" && killall -9 nmbd + fi + if mount | grep -q " $CRYPTO_DIR " + then log_msg "Unmounting crypto partition ..." + umount "$CRYPTO_DIR" + fi + if [ -e "$CRYPTMAPPER_DEV" ] + then log_msg "Removing dev-mapper ..." + $CRYPTSETUP remove $(basename $CRYPTMAPPER_DEV) + fi + set -e +} + + +function box_purge() +# removing just the first bytes from the harddisk should be enough +{ + local device=$(find_harddisk) + log_msg "Purging $device ..." + dd if=/dev/zero of=$device bs=1M count=1 + log_msg " " +} + + +function init_cryptobox_part1() +# this is only the first part of initialisation that takes no time - good for a smooth web interface +{ + local device=$(find_harddisk) + [ -z "$device" ] && log_msg 'No valid harddisk found!' && return 1 + ( + log_msg "Initializing crypto partition on $device ..." + umount_crypto || true + mount | grep -q " $CONFIG_DIR " && umount "$CONFIG_DIR" || true + initial_checks "$device" || { log_msg "initial checks failed" && return 1 ;} + create_partitions "$device" + create_config "$device" + ) >>"$LOG_FILE" 2>&1 + # the output of create_crypto may NOT be redirected - this would prevent cryptsetup from + # reading the passphrase from stdin + log_msg "Creating the crypto partition ..." + create_crypto "$device" +} + + +function init_cryptobox_part2() +# some things to be done in the background +# these are the final steps of initialisation +# the uid must be changed initially, therfore it needs to be mounted +{ + mkfs_crypto + mount "$CRYPTMAPPER_DEV" "$CRYPTO_DIR" + chown $SAMBA_USER "$CRYPTO_DIR" + umount_crypto +} + + +function init_cryptobox_complete() +{ + init_cryptobox_part1 + init_cryptobox_part2 +} + +### main ### + +# set PATH because thttpd removes /sbin and /usr/sbin for cgis +export PATH=/usr/sbin:/usr/bin:/sbin:/bin + + +ACTION=help +[ $# -gt 0 ] && ACTION="$1" + +case "$ACTION" in + config-up ) + if mount_config + then echo "Cryptobox configuration successfully loaded" + else error_msg 3 "Could not find a configuration partition!" + fi + ;; + config-down ) + umount "$CONFIG_DIR" || error_msg 4 "Could not unmount configuration partition" + ;; + network-up ) + kudzu -s -q --class network + conf_ip=$(config_get_value "ip") + ifconfig $NET_IFACE "$conf_ip" + log_msg "Configured $NET_IFACE for $conf_ip ..." + echo "Configured network interface for $NET_IFACE: $conf_ip" + log_msg "Starting the firewall ..." + "$FIREWALL_SCRIPT" start + # start stunnel + if [ -f "$CERT_FILE" ] + then USE_CERT=$CERT_FILE + else USE_CERT=$CERT_TEMP + $MAKE_CERT_SCRIPT "$CERT_TEMP" >>"$LOG_FILE" 2>&1 + fi + log_msg "Starting stunnel ..." + stunnel -p "$USE_CERT" -r localhost:80 -d 443 \ + || echo "$USE_CERT not found - not starting stunnel" + # this ping allows other hosts to get the IP of + # the box, in case of misconfiguration + ping -b -c 1 $(ifconfig $NET_IFACE | grep Bcast | cut -d ":" -f 3 | cut -d " " -f 1) &>/dev/null + ;; + network-down ) + log_msg "Stopping the firewall ..." + "$FIREWALL_SCRIPT" stop + log_msg "Stopping stunnel ..." + killall stunnel + log_msg "Shutting the network interface down ..." + ifconfig $NET_IFACE down + ;; + services-up ) + # is something special necessary? + ;; + services-down ) + /etc/init.d/samba stop + /etc/init.d/thttpd stop + ;; + crypto-up ) + mount_crypto + ;; + crypto-down ) + umount_crypto + ;; + box-init ) + # do complete initialization + "$0" box-init-fg + # the background part will recall itself as an at-command + "$0" box-init-bg + ;; + box-init-fg ) + # only partitioning and configuration + # this is nice for the web interface, as it is fast + # output redirection does not work, as it prevents cryptsetup from asking + # for a password + init_cryptobox_part1 + ;; + box-init-bg ) + # do it in the background to provide a smoother web interface + # messages and errors get written to $LOG_FILE + + # make sure, that this is always called via 'at': + if check_at_command_queue " box-init-bg" + then init_cryptobox_part2 >"$LOG_FILE" 2>&1 + else echo -n "'$0' box-init-bg" | at now + fi + ;; + is_crypto_mounted ) + is_crypto_mounted + ;; + is_config_mounted ) + is_config_mounted + ;; + is_init_running ) + is_init_running + ;; + is_harddisk_available ) + [ -z "$(find_harddisk)" ] && exit 1 + exit 0 + ;; + update_ip_address ) + # reconfigure the network interface to a new IP address + # wait for 5 seconds to finish present http requests + echo -n "sleep 5; ifconfig $NET_IFACE `config_get_value ip`" | at now + ;; + get_available_disks ) + get_available_disks + ;; + get_current_ip ) + get_current_ip + ;; + set_config ) + [ $# -ne 3 ] && error_msg 7 "'set_config' requires two parameters" + config_set_value "$2" "$3" + ;; + get_config ) + [ $# -ne 2 ] && error_msg 6 "'get_config' requires exactly one parameter" + config_get_value "$2" + ;; + diskinfo ) + $SFDISK -L -q -l `find_harddisk` + ;; + box-purge ) + log_msg "Cleaning the CryptoBox ..." + $0 crypto-down + $0 config-down + box_purge + ;; + poweroff ) + is_crypto_mounted && umount_crypto + log_msg "Turning off the CryptoBox ..." + echo "poweroff" | at now + ;; + reboot ) + is_crypto_mounted && umount_crypto + log_msg "Rebooting the CryptoBox ..." + echo "reboot" | at now + ;; + * ) + echo "Syntax: `basename $0` ACTION [PARAMS]" + echo " config-up - scan for configuration partition and mount it" + echo " config-down - unmount configuration partition" + echo " network-up - enable network interface" + echo " network-down - disable network interface" + echo " services-up - run some cryptobox specific daemons" + echo " services-down - stop some cryptobox specific daemons" + echo " crypto-up - mount crypto partition and start samba" + echo " crypto-down - unmount crypto partition and stop samba" + echo " box-init - initialize cryptobox (ALL data is LOST)" + echo " box-init-fg - the first part of initialization" + echo " box-init-bg - the last part of initialization (background)" + echo " is_crypto_mounted - check, if crypto partition is mounted" + echo " is_config_mounted - check, if configuration partition is mounted" + echo " is_init_running - check, if initialization is ongoing" + echo " is_harddisk_available - check, if there is a usable harddisk" + echo " get_available_disks - shows all connected and allowed disks" + echo " get_current_ip - get the current IP of the network interface" + echo " update_ip_address - update the network interface after reconfiguration" + echo " set_config NAME VALUE - change a configuration setting" + echo " get_config NAME - retrieve a configuration setting" + echo " diskinfo - show the partition table of the harddisk" + echo " box-purge - destroy partitiontable of the harddisk (delete everything)" + echo " poweroff - shutdown the cryptobox" + echo " reboot - reboot the cryptobox" + echo + ;; + esac diff --git a/luks/cbox-tree.d/usr/lib/cryptobox/check_smb_idle.sh b/luks/cbox-tree.d/usr/lib/cryptobox/check_smb_idle.sh new file mode 100755 index 0000000..ec596ef --- /dev/null +++ b/luks/cbox-tree.d/usr/lib/cryptobox/check_smb_idle.sh @@ -0,0 +1,78 @@ +#!/bin/sh +# $Id$ +# +# a simple script to check, if there was no smb traffic for the specified +# number of minutes - then it unmounts the crypto partition +# +# you may want to adjust the function "filter_ipt_rules" according to +# your setup +# +# any Parameter are ignored +# +# this script has to run as root - as it invokes iptables +# +# the iptables rules to detect smb traffic could look like the following: +# iptables -A INPUT -i eth0 -p udp --dport 138 -j ACCEPT +# iptables -A INPUT -i eth0 -p tcp --dport 139 -j ACCEPT +# +# called by: +# - cron (/etc/cron.d/cryptobox) +# + +set -eu + +# parse config file +. /etc/cryptobox/cryptobox.conf + + +############# some functions ################## + +filter_ipt_rules() +# get the input rules for smb datagram traffic +{ + "$IPTABLES" -L INPUT -vnx | grep -E "udp dpt:138|tcp dpt:139" +} + + +function check_for_traffic() +{ + local traffic_yes=0 + # fallback if no rules were found + # extract the number of packets and calculate the sum + filter_ipt_rules | sed 's/ */ /g' | cut -d " " -f 3 | while read a + do [ "$a" -gt 0 ] && echo "$a" + done | grep -q "" && traffic_yes=1 + "$IPTABLES" -Z INPUT + [ "$traffic_yes" = "1" ] +} + + +################### main ###################### + +# break, if crypto partition is not mounted +"$CB_SCRIPT" is_crypto_mounted || exit 0 + +# break, if idle timer is turned off +MAX_IDLE_COUNTER=$("$CB_SCRIPT" get_config timeout) +[ "$MAX_IDLE_COUNTER" -eq 0 ] && exit 0 + +# config test +[ -z "$(filter_ipt_rules)" ] && echo "[`basename $0`]: Could not find a matching iptables rule!" >>"$LOG_FILE" && exit 1 + +# read current idle counter +if [ -e "$IDLE_COUNTER_FILE" ] + then current_count=$(<$IDLE_COUNTER_FILE) + else current_count=0 + fi + +# update counter +if check_for_traffic + then echo 0 + else echo $((current_count + 1)) + fi >"$IDLE_COUNTER_FILE" + +# unmount crypto partition, if the threshold was reached +if [ "$(<$IDLE_COUNTER_FILE)" -ge "$MAX_IDLE_COUNTER" ] + then "$CB_SCRIPT" crypto-down >>"$LOG_FILE" 2>&1 + echo "0" >"$IDLE_COUNTER_FILE" + fi diff --git a/luks/cbox-tree.d/usr/lib/cryptobox/chroot-start.sh b/luks/cbox-tree.d/usr/lib/cryptobox/chroot-start.sh new file mode 100755 index 0000000..d89a46e --- /dev/null +++ b/luks/cbox-tree.d/usr/lib/cryptobox/chroot-start.sh @@ -0,0 +1,48 @@ +#!/bin/sh +# $Id$ +# +# FOR DEVELOPMENT ONLY! +# +# this script is used to prepare a chroot session for testing or configuring +# +# called by: +# - cbox-build.sh +# +# parameter: [commandline] +# +# if "commandline" is empty, "bash" will be used + +set -eu + +MNT_SRC=/opt/dfsruntime/runtimerd +MNT_DST=/opt/dfsruntime/runtimemnt +# the directory /tmp/ can not be used, as it is still a broken link, too +TMP_DIR="/tmp-`basename $0`-$$" + + +cp -a "$MNT_SRC/." "$TMP_DIR" +mount -n --bind "$TMP_DIR" "$MNT_DST" + +[ ! -e /dev/null ] && mknod "/dev/null" c 1 3 && chmod 666 "/dev/null" +[ ! -e /dev/urandom ] && mknod "/dev/urandom" c 1 9 && chmod 444 "/dev/urandom" +[ ! -e /dev/console ] && mknod "/dev/console" c 1 5 && chmod 660 "/dev/console" + +# remember, if proc was mounted before (e.g. because of a running chroot) +PROC_WAS_MOUNTED=no +mount -n -t proc proc /proc 2>/dev/null || PROC_WAS_MOUNTED=yes + +# default language setting - prevents dpkg error messages +export LANG=C + +# set default terminal (good if you are running in a screen session) +export TERM=linux + +# execute parameters as commandline +if [ $# -gt 0 ] + then "$@" + else bash + fi + +umount -n "$MNT_DST" +[ "$PROC_WAS_MOUNTED" = "no" ] && umount -n proc +rm -r "$TMP_DIR" diff --git a/luks/cbox-tree.d/usr/lib/cryptobox/configure-cryptobox.sh b/luks/cbox-tree.d/usr/lib/cryptobox/configure-cryptobox.sh new file mode 100755 index 0000000..4eea353 --- /dev/null +++ b/luks/cbox-tree.d/usr/lib/cryptobox/configure-cryptobox.sh @@ -0,0 +1,121 @@ +#!/bin/sh +# $Id$ +# +# this script is part of the building process of the cryptobox +# the "normal" action is necessary for every cryptobox (development & release) +# the "secure" action is mandatory for every release CD +# +# called by: +# - cbox-build.sh after copying custom files and before creating the iso image +# + +set -eu + +# parse config file +. /etc/cryptobox/cryptobox.conf + +RUNTIMEDIR=/opt/dfsruntime/runtimerd +TUNDEV=$RUNTIMEDIR/dev/net/tun + +SECURITY_REMOVE_PACKAGES="ssh strace unzip tar zip wget nvi nano gzip curl bzip2 aptitude tasksel elinks vim vim-common" +DEVEL_REMOVE_PACKAGES="exim4-daemon-light exim4-config exim4-base netkit-inetd telnet ppp pppconfig pppoe pppoeconf" + +# remove rc symlinks for these services +SERVICES_OFF="ssh samba setserial nviboot mountnfs ntpdate" + +function configure_normal() +# the usual stuff - not optimized for security +{ + # set default runlevel to 3 + sed -i 's/^id:2:initdefault/id:3:initdefault/' /etc/inittab + + ######### devices ########## + # create tun device for running under qemu + if [ ! -e "$TUNDEV" ] + then mkdir -p `dirname "$TUNDEV"` + mknod "$TUNDEV" c 10 200 + fi + + ######### thttpd ########### + # change thttpd's config from 'chroot' to 'nochroot' - otherwise no perl script will run + sed -i "s/^chroot$/nochroot/" /etc/thttpd/thttpd.conf + # change thttpd-user from www-data to root (permissions for mount, cryptsetup, ...) + sed -i "s/^user=.*/user=root/" /etc/thttpd/thttpd.conf + + # the thttpd documentations says "nosymlinkcheck" instead of + # "nosymlink" - TODO: "nosymlink" breaks "/cryptobox" URL!!! + #sed -i "/symlink/d" /etc/thttpd/thttpd.conf + #echo "nosymlink" >>/etc/thttpd/thttpd.conf + + ########## sshd ############ + if [ -e "/etc/ssh" ]; then + # allow empty passwords for ssh + # the daemon is NOT started automatically, so you have to start it + # manually in case of need - as the root pw is empty and passwd is ro, you + # have to allow empty passwords for this rare case + sed -i 's/^PermitEmptyPass.*$/PermitEmptyPasswords yes/' /etc/ssh/sshd_config + # turn off PAM for ssh, as it prevents the use of empty passwords (stange behaviour) + sed -i 's/^UsePAM.*$/UsePAM no/' /etc/ssh/sshd_config + # allow nput of password + sed -i 's/^PasswordAuthentication.*$/PasswordAuthentication yes/' /etc/ssh/sshd_config + fi + + # remove unnecessary packages - return true, if no packages were + # removed + dpkg --force-all -P $DEVEL_REMOVE_PACKAGES 2>&1 | grep -v "which isn't installed." || true + + # remove symlinks for unwanted services + for a in $SERVICES_OFF; do + # echo "Turning off service $a ..." + find /etc/rc?.d/ -type l -name "[SK][0-9][0-9]$a" | while read b + do rm "$b" + done + done + + # remove deb-files, that were left by dfsbuild + test -d /opt/packages && rm -r /opt/packages + + return 0 +} + + +function configure_secure() +# remove everything that could weaken security +# configure_normal should be called too! +{ + # disable keyboard login + sed -i '/getty/d' /etc/inittab + + # remove unnecessary packages + dpkg --force-all -P $SECURITY_REMOVE_PACKAGES 2>&1 | grep -v "which isn't installed." || true + + # remove the development features script + [ -e "$DEV_FEATURES_SCRIPT" ] && rm -f "$DEV_FEATURES_SCRIPT" + + # maybe an authorized_keys file was created - but it is not dangerous, + # as the openssh package was removed anyway + [ -d /root/.ssh ] && rm -rf /root/.ssh + + return 0 +} + + +################ main #################### + + +ACTION=help +[ $# -gt 0 ] && ACTION=$1 + +case "$ACTION" in + normal ) + configure_normal + ;; + secure ) + configure_secure + ;; + * ) + echo "Syntax: `basename $0` { normal | secure }" + echo + ;; + esac + diff --git a/luks/cbox-tree.d/usr/lib/cryptobox/devel-features.sh b/luks/cbox-tree.d/usr/lib/cryptobox/devel-features.sh new file mode 100755 index 0000000..7fc2d66 --- /dev/null +++ b/luks/cbox-tree.d/usr/lib/cryptobox/devel-features.sh @@ -0,0 +1,71 @@ +#!/bin/sh +# $Id$ +# +# this script is part of the boot process of a developer's cryptobox +# +# it should really NEVER be found on a release CD +# +# called by: +# - /etc/rc2.d/S99cb-devel-features +# + +set -eu + +# parse config file +. /etc/cryptobox/cryptobox.conf + +MIRROR_DIR=/tmp/mirror +MIRROR_ORIG_DIR=/tmp/mirror.orig +WRITE_DIRS="/usr/share/cryptobox /var/www /usr/lib/cryptobox" + +ACTION="--help" +[ $# -gt 0 ] && ACTION="$1" + +case "$ACTION" in + start ) + # copy cryptobox files to tmpfs + for a in $WRITE_DIRS + do mkdir -p "$MIRROR_DIR/$a" + cp -a "$a/." "$MIRROR_DIR/$a" + mount --bind "$MIRROR_DIR/$a" "$a" + done + $0 set_diff_base + + # thttpd needs to be restarted to reopen its files + /etc/init.d/thttpd restart + + # start ssh daemon + [ -x /etc/init.d/ssh ] && /etc/init.d/ssh start + ;; + set_diff_base ) + # the present content of the tmpfs mirror get copied to + # MIRROR_ORIG_DIR for later diffs + # whenever you merged a diff, you should call this function + [ -e "$MIRROR_ORIG_DIR" ] && rm -rf "$MIRROR_ORIG_DIR" + cp -a "$MIRROR_DIR" "$MIRROR_ORIG_DIR" + ;; + diff ) + cd "`dirname \"$MIRROR_ORIG_DIR\"`" + # diff and remove "binary files differ"-warnings (vi-swap-files) + # ignore generated reports + # ignore cryptobox.pl and index.html, as those are the same as + # /var/www/cryptobox (symbilic links) + # replace the link name (/var/www/cryptobox) by its destination + # UGLY! + diff -ruN --exclude=report --exclude=cryptobox.pl --exclude=index.html "`basename \"$MIRROR_ORIG_DIR\"`" "`basename \"$MIRROR_DIR\"`" | grep -v "^Binary files" | sed 's#/var/www/cryptobox\t#/var/www/cgi-bin/cryptobox.pl\t#' + ;; + stop ) + [ -x /etc/init.d/ssh ] && /etc/init.d/ssh stop + for a in $WRITE_DIRS + do umount "$MIRROR_DIR/$a" + done + rm -rf "$MIRROR_DIR" + ;; + restart ) + $0 stop + $0 start + ;; + * ) + echo "Syntax: `basename $0` { start | stop | restart }" + ;; + esac diff --git a/luks/cbox-tree.d/usr/lib/cryptobox/firewall.sh b/luks/cbox-tree.d/usr/lib/cryptobox/firewall.sh new file mode 100755 index 0000000..9716778 --- /dev/null +++ b/luks/cbox-tree.d/usr/lib/cryptobox/firewall.sh @@ -0,0 +1,56 @@ +#!/bin/sh +# $Id$ +# +# set up the firewall of the cryptobox +# +# called by: +# - cbox-manage.sh during network-up +# + +set -u + +# parse config file +. /etc/cryptobox/cryptobox.conf + + +ACTION="help" +[ $# -gt 0 ] && ACTION=$1 + +case "$ACTION" in + start) + iptables -P INPUT DROP + iptables -P FORWARD DROP + iptables -P OUTPUT ACCEPT + + OFILE=/proc/sys/net/ipv4/tcp_syncookies + [ -e "$OFILE" ] && echo 1 >"$OFILE" + + iptables -F + iptables -X + iptables -Z + + iptables -A INPUT -i lo -j ACCEPT + + for a in $ALLOW_TCP_PORTS + do iptables -A INPUT -i $NET_IFACE -p tcp --dport $a -j ACCEPT + done + + for a in $ALLOW_UDP_PORTS + do iptables -A INPUT -i $NET_IFACE -p udp --dport $a -j ACCEPT + done + + iptables -A INPUT -i $NET_IFACE -p icmp -j ACCEPT + ;; + stop) + iptables -P INPUT ACCEPT + iptables -P FORWARD ACCEPT + iptables -P OUTPUT ACCEPT + iptables -F + iptables -X + iptables -Z + ;; + *) + echo "usage $0 start | stop" + ;; +esac + diff --git a/luks/cbox-tree.d/usr/lib/cryptobox/make_stunnel_cert.sh b/luks/cbox-tree.d/usr/lib/cryptobox/make_stunnel_cert.sh new file mode 100755 index 0000000..53f038e --- /dev/null +++ b/luks/cbox-tree.d/usr/lib/cryptobox/make_stunnel_cert.sh @@ -0,0 +1,36 @@ +#!/bin/sh +# $Id$ +# +# this script creates the stunnel certificate for https +# +# parameter: "destination file" +# +# called by: +# - cbox-manage.sh during network-up if no certificate was found on the config partition +# + +set -eu + +# parse config file +. /etc/cryptobox/cryptobox.conf + + +## vcert values are in openssl.conf +CERTFILE="$1" +TMP_FILE=/tmp/cryptobox-cert.tmp + +[ ! -f "$OPENSSL_CONF_FILE" ] && echo "`basename $0`: $OPENSSL_CONF_FILE not found" && exit 2 +# this command creates the certificate +# this is required, because the certbuilding asks for 5 returns +echo -ne "\n\n\n\n\n" | openssl req -new -x509 -nodes -days 3650 -config "$OPENSSL_CONF_FILE" -out "$CERTFILE" -keyout "$CERTFILE" +chmod 600 "$CERTFILE" + +# next step needs a lot of randomdata +dd if=/dev/urandom of="$TMP_FILE" bs=1024 count=1024 +openssl dhparam -rand "$TMP_FILE" 512 >> "$CERTFILE" +rm "$TMP_FILE" + +#ln -sf ${CERTPATH}stunnel.pem ${CERTPATH}`openssl x509 -noout -hash < "${CERTPATH}stunnel.pem"`.0 + +## print out cert values +#openssl x509 -subject -dates -fingerprint -in stunnel.pem diff --git a/luks/cbox-tree.d/usr/lib/perl5/ClearSilver.pm b/luks/cbox-tree.d/usr/lib/perl5/ClearSilver.pm new file mode 100644 index 0000000..41dd00f --- /dev/null +++ b/luks/cbox-tree.d/usr/lib/perl5/ClearSilver.pm @@ -0,0 +1,68 @@ +package ClearSilver; + +use 5.006; +use strict; +use warnings; + +require Exporter; +require DynaLoader; + +our @ISA = qw(Exporter DynaLoader); + +# Items to export into callers namespace by default. Note: do not export +# names by default without a very good reason. Use EXPORT_OK instead. +# Do not simply export all your public functions/methods/constants. + +# This allows declaration use ClearSilver ':all'; +# If you do not need this, moving things directly into @EXPORT or @EXPORT_OK +# will save memory. +our %EXPORT_TAGS = ( 'all' => [ qw( + +) ] ); + +our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } ); + +our @EXPORT = qw( + +); +our $VERSION = '0.01'; + +bootstrap ClearSilver $VERSION; + +# Preloaded methods go here. + +1; +__END__ +# Below is stub documentation for your module. You better edit it! + +=head1 NAME + +ClearSilver - Perl extension for blah blah blah + +=head1 SYNOPSIS + + use ClearSilver; + blah blah blah + +=head1 DESCRIPTION + +Stub documentation for ClearSilver, created by h2xs. It looks like the +author of the extension was negligent enough to leave the stub +unedited. + +Blah blah blah. + +=head2 EXPORT + +None by default. + + +=head1 AUTHOR + +A. U. Thor, Ea.u.thor@a.galaxy.far.far.awayE + +=head1 SEE ALSO + +L. + +=cut diff --git a/luks/cbox-tree.d/usr/lib/perl5/auto/ClearSilver/.packlist b/luks/cbox-tree.d/usr/lib/perl5/auto/ClearSilver/.packlist new file mode 100644 index 0000000..a79f4e0 --- /dev/null +++ b/luks/cbox-tree.d/usr/lib/perl5/auto/ClearSilver/.packlist @@ -0,0 +1,4 @@ +/tmp/clearsilver-perl/local/lib/perl/5.8.7/ClearSilver.pm +/tmp/clearsilver-perl/local/lib/perl/5.8.7/auto/ClearSilver/ClearSilver.bs +/tmp/clearsilver-perl/local/lib/perl/5.8.7/auto/ClearSilver/ClearSilver.so +/tmp/clearsilver-perl/local/man/man3/ClearSilver.3pm diff --git a/luks/cbox-tree.d/usr/lib/perl5/auto/ClearSilver/ClearSilver.bs b/luks/cbox-tree.d/usr/lib/perl5/auto/ClearSilver/ClearSilver.bs new file mode 100644 index 0000000..e69de29 diff --git a/luks/cbox-tree.d/usr/lib/perl5/auto/ClearSilver/ClearSilver.so b/luks/cbox-tree.d/usr/lib/perl5/auto/ClearSilver/ClearSilver.so new file mode 100755 index 0000000000000000000000000000000000000000..310964f7bda552ff82b8d3862420f4cec111eded GIT binary patch literal 394590 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 wWWh(E8l`0n5WQJf_y)Gv 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 z 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 + + diff --git a/luks/cbox-tree.d/usr/share/cryptobox/templates/error.cs b/luks/cbox-tree.d/usr/share/cryptobox/templates/error.cs new file mode 100644 index 0000000..ac56d9a --- /dev/null +++ b/luks/cbox-tree.d/usr/share/cryptobox/templates/error.cs @@ -0,0 +1,3 @@ + + + diff --git a/luks/cbox-tree.d/usr/share/cryptobox/templates/footer.cs b/luks/cbox-tree.d/usr/share/cryptobox/templates/footer.cs new file mode 100644 index 0000000..b4fd849 --- /dev/null +++ b/luks/cbox-tree.d/usr/share/cryptobox/templates/footer.cs @@ -0,0 +1,31 @@ + + + + + + +

+ + + +
+ + + + + + + + diff --git a/luks/cbox-tree.d/usr/share/cryptobox/templates/form_config.cs b/luks/cbox-tree.d/usr/share/cryptobox/templates/form_config.cs new file mode 100644 index 0000000..fcc7ee4 --- /dev/null +++ b/luks/cbox-tree.d/usr/share/cryptobox/templates/form_config.cs @@ -0,0 +1,31 @@ + + +
+

+ + + +


+

+ + +


+

+ +


+

+ +


+

+ + + + + +
diff --git a/luks/cbox-tree.d/usr/share/cryptobox/templates/form_init.cs b/luks/cbox-tree.d/usr/share/cryptobox/templates/form_init.cs new file mode 100644 index 0000000..1e22803 --- /dev/null +++ b/luks/cbox-tree.d/usr/share/cryptobox/templates/form_init.cs @@ -0,0 +1,34 @@ + + +

+ +
+ + +

+ +


+

+ +


+

+


+

+


+

+


+

+


+

+ + + +
+ +
+ +
+

+

+
diff --git a/luks/cbox-tree.d/usr/share/cryptobox/templates/form_mount.cs b/luks/cbox-tree.d/usr/share/cryptobox/templates/form_mount.cs new file mode 100644 index 0000000..a55dc00 --- /dev/null +++ b/luks/cbox-tree.d/usr/share/cryptobox/templates/form_mount.cs @@ -0,0 +1,15 @@ + + +

+ +
+ + +

+

+ + + + + +
diff --git a/luks/cbox-tree.d/usr/share/cryptobox/templates/form_shutdown.cs b/luks/cbox-tree.d/usr/share/cryptobox/templates/form_shutdown.cs new file mode 100644 index 0000000..3a27662 --- /dev/null +++ b/luks/cbox-tree.d/usr/share/cryptobox/templates/form_shutdown.cs @@ -0,0 +1,19 @@ + + +

+ +
+ + + + + + +   + + + + + + +
diff --git a/luks/cbox-tree.d/usr/share/cryptobox/templates/form_umount.cs b/luks/cbox-tree.d/usr/share/cryptobox/templates/form_umount.cs new file mode 100644 index 0000000..f11b963 --- /dev/null +++ b/luks/cbox-tree.d/usr/share/cryptobox/templates/form_umount.cs @@ -0,0 +1,12 @@ + + +

+ +
+ + + + + + +
diff --git a/luks/cbox-tree.d/usr/share/cryptobox/templates/header.cs b/luks/cbox-tree.d/usr/share/cryptobox/templates/header.cs new file mode 100644 index 0000000..48a561a --- /dev/null +++ b/luks/cbox-tree.d/usr/share/cryptobox/templates/header.cs @@ -0,0 +1,47 @@ + + + + + + + CryptoBox + + + + + + + + + + +
+ +
+ +
+ +
+ +
+ +
+ +

+

+
+ +
+ + +
diff --git a/luks/cbox-tree.d/usr/share/cryptobox/templates/macros.cs b/luks/cbox-tree.d/usr/share/cryptobox/templates/macros.cs new file mode 100644 index 0000000..c58624f --- /dev/null +++ b/luks/cbox-tree.d/usr/share/cryptobox/templates/macros.cs @@ -0,0 +1,93 @@ + + +
+

+

+ + + +
+

+

+ + + +
+

+

+ + + + + + + + + + + + + +
+ diff --git a/luks/cbox-tree.d/usr/share/cryptobox/templates/main.cs b/luks/cbox-tree.d/usr/share/cryptobox/templates/main.cs new file mode 100644 index 0000000..d93cc61 --- /dev/null +++ b/luks/cbox-tree.d/usr/share/cryptobox/templates/main.cs @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/luks/cbox-tree.d/usr/share/cryptobox/templates/nav.cs b/luks/cbox-tree.d/usr/share/cryptobox/templates/nav.cs new file mode 100644 index 0000000..1740e90 --- /dev/null +++ b/luks/cbox-tree.d/usr/share/cryptobox/templates/nav.cs @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/luks/cbox-tree.d/usr/share/cryptobox/templates/show_doc.cs b/luks/cbox-tree.d/usr/share/cryptobox/templates/show_doc.cs new file mode 100644 index 0000000..20146db --- /dev/null +++ b/luks/cbox-tree.d/usr/share/cryptobox/templates/show_doc.cs @@ -0,0 +1,7 @@ + + +
+ + + +
diff --git a/luks/cbox-tree.d/usr/share/cryptobox/templates/show_log.cs b/luks/cbox-tree.d/usr/share/cryptobox/templates/show_log.cs new file mode 100644 index 0000000..3544b63 --- /dev/null +++ b/luks/cbox-tree.d/usr/share/cryptobox/templates/show_log.cs @@ -0,0 +1,13 @@ + + +
+ +

+ + +

+ +

+ + +
diff --git a/luks/cbox-tree.d/usr/share/cryptobox/templates/show_status.cs b/luks/cbox-tree.d/usr/share/cryptobox/templates/show_status.cs new file mode 100644 index 0000000..00e2ab4 --- /dev/null +++ b/luks/cbox-tree.d/usr/share/cryptobox/templates/show_status.cs @@ -0,0 +1,5 @@ + + +

+

+

diff --git a/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBox.html b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBox.html new file mode 100644 index 0000000..76e4f40 --- /dev/null +++ b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBox.html @@ -0,0 +1,93 @@ + + + + + +
+

+

+ +

+

Die CryptoBox

+

+English version +

+

Neuigkeiten

+

+Das erste Release der CryptoBox ist unter https://codecoop.org/projects/cryptobox/ verfügbar. +

+

Überblick

+

+Die CryptoBox ist eine Live-CD mit der sich jeder alte Rechner in Sekundenschnelle in einen verschlüsselnden Server umwandeln lässt. Damit kannst du sensible Daten speichern, ohne dass du etwas über Kryptografie wissen musst. +

+

Download

+

Spezifikation

+ +
SystemDebian GNU/Linux-basierte Live-CD +
benötigter Computer"ausrangierter" PC (i386 ab p1 mind. 32MB RAM) +
unterstützte Clients*nix; *bsd; Windows; Mac OS +
interner Fileserversamba (Netzwerkfreigaben) +
Benutzerschnittstelleper Browser bedienbares Web-Interface +
VerschlüsselungAES via device-mapper +
+

+Das Web-Interface der CryptoBox ünterstützt derzeit folgende Sprachen: +

+
  • deutsch +
  • englisch +
  • slowenisch +

+Du kannst gern weitere Übersetzungen in andere Sprachen hinzufügen (idealerweise utf-encodiert). +

+

Dokumentation

+

+Das Nutzerhandbuch ist unter CryptoBoxUser verfügbar. +

+

Entwicklung

+

+Beteilige dich an der Entwicklung der CryptoBox und werde reich und schön! ;)
+Nee im Ernst, wir freuen uns über jeden partizipierenden Menschen. Du wirst in einem entspannten Team reichlich Erfahrungen sammeln, eine nützliche Sache voranbringen und - wer weiß - vielleicht macht dich das auch schön. Schreib eine Mail an cryptobox[at]systemausfall.org und hab Spaß. +

+

+Probleme und Anregungen kannst du in unserer Fehlerdatenbank melden. +

+

+Die englischsprachige Entwickler-Doku findest du unter CryptoBoxDev. +

+

+Die Quell-Daten kannst du hier begutachten. +

+

+Für allgemeine Fragen, schreibe eine Email an cryptobox[at]systemausfall.org. +

+

Mitwirkende

+

+

  • Clavdia Horvat, Tadej Brce & Dušan Rebolj - slovenian translation +
  • http://codecoop.org - webspace +
+

+

Rechtliches

+
  1. Alle Skripte unterliegen der GPL - sie sind also quasi vollständig frei. +
  2. Die Dokumentation unterliegt einer Creative Commons-Lizenz, damit wird die Möglichkeit der freien Verbreitung des gesammelten Wissens gewährleistet. +
  3. Wir übernehmen keinerlei Haftung für eventuelle Folgen, die durch die Nutzung einer CryptoBox entstehen könnten. +

+

Kommentare

+

+ +

+
diff --git a/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxDev.html b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxDev.html new file mode 100644 index 0000000..33fc754 --- /dev/null +++ b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxDev.html @@ -0,0 +1,107 @@ + + + + + +
+

+

+ +

+

+Navigation: ( CryptoBox/de, CryptoBox/en) + +

+
+

Development documentation

+

+The following pages are written for developers only.
+Users of the CryptoBox should read CryptoBoxUser instead. +

+

Source

+

+You may browse the source code. +

+

Contact

+

+We are waiting for your emails to cryptobox[at]systemausfall.org. +

+

Bug reports

+

+Please use our issue tracker, if you discover problems: https://systemausfall.org/trac/cryptobox/newticket +

+
+
+ + + diff --git a/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxDevBackground.html b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxDevBackground.html new file mode 100644 index 0000000..57a5809 --- /dev/null +++ b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxDevBackground.html @@ -0,0 +1,61 @@ + + + + + +
+

+

+

Table of Contents

+
    +
  1. dfsbuild
  2. +
  3. the kernel
  4. +
  5. qemu
  6. +
  7. alternative LiveCDs
  8. +
  9. Comments
  10. +
+
+ +

+

+Navigation: ( CryptoBoxDev) + +

+
+

Details of the CryptoBox

+

dfsbuild

+

+The base system of the CryptoBox Live-CD is created by dfsbuild. +

+

+It is recommended to use some kind of caching tool for the retrieval of the debian packages (e.g.: apt-cacher, apt-proxy or approx). This saves a lot of bandwidth and time. +

+

+The documentation for dfsbuild is sparse. But it is quite unlikely, that you will get in direct contact with it, as it is wrapped by cbox-build. However the following links may help you for specific problems: +

+

the kernel

+

+The linux kernel for the CryptoBox is compiled statically. If you want to change it, you could follow this steps: +

+
  1. get the sources: apt-get install kernel-tree-2.6.11 (or the version of your choice) +
  2. copy the exisiting config file kernel/config-2.6.11 as .config into your kernel source directory +
  3. build the debian kernel package make-kpkg --revision=1.dfs --rootcmd=fakeroot kernel_image +
  4. change the kernel in the unpackdebs setting in dfs-cbox.conf (see CryptoBoxDevCustomBuild for details) +

qemu

+

+Qemu is a portable system emulator. It is a convenient tool to ease the development workflow, as you do not need to burn LiveCDs for testing. +

+

alternative LiveCDs

+

+We tried some other LiveCDs before we decided to use dfsbuild. The following pages describe their advantages and disadvantages as the base system for the CryptoBox: +

+
+

Comments

+

+ +

+
diff --git a/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxDevCustomBuild.html b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxDevCustomBuild.html new file mode 100644 index 0000000..6607d93 --- /dev/null +++ b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxDevCustomBuild.html @@ -0,0 +1,85 @@ + + + + + +
+

+

+ +

+

+Navigation: ( CryptoBoxDev, CryptoBoxDevBackground, CryptoBoxDevPreparation, CryptoBoxDevWorkFlow) + +

+
+

Custom builds of the CryptoBox

+

Overview

+

+The following sections are useful, if you want to change the default settings of your personal CryptoBox development environment. +

+

+You should have completed the steps described in CryptoBoxDevPreparation. +

+

Settings

+

dfsbuild settings

+

+All settings for dfsbuild can be found in etc-defaults.d/dfs-cbox.conf. +

+

+If you want to change any of them, you should do the following: +

+
  1. copy etc-defaults.d/dfs-cbox.conf file to etc-local.d/ +
  2. change etc-local.d/dfs-cbox.conf according to your needs +

+This allows you to use your own (personal) settings, without interfering with files under version control. +

+

CryptoBox development configuration

+

+Some settings regarding the building, configuring and validating of the CryptoBox can be found in etc-defaults.d/cbox-dev.conf. +

+

+If you want to change any of them, you should do the following: +

+
  1. copy etc-defaults.d/cbox-dev.conf file to etc-local.d/ +
  2. change etc-local.d/cbox-dev.conf according to your needs +

SSH connection

+

+The file ssh_config is used to establish a connection to a running CryptoBox system. +

+

+It can be necessary to change these settings, if: +

+
  • you do not want to use the default IP for the CryptoBox +
  • or the CryptoBox is not within your local network. +

+If you want to change some settings, you should do the following: +

+
  1. copy etc-defaults.d/ssh_config file to etc-local.d/ +
  2. change etc-local.d/ssh_config according to your needs +

qemu network configuration

+

+The file etc-defauolts.d/qemu-ifup is used for the CryptoBox emulation with qemu. See man qemu for details. +

+

+If you want to change some settings, you should do the following: +

+
  1. copy etc-defaults.d/qemu-ifup file to etc-local.d/ +
  2. change etc-local.d/qemu-ifup according to your needs +

+

Comments

+

+ +

+
diff --git a/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxDevCustomConfigure.html b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxDevCustomConfigure.html new file mode 100644 index 0000000..9b93359 --- /dev/null +++ b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxDevCustomConfigure.html @@ -0,0 +1,60 @@ + + + + + +
+

+

+

Table of Contents

+
    +
  1. Overview
  2. +
  3. Locations
  4. +
  5. Examples
  6. +
  7. Comments
  8. +
+
+ +

+

+Navigation: ( CryptoBoxDev) + +

+
+

Custom configuration of the CryptoBox

+

Overview

+

+You may change nearly every aspect of the CryptoBox by using the custom configuration hook directory. +

+

+Any script inside of this directory will be executed after the default configuration procedure (see CryptoBoxDevWorkFlow). +

+

+The order of execution is defined by the names of the scripts (alphabetically). +

+

Locations

+

+Some example customization scripts can be found in configure-examples.d/. +

+

+You may put your scripts into configure-local.d/. They will be sourced by cbox-build.sh. +

+

Examples

+

+The examples in configure-examples.d/ can be copied to configure-local.d/ and adjusted to your needs. +

+ +
set_default_ipchange the default IP address of the CryptoBox +
set_default_languageset the default language +
set_default_timeoutset the default idle time for automatic unmounting +
set_hostnamechange the default hostname +
set_root_pwchange the password of root (only useful for a development CryptoBox) +
import_authorized_keysupload a ssh key for passwordless access to a development CryptoBox +
set_scan_deviceswhere to look for usable harddisks +
+
+

Comments

+

+ +

+
diff --git a/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxDevKnownProblems.html b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxDevKnownProblems.html new file mode 100644 index 0000000..787bc2f --- /dev/null +++ b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxDevKnownProblems.html @@ -0,0 +1,39 @@ + + + + + +
+

+

+ +

+

+Navigation: ( CryptoBoxDev) + +

+
+

Known problems

+

qemu

+

interleaved files not (yet) supported

+

+You should update qemu to version 0.7 or higher. +

+

smbd: segfault

+

+This happens under certain circumstances. We do not know a solution for this problem. +

+
+

Comments

+

+ +

+
diff --git a/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxDevPreparation.html b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxDevPreparation.html new file mode 100644 index 0000000..64be90c --- /dev/null +++ b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxDevPreparation.html @@ -0,0 +1,77 @@ + + + + + +
+

+

+ +

+

+Navigation: ( CryptoBoxDev, CryptoBoxDevCustomBuild, CryptoBoxDevWorkFlow) + +

+
+

Preparations for developers

+

Software requirements

+

Packages

+

+We use Debian as our development environment. This was a natural choice, as the CryptoBox-LiveCD is also based on Debian. Other distributions should work too, of course - your mileage may vary. +

+

+required: +

+

+recommended: +

+

Kernel

+

+If you want to use qemu to test your CryptoBox in a virtual environment, then you will need the tun/tap kernel feature. +

+
CONFIG_TUN=m
+

Get the source

+

+Download the latest release from our subversion-Repository: +

+
svn checkout https://svn.systemausfall.org/svn/cryptobox/trunk
+

First build

+

+run scripts/cbox-build.sh release as root - hopefully, there should be no errors :) +

+

+Hint: This step will fail, if you did not install apt-cacher. See CryptoBoxDevCustomBuild for details on how to change the build-configuration settings (in this case: mirror in dfs-cbox.conf). +

+

Finished

+

+Now you can start to pariticipate in the development of the CryptoBox or simply customize your own CryptoBox-LiveCD. +

+

+See CryptoBoxDevWorkFlow for details of how to use the developer's tools of the CryptoBox. +

+

+CryptoBoxDevCustomBuild shows some examples for local customizations of the CryptoBox. +

+
+

Comments

+

+ +

+
diff --git a/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxDevValidation.html b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxDevValidation.html new file mode 100644 index 0000000..9276cd0 --- /dev/null +++ b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxDevValidation.html @@ -0,0 +1,78 @@ + + + + + +
+

+

+

Table of Contents

+
    +
  1. Overview
  2. +
  3. Validate
  4. +
  5. How to create a test
  6. +
  7. Comments
  8. +
+
+ +

+

+Navigation: ( CryptoBoxDev) + +

+
+

Validation of the CryptoBox

+

Overview

+

+The validation feature helps you to check the programming logic of the CryptoBox. A lot of test cases are defined to verify as many functions of the CryptoBox as possible. +

+

+The requests are processed with curl. +

+

+The received web page is saved to allow a later design review or css debugging. +

+

+The current state of the CryptoBox is represented by ten single values (e.g.: box is configured, IP of the box, current language setting, ...), which are invisibly a part of each html page (as comments). The returned status of every request is compared to the predicted value of the test case. +

+

+Similar test cases are pooled into test groups (e.g.: initialization, configuration and mounting). +

+

Validate

+

+Run scripts/validate.sh] to conduct all tests of all groups. See scripts/validate.sh help for other actions. +

+

+The results will be saved in validation/report. +

+

+In addition to every single retrieved page, a html page called summary-?.html is created, which contains the state checks of all tests in a group. +

+

How to create a test

+

+All test cases can be found in validation/test-cases. +

+

+Every test consists of the following files: +

+ +
input.curlthe configuration file for the curl request +
outputthe predicted state of the CryptoBox after the call +
descriptiona short description of the test (will be used for the summary) +
delay[optional] time to wait after this test +
+

+Use the existing test cases as templates for new tests. +

+

+Read validation/test-cases/README for details. +

+

+Every logical path of the web interface CGI should be validated by a test case. +

+
+

Comments

+

+ +

+
diff --git a/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxDevWorkFlow.html b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxDevWorkFlow.html new file mode 100644 index 0000000..85f73ec --- /dev/null +++ b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxDevWorkFlow.html @@ -0,0 +1,151 @@ + + + + + +
+

+

+ +

+

+Navigation: ( CryptoBoxDev, CryptoBoxDevCustomConfigure, CryptoBoxDevPreparation) + +

+
+

Development workflow

+

Preparations

+

+You should have completed the steps described in CryptoBoxDevPreparation. +

+

Create a CryptoBox-LiveCD

+

+The following steps can be executed in the order of their appearance. +

+

+Usually there is no need to repeat the whole process, after you changed some parts of the CryptoBox. Especially the first step (building of the base system with dfsbuild) may usually be skipped. +

+

+Every step of the building process must be executed as root. +

+

Build the base system

+

+Run scripts/cbox-build.sh dfsbuild to create the base system for the LiveCD. +

+

+The result can be found in _builddir/cd1/image. +

+

+If you do not want to use the apt-cacher to save bandwidth and time, then you should modify the mirror-setting in dfs-cbox.conf (see CryptoBoxDevCustomBuild for details). +

+

Configure the base image

+

+Run scripts/cbox-build.sh config to copy the CryptoBox-specific files to the base image. +

+

+TODO: link to cbox-build.sh-manpage +

+

Remove development features

+

+The original base system, that was created by dfsbuild contains a lot packages and some scripts, that are only useful during development. You should remove them, as they cause severe security implications. +

+

+To reduce the CryptoBox-LiveCD to the usable minimum for operational use, you should run scripts/cbox-build.sh harden. +

+

Create an iso image

+

+To burn a CryptoBox-LiveCD, you need an bootable iso9660-image. +

+

+Create the iso image with scripts/cbox-build.sh iso. The resulting file can be found at _builddir/cd1/cryptobox.iso. +

+

Burn the CD

+

+Do it manually: +

+
cdrecord -v dev=0,0,0 _builddir/cryptobox.iso
+

+(change the dev setting according to your setup). +

+

+Let the script do it for you: scripts/cbox-build.sh burn (maybe you have to change the CDWRITER setting in cbox-dev.conf - see CryptoBoxDevCustomBuild). +

+

+Of course, it is not wise to use CD-R media. CD-RW consume less resources. +

+

Test the CryptoBox-LiveCD

+

+This section is only useful for developers, who want to improve or change the CryptoBox system. +

+

Chroot: quick & dirty tests

+

+If you modified the perl- or shell-scripts of the CryptoBox, then you can check for syntax errors by running them in a chroot environment. Be careful: you have access to all ressources of your computer, while you are working within a chroot environment - so you can easily repartition your real disk ... +

+

+To start a chroot environment, you can execute scripts/cbox-dev.sh chroot. +

+

+For more intensive tests, you may use qemu (see below) or burn real LiveCDs - of course this would take much more time. +

+

Qemu: nearly complete emulation

+

+The processor emulator qemu allows you test the CryptoBox in a virtual environment, that is completely separated from your real computer's resources. It is the tool of choice, if you do nat have a real computer around for testing. +

+

+Beware - there are some problems, when using qemu: +

+
  • smbd does not start (segfault) +
  • ??? +

+To start a qemu emulation of the iso image, you may type: +

+
scripts/cbox-dev.sh qemu
+

Debugging and merging

+

+This section is only useful for developers, who want to develop on a running CryptoBox system (emulated or real). +

+

+You may access the CryptoBox directly or you can use ssh to open a remote session: +

+
./cbox-dev.sh ssh
+

Development on a running system

+

+When you run an emulation or test a real LiveCD, you may encounter problems and bugs. To test your fixes for these problems, it is convenient, to change the running test system. Afterwards you can merge these changes to your local development copy. +

+

+Type scripts/cbox-dev.sh diff to see the changes, you made on the running CryptoBox system. +

+

+Type scripts/cbox-dev.sh merge to merge these changes to your local working copy. +

+

Uploading a new release

+

+Alternatively you may also upload a new version of your local working copy to the running CryptoBox system. +

+

+Type scripts/cbox-dev.sh upload - beware: all recent changes you made to the running CryptoBox system, are lost. +

+
+

Comments

+

+ +

+
diff --git a/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxUser.html b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxUser.html new file mode 100644 index 0000000..17ebd31 --- /dev/null +++ b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxUser.html @@ -0,0 +1,59 @@ + + + + + +
+

+

+ +

+

+Navigation: ( CryptoBox/de) + +

+
+

Nutzerhandbuch

+

+Die folgenden Seiten beschreiben die Nutzung der CryptoBox. +

+

+Die online-Version dieses Handbuchs ist ein Wiki. Das bedeutet, dass du diese Seiten verändern kannst. Falls du also Fragen oder Anregungen hast, schreibe bitte deine Anmerkungen in den Kommentar-Abschnitt am Ende der jeweiligen Seite. Die Entwickler werden deine Fragen beantworten und das Handbuch schnellstmöglich aktualisieren. Auf diese Art und Weise kannst du die Nutzbarkeit der CryptoBox für alle Nutzer verbessern! +

+
  1. CryptoBoxUserGettingStarted -- die Vorbereitung der Hardware +
  2. CryptoBoxUserConfiguration -- die Einrichtung deines neuen verschlüsselten Dateiservers +
  3. CryptoBoxUserDailyUse -- die tägliche Nutzung der CryptoBox +

+Die online-Version dieses Handbuchs befindet sich unter https://systemausfall.org/trac/cryptobox/wiki/CryptoBoxUser/de. +

+
+

+ +

+
diff --git a/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxUserConfiguration.html b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxUserConfiguration.html new file mode 100644 index 0000000..fccc749 --- /dev/null +++ b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxUserConfiguration.html @@ -0,0 +1,109 @@ + + + + + +
+

+

+ +

+

+Navigation: ( CryptoBoxUser/de) + +

+
+

Die Konfiguration deiner CryptoBox

+

Überblick

+

+Alle Funktionen der CryptoBox können durch das komfortable Web-Interface bedient werden. Zur Erst-Einrichtung der CryptoBox folge einfach den folgenden Schritten. +

+

+Falls du in Eile bist, kannst du das Vorwort überspringen. +

+

+Die Initialisierung erklärt die Einrichtung der Festplatte. Dieser Schritt ist nur bei der ersten Einrichtung oder nach einem Festplattenwechsel notwendig. +

+

+Im Konfigurations-Abschnitt werden die verfügbaren Einstellungen der CryptoBox beschrieben. Hier kannst du beispielsweise die Sprache des Web-Interfaces oder die Netzwerkadresse deiner CryptoBox einstellen. +

+

+Vergiss nicht, auch den Hinweise/Fallstricke-Abschnitt zu lesen. +

+

Vorwort

+

+Du bist den Anweisungen aus CryptoBoxUserGettingStarted gefolgt und sitzt nun vor deinem Arbeits-Rechner. Nun kannst du in deinem Web-Browser das Web-Interface der CryptoBox ansteuern: https://192.168.0.23. +

+

+Bevor du Daten auf deiner CryptoBox speichern kannst, muss die Festplatte mit einem verschlüsselten Dateisystem versehen werden. Das klingt kompliziert, ist jedoch mit einem Klick erledigt. :) +

+

Initialisierung

+

+Klicke auf Initialisierung in der Menü-Zeile. +

+

+Jetzt wirst du zur Eingabe zweier Passworte aufgefordert (jeweils mit Wiederholung - zum Training deiner Tipp-Fertigkeiten ;)). +

+

+de_init.png +

+
  • Das erste Passwort ist das Administrations-Password. +
    • Es schützt die Konfiguration deiner CryptoBox. +
    • Dies ist notwendig, um zu verhindern, dass jemand unerlaubt die Daten auf deiner CryptoBox durch eine erneute Initialisierung löscht. +
    • Wahrscheinlich wirst du dieses Passwort nie wieder benötigen. +
    • Du kannst das Administrations-Passwort leer lassen - dies wird jedoch nicht empfohlen. +
  • Das Crypto-Passwort ist wesentlich wichtiger, da es der einzige Schutz der Daten auf der verschlüsselten Festplatte ist. Wähle es mit Sorgfalt! +
    • Du benötigst es, um auf deine Daten zuzugreifen. +
    • Ein sicheres Passwort sollte aus mindestens 15 Zeichen (einschließlich Ziffern und Sonderzeichen) bestehen. Die Sicherheit deiner Daten steht und fällt mit der Qualität dieses Passworts. +
  • Um dich daran zu erinnern, dass dieser Schritt die Festplatte der CryptoBox komplett löschen wird, musst du den angezeigten roten Warnhinweis im letzten Formularfeld eingeben. +
  • Nun kannst du die Initialisierung durch einen Klick auf Initialisiere die CryptoBox abschließen. +

+Das war es dann auch schon. Kryptographie war wohl nie einfacher zu verwenden, oder? ;) +

+

+Der Initialisierungsvorgang läuft nun im Hintergrund ab und wird nach wenigen Minuten (abhängig von der Größe deiner Festplatte) abgeschlossen. +

+

Konfiguration

+

+Im Gegensatz zur Initialisierung, die nur einmal durchgeführt werden muss, kannst du die Konfiguration jederzeit deinen Wünschen anpassen. Dazu klickst du einfach auf Konfiguration in der Menü-Zeile des Web-Interfaces. Nun wird dir ein Formular mit vier Feldern präsentiert: +

+

+de_config.png +

+
  • Falls du ein Administrator-Passwort während der Initialisierung festgelegt hast, musst du es nun eingeben. Andernfalls wird dieses Formularfeld nicht angezeigt. +
  • Du kannst die voreingestellte Netzwerk-Adresse (IP) verändern, falls sie nicht zu deiner Netzwerk-Struktur passt. +
  • Die Zeitabschaltung sorgt dafür, dass nach einer festgelegten Dauer von Inaktivität (in Minuten), das Crypto-Dateisystem deaktiviert wird (damit sind deine Daten wieder geschützt). Laufende Dateiübertragungen werden dadurch natürlich nicht gestört. +
    • Es ist ratsam, eine kurze Abschalt-Zeit einzustellen (wenige Minuten). +
    • Der Wert 0 deaktiviert die automatische Abschaltung. +
  • Die Sprache ist der Standard für alle Nutzer des CryptoBox-Web-Interfaces. Sie kann individuell durch die Sprach-Links am rechten oberen Bildschirmrand überschrieben werden. +

+Speichere deine neuen Einstellungen durch einen Klick auf Speichere Konfiguration. +

+

+Das ist alles - deine CryptoBox ist jetzt bereit für die tägliche Nutzung! +

+

Hinweise / Fallstricke

+
  • Alle Daten auf der Festplatte in der CryptoBox werden bei der Initialisierung gelöscht. +
  • Die Passworte müssen jeweils zweimal eingegeben werden, um die Gefahr von Tipp-Fehlern zu vermindern. +
  • Das optionale Administrations-Passwort ist nur für die Konfiguration oder eine erneute Initialisierung erforderlich. +
  • Das Crypto-Passwort beschützt deine sensiblen Daten. +
  • Falls die CryptoBox nicht über die Adresse 192.168.0.23 erreichbar ist, musst du die Netzwerk-Adresse deines Arbeits-Rechners für die Dauer der Initialisierung der CryptoBox vorübergehend ändern. +

+zurück zu CryptoBoxUser +

+
+

Kommentare

+

+ +

+
diff --git a/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxUserDailyUse.html b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxUserDailyUse.html new file mode 100644 index 0000000..7647341 --- /dev/null +++ b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxUserDailyUse.html @@ -0,0 +1,124 @@ + + + + + +
+

+

+ +

+

+Navigation: ( CryptoBoxUser/de, CryptoBoxUserConfiguration/de) + +

+
+

Tägliche Nutzung

+

Aktivieren des verschlüsselten Dateisystems

+

+Du kannst dein verschlüsseltes Dateisystem mit folgenden Schritten aktivieren: +

+
  • Wähle mit deinem Web-Browser die Adresse deiner CryptoBox an. Die Voreinstellung ist https://192.168.0.23. +
  • Klicke auf Aktivieren der Crypto-Daten. Daraufhin erscheint ein Formular zur Eingabe des Crypto-Passworts. +
  • Gib dein Crypto-Passwort ein und klicke auf die darunterliegende Schaltfläche. +

+de_mount.png +

+

+Nun ist das verschlüsselte Dateisystem verfügbar. Um es zu nutzen, suche in deiner Netzwerkumgebung nach der Netzwerk-Adresse deiner CryptoBox (Voreinstellung: 192.168.0.23). Nun kannst du das Netzlaufwerk wie üblich verwenden. +

+

Zugriff auf die verschlüsselten Daten

+

Linux - Kommandozeile

+

+Um als normaler Nutzer auf die Crypto-Partition zuzugreifen, solltest du folgende Zeile zur /etc/fstab hinzufügen: +

+
//192.168.0.23/public   /mnt/    smbfs   defaults,noexec,noauto,user,guest      0       0
+

+Nun kannst du die Crypto-Partition nach /mnt mounten: +

+
mount /mnt/
+

+bzw. unmounten: +

+
smbumount /mnt
+

Windows

+

+Starte den Windows Explorer und wähle im Menü unter Extras die Option Netzlaufwerke verbinden aus. +

+

+de_w98_network_drive.png +

+

+Trage unter Pfad die Adresse des Verzeichnisse der CryptoBox ein, auf das du zugreifen willst (Standard: \\192.168.0.23\public). Soll die Verbindung beim jedem Start von Windows wiederhergestellt werden, aktiviere Verbindung beim Start wiederherstellen. +

+

+Nun kannst du auf das verschlüsselte Dateisystem wie jedes andere Laufwerk benutzen. +

+

Abschalten des verschlüsselten Dateisystems

+

+Du kannst das verschlüsselte Dateisystem abschalten, indem du in der Menü-Zeile des Web-Interfaces der CryptoBox auf Deaktivierung der Crypto-Daten klickst. +

+

+Deine Daten sind nun wieder vor jedem Zugriff geschützt. +

+

Abschaltung der CryptoBox

+

+Klicke auf System in der Menü-Zeile des Web-Interfaces. Nun kannst du zwischen Abschaltung und Neustart wählen. Die Abschaltung dauert einige Sekunden. +

+

+Falls dein CryptoBox-Rechner relativ neu ist (ungefähr ab Baujahr 02000), wird er sich nun selbständig abschalten. Andernfalls musst du dies per Hand tun. +

+

Notfall-Abschaltung

+

+Falls du deine Daten wirklich schnell vor neugierigen Augen schützen musst, dann ziehe einfach den Stecker der CryptoBox. Dies ist nicht besonders sauber und kann (in sehr seltenen Ausnahmefällen) geöffnete Dateien beschädigen. Es ist jedoch die schnellste Methode zur Sicherung deiner Daten vor unbefugtem Zugriff. +

+

+zurück zu CryptoBoxUser +

+
+

Fragen und Antworten

+

Windows: Netzlaufwerk kann nicht verbunden werden

+

+de_w98_not_logged_in.png +

+

+Erscheint diese Fehlermeldung, hast du dich beim Start von Windows nicht angemeldet bzw. das Anmeldefenster mit der Taste Esc (Escape) verschwinden lassen. Klicke auf Start und Abmelden und melde dich neu an - sobald das Anmeldefenster erscheint, klicke auf OK: +

+

+de_w98_login.png +

+

Linux: only root can unmount //192.168.0.23/public

+

+Das Unmounten der Crypto-Partition mit umount funktioniert nicht. +

+

+Lösung: Verwende stattdessen: +

+
smbumount /mnt
+

Linux: Operation not permitted / smbmnt failed: 1

+

+Der Versuch die Partition als normaler Nutzer zu mounten schlägt fehl: +

+
cannot mount on /mnt/: Operation not permitted
+smbmnt failed: 1
+

+Lösung: Das Mount-Verzeichnis muss dem selben Nutzer gehören, der den mount-Befehl ausführt (bspw. phil): +

+
chown phil. /mnt
+

+

Kommentare

+

+ +

+
diff --git a/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxUserGettingStarted.html b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxUserGettingStarted.html new file mode 100644 index 0000000..3c74e14 --- /dev/null +++ b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/de/CryptoBoxUserGettingStarted.html @@ -0,0 +1,57 @@ + + + + + +
+

+

+

Table of Contents

+
    +
  1. Erste Schritte
  2. +
  3. Hinweise / Fallstricke
  4. +
  5. Kommentare
  6. +
+
+ +

+

+Navigation: ( CryptoBoxUser/de, CryptoBoxUserConfiguration/de) + +

+
+

Wie geht es los

+

Erste Schritte

+

+Die CryptoBox ist schnell aufgebaut: +

+
  1. Du brauchst einen alten Computer (mindestens 100MHZ, 48MB RAM) (Faustregel: nach 1996 gekauft). Dazu eine passende Netzwerkkarte, ein CD-ROM Laufwerk und eine riesige Festplatte. +
    • Die Festplatte muss nicht riesig sein, je nachdem was du speichern willst, reicht auch 'ne kleine ;) +
    • Du brauchst keinen Monitor, keine Tastatur und keine Maus, um die CryptoBox zu benutzen (bzw. nur für die Erst-Einrichtung). +
    • Du kannst natürlich einen schnelleren Rechner verwenden - der unbedeutende Performance-Zuwachs wird jedoch wohl nicht durch den erhöhten Energiebedarf gerechtfertigt. +
  2. Lade die aktuellste Version der CryptoBox als iso-image herunter und brenne dieses auf einen CD-Rohling. +
  3. Konfiguriere den PC, so dass er vom CD Laufwerk bootet. Dazu solltest du im BIOS als "boot device" "CD-ROM" einstellen. +
  4. Pack die frisch gebrannte CryptoBox CD ins Laufwerk und starte den Computer. +

+Wenn der Computer jetzt von der CD startet, hast du alle Anforderungen erfüllt. +

+

+Du kannst nun zu deinem Arbeits-Rechner in demselben Netzwerk gehen und "https://192.168.0.23" ansurfen. Dort sollte die CryptoBox-Konfigurationsseite erscheinen. Ist doch kinderleicht, oder? +

+

+Die weiteren Schritte werden unter CryptoBoxUserConfiguration beschrieben. +

+

Hinweise / Fallstricke

+
  • Eventuell musst du für die Einrichtung der CryptoBox kurzzeitig deine Netzwerkaddresse (IP) ändern. Falls du nicht weißt, wie und warum, dann frage jemanden um Rat ... (wahrscheinlich klappt es aber ohne Änderungen) +
  • Falls du eine neue Festplatte kaufen willst, beachte, dass alte PCs nicht mit modernen Festplattengrößen klarkommen. +
  • Einige alte PCs können nicht vom CD-ROM-Laufwerk booten. +
  • Falls dir der Begriff "BIOS" nichts sagt, bitte Menschen um Hilfe, bevor du was veränderst ;) +
  • Vergiss nicht, den CryptoBox-Rechner ans Netzwerk anzuschliessen! +
  • Du brauchst einen Monitor und eine Tastatur für die Konfiguration des BIOS. +

+

Kommentare

+

+ +

+
diff --git a/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBox.html b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBox.html new file mode 100644 index 0000000..c87150c --- /dev/null +++ b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBox.html @@ -0,0 +1,89 @@ + + + + + +
+

+

+ +

+

The CryptoBox

+

+deutsche Version +

+

News

+

+The first release of the CryptoBox is available at https://codecoop.org/projects/cryptobox/ +

+

Overview

+

+The CryptoBox is a Debian/Linux based live-cd. This CD boots up, starting a secure fileserver. Even non-technical users are able to store their data on its encrypted harddisk. There is no special knowledge about cryptography or servers required at all. +

+

Download

+

Specs

+ +
systemDebian/Linux based Live-CD +
needed hardware "outdated" PC (i386 p1-100 32MB RAM minimum) +
supported clients*nix; *bsd; Windows; Mac OS +
fileserversamba (network shares) +
userinterfacefully remote controlled via webbrowser +
encryptionAES via device-mapper +
+

+The web interface of the CryptoBox supports the following languages: +

+
  • English +
  • German +
  • Slovenian +

+Feel free to contribute a translation for another language (preferably utf-encoded). +

+

Documentation

+

+The user documentation has its home at CryptoBoxUser. +

+

Development

+

+Take a look at the developer's documentation at CryptoBoxDev. +

+

+Report bugs to https://systemausfall.org/trac/cryptobox/newticket. +

+

+Browse the source code. +

+

+Anything else? Write us an email: cryptobox[at]systemausfall.org +

+

Acknowledgements

+

+

  • Clavdia Horvat, Tadej Brce & Dušan Rebolj - slovenian translation +
  • http://codecoop.org - webspace +
+

+

Legal stuff

+
  1. All scripts are GPL licensed +
  2. The documentation is licensed under a Creative Commons License +
  3. We do not take any warranty for the functionality or usability of the CryptoBox. +

+

Comments

+

+ +

+
diff --git a/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxDev.html b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxDev.html new file mode 100644 index 0000000..ced5e8a --- /dev/null +++ b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxDev.html @@ -0,0 +1,107 @@ + + + + + +
+

+

+ +

+

+Navigation: ( CryptoBox/de, CryptoBox/en) + +

+
+

Development documentation

+

+The following pages are written for developers only.
+Users of the CryptoBox should read CryptoBoxUser instead. +

+

Source

+

+You may browse the source code. +

+

Contact

+

+We are waiting for your emails to cryptobox[at]systemausfall.org. +

+

Bug reports

+

+Please use our issue tracker, if you discover problems: https://systemausfall.org/trac/cryptobox/newticket +

+
+
+ + + diff --git a/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxDevBackground.html b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxDevBackground.html new file mode 100644 index 0000000..3e12ac3 --- /dev/null +++ b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxDevBackground.html @@ -0,0 +1,61 @@ + + + + + +
+

+

+

Table of Contents

+
    +
  1. dfsbuild
  2. +
  3. the kernel
  4. +
  5. qemu
  6. +
  7. alternative LiveCDs
  8. +
  9. Comments
  10. +
+
+ +

+

+Navigation: ( CryptoBoxDev) + +

+
+

Details of the CryptoBox

+

dfsbuild

+

+The base system of the CryptoBox Live-CD is created by dfsbuild. +

+

+It is recommended to use some kind of caching tool for the retrieval of the debian packages (e.g.: apt-cacher, apt-proxy or approx). This saves a lot of bandwidth and time. +

+

+The documentation for dfsbuild is sparse. But it is quite unlikely, that you will get in direct contact with it, as it is wrapped by cbox-build. However the following links may help you for specific problems: +

+

the kernel

+

+The linux kernel for the CryptoBox is compiled statically. If you want to change it, you could follow this steps: +

+
  1. get the sources: apt-get install kernel-tree-2.6.11 (or the version of your choice) +
  2. copy the exisiting config file kernel/config-2.6.11 as .config into your kernel source directory +
  3. build the debian kernel package make-kpkg --revision=1.dfs --rootcmd=fakeroot kernel_image +
  4. change the kernel in the unpackdebs setting in dfs-cbox.conf (see CryptoBoxDevCustomBuild for details) +

qemu

+

+Qemu is a portable system emulator. It is a convenient tool to ease the development workflow, as you do not need to burn LiveCDs for testing. +

+

alternative LiveCDs

+

+We tried some other LiveCDs before we decided to use dfsbuild. The following pages describe their advantages and disadvantages as the base system for the CryptoBox: +

+
+

Comments

+

+ +

+
diff --git a/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxDevCustomBuild.html b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxDevCustomBuild.html new file mode 100644 index 0000000..b975168 --- /dev/null +++ b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxDevCustomBuild.html @@ -0,0 +1,85 @@ + + + + + +
+

+

+ +

+

+Navigation: ( CryptoBoxDev, CryptoBoxDevBackground, CryptoBoxDevPreparation, CryptoBoxDevWorkFlow) + +

+
+

Custom builds of the CryptoBox

+

Overview

+

+The following sections are useful, if you want to change the default settings of your personal CryptoBox development environment. +

+

+You should have completed the steps described in CryptoBoxDevPreparation. +

+

Settings

+

dfsbuild settings

+

+All settings for dfsbuild can be found in etc-defaults.d/dfs-cbox.conf. +

+

+If you want to change any of them, you should do the following: +

+
  1. copy etc-defaults.d/dfs-cbox.conf file to etc-local.d/ +
  2. change etc-local.d/dfs-cbox.conf according to your needs +

+This allows you to use your own (personal) settings, without interfering with files under version control. +

+

CryptoBox development configuration

+

+Some settings regarding the building, configuring and validating of the CryptoBox can be found in etc-defaults.d/cbox-dev.conf. +

+

+If you want to change any of them, you should do the following: +

+
  1. copy etc-defaults.d/cbox-dev.conf file to etc-local.d/ +
  2. change etc-local.d/cbox-dev.conf according to your needs +

SSH connection

+

+The file ssh_config is used to establish a connection to a running CryptoBox system. +

+

+It can be necessary to change these settings, if: +

+
  • you do not want to use the default IP for the CryptoBox +
  • or the CryptoBox is not within your local network. +

+If you want to change some settings, you should do the following: +

+
  1. copy etc-defaults.d/ssh_config file to etc-local.d/ +
  2. change etc-local.d/ssh_config according to your needs +

qemu network configuration

+

+The file etc-defauolts.d/qemu-ifup is used for the CryptoBox emulation with qemu. See man qemu for details. +

+

+If you want to change some settings, you should do the following: +

+
  1. copy etc-defaults.d/qemu-ifup file to etc-local.d/ +
  2. change etc-local.d/qemu-ifup according to your needs +

+

Comments

+

+ +

+
diff --git a/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxDevCustomConfigure.html b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxDevCustomConfigure.html new file mode 100644 index 0000000..c823caf --- /dev/null +++ b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxDevCustomConfigure.html @@ -0,0 +1,60 @@ + + + + + +
+

+

+

Table of Contents

+
    +
  1. Overview
  2. +
  3. Locations
  4. +
  5. Examples
  6. +
  7. Comments
  8. +
+
+ +

+

+Navigation: ( CryptoBoxDev) + +

+
+

Custom configuration of the CryptoBox

+

Overview

+

+You may change nearly every aspect of the CryptoBox by using the custom configuration hook directory. +

+

+Any script inside of this directory will be executed after the default configuration procedure (see CryptoBoxDevWorkFlow). +

+

+The order of execution is defined by the names of the scripts (alphabetically). +

+

Locations

+

+Some example customization scripts can be found in configure-examples.d/. +

+

+You may put your scripts into configure-local.d/. They will be sourced by cbox-build.sh. +

+

Examples

+

+The examples in configure-examples.d/ can be copied to configure-local.d/ and adjusted to your needs. +

+ +
set_default_ipchange the default IP address of the CryptoBox +
set_default_languageset the default language +
set_default_timeoutset the default idle time for automatic unmounting +
set_hostnamechange the default hostname +
set_root_pwchange the password of root (only useful for a development CryptoBox) +
import_authorized_keysupload a ssh key for passwordless access to a development CryptoBox +
set_scan_deviceswhere to look for usable harddisks +
+
+

Comments

+

+ +

+
diff --git a/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxDevKnownProblems.html b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxDevKnownProblems.html new file mode 100644 index 0000000..abe55bd --- /dev/null +++ b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxDevKnownProblems.html @@ -0,0 +1,39 @@ + + + + + +
+

+

+ +

+

+Navigation: ( CryptoBoxDev) + +

+
+

Known problems

+

qemu

+

interleaved files not (yet) supported

+

+You should update qemu to version 0.7 or higher. +

+

smbd: segfault

+

+This happens under certain circumstances. We do not know a solution for this problem. +

+
+

Comments

+

+ +

+
diff --git a/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxDevPreparation.html b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxDevPreparation.html new file mode 100644 index 0000000..e8a78d7 --- /dev/null +++ b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxDevPreparation.html @@ -0,0 +1,77 @@ + + + + + +
+

+

+ +

+

+Navigation: ( CryptoBoxDev, CryptoBoxDevCustomBuild, CryptoBoxDevWorkFlow) + +

+
+

Preparations for developers

+

Software requirements

+

Packages

+

+We use Debian as our development environment. This was a natural choice, as the CryptoBox-LiveCD is also based on Debian. Other distributions should work too, of course - your mileage may vary. +

+

+required: +

+

+recommended: +

+

Kernel

+

+If you want to use qemu to test your CryptoBox in a virtual environment, then you will need the tun/tap kernel feature. +

+
CONFIG_TUN=m
+

Get the source

+

+Download the latest release from our subversion-Repository: +

+
svn checkout https://svn.systemausfall.org/svn/cryptobox/trunk
+

First build

+

+run scripts/cbox-build.sh release as root - hopefully, there should be no errors :) +

+

+Hint: This step will fail, if you did not install apt-cacher. See CryptoBoxDevCustomBuild for details on how to change the build-configuration settings (in this case: mirror in dfs-cbox.conf). +

+

Finished

+

+Now you can start to pariticipate in the development of the CryptoBox or simply customize your own CryptoBox-LiveCD. +

+

+See CryptoBoxDevWorkFlow for details of how to use the developer's tools of the CryptoBox. +

+

+CryptoBoxDevCustomBuild shows some examples for local customizations of the CryptoBox. +

+
+

Comments

+

+ +

+
diff --git a/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxDevValidation.html b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxDevValidation.html new file mode 100644 index 0000000..2511b22 --- /dev/null +++ b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxDevValidation.html @@ -0,0 +1,78 @@ + + + + + +
+

+

+

Table of Contents

+
    +
  1. Overview
  2. +
  3. Validate
  4. +
  5. How to create a test
  6. +
  7. Comments
  8. +
+
+ +

+

+Navigation: ( CryptoBoxDev) + +

+
+

Validation of the CryptoBox

+

Overview

+

+The validation feature helps you to check the programming logic of the CryptoBox. A lot of test cases are defined to verify as many functions of the CryptoBox as possible. +

+

+The requests are processed with curl. +

+

+The received web page is saved to allow a later design review or css debugging. +

+

+The current state of the CryptoBox is represented by ten single values (e.g.: box is configured, IP of the box, current language setting, ...), which are invisibly a part of each html page (as comments). The returned status of every request is compared to the predicted value of the test case. +

+

+Similar test cases are pooled into test groups (e.g.: initialization, configuration and mounting). +

+

Validate

+

+Run scripts/validate.sh] to conduct all tests of all groups. See scripts/validate.sh help for other actions. +

+

+The results will be saved in validation/report. +

+

+In addition to every single retrieved page, a html page called summary-?.html is created, which contains the state checks of all tests in a group. +

+

How to create a test

+

+All test cases can be found in validation/test-cases. +

+

+Every test consists of the following files: +

+ +
input.curlthe configuration file for the curl request +
outputthe predicted state of the CryptoBox after the call +
descriptiona short description of the test (will be used for the summary) +
delay[optional] time to wait after this test +
+

+Use the existing test cases as templates for new tests. +

+

+Read validation/test-cases/README for details. +

+

+Every logical path of the web interface CGI should be validated by a test case. +

+
+

Comments

+

+ +

+
diff --git a/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxDevWorkFlow.html b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxDevWorkFlow.html new file mode 100644 index 0000000..f3c3825 --- /dev/null +++ b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxDevWorkFlow.html @@ -0,0 +1,151 @@ + + + + + +
+

+

+ +

+

+Navigation: ( CryptoBoxDev, CryptoBoxDevCustomConfigure, CryptoBoxDevPreparation) + +

+
+

Development workflow

+

Preparations

+

+You should have completed the steps described in CryptoBoxDevPreparation. +

+

Create a CryptoBox-LiveCD

+

+The following steps can be executed in the order of their appearance. +

+

+Usually there is no need to repeat the whole process, after you changed some parts of the CryptoBox. Especially the first step (building of the base system with dfsbuild) may usually be skipped. +

+

+Every step of the building process must be executed as root. +

+

Build the base system

+

+Run scripts/cbox-build.sh dfsbuild to create the base system for the LiveCD. +

+

+The result can be found in _builddir/cd1/image. +

+

+If you do not want to use the apt-cacher to save bandwidth and time, then you should modify the mirror-setting in dfs-cbox.conf (see CryptoBoxDevCustomBuild for details). +

+

Configure the base image

+

+Run scripts/cbox-build.sh config to copy the CryptoBox-specific files to the base image. +

+

+TODO: link to cbox-build.sh-manpage +

+

Remove development features

+

+The original base system, that was created by dfsbuild contains a lot packages and some scripts, that are only useful during development. You should remove them, as they cause severe security implications. +

+

+To reduce the CryptoBox-LiveCD to the usable minimum for operational use, you should run scripts/cbox-build.sh harden. +

+

Create an iso image

+

+To burn a CryptoBox-LiveCD, you need an bootable iso9660-image. +

+

+Create the iso image with scripts/cbox-build.sh iso. The resulting file can be found at _builddir/cd1/cryptobox.iso. +

+

Burn the CD

+

+Do it manually: +

+
cdrecord -v dev=0,0,0 _builddir/cryptobox.iso
+

+(change the dev setting according to your setup). +

+

+Let the script do it for you: scripts/cbox-build.sh burn (maybe you have to change the CDWRITER setting in cbox-dev.conf - see CryptoBoxDevCustomBuild). +

+

+Of course, it is not wise to use CD-R media. CD-RW consume less resources. +

+

Test the CryptoBox-LiveCD

+

+This section is only useful for developers, who want to improve or change the CryptoBox system. +

+

Chroot: quick & dirty tests

+

+If you modified the perl- or shell-scripts of the CryptoBox, then you can check for syntax errors by running them in a chroot environment. Be careful: you have access to all ressources of your computer, while you are working within a chroot environment - so you can easily repartition your real disk ... +

+

+To start a chroot environment, you can execute scripts/cbox-dev.sh chroot. +

+

+For more intensive tests, you may use qemu (see below) or burn real LiveCDs - of course this would take much more time. +

+

Qemu: nearly complete emulation

+

+The processor emulator qemu allows you test the CryptoBox in a virtual environment, that is completely separated from your real computer's resources. It is the tool of choice, if you do nat have a real computer around for testing. +

+

+Beware - there are some problems, when using qemu: +

+
  • smbd does not start (segfault) +
  • ??? +

+To start a qemu emulation of the iso image, you may type: +

+
scripts/cbox-dev.sh qemu
+

Debugging and merging

+

+This section is only useful for developers, who want to develop on a running CryptoBox system (emulated or real). +

+

+You may access the CryptoBox directly or you can use ssh to open a remote session: +

+
./cbox-dev.sh ssh
+

Development on a running system

+

+When you run an emulation or test a real LiveCD, you may encounter problems and bugs. To test your fixes for these problems, it is convenient, to change the running test system. Afterwards you can merge these changes to your local development copy. +

+

+Type scripts/cbox-dev.sh diff to see the changes, you made on the running CryptoBox system. +

+

+Type scripts/cbox-dev.sh merge to merge these changes to your local working copy. +

+

Uploading a new release

+

+Alternatively you may also upload a new version of your local working copy to the running CryptoBox system. +

+

+Type scripts/cbox-dev.sh upload - beware: all recent changes you made to the running CryptoBox system, are lost. +

+
+

Comments

+

+ +

+
diff --git a/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxUser.html b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxUser.html new file mode 100644 index 0000000..a7e95d7 --- /dev/null +++ b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxUser.html @@ -0,0 +1,60 @@ + + + + + +
+

+

+ +

+

+Navigation: ( CryptoBox/en, CryptoBoxUser) + +

+
+

User Documentation

+

+The following pages describe the easy use of the CryptoBox. +

+

+The online version of this manual is a wiki, which means you can edit the pages. So if you have a question or you perceive a description as unclear, please post it on the bottom of the relevant page. The developers will answer your questions and update the manual as fast as possible. This way you can contribute in making the CryptoBox a better experience for everyone! +

+
  1. CryptoBoxUserGettingStarted -- first steps to get the Cryptobox up and running +
  2. CryptoBoxUserConfiguration -- configure the details of your new encrypted fileserver +
  3. CryptoBoxUserDailyUse -- daily use of your CryptoBox +

+The online version of this manual can be found at https://systemausfall.org/trac/cryptobox/wiki/CryptoBoxUser/en. +

+
+

Comments

+

+ +

+
diff --git a/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxUserConfiguration.html b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxUserConfiguration.html new file mode 100644 index 0000000..88236ba --- /dev/null +++ b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxUserConfiguration.html @@ -0,0 +1,103 @@ + + + + + +
+

+

+ +

+

+Navigation: ( CryptoBoxUser/en, CryptoBoxUserConfiguration) + +

+
+

Configuration of your CryptoBox

+

Overview

+

+All parts of administration of the CryptoBox are done through a comfortable web interface. If this is the first time you use the CryptoBox, just follow the steps below. +

+

+You can safely ignore the Foreword if you are in a hurry. +

+

+Initialization describes the process of integrating a new harddisk. You usually have to perform this steps if you start with a new CryptoBox or after replacing the harddisk. +

+

+In the Configuration section, you can configure the CryptoBox according to your personal needs, e.g. change your desired language for the web interface or change the IP address of the CryptoBox. +

+

+Do not forget to read the Hints / Caveats section too. +

+

Foreword

+

+Okay, you finished the CryptoBoxUserGettingStarted and are now sitting in front of a computer that is connected via network with your CryptoBox. You point a browser to "https://192.168.0.23" and the CryptoBox interface appears. +

+

+Before you can save data on your CryptoBox, its harddisk has to be formatted with a cryptographic filesystem. Sounds complicated but don't be scared - it's really a "one click" thing. :) +

+

Initialization

+

+Click on Initialize CryptoBox in the title bar. +

+

+Now you are promted to enter two passwords twice (because we want to train your typing skills ;). +

+
  • The first password is the administration password. +
    • It is used to protect the configuration of the CryptoBox. +
    • This is necessary to make sure, that no one without your permission can destroy your data by re-initializing the CryptoBox. +
    • Chances are good, that you will only need it once. +
    • You may leave it empty, but this is not recommended. +
  • The crypto password is the more important password, protecting the data on your harddisk. Choose it wisely! +
    • You will need it, whenever you want to access your encrypted data. +
    • For a secure password consider a length of at least 15 characters including digits and special characters. The security of your encrypted data stands or falls with a good password. +
  • To avoid mistakes and to remind you on what you're going to do, you have to type the displayed red phrase into the last field. +
  • Now you can complete the initialization by clicking on the Initialize !CryptoBox button at the bottom of the form. +

+That's all. Wasn't it a real "one click" thing? Cryptography has never been easier to use. ;) +

+

+The initialization process takes place in the background and will be completed after a few minutes, depending on your harddisk's size. +

+

Configuration

+

+While the initialization is usually done only once, the configuration can be changed at any time you want. You can reach it by clicking at Configuration in the menu bar of the website. Now you see a form with four fields: +

+
  • If you defined a administration passwort during Initialization, you have to enter it first. Otherwise this field does not appear. +
  • If the default network address (IP) doesn't fit into your network infrastructure, you can change it in the second field. +
  • The timeout defines the amount of time (in minutes) after that the CryptoBox deactivates the access to the encrypted data. If you e.g. copy a file on the box, it starts counting at zero, so down-/uploads won't be interrupted. +
  • It's good choice to enter a small number (few minutes). +
  • A timeout of 0 turns off the automatic deactivation - this is not recommended. +
  • At language preferences you can select the default language for the CryptoBox interface. +

+Complete your changes by clicking on Save configuration. +

+

+That's all - your CryptoBox is now ready for daily use! +

+

Hints / Caveats

+
  • All data on the CryptoBox harddisk will be erased during Initialization. +
  • All passwords have to be typed twice to reduce the chance of a typo. +
  • The optional adminstration password is necessary for configuration only. +
  • The crypto password protects your beloved data. +
  • If the cryptobox is not reachable by browsing to 192.168.0.23, you may have to adjust the network settings of your computer for initialization of the CryptoBox. +

+back to CryptoBoxUser +

+
+

Comments

+

+ +

+
diff --git a/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxUserDailyUse.html b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxUserDailyUse.html new file mode 100644 index 0000000..1f2b0c8 --- /dev/null +++ b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxUserDailyUse.html @@ -0,0 +1,114 @@ + + + + + +
+

+

+ +

+

+Navigation: ( CryptoBoxUser/en, CryptoBoxUserConfiguration/en, CryptoBoxUserDailyUse) + +

+
+

Daily use of the CryptoBox

+

Activate your encrypted filesystem

+

+You can activate your encrypted filesystem by doing following these steps: +

+
  • Point your web browser at the address of your CryptoBox. The default is https://192.168.0.23. +
  • Click on Activation of encrypted data. A new page asking for your crypto password appears. +
  • Enter your crypto password and click on the button below labeled activate encrypted filesystem. +

+Now the filesystem is accessible. To use it, search for a computer in your network neighborhood. When asked for the name, enter the above IP address (default: 192.168.0.23). Now you can use it like any other network resource. +

+

Use your encrypted data

+

Linux - command line

+

+To use the encrypted data partition with regular user rights add the line below to your /etc/fstab: +

+
//192.168.0.23/public   /mnt/    smbfs   defaults,noexec,noauto,user,guest      0       0
+

+Now you can mount the encrypted data partition to /mnt: +

+
mount /mnt
+

+resp. unmount: +

+
smbumount /mnt
+

Windows

+

+Run the the Windows Explorer and choose Map network drive in the Extras menu: +

+
  • select a drive of your choice +
  • enter \\192.168.0.23\public (default setting) as target +

+Now you can use your encrypted data like any other network resource. +

+

Deactivate your encrypted filesystem

+

+You can deactivate the encrypted filesystem by clicking at Deactivation of encrypted data in the web interface of your CryptoBox. +

+

+Your data is now protected again. +

+

Shut down your CryptoBox

+

+Click at the Shutdown link in the menu of the web interface. There you can choose poweroff or reboot. The shutdown takes some seconds. +

+

+If the hardware of your CryptoBox is quite recent, it will power-off automatically. Otherwise you have to do it manually. +

+

In case of emergency

+

+If you have to protect the drive really fast, just power-off the CryptoBox machine instantly by pulling the plug or pushing the power button. This is not very clean and can (in very rare circumstances) corrupt open files, but it is the fasted method to secure your data. +

+

+back to CryptoBoxUser +

+
+

Questions and Answers

+

Windows: network drive cannot be mapped

+

+This error message may appear, if you did not login during the booting of you windows machine (or you closed the login dialog by pressing ESC). +

+

+Solution: Choose Logout in the Start menu and login again. +

+

Linux: only root can unmount //192.168.0.23/public

+

+You can't unmount the partition with umount. +

+

+Solution: Use smbumount instead: +

+
smbumount /mnt
+

Linux: Operation not permitted / smbmnt failed: 1

+

+The attempt to mount the partition as a regular user ends up with: +

+
cannot mount on /mnt/: Operation not permitted
+smbmnt failed: 1
+

+Solution: Set the directory's owner to the same user that mounts the share (e.g. phil): +

+
chown phil. /mnt
+

+

Comments

+

+ +

+
diff --git a/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxUserGettingStarted.html b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxUserGettingStarted.html new file mode 100644 index 0000000..0ee4f8e --- /dev/null +++ b/luks/cbox-tree.d/usr/share/doc/cryptobox/html/en/CryptoBoxUserGettingStarted.html @@ -0,0 +1,64 @@ + + + + + +
+

+

+

Table of Contents

+
    +
  1. First Steps
  2. +
  3. Hints / Caveats
  4. +
  5. Comments
  6. +
+
+ +

+

+Navigation: ( CryptoBoxUser/en, CryptoBoxUserConfiguration/en, CryptoBoxUserGettingStarted) + +

+
+

Getting started

+

First Steps

+

+Getting the CryptoBox started doesn't take much: +

+
  1. You need an old Computer (at least 100MHz, 48MB RAM) (rule of thumb: bought at least after 1996). This PC needs a network card, a CD-ROM drive and a huge harddisk. +
    • Well the disk doesn't need to be huge, it should just suit your filestorage needs ;) +
    • You don't need a monitor or a keyboard to use your CryptoBox (with one exception, see below). +
    • Of course, you may use a faster computer, but they usually consume much more energy and do not provide signifcant advantages. +
  2. Then download the latest version of the CryptoBox as an iso-image and burn this image onto a CD. +
  3. Configure your PC, so it can boot from the CD. Therefore you have to enter the BIOS and configure the CD-ROM as boot device. +
  4. Insert the shiny new CryptoBox CD you've just burned and start the computer. +

+ +If it now boots from the CD, you accomplished all of the requirements. +

+

+Now you can just go to your current desktop computer and point your browser to https://192.168.0.23 where the CryptoBox interface should be displayed. Easy - isn't it? +

+

+For further steps go to CryptoBoxUserConfiguration. +

+

Hints / Caveats

+

+ +

+
  • Maybe you need to change the network address (IP) of your PC to configure the CryptoBox for the first time. Ask someone for help, if you don't know how and why ... +
  • If you're going to buy a new harddisk keep in mind that very old hardware can't handle current disk sizes! +
  • Some old PCs are not able to boot from CD. +
  • If you don't know what a BIOS is, better ask someone, before you try to change something. ;) +
  • Don't forget to connect your PC to your local area network! +
  • To configure the BIOS, you need a keyboard and a monitor. But this has to be done only once. +

+back to CryptoBoxUser +

+
+

Comments

+

+ +

+
diff --git a/luks/cbox-tree.d/var/www/cgi-bin/cryptobox.pl b/luks/cbox-tree.d/var/www/cgi-bin/cryptobox.pl new file mode 100755 index 0000000..91c4fee --- /dev/null +++ b/luks/cbox-tree.d/var/www/cgi-bin/cryptobox.pl @@ -0,0 +1,692 @@ +#!/usr/bin/perl +# $Id$ +# +# web interface of the CryptoBox +# + + +############################################### + +use strict; +use CGI; +use ClearSilver; +use ConfigFile; + +my $CONFIG_FILE = '/etc/cryptobox/cryptobox.conf'; + +my ($pagedata, $pagename); + +my ($LANGUAGE_DIR, $DEFAULT_LANGUAGE, $HTML_TEMPLATE_DIR, $DOC_DIR); +my ($CB_SCRIPT, $LOG_FILE, $IS_DEV); + +&fatal_error ("could not find configuration file ($CONFIG_FILE)") unless (-e $CONFIG_FILE); +my $config = ConfigFile::read_config_file($CONFIG_FILE); + +$CB_SCRIPT = $config->{CB_SCRIPT}; +$LOG_FILE = $config->{LOG_FILE}; +$LANGUAGE_DIR = $config->{LANGUAGE_DIR}; +$DEFAULT_LANGUAGE = $config->{LANGUAGE}; +$HTML_TEMPLATE_DIR = $config->{HTML_TEMPLATE_DIR}; +$DOC_DIR = $config->{DOC_DIR}; +$IS_DEV = ( -e $config->{DEV_FEATURES_SCRIPT}); + +my $query = new CGI; + + +#################### subs ###################### + +# for fatal errors without the chance of clearsilver-rendering +sub fatal_error() +{ + my $message = shift; + + print "Content-Type: text/html\n\n"; + print "CryptoBox\n"; + print "\n"; + print '

' . $message . "

\n"; + print "\n"; + die "[CryptoBox]: $message"; +} + + +sub load_hdf +{ + my $hdf = ClearSilver::HDF->new(); + + my $fname = "$HTML_TEMPLATE_DIR/main.cs"; + &fatal_error ("Template directory is invalid ($fname not found)!") unless (-e "$fname"); + $hdf->setValue("Settings.TemplateDir","$HTML_TEMPLATE_DIR"); + + &fatal_error ("Documentation directory ($DOC_DIR) not found!") unless (-d "$DOC_DIR"); + $hdf->setValue("Settings.DocDir","$DOC_DIR"); + + # if it was requested as directory index (link from index.html), we should + # set a real script name - otherwise links with a query string will break + # ignore POST part of the SCRIPT_NAME (after "&") + (my $script_url = $ENV{'SCRIPT_NAME'}) =~ m/^[^&]*/; + $hdf->setValue("ScriptName", ($ENV{'SCRIPT_NAME'} eq '/')? '/cryptobox' : $script_url ); + + &load_selected_language($hdf); + + &get_available_languages($hdf); + + return $hdf; +} + + +sub load_selected_language +{ + my $data = shift; + my $config_language; + + # load $DEFAULT_LANGUAGE - this is necessary, if a translation is incomplete + $data->readFile("$LANGUAGE_DIR/$DEFAULT_LANGUAGE" . ".hdf"); + + # load configured language, if it is valid + $config_language = `$CB_SCRIPT get_config language`; + $config_language = $DEFAULT_LANGUAGE unless (&validate_language("$config_language")); + + # check for preferred browser language, if the box was not initialized yet + if ( ! &check_config()) + { + my $prefLang = &get_browser_language(); + # take it, if a supported browser language was found + $config_language = $prefLang unless ($prefLang eq ''); + } + + ######### temporary language setting? ############ + # the default language can be overriden by the language links in the + # upper right of the page + if ($query->param('weblang')) { + my $weblang = $query->param('weblang'); + if (&validate_language($weblang)) { + # load the data + $config_language = "$weblang"; + # add the setting to every link + $data->setValue('Data.PostData.weblang', "$weblang"); + } else { + # no valid language was selected - so you may ignore it + $data->setValue('Data.Warning', 'InvalidLanguage'); + } + } + # import the configured resp. the temporarily selected language + $data->readFile("$LANGUAGE_DIR/$config_language" . ".hdf"); + + ########## select documentation language ########## + if (&validate_doc_language($config_language)) { + # selected web interface language + $data->setValue('Settings.DocLang', "$config_language"); + } elsif (&validate_doc_language($DEFAULT_LANGUAGE)) { + # configured CryptoBox language + $data->setValue('Settings.DocLang', "$DEFAULT_LANGUAGE"); + } else { + # default hardcoded language (english) + $data->setValue('Settings.DocLang', "en"); + } +} + + +sub get_available_languages +# import the names of all available languages +{ + my $data = shift; + my ($file, @files, $hdf, $lang_name); + + opendir(DIR, $LANGUAGE_DIR) or &fatal_error ("Language directory ($LANGUAGE_DIR) not accessible!"); + @files = sort grep { /.*\.hdf$/ } readdir(DIR); + close(DIR); + + foreach $file (@files) { + $hdf = ClearSilver::HDF->new(); + $hdf->readFile("$LANGUAGE_DIR/$file"); + substr($file, -4) = ""; + $lang_name = $hdf->getValue("Lang.Name", "$file"); + $data->setValue("Data.Languages." . "$file", "$lang_name"); + } +} + + +# look for preferred browser language setting +# this code was adapted from Per Cederberg - http://www.percederberg.net/home/perl/select.perl +# it returns an empty string, if no supported language was found +sub get_browser_language +{ + my ($str, @langs, @res); + + # Use language preference settings + if ($ENV{'HTTP_ACCEPT_LANGUAGE'} ne '') + { + @langs = split(/,/, $ENV{'HTTP_ACCEPT_LANGUAGE'}); + foreach (@langs) + { + # get the first part of the language setting + ($str) = ($_ =~ m/([a-z]+)/); + # check, if it supported by the cryptobox + $res[$#res+1] = $str if validate_language($str); + } + } + + # if everything fails - return empty string + $res[0] = "" if ($#res lt 0); + return $res[0]; +} + + +sub log_msg +{ + my $text = shift; + open(LOGFILE,">> $LOG_FILE"); + print LOGFILE "$text"; + close(LOGFILE); +} + + +sub check_ssl +{ + # BEWARE: dirty trick - is there a better way? + # stunnel is not in transparent mode -> that means, it replaces REMOTE_ADDR with + # its own IP (localhost, of course) + return ($ENV{'REMOTE_ADDR'} eq '127.0.0.1'); +} + + +sub check_mounted +{ + return (system("$CB_SCRIPT","is_crypto_mounted") == 0); +} + + +sub check_config +{ + return (system("$CB_SCRIPT","is_config_mounted") == 0); +} + + +sub check_init_running +{ + return (system("$CB_SCRIPT","is_init_running") == 0); +} + + +sub is_harddisk_available +{ + return (system("$CB_SCRIPT","is_harddisk_available") == 0); +} + +sub get_available_disks +# TODO: this is useful for diskselection buttons +{ + return `$CB_SCRIPT get_available_disks`; +} + +sub get_current_ip +# the IP of eth0 - not the configured value of the box (only for validation) +{ + return `$CB_SCRIPT get_current_ip`; +} + + +sub get_admin_pw +# returns the current administration password - empty, if it is not used +{ + return `$CB_SCRIPT get_config admin_pw`; +} + + +sub render +{ + $pagedata->setValue("PageName","$pagename"); + my $pagefile = "$HTML_TEMPLATE_DIR/main.cs"; + print "Content-Type: text/html\n\n"; + + my $cs = ClearSilver::CS->new($pagedata); + $cs->parseFile($pagefile); + + print $cs->render(); +} + + +sub mount_vol +{ + my $pw = shift; + + if (&check_mounted) { + $pagedata->setValue('Data.Warning', 'IsMounted'); + } else { + open(PW_INPUT, "| $CB_SCRIPT crypto-up"); + print PW_INPUT $pw; + close(PW_INPUT); + } +} + + +sub umount_vol +{ + if (&check_mounted) { + system("$CB_SCRIPT", "crypto-down"); + } else { + $pagedata->setValue('Data.Warning', 'NotMounted'); + } +} + + +sub box_init +{ + my ($crypto_pw, $admin_pw) = @_; + + # partitioning, config and initial cryptsetup + open(PW_INPUT, "|$CB_SCRIPT box-init-fg"); + print PW_INPUT $crypto_pw; + close(PW_INPUT); + + # set administration password + system("$CB_SCRIPT", "set_config", "admin_pw", "$admin_pw"); + + # wipe and mkfs takes some time - it will be done in the background + system("$CB_SCRIPT", "box-init-bg"); +} + +sub box_purge +{ + system("$CB_SCRIPT", "box-purge"); +} + +sub system_poweroff +{ + &umount_vol() if (&check_mounted()); + system("$CB_SCRIPT", "poweroff"); +} + + +sub system_reboot +{ + &umount_vol() if (&check_mounted()); + system("$CB_SCRIPT", "reboot"); +} + + +sub validate_ip +{ + my $ip = shift; + my @octets = split /\./, $ip; + return 0 if ($#octets == 4); + # check for values and non-digits + return 0 if ((@octets[0] <= 0) || (@octets[0] >= 255) || (@octets[0] =~ /\D/)); + return 0 if ((@octets[1] < 0) || (@octets[1] >= 255) || (@octets[1] =~ /\D/)); + return 0 if ((@octets[2] < 0) || (@octets[2] >= 255) || (@octets[2] =~ /\D/)); + return 0 if ((@octets[3] <= 0) || (@octets[3] >= 255) || (@octets[3] =~ /\D/)); + return 1; +} + + +sub validate_timeout +{ + my $timeout = shift; + return 0 if ($timeout =~ /\D/); + return 1; +} + + +# check for a valid interface language +sub validate_language +{ + my $language = shift; + # check for non-alphanumeric character + return 0 if ($language =~ /\W/); + return 0 if ($language eq ""); + return 0 if ( ! -e "$LANGUAGE_DIR/$language" . '.hdf'); + return 1; +} + + +# check for a valid documentation language +sub validate_doc_language +{ + my $language = shift; + # check for non-alphanumeric character + return 0 if ($language =~ /\W/); + return 0 if ($language eq ""); + return 0 if ( ! -e "$DOC_DIR/$language"); + return 1; +} + + +################### main ######################### + + +$pagedata = load_hdf(); + +# BEWARE: there are two kinds of actions: +# * some require a harddisk +# * some do not require a harddisk +# take care, that you put a new action into the appropriate block below + +# first: check for ssl! +if ( ! &check_ssl()) { + $pagedata->setValue('Data.Error', 'NoSSL'); + $pagedata->setValue('Data.Redirect.URL', "https://" . $ENV{'HTTP_HOST'} . $ENV{'SCRIPT_NAME'}); + $pagedata->setValue('Data.Redirect.Delay', "3"); +} elsif ($query->param('action')) { + my $action = $query->param('action'); + #--------------------------------------------------------------# + # here you may define all cases that do not require a harddisk # + # put all other cases below the harddisk check # + #--------------------------------------------------------------# + #################### show_log ####################### + if ($action eq 'show_log') { + $pagedata->setValue('Data.Action', 'show_log'); + ##################### doc ############################ + } elsif ($action eq 'doc') { + if ($query->param('page')) { + $pagedata->setValue('Data.Doc.Page', $query->param('page')); + $pagedata->setValue('Data.Action', 'show_doc'); + } else { + $pagedata->setValue('Data.Doc.Page', 'CryptoBoxUser'); + $pagedata->setValue('Data.Action', 'show_doc'); + } + ##################### poweroff ###################### + } elsif ($action eq 'shutdown_ask') { + $pagedata->setValue('Data.Action', 'form_shutdown'); + ##################### reboot ######################## + } elsif ($action eq 'shutdown_do') { + if ($query->param('type') eq 'reboot') { + &system_reboot(); + $pagedata->setValue('Data.Success', 'ReBoot'); + $pagedata->setValue('Data.Redirect.Action', 'show_status'); + $pagedata->setValue('Data.Redirect.Delay', "180"); + } else { + &system_poweroff(); + $pagedata->setValue('Data.Success', 'PowerOff'); + } + $pagedata->setValue('Data.Action', 'empty'); + ##################### check for a harddisk ########################## + # catch this error, to prevent all following actions from execution # + ##################################################################### + } elsif ( ! &is_harddisk_available()) { + $pagedata->setValue('Data.Error', 'NoHardDisk'); + #-------------------------------------------------------# + # here you may define all cases that require a harddisk # + #-------------------------------------------------------# + ################ umount_do ####################### + } elsif ($action eq 'umount_do') { + if ( ! &check_config()) { + $pagedata->setValue('Data.Warning', 'NotInitialized'); + $pagedata->setValue('Data.Action', 'form_init'); + } elsif (&check_init_running()) { + $pagedata->setValue('Data.Warning', 'InitNotFinished'); + $pagedata->setValue('Data.Action', 'empty'); + $pagedata->setValue('Data.Redirect.Action', 'form_config'); + $pagedata->setValue('Data.Redirect.Delay', "30"); + } elsif ( ! &check_mounted()) { + $pagedata->setValue('Data.Warning', 'NotMounted'); + $pagedata->setValue('Data.Action', 'empty'); + } else { + # unmounten + &umount_vol(); + if (&check_mounted()) { + $pagedata->setValue('Data.Warning', 'UmountFailed'); + $pagedata->setValue('Data.Action', 'form_umount'); + } else { + $pagedata->setValue('Data.Success', 'UmountDone'); + $pagedata->setValue('Data.Action', 'empty'); + $pagedata->setValue('Data.Redirect.Action', 'show_status'); + $pagedata->setValue('Data.Redirect.Delay', "30"); + } + } + ################ mount_do ######################## + } elsif ($action eq 'mount_do') { + # mount requested + if ( ! &check_config()) { + $pagedata->setValue('Data.Warning', 'NotInitialized'); + $pagedata->setValue('Data.Action', 'form_init'); + } elsif (&check_init_running()) { + $pagedata->setValue('Data.Warning', 'InitNotFinished'); + $pagedata->setValue('Data.Action', 'empty'); + $pagedata->setValue('Data.Redirect.Action', 'form_config'); + $pagedata->setValue('Data.Redirect.Delay', "30"); + } elsif (&check_mounted()) { + $pagedata->setValue('Data.Warning', 'IsMounted'); + $pagedata->setValue('Data.Action', 'empty'); + $pagedata->setValue('Data.Redirect.Action', 'show_status'); + $pagedata->setValue('Data.Redirect.Delay', "30"); + } elsif ($query->param('crypto_password') eq '') { + # leeres Passwort + $pagedata->setValue('Data.Warning', 'EmptyCryptoPassword'); + $pagedata->setValue('Data.Action', 'form_mount'); + } else { + # mounten + &mount_vol($query->param('crypto_password')); + if (!&check_mounted()) { + $pagedata->setValue('Data.Warning', 'MountFailed'); + $pagedata->setValue('Data.Action', 'form_mount'); + } else { + $pagedata->setValue('Data.Success', 'MountDone'); + $pagedata->setValue('Data.Action', 'empty'); + $pagedata->setValue('Data.Redirect.Action', 'show_status'); + $pagedata->setValue('Data.Redirect.Delay', "30"); + } + } + ################## mount_ask ####################### + } elsif ($action eq 'mount_ask') { + if ( ! &check_config()) { + $pagedata->setValue('Data.Warning', 'NotInitialized'); + $pagedata->setValue('Data.Action', 'form_init'); + } elsif (&check_init_running()) { + $pagedata->setValue('Data.Warning', 'InitNotFinished'); + $pagedata->setValue('Data.Action', 'empty'); + $pagedata->setValue('Data.Redirect.Action', 'form_config'); + $pagedata->setValue('Data.Redirect.Delay', "30"); + } elsif (&check_mounted()) { + $pagedata->setValue('Data.Warning', 'IsMounted'); + $pagedata->setValue('Data.Action', 'empty'); + $pagedata->setValue('Data.Redirect.Action', 'show_status'); + $pagedata->setValue('Data.Redirect.Delay', "30"); + } else { + $pagedata->setValue('Data.Action', 'form_mount'); + } + ################# umount_ask ######################## + } elsif ($action eq 'umount_ask') { + if ( ! &check_config()) { + $pagedata->setValue('Data.Warning', 'NotInitialized'); + $pagedata->setValue('Data.Action', 'form_init'); + } elsif ( ! &check_mounted()) { + $pagedata->setValue('Data.Warning', 'NotMounted'); + $pagedata->setValue('Data.Action', 'empty'); + $pagedata->setValue('Data.Redirect.Action', 'show_status'); + $pagedata->setValue('Data.Redirect.Delay', "30"); + } else { + $pagedata->setValue('Data.Action', 'form_umount'); + } + ################## init_ask ######################### + } elsif ($action eq 'init_ask') { + if (&check_init_running()) { + $pagedata->setValue('Data.Warning', 'InitNotFinished'); + $pagedata->setValue('Data.Action', 'form_config'); + } elsif (&check_config()) { + $pagedata->setValue('Data.Warning', 'AlreadyConfigured'); + $pagedata->setValue('Data.Action', 'form_init'); + } else { + $pagedata->setValue('Data.Action', 'form_init'); + } + #################### init_do ######################## + } elsif ($action eq 'init_do') { + my $current_admin_pw = &get_admin_pw; + if ($current_admin_pw ne '' && $current_admin_pw ne $query->param('current_admin_password')) { + $pagedata->setValue('Data.Warning', 'WrongAdminPassword'); + $pagedata->setValue('Data.Action', 'form_init'); + } elsif ($query->param('admin_password') ne $query->param('admin_password2')) { + # different admin-passwords + $pagedata->setValue('Data.Warning', 'DifferentAdminPasswords'); + $pagedata->setValue('Data.Action', 'form_init'); + } elsif ($query->param('crypto_password') ne $query->param('crypto_password2')) { + # different crypto-passwords + $pagedata->setValue('Data.Warning', 'DifferentCryptoPasswords'); + $pagedata->setValue('Data.Action', 'form_init'); + } elsif ($query->param('crypto_password') eq '') { + # empty password + $pagedata->setValue('Data.Warning', 'EmptyCryptoPassword'); + $pagedata->setValue('Data.Action', 'form_init'); + } elsif ($query->param('confirm') ne $pagedata->getValue('Lang.Text.ConfirmInit','')) { + # wrong confirm string + $pagedata->setValue('Data.Warning', 'InitNotConfirmed'); + $pagedata->setValue('Data.Action', 'form_init'); + } else { + # do init + &box_init($query->param('crypto_password'),$query->param('admin_password')); + if (!&check_init_running()) { + $pagedata->setValue('Data.Error', 'InitFailed'); + } else { + $pagedata->setValue('Data.Success', 'InitRunning'); + $pagedata->setValue('Data.Action', 'form_config'); + } + } + #################### config_ask ###################### + } elsif ($action eq 'config_ask') { + if ( ! &check_config()) { + $pagedata->setValue('Data.Warning', 'NotInitialized'); + $pagedata->setValue('Data.Action', 'form_init'); + } else { + $pagedata->setValue('Data.Action', 'form_config'); + } + #################### config_do ####################### + } elsif ($action eq 'config_do') { + if ( ! &check_config()) { + $pagedata->setValue('Data.Warning', 'NotInitialized'); + $pagedata->setValue('Data.Action', 'form_init'); + } else { + my $current_admin_pw = &get_admin_pw; + if ($current_admin_pw ne '' && $current_admin_pw ne $query->param('current_admin_password')) { + $pagedata->setValue('Data.Warning', 'WrongAdminPassword'); + $pagedata->setValue('Data.Action', 'form_config'); + } elsif ( ! &validate_language($query->param('language'))) { + $pagedata->setValue('Data.Warning', 'InvalidLanguage'); + $pagedata->setValue('Data.Action', 'form_config'); + } elsif ( ! &validate_ip($query->param('ip'))) { + $pagedata->setValue('Data.Warning', 'InvalidIP'); + $pagedata->setValue('Data.Action', 'form_config'); + } elsif ( ! &validate_timeout($query->param('timeout'))) { + $pagedata->setValue('Data.Warning', 'InvalidTimeOut'); + $pagedata->setValue('Data.Action', 'form_config'); + } else { + system("$CB_SCRIPT", "set_config", "language", $query->param('language')); + &load_selected_language($pagedata); + system("$CB_SCRIPT", "set_config", "timeout", $query->param('timeout')); + # check, if the ip was reconfigured + if ($query->param('ip') ne `$CB_SCRIPT get_config ip`) + { + # set the new value + system("$CB_SCRIPT", "set_config", "ip", $query->param('ip')); + # reconfigure the network interface + system("$CB_SCRIPT", "update_ip_address"); + # redirect to the new address + $pagedata->setValue('Data.Redirect.URL', "https://" . $query->param('ip') . $ENV{'SCRIPT_NAME'}); + $pagedata->setValue('Data.Redirect.Delay', "5"); + # display a warning for the redirection + $pagedata->setValue('Data.Warning', 'IPAddressChanged'); + } + # check for success + if (`$CB_SCRIPT get_config timeout` ne $query->param('timeout')) { + $pagedata->setValue('Data.Warning', 'ConfigTimeOutFailed'); + } elsif (`$CB_SCRIPT get_config ip` ne $query->param('ip')) { + $pagedata->setValue('Data.Warning', 'ConfigIPFailed'); + } elsif (`$CB_SCRIPT get_config language` ne $query->param('language')) { + $pagedata->setValue('Data.Warning', 'ConfigLanguageFailed'); + } else { + $pagedata->setValue('Data.Success', 'ConfigSaved'); + } + $pagedata->setValue('Data.Action', 'show_status'); + $pagedata->setValue('Data.Redirect.Action', 'show_status'); + $pagedata->setValue('Data.Redirect.Delay', "30"); + } + } + #################### status ######################### + } elsif ($action eq 'status') { + if ( ! &check_config()) { + $pagedata->setValue('Data.Warning', 'NotInitialized'); + $pagedata->setValue('Data.Action', 'form_init'); + } elsif (&check_init_running()) { + $pagedata->setValue('Data.Warning', 'InitNotFinished'); + $pagedata->setValue('Data.Action', 'empty'); + $pagedata->setValue('Data.Redirect.Action', 'form_config'); + $pagedata->setValue('Data.Redirect.Delay', "30"); + } else { + $pagedata->setValue('Data.Action', 'show_status'); + $pagedata->setValue('Data.Redirect.Action', 'show_status'); + $pagedata->setValue('Data.Redirect.Delay', "60"); + } + ################### box_purge ####################### + # if we find an existing config partition, then check the adminpw + } elsif ($action eq 'do_purge') { + if ( &check_config()) { + my $current_admin_pw = &get_admin_pw; + if ($current_admin_pw ne '' && $current_admin_pw ne $query->param('current_admin_password')) { + $pagedata->setValue('Data.Warning', 'WrongAdminPassword'); + $pagedata->setValue('Data.Action', 'form_config'); + } else { + &box_purge; + $pagedata->setValue('Data.Action', 'form_init'); + } + } + ################### unknown ######################### + } else { + $pagedata->setValue('Data.Error', 'UnknownAction'); + } +#################### default action ########################## +# check for a harddisk again, as this check was skipped +# because there was no action defined +} elsif ( ! &is_harddisk_available()) { + $pagedata->setValue('Data.Error', 'NoHardDisk'); +} else { + if (&check_init_running()) { + $pagedata->setValue('Data.Warning', 'InitNotFinished'); + $pagedata->setValue('Data.Action', 'empty'); + $pagedata->setValue('Data.Redirect.Action', 'form_config'); + $pagedata->setValue('Data.Redirect.Delay', "60"); + } elsif (&check_config()) { + $pagedata->setValue('Data.Action', 'show_status'); + $pagedata->setValue('Data.Redirect.Action', 'show_status'); + $pagedata->setValue('Data.Redirect.Delay', "60"); + } else { + $pagedata->setValue('Data.Action', 'form_init'); + } +} + +# check state of the cryptobox +$pagedata->setValue('Data.Status.Config', &check_config() ? 1 : 0); +$pagedata->setValue('Data.Status.InitRunning', &check_init_running() ? 1 : 0); +$pagedata->setValue('Data.Status.Mounted', &check_mounted() ? 1 : 0); +my $output = &get_current_ip(); +$pagedata->setValue('Data.Status.IP', "$output"); + +$output = &get_admin_pw(); +$pagedata->setValue('Data.Config.AdminPasswordIsSet', 1) if ($output ne ''); + +$output = `$CB_SCRIPT diskinfo 2>&1 | sed 's#\$#
#'`; +$pagedata->setValue('Data.PartitionInfo',"$output"); + +# preset config settings for clearsilver +$pagedata->setValue('Data.Config.IP', `$CB_SCRIPT get_config ip`); +$pagedata->setValue('Data.Config.TimeOut', `$CB_SCRIPT get_config timeout`); +$pagedata->setValue('Data.Config.Language', `$CB_SCRIPT get_config language`); + +# read log and add html linebreaks +$output = ''; +if (-e "$LOG_FILE") { + open(LOGFILE, "< $LOG_FILE"); + while () { $output .= "$_
" } + close(LOGFILE); +} +$pagedata->setValue('Data.Log',"$output"); + +$pagedata->setValue('Data.Status.DevelopmentMode', 1) if ($IS_DEV); + +# save QUERY_STRING (e.g. for weblang-links) +my $querystring = $ENV{'QUERY_STRING'}; +# remove weblang setting +$querystring =~ s/weblang=\w\w&?//; +$pagedata->setValue('Data.QueryString', "$querystring") if ($querystring ne ''); + +&render(); + +exit 0; + diff --git a/luks/cbox-tree.d/var/www/cryptobox b/luks/cbox-tree.d/var/www/cryptobox new file mode 120000 index 0000000..f2f2b71 --- /dev/null +++ b/luks/cbox-tree.d/var/www/cryptobox @@ -0,0 +1 @@ +cgi-bin/cryptobox.pl \ No newline at end of file diff --git a/luks/cbox-tree.d/var/www/cryptobox-img/antlogo100px.png b/luks/cbox-tree.d/var/www/cryptobox-img/antlogo100px.png new file mode 100644 index 0000000000000000000000000000000000000000..454709d24449e98d592fca0a2f5881fdad5fc054 GIT binary patch literal 7318 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 Ifq?M-4?;aU1poj5 literal 0 HcmV?d00001 diff --git a/luks/cbox-tree.d/var/www/cryptobox-img/list.gif b/luks/cbox-tree.d/var/www/cryptobox-img/list.gif new file mode 100644 index 0000000000000000000000000000000000000000..fe15cc981a0a53fdc20bd0c3328b9bbbd21f5a3c GIT binary patch literal 51 zcmZ?wbhEHbWM^P!XkcVWOH2Fz|G(l-7DfgJMg|=QAOOiQFmd(tOCI2OJ!{r71_o;Y DMwJZ7 literal 0 HcmV?d00001 diff --git a/luks/cbox-tree.d/var/www/cryptobox-img/screenshots/de_config.png b/luks/cbox-tree.d/var/www/cryptobox-img/screenshots/de_config.png new file mode 100644 index 0000000000000000000000000000000000000000..3dc322843e4b935ea8c69715599d8aa1b4c4995e GIT binary patch literal 80374 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ΜsRXIC1#n&pprc<09P}Zpz9)OZ(&PsnQNZ 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 literal 0 HcmV?d00001 diff --git a/luks/cbox-tree.d/var/www/cryptobox-img/screenshots/de_mount.png b/luks/cbox-tree.d/var/www/cryptobox-img/screenshots/de_mount.png new file mode 100644 index 0000000000000000000000000000000000000000..37920b2a84c3e58f2e3e6f5daa71ddee7c96f403 GIT binary patch literal 59615 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≷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