From ea73230db8a26a3d67a0f74c8695ad0bbbcd4b3c Mon Sep 17 00:00:00 2001 From: lars Date: Mon, 6 Nov 2006 16:05:00 +0000 Subject: [PATCH] moved pythonrewrite branch to trunk --- pythonrewrite/LICENSE | 340 - pythonrewrite/Makefile | 70 - pythonrewrite/README | 1 - pythonrewrite/bin-perl-old/Makefile | 37 - pythonrewrite/bin-perl-old/cbox-manage.sh | 474 - .../bin-perl-old/cbox-root-actions.sh | 341 - pythonrewrite/bin-perl-old/cryptobox.pl | 946 - .../bin-perl-old/cryptobox_wrapper.c | 21 - pythonrewrite/bin-perl-old/ro-system.sh | 191 - pythonrewrite/bin/CryptoBox.py | 276 - pythonrewrite/bin/CryptoBoxContainer.py | 607 - pythonrewrite/bin/CryptoBoxExceptions.py | 107 - pythonrewrite/bin/CryptoBoxPlugin.py | 165 - pythonrewrite/bin/CryptoBoxRootActions.py | 386 - pythonrewrite/bin/CryptoBoxSettings.py | 481 - pythonrewrite/bin/CryptoBoxTools.py | 186 - pythonrewrite/bin/CryptoBoxWebserver.py | 38 - pythonrewrite/bin/Plugins.py | 67 - pythonrewrite/bin/WebInterfaceDataset.py | 136 - pythonrewrite/bin/WebInterfaceSites.py | 427 - pythonrewrite/bin/WebInterfaceTestClass.py | 77 - pythonrewrite/bin/coding_guidelines.txt | 18 - pythonrewrite/bin/cryptobox.conf | 83 - pythonrewrite/bin/cryptoboxd | 39 - pythonrewrite/bin/cryptoboxwebserver.conf | 17 - pythonrewrite/bin/do_unittests.sh | 22 - pythonrewrite/bin/example-super.tab | 2 - pythonrewrite/bin/test.complete.CryptoBox.py | 116 - pythonrewrite/bin/uml-setup.sh | 23 - pythonrewrite/bin/unittests.CryptoBox.py | 138 - pythonrewrite/bin/unittests.CryptoBoxTools.py | 48 - pythonrewrite/bin/unittests.Plugins.py | 33 - pythonrewrite/bin/unittests.WebSites.py | 39 - pythonrewrite/conf-examples/cryptobox.conf | 36 - .../conf-examples/default-settings/admin_pw | 0 .../default-settings/cryptobox.marker | 0 .../conf-examples/default-settings/ip | 1 - .../conf-examples/default-settings/language | 1 - .../conf-examples/default-settings/names.db | 0 .../conf-examples/default-settings/timeout | 1 - .../conf-examples/default-settings/version | 1 - .../conf-examples/distributions/README | 11 - .../conf-examples/distributions/gnu_linux | 12 - pythonrewrite/debian/README.Debian | 5 - pythonrewrite/debian/changelog | 3 - pythonrewrite/debian/control | 18 - pythonrewrite/debian/copyright | 27 - pythonrewrite/debian/cryptobox.default | 12 - pythonrewrite/debian/cryptobox.init | 54 - pythonrewrite/debian/dirs | 4 - pythonrewrite/debian/links | 1 - pythonrewrite/debian/patches/00list | 0 pythonrewrite/debian/postinst | 43 - pythonrewrite/debian/postrm | 12 - pythonrewrite/debian/rules | 93 - .../design/background_frame_corner.svg | 265 - .../design/icon_background_active.svg | 92 - .../icons/applications-system_tango.svg | 245 - pythonrewrite/design/icons/computer_tango.svg | 738 - .../design/icons/dialog-error_tango.svg | 316 - .../design/icons/dialog-information_tango.svg | 1145 - .../design/icons/dialog-warning_tango.svg | 290 - .../design/icons/drive-cdrom_tango.svg | 444 - .../design/icons/drive-harddisk_tango.svg | 469 - .../icons/drive-removable-media_tango.svg | 390 - pythonrewrite/design/icons/globe-lips.svg | 512 - .../icons/gnome-dev-removable-usb_nuvola.svg | 1004 - .../design/icons/gnome-globe_nuvola.svg | 1195 - .../design/icons/gtk-zoom-in_nuvola.svg | 433 - pythonrewrite/design/icons/help_contents.svg | 701 - .../inaccessible_tango_emblem-unreadable.svg | 357 - pythonrewrite/design/icons/language.png | Bin 3520 -> 0 bytes .../icons/locked_tango-emblem-readonly.svg | 298 - .../icons/multimedia-dell-dj-pocket_tango.svg | 4405 ---- ...multimedia-player-ipod-mini-blue_tango.svg | 4126 --- .../multimedia-player-motorola-rokr_tango.svg | 1025 - .../icons/network-transmit-receive_design.svg | 1041 - .../design/icons/pile_of_devices.png | Bin 17218 -> 0 bytes .../design/icons/pile_of_devices.svg | 22002 ---------------- .../preferences-desktop-locale_tango.svg | 828 - .../design/icons/preferences-system_tango.svg | 396 - .../design/icons/redhat-config-users_wasp.svg | 1904 -- .../icons/seahorse-preferences_gnome.svg | 1250 - .../design/icons/spherecrystal_help.svg | 60 - .../design/icons/system-log-out_tango.svg | 362 - .../design/icons/unlocked_clavdia.svg | 515 - pythonrewrite/design/icons/unlocked_lars.svg | 1198 - pythonrewrite/design/logo/ameisenkopp.svg | 3242 --- pythonrewrite/design/logo/antlogo100px.png | Bin 7318 -> 0 bytes .../design/logo/antlogo100px_green.png | Bin 8624 -> 0 bytes .../design/logo/antlogo100px_red.png | Bin 8142 -> 0 bytes .../design/logo/antlogo100px_transp_red.png | Bin 11468 -> 0 bytes pythonrewrite/design/logo/boesetest.svg | 392 - pythonrewrite/design/logo/bubblebutton.svg | 774 - pythonrewrite/design/logo/entwurf.svg | 945 - pythonrewrite/design/logo/evil_stick.png | Bin 18297 -> 0 bytes pythonrewrite/design/logo/evil_stick.svg | 811 - pythonrewrite/design/logo/evil_stick2.png | Bin 17008 -> 0 bytes pythonrewrite/design/logo/evil_stick2.svg | 820 - pythonrewrite/design/logo/evil_stick3.png | Bin 17744 -> 0 bytes pythonrewrite/design/logo/evil_stick3.svg | 909 - .../design/logo/vault_pingu_gross.png | Bin 93838 -> 0 bytes .../design/logo/vault_pingu_uncut.png | Bin 121097 -> 0 bytes pythonrewrite/doc/README | 24 - pythonrewrite/doc/changelog | 28 - pythonrewrite/doc/copyright | 18 - pythonrewrite/doc/html/de/CryptoBox.html | 132 - pythonrewrite/doc/html/de/CryptoBoxDev.html | 94 - .../doc/html/de/CryptoBoxDevBackground.html | 64 - .../doc/html/de/CryptoBoxDevCustomBuild.html | 85 - .../html/de/CryptoBoxDevCustomConfigure.html | 60 - .../html/de/CryptoBoxDevKnownProblems.html | 46 - .../doc/html/de/CryptoBoxDevPreparation.html | 77 - .../doc/html/de/CryptoBoxDevValidation.html | 78 - .../doc/html/de/CryptoBoxDevWorkFlow.html | 156 - pythonrewrite/doc/html/de/CryptoBoxUser.html | 59 - .../html/de/CryptoBoxUserConfiguration.html | 125 - .../doc/html/de/CryptoBoxUserDailyUse.html | 139 - .../html/de/CryptoBoxUserGettingStarted.html | 76 - pythonrewrite/doc/html/en/CryptoBox.html | 154 - pythonrewrite/doc/html/en/CryptoBoxDev.html | 94 - .../doc/html/en/CryptoBoxDevBackground.html | 64 - .../doc/html/en/CryptoBoxDevCustomBuild.html | 85 - .../html/en/CryptoBoxDevCustomConfigure.html | 60 - .../html/en/CryptoBoxDevKnownProblems.html | 46 - .../doc/html/en/CryptoBoxDevPreparation.html | 77 - .../doc/html/en/CryptoBoxDevValidation.html | 78 - .../doc/html/en/CryptoBoxDevWorkFlow.html | 156 - pythonrewrite/doc/html/en/CryptoBoxUser.html | 60 - .../html/en/CryptoBoxUserConfiguration.html | 125 - .../doc/html/en/CryptoBoxUserDailyUse.html | 138 - .../html/en/CryptoBoxUserGettingStarted.html | 83 - pythonrewrite/doc/html/fr | 1 - pythonrewrite/doc/html/si | 1 - pythonrewrite/known_problems | 4 - pythonrewrite/lang/README | 37 - pythonrewrite/lang/TODO | 18 - pythonrewrite/lang/de.hdf | 230 - pythonrewrite/lang/en.hdf | 187 - pythonrewrite/lang/fr.hdf | 254 - pythonrewrite/lang/language_specification.txt | 24 - pythonrewrite/lang/si.hdf | 193 - pythonrewrite/plugins/date/date.py | 69 - pythonrewrite/plugins/date/form_date.cs | 44 - pythonrewrite/plugins/date/lang/en.hdf | 35 - pythonrewrite/plugins/date/plugin_icon.png | Bin 3285 -> 0 bytes pythonrewrite/plugins/date/root_action.py | 36 - pythonrewrite/plugins/date/unittests.py | 60 - pythonrewrite/plugins/disks/disks.cs | 17 - pythonrewrite/plugins/disks/disks.py | 17 - pythonrewrite/plugins/disks/lang/de.hdf | 6 - pythonrewrite/plugins/disks/lang/en.hdf | 6 - pythonrewrite/plugins/disks/plugin_icon.png | Bin 6279 -> 0 bytes pythonrewrite/plugins/disks/unittests.py | 9 - pythonrewrite/plugins/format_fs/format_fs.py | 95 - pythonrewrite/plugins/format_fs/lang/en.hdf | 49 - .../plugins/format_fs/plugin_icon.png | Bin 6376 -> 0 bytes pythonrewrite/plugins/format_fs/unittests.py | 10 - .../plugins/format_fs/volume_format.cs | 37 - .../plugins/format_fs/volume_format_luks.cs | 32 - pythonrewrite/plugins/help/doc.cs | 9 - pythonrewrite/plugins/help/help.py | 25 - pythonrewrite/plugins/help/lang/en.hdf | 5 - pythonrewrite/plugins/help/plugin_icon.png | Bin 12693 -> 0 bytes pythonrewrite/plugins/help/unittests.py | 29 - .../plugins/language_selection/lang/en.hdf | 5 - .../language_selection/language_selection.cs | 15 - .../language_selection/language_selection.py | 16 - .../language_selection/plugin_icon.png | Bin 13094 -> 0 bytes .../plugins/language_selection/unittests.py | 10 - pythonrewrite/plugins/logs/lang/en.hdf | 6 - pythonrewrite/plugins/logs/logs.css | 6 - pythonrewrite/plugins/logs/logs.py | 29 - pythonrewrite/plugins/logs/plugin_icon.png | Bin 16601 -> 0 bytes pythonrewrite/plugins/logs/show_log.cs | 19 - pythonrewrite/plugins/logs/unittests.py | 21 - pythonrewrite/plugins/network/form_network.cs | 30 - pythonrewrite/plugins/network/lang/en.hdf | 23 - pythonrewrite/plugins/network/network.py | 126 - pythonrewrite/plugins/network/plugin_icon.png | Bin 13698 -> 0 bytes pythonrewrite/plugins/network/root_action.py | 42 - pythonrewrite/plugins/network/unittests.py | 45 - .../partition/current_partition_info.cs | 11 - pythonrewrite/plugins/partition/lang/en.hdf | 83 - pythonrewrite/plugins/partition/partition.css | 4 - pythonrewrite/plugins/partition/partition.py | 416 - .../plugins/partition/plugin_icon.png | Bin 2943 -> 0 bytes .../plugins/partition/root_action.py | 96 - .../plugins/partition/select_device.cs | 45 - .../plugins/partition/set_partitions.cs | 78 - .../plugins/partition/show_format_progress.cs | 17 - pythonrewrite/plugins/partition/unittests.py | 10 - pythonrewrite/plugins/plugin-interface.txt | 63 - pythonrewrite/plugins/plugin_icon_unknown.png | Bin 14269 -> 0 bytes .../plugins/plugin_manager/lang/en.hdf | 15 - .../plugins/plugin_manager/plugin_icon.png | Bin 631 -> 0 bytes .../plugins/plugin_manager/plugin_list.cs | 65 - .../plugins/plugin_manager/plugin_manager.py | 52 - .../plugins/plugin_manager/unittests.py | 12 - .../plugins/shutdown/form_shutdown.cs | 15 - .../plugins/shutdown/gnome-reboot.png | Bin 3752 -> 0 bytes .../plugins/shutdown/gnome-shutdown.png | Bin 4532 -> 0 bytes pythonrewrite/plugins/shutdown/lang/en.hdf | 34 - .../plugins/shutdown/plugin_icon.png | Bin 7588 -> 0 bytes .../plugins/shutdown/progress_reboot.cs | 6 - .../plugins/shutdown/progress_shutdown.cs | 6 - pythonrewrite/plugins/shutdown/root_action.py | 48 - pythonrewrite/plugins/shutdown/shutdown.py | 51 - pythonrewrite/plugins/shutdown/unittests.py | 11 - .../plugins/system_preferences/lang/en.hdf | 5 - .../system_preferences/plugin_icon.png | Bin 12762 -> 0 bytes .../system_preferences/show_plugins.cs | 15 - .../system_preferences/system_preferences.py | 16 - .../plugins/system_preferences/unittests.py | 8 - .../plugins/user_manager/lang/en.hdf | 51 - .../plugins/user_manager/plugin_icon.png | Bin 10613 -> 0 bytes .../plugins/user_manager/unittests.py | 27 - .../plugins/user_manager/user_list.cs | 82 - .../plugins/user_manager/user_manager.py | 81 - .../plugins/volume_details/lang/en.hdf | 20 - .../plugins/volume_details/plugin_icon.png | Bin 11235 -> 0 bytes .../plugins/volume_details/unittests.py | 10 - .../plugins/volume_details/volume_details.cs | 21 - .../plugins/volume_details/volume_details.py | 18 - .../plugins/volume_mount/lang/en.hdf | 56 - .../plugins/volume_mount/plugin_icon.png | Bin 4535 -> 0 bytes .../plugins/volume_mount/unittests.py | 10 - .../plugins/volume_mount/volume_mount.cs | 18 - .../plugins/volume_mount/volume_mount.py | 103 - .../plugins/volume_mount/volume_status.cs | 9 - .../plugins/volume_mount/volume_umount.cs | 10 - .../plugins/volume_props/lang/en.hdf | 63 - .../plugins/volume_props/plugin_icon.png | Bin 15249 -> 0 bytes .../plugins/volume_props/unittests.py | 10 - .../plugins/volume_props/volume_properties.cs | 75 - .../plugins/volume_props/volume_props.py | 81 - pythonrewrite/scripts/check_languages.py | 106 - pythonrewrite/scripts/debian | 49 - pythonrewrite/scripts/show_TODO.sh | 9 - pythonrewrite/scripts/userdocexport.sh | 135 - pythonrewrite/stuff/cron-cryptobox | 1 - pythonrewrite/templates/access_denied.cs | 6 - pythonrewrite/templates/empty.cs | 6 - pythonrewrite/templates/footer.cs | 33 - pythonrewrite/templates/header.cs | 55 - pythonrewrite/templates/macros.cs | 174 - pythonrewrite/templates/main.cs | 10 - pythonrewrite/templates/show_volume.cs | 10 - pythonrewrite/templates/show_volume_footer.cs | 3 - pythonrewrite/templates/show_volume_header.cs | 21 - pythonrewrite/templates/volume_plugins.cs | 25 - pythonrewrite/www-data/antlogo100px.png | Bin 7318 -> 0 bytes pythonrewrite/www-data/antlogo100px_green.png | Bin 8624 -> 0 bytes pythonrewrite/www-data/antlogo100px_red.png | Bin 8142 -> 0 bytes pythonrewrite/www-data/backg.gif | Bin 13018 -> 0 bytes .../www-data/background_frame_corner.png | Bin 2355 -> 0 bytes .../www-data/background_frame_top.png | Bin 2109 -> 0 bytes pythonrewrite/www-data/cryptobox.css | 558 - pythonrewrite/www-data/dialog-error_tango.png | Bin 8750 -> 0 bytes .../www-data/dialog-information_tango.png | Bin 14120 -> 0 bytes .../www-data/dialog-warning_tango.png | Bin 7611 -> 0 bytes pythonrewrite/www-data/disc_gray.png | Bin 4524 -> 0 bytes pythonrewrite/www-data/disc_green.png | Bin 4936 -> 0 bytes pythonrewrite/www-data/disc_red.png | Bin 4988 -> 0 bytes pythonrewrite/www-data/evil_stick.png | Bin 32626 -> 0 bytes pythonrewrite/www-data/footer_line.png | Bin 262 -> 0 bytes .../www-data/icon_background_active.png | Bin 14372 -> 0 bytes .../www-data/icon_background_active_060.png | Bin 1845 -> 0 bytes .../www-data/icon_background_active_080.png | Bin 2891 -> 0 bytes .../www-data/icon_background_active_100.png | Bin 4101 -> 0 bytes .../www-data/icon_background_active_256.png | Bin 14372 -> 0 bytes .../www-data/icon_background_passive_060.png | Bin 1570 -> 0 bytes .../www-data/icon_background_passive_080.png | Bin 2338 -> 0 bytes .../www-data/icon_background_passive_100.png | Bin 3292 -> 0 bytes pythonrewrite/www-data/list.gif | Bin 51 -> 0 bytes pythonrewrite/www-data/pane_bottom_left.png | Bin 249 -> 0 bytes pythonrewrite/www-data/pane_bottom_right.png | Bin 249 -> 0 bytes pythonrewrite/www-data/pane_side_bottom.png | Bin 131 -> 0 bytes pythonrewrite/www-data/pane_side_left.png | Bin 131 -> 0 bytes pythonrewrite/www-data/pane_side_right.png | Bin 131 -> 0 bytes pythonrewrite/www-data/pane_side_top.png | Bin 133 -> 0 bytes pythonrewrite/www-data/pane_top_left.png | Bin 249 -> 0 bytes pythonrewrite/www-data/pane_top_right.png | Bin 273 -> 0 bytes pythonrewrite/www-data/register_active.png | Bin 560 -> 0 bytes pythonrewrite/www-data/register_active2.png | Bin 1078 -> 0 bytes pythonrewrite/www-data/register_passive.png | Bin 523 -> 0 bytes pythonrewrite/www-data/register_passive2.png | Bin 1087 -> 0 bytes .../www-data/screenshots/de_config.png | Bin 80374 -> 0 bytes .../www-data/screenshots/de_init.png | Bin 62123 -> 0 bytes .../www-data/screenshots/de_mount.png | Bin 59615 -> 0 bytes .../www-data/screenshots/de_w98_login.png | Bin 3650 -> 0 bytes .../screenshots/de_w98_network_drive.png | Bin 3345 -> 0 bytes .../screenshots/de_w98_not_logged_in.png | Bin 2914 -> 0 bytes .../www-data/screenshots/en_config.png | Bin 85007 -> 0 bytes .../www-data/screenshots/en_mount.png | Bin 71564 -> 0 bytes .../www-data/screenshots/en_w98_login.png | Bin 3504 -> 0 bytes .../screenshots/en_w98_network_drive.png | Bin 3013 -> 0 bytes .../screenshots/en_w98_not_logged_in.png | Bin 2853 -> 0 bytes pythonrewrite/www-data/smile.png | Bin 356 -> 0 bytes pythonrewrite/www-data/smile4.png | Bin 275 -> 0 bytes pythonrewrite/www-data/somerights20.gif | Bin 1835 -> 0 bytes .../www-data/volume_active_crypto.png | Bin 6590 -> 0 bytes .../www-data/volume_active_plain.png | Bin 5903 -> 0 bytes .../www-data/volume_passive_crypto.png | Bin 8140 -> 0 bytes .../www-data/volume_passive_plain.png | Bin 7661 -> 0 bytes .../www-data/volume_property_frame.png | Bin 6389 -> 0 bytes 306 files changed, 69727 deletions(-) delete mode 100644 pythonrewrite/LICENSE delete mode 100644 pythonrewrite/Makefile delete mode 100644 pythonrewrite/README delete mode 100644 pythonrewrite/bin-perl-old/Makefile delete mode 100755 pythonrewrite/bin-perl-old/cbox-manage.sh delete mode 100755 pythonrewrite/bin-perl-old/cbox-root-actions.sh delete mode 100755 pythonrewrite/bin-perl-old/cryptobox.pl delete mode 100644 pythonrewrite/bin-perl-old/cryptobox_wrapper.c delete mode 100644 pythonrewrite/bin-perl-old/ro-system.sh delete mode 100755 pythonrewrite/bin/CryptoBox.py delete mode 100755 pythonrewrite/bin/CryptoBoxContainer.py delete mode 100644 pythonrewrite/bin/CryptoBoxExceptions.py delete mode 100644 pythonrewrite/bin/CryptoBoxPlugin.py delete mode 100755 pythonrewrite/bin/CryptoBoxRootActions.py delete mode 100644 pythonrewrite/bin/CryptoBoxSettings.py delete mode 100644 pythonrewrite/bin/CryptoBoxTools.py delete mode 100755 pythonrewrite/bin/CryptoBoxWebserver.py delete mode 100644 pythonrewrite/bin/Plugins.py delete mode 100644 pythonrewrite/bin/WebInterfaceDataset.py delete mode 100755 pythonrewrite/bin/WebInterfaceSites.py delete mode 100644 pythonrewrite/bin/WebInterfaceTestClass.py delete mode 100644 pythonrewrite/bin/coding_guidelines.txt delete mode 100644 pythonrewrite/bin/cryptobox.conf delete mode 100755 pythonrewrite/bin/cryptoboxd delete mode 100644 pythonrewrite/bin/cryptoboxwebserver.conf delete mode 100755 pythonrewrite/bin/do_unittests.sh delete mode 100644 pythonrewrite/bin/example-super.tab delete mode 100755 pythonrewrite/bin/test.complete.CryptoBox.py delete mode 100755 pythonrewrite/bin/uml-setup.sh delete mode 100755 pythonrewrite/bin/unittests.CryptoBox.py delete mode 100755 pythonrewrite/bin/unittests.CryptoBoxTools.py delete mode 100755 pythonrewrite/bin/unittests.Plugins.py delete mode 100755 pythonrewrite/bin/unittests.WebSites.py delete mode 100644 pythonrewrite/conf-examples/cryptobox.conf delete mode 100644 pythonrewrite/conf-examples/default-settings/admin_pw delete mode 100644 pythonrewrite/conf-examples/default-settings/cryptobox.marker delete mode 100644 pythonrewrite/conf-examples/default-settings/ip delete mode 100644 pythonrewrite/conf-examples/default-settings/language delete mode 100644 pythonrewrite/conf-examples/default-settings/names.db delete mode 100644 pythonrewrite/conf-examples/default-settings/timeout delete mode 100644 pythonrewrite/conf-examples/default-settings/version delete mode 100644 pythonrewrite/conf-examples/distributions/README delete mode 100644 pythonrewrite/conf-examples/distributions/gnu_linux delete mode 100644 pythonrewrite/debian/README.Debian delete mode 100644 pythonrewrite/debian/changelog delete mode 100644 pythonrewrite/debian/control delete mode 100644 pythonrewrite/debian/copyright delete mode 100644 pythonrewrite/debian/cryptobox.default delete mode 100755 pythonrewrite/debian/cryptobox.init delete mode 100644 pythonrewrite/debian/dirs delete mode 100644 pythonrewrite/debian/links delete mode 100644 pythonrewrite/debian/patches/00list delete mode 100755 pythonrewrite/debian/postinst delete mode 100755 pythonrewrite/debian/postrm delete mode 100755 pythonrewrite/debian/rules delete mode 100644 pythonrewrite/design/background_frame_corner.svg delete mode 100644 pythonrewrite/design/icon_background_active.svg delete mode 100644 pythonrewrite/design/icons/applications-system_tango.svg delete mode 100644 pythonrewrite/design/icons/computer_tango.svg delete mode 100644 pythonrewrite/design/icons/dialog-error_tango.svg delete mode 100644 pythonrewrite/design/icons/dialog-information_tango.svg delete mode 100644 pythonrewrite/design/icons/dialog-warning_tango.svg delete mode 100644 pythonrewrite/design/icons/drive-cdrom_tango.svg delete mode 100644 pythonrewrite/design/icons/drive-harddisk_tango.svg delete mode 100644 pythonrewrite/design/icons/drive-removable-media_tango.svg delete mode 100644 pythonrewrite/design/icons/globe-lips.svg delete mode 100644 pythonrewrite/design/icons/gnome-dev-removable-usb_nuvola.svg delete mode 100644 pythonrewrite/design/icons/gnome-globe_nuvola.svg delete mode 100644 pythonrewrite/design/icons/gtk-zoom-in_nuvola.svg delete mode 100644 pythonrewrite/design/icons/help_contents.svg delete mode 100644 pythonrewrite/design/icons/inaccessible_tango_emblem-unreadable.svg delete mode 100644 pythonrewrite/design/icons/language.png delete mode 100644 pythonrewrite/design/icons/locked_tango-emblem-readonly.svg delete mode 100644 pythonrewrite/design/icons/multimedia-dell-dj-pocket_tango.svg delete mode 100644 pythonrewrite/design/icons/multimedia-player-ipod-mini-blue_tango.svg delete mode 100644 pythonrewrite/design/icons/multimedia-player-motorola-rokr_tango.svg delete mode 100644 pythonrewrite/design/icons/network-transmit-receive_design.svg delete mode 100644 pythonrewrite/design/icons/pile_of_devices.png delete mode 100644 pythonrewrite/design/icons/pile_of_devices.svg delete mode 100644 pythonrewrite/design/icons/preferences-desktop-locale_tango.svg delete mode 100644 pythonrewrite/design/icons/preferences-system_tango.svg delete mode 100644 pythonrewrite/design/icons/redhat-config-users_wasp.svg delete mode 100644 pythonrewrite/design/icons/seahorse-preferences_gnome.svg delete mode 100644 pythonrewrite/design/icons/spherecrystal_help.svg delete mode 100644 pythonrewrite/design/icons/system-log-out_tango.svg delete mode 100644 pythonrewrite/design/icons/unlocked_clavdia.svg delete mode 100644 pythonrewrite/design/icons/unlocked_lars.svg delete mode 100644 pythonrewrite/design/logo/ameisenkopp.svg delete mode 100644 pythonrewrite/design/logo/antlogo100px.png delete mode 100644 pythonrewrite/design/logo/antlogo100px_green.png delete mode 100644 pythonrewrite/design/logo/antlogo100px_red.png delete mode 100644 pythonrewrite/design/logo/antlogo100px_transp_red.png delete mode 100644 pythonrewrite/design/logo/boesetest.svg delete mode 100644 pythonrewrite/design/logo/bubblebutton.svg delete mode 100644 pythonrewrite/design/logo/entwurf.svg delete mode 100644 pythonrewrite/design/logo/evil_stick.png delete mode 100644 pythonrewrite/design/logo/evil_stick.svg delete mode 100644 pythonrewrite/design/logo/evil_stick2.png delete mode 100644 pythonrewrite/design/logo/evil_stick2.svg delete mode 100644 pythonrewrite/design/logo/evil_stick3.png delete mode 100644 pythonrewrite/design/logo/evil_stick3.svg delete mode 100644 pythonrewrite/design/logo/vault_pingu_gross.png delete mode 100644 pythonrewrite/design/logo/vault_pingu_uncut.png delete mode 100644 pythonrewrite/doc/README delete mode 100644 pythonrewrite/doc/changelog delete mode 100644 pythonrewrite/doc/copyright delete mode 100644 pythonrewrite/doc/html/de/CryptoBox.html delete mode 100644 pythonrewrite/doc/html/de/CryptoBoxDev.html delete mode 100644 pythonrewrite/doc/html/de/CryptoBoxDevBackground.html delete mode 100644 pythonrewrite/doc/html/de/CryptoBoxDevCustomBuild.html delete mode 100644 pythonrewrite/doc/html/de/CryptoBoxDevCustomConfigure.html delete mode 100644 pythonrewrite/doc/html/de/CryptoBoxDevKnownProblems.html delete mode 100644 pythonrewrite/doc/html/de/CryptoBoxDevPreparation.html delete mode 100644 pythonrewrite/doc/html/de/CryptoBoxDevValidation.html delete mode 100644 pythonrewrite/doc/html/de/CryptoBoxDevWorkFlow.html delete mode 100644 pythonrewrite/doc/html/de/CryptoBoxUser.html delete mode 100644 pythonrewrite/doc/html/de/CryptoBoxUserConfiguration.html delete mode 100644 pythonrewrite/doc/html/de/CryptoBoxUserDailyUse.html delete mode 100644 pythonrewrite/doc/html/de/CryptoBoxUserGettingStarted.html delete mode 100644 pythonrewrite/doc/html/en/CryptoBox.html delete mode 100644 pythonrewrite/doc/html/en/CryptoBoxDev.html delete mode 100644 pythonrewrite/doc/html/en/CryptoBoxDevBackground.html delete mode 100644 pythonrewrite/doc/html/en/CryptoBoxDevCustomBuild.html delete mode 100644 pythonrewrite/doc/html/en/CryptoBoxDevCustomConfigure.html delete mode 100644 pythonrewrite/doc/html/en/CryptoBoxDevKnownProblems.html delete mode 100644 pythonrewrite/doc/html/en/CryptoBoxDevPreparation.html delete mode 100644 pythonrewrite/doc/html/en/CryptoBoxDevValidation.html delete mode 100644 pythonrewrite/doc/html/en/CryptoBoxDevWorkFlow.html delete mode 100644 pythonrewrite/doc/html/en/CryptoBoxUser.html delete mode 100644 pythonrewrite/doc/html/en/CryptoBoxUserConfiguration.html delete mode 100644 pythonrewrite/doc/html/en/CryptoBoxUserDailyUse.html delete mode 100644 pythonrewrite/doc/html/en/CryptoBoxUserGettingStarted.html delete mode 120000 pythonrewrite/doc/html/fr delete mode 120000 pythonrewrite/doc/html/si delete mode 100644 pythonrewrite/known_problems delete mode 100644 pythonrewrite/lang/README delete mode 100644 pythonrewrite/lang/TODO delete mode 100644 pythonrewrite/lang/de.hdf delete mode 100644 pythonrewrite/lang/en.hdf delete mode 100644 pythonrewrite/lang/fr.hdf delete mode 100644 pythonrewrite/lang/language_specification.txt delete mode 100644 pythonrewrite/lang/si.hdf delete mode 100644 pythonrewrite/plugins/date/date.py delete mode 100644 pythonrewrite/plugins/date/form_date.cs delete mode 100644 pythonrewrite/plugins/date/lang/en.hdf delete mode 100644 pythonrewrite/plugins/date/plugin_icon.png delete mode 100755 pythonrewrite/plugins/date/root_action.py delete mode 100644 pythonrewrite/plugins/date/unittests.py delete mode 100644 pythonrewrite/plugins/disks/disks.cs delete mode 100644 pythonrewrite/plugins/disks/disks.py delete mode 100644 pythonrewrite/plugins/disks/lang/de.hdf delete mode 100644 pythonrewrite/plugins/disks/lang/en.hdf delete mode 100644 pythonrewrite/plugins/disks/plugin_icon.png delete mode 100644 pythonrewrite/plugins/disks/unittests.py delete mode 100644 pythonrewrite/plugins/format_fs/format_fs.py delete mode 100644 pythonrewrite/plugins/format_fs/lang/en.hdf delete mode 100644 pythonrewrite/plugins/format_fs/plugin_icon.png delete mode 100644 pythonrewrite/plugins/format_fs/unittests.py delete mode 100644 pythonrewrite/plugins/format_fs/volume_format.cs delete mode 100644 pythonrewrite/plugins/format_fs/volume_format_luks.cs delete mode 100644 pythonrewrite/plugins/help/doc.cs delete mode 100644 pythonrewrite/plugins/help/help.py delete mode 100644 pythonrewrite/plugins/help/lang/en.hdf delete mode 100644 pythonrewrite/plugins/help/plugin_icon.png delete mode 100644 pythonrewrite/plugins/help/unittests.py delete mode 100644 pythonrewrite/plugins/language_selection/lang/en.hdf delete mode 100644 pythonrewrite/plugins/language_selection/language_selection.cs delete mode 100644 pythonrewrite/plugins/language_selection/language_selection.py delete mode 100644 pythonrewrite/plugins/language_selection/plugin_icon.png delete mode 100644 pythonrewrite/plugins/language_selection/unittests.py delete mode 100644 pythonrewrite/plugins/logs/lang/en.hdf delete mode 100644 pythonrewrite/plugins/logs/logs.css delete mode 100644 pythonrewrite/plugins/logs/logs.py delete mode 100644 pythonrewrite/plugins/logs/plugin_icon.png delete mode 100644 pythonrewrite/plugins/logs/show_log.cs delete mode 100644 pythonrewrite/plugins/logs/unittests.py delete mode 100644 pythonrewrite/plugins/network/form_network.cs delete mode 100644 pythonrewrite/plugins/network/lang/en.hdf delete mode 100644 pythonrewrite/plugins/network/network.py delete mode 100644 pythonrewrite/plugins/network/plugin_icon.png delete mode 100755 pythonrewrite/plugins/network/root_action.py delete mode 100644 pythonrewrite/plugins/network/unittests.py delete mode 100644 pythonrewrite/plugins/partition/current_partition_info.cs delete mode 100644 pythonrewrite/plugins/partition/lang/en.hdf delete mode 100644 pythonrewrite/plugins/partition/partition.css delete mode 100644 pythonrewrite/plugins/partition/partition.py delete mode 100644 pythonrewrite/plugins/partition/plugin_icon.png delete mode 100755 pythonrewrite/plugins/partition/root_action.py delete mode 100644 pythonrewrite/plugins/partition/select_device.cs delete mode 100644 pythonrewrite/plugins/partition/set_partitions.cs delete mode 100644 pythonrewrite/plugins/partition/show_format_progress.cs delete mode 100644 pythonrewrite/plugins/partition/unittests.py delete mode 100644 pythonrewrite/plugins/plugin-interface.txt delete mode 100644 pythonrewrite/plugins/plugin_icon_unknown.png delete mode 100644 pythonrewrite/plugins/plugin_manager/lang/en.hdf delete mode 100644 pythonrewrite/plugins/plugin_manager/plugin_icon.png delete mode 100644 pythonrewrite/plugins/plugin_manager/plugin_list.cs delete mode 100644 pythonrewrite/plugins/plugin_manager/plugin_manager.py delete mode 100644 pythonrewrite/plugins/plugin_manager/unittests.py delete mode 100644 pythonrewrite/plugins/shutdown/form_shutdown.cs delete mode 100644 pythonrewrite/plugins/shutdown/gnome-reboot.png delete mode 100644 pythonrewrite/plugins/shutdown/gnome-shutdown.png delete mode 100644 pythonrewrite/plugins/shutdown/lang/en.hdf delete mode 100644 pythonrewrite/plugins/shutdown/plugin_icon.png delete mode 100644 pythonrewrite/plugins/shutdown/progress_reboot.cs delete mode 100644 pythonrewrite/plugins/shutdown/progress_shutdown.cs delete mode 100755 pythonrewrite/plugins/shutdown/root_action.py delete mode 100644 pythonrewrite/plugins/shutdown/shutdown.py delete mode 100644 pythonrewrite/plugins/shutdown/unittests.py delete mode 100644 pythonrewrite/plugins/system_preferences/lang/en.hdf delete mode 100644 pythonrewrite/plugins/system_preferences/plugin_icon.png delete mode 100644 pythonrewrite/plugins/system_preferences/show_plugins.cs delete mode 100644 pythonrewrite/plugins/system_preferences/system_preferences.py delete mode 100644 pythonrewrite/plugins/system_preferences/unittests.py delete mode 100644 pythonrewrite/plugins/user_manager/lang/en.hdf delete mode 100644 pythonrewrite/plugins/user_manager/plugin_icon.png delete mode 100644 pythonrewrite/plugins/user_manager/unittests.py delete mode 100644 pythonrewrite/plugins/user_manager/user_list.cs delete mode 100644 pythonrewrite/plugins/user_manager/user_manager.py delete mode 100644 pythonrewrite/plugins/volume_details/lang/en.hdf delete mode 100644 pythonrewrite/plugins/volume_details/plugin_icon.png delete mode 100644 pythonrewrite/plugins/volume_details/unittests.py delete mode 100644 pythonrewrite/plugins/volume_details/volume_details.cs delete mode 100644 pythonrewrite/plugins/volume_details/volume_details.py delete mode 100644 pythonrewrite/plugins/volume_mount/lang/en.hdf delete mode 100644 pythonrewrite/plugins/volume_mount/plugin_icon.png delete mode 100644 pythonrewrite/plugins/volume_mount/unittests.py delete mode 100644 pythonrewrite/plugins/volume_mount/volume_mount.cs delete mode 100644 pythonrewrite/plugins/volume_mount/volume_mount.py delete mode 100644 pythonrewrite/plugins/volume_mount/volume_status.cs delete mode 100644 pythonrewrite/plugins/volume_mount/volume_umount.cs delete mode 100644 pythonrewrite/plugins/volume_props/lang/en.hdf delete mode 100644 pythonrewrite/plugins/volume_props/plugin_icon.png delete mode 100644 pythonrewrite/plugins/volume_props/unittests.py delete mode 100644 pythonrewrite/plugins/volume_props/volume_properties.cs delete mode 100644 pythonrewrite/plugins/volume_props/volume_props.py delete mode 100755 pythonrewrite/scripts/check_languages.py delete mode 100755 pythonrewrite/scripts/debian delete mode 100755 pythonrewrite/scripts/show_TODO.sh delete mode 100755 pythonrewrite/scripts/userdocexport.sh delete mode 100644 pythonrewrite/stuff/cron-cryptobox delete mode 100644 pythonrewrite/templates/access_denied.cs delete mode 100644 pythonrewrite/templates/empty.cs delete mode 100644 pythonrewrite/templates/footer.cs delete mode 100644 pythonrewrite/templates/header.cs delete mode 100644 pythonrewrite/templates/macros.cs delete mode 100644 pythonrewrite/templates/main.cs delete mode 100644 pythonrewrite/templates/show_volume.cs delete mode 100644 pythonrewrite/templates/show_volume_footer.cs delete mode 100644 pythonrewrite/templates/show_volume_header.cs delete mode 100644 pythonrewrite/templates/volume_plugins.cs delete mode 100644 pythonrewrite/www-data/antlogo100px.png delete mode 100644 pythonrewrite/www-data/antlogo100px_green.png delete mode 100644 pythonrewrite/www-data/antlogo100px_red.png delete mode 100644 pythonrewrite/www-data/backg.gif delete mode 100644 pythonrewrite/www-data/background_frame_corner.png delete mode 100644 pythonrewrite/www-data/background_frame_top.png delete mode 100644 pythonrewrite/www-data/cryptobox.css delete mode 100644 pythonrewrite/www-data/dialog-error_tango.png delete mode 100644 pythonrewrite/www-data/dialog-information_tango.png delete mode 100644 pythonrewrite/www-data/dialog-warning_tango.png delete mode 100644 pythonrewrite/www-data/disc_gray.png delete mode 100644 pythonrewrite/www-data/disc_green.png delete mode 100644 pythonrewrite/www-data/disc_red.png delete mode 100644 pythonrewrite/www-data/evil_stick.png delete mode 100644 pythonrewrite/www-data/footer_line.png delete mode 100644 pythonrewrite/www-data/icon_background_active.png delete mode 100644 pythonrewrite/www-data/icon_background_active_060.png delete mode 100644 pythonrewrite/www-data/icon_background_active_080.png delete mode 100644 pythonrewrite/www-data/icon_background_active_100.png delete mode 100644 pythonrewrite/www-data/icon_background_active_256.png delete mode 100644 pythonrewrite/www-data/icon_background_passive_060.png delete mode 100644 pythonrewrite/www-data/icon_background_passive_080.png delete mode 100644 pythonrewrite/www-data/icon_background_passive_100.png delete mode 100644 pythonrewrite/www-data/list.gif delete mode 100644 pythonrewrite/www-data/pane_bottom_left.png delete mode 100644 pythonrewrite/www-data/pane_bottom_right.png delete mode 100644 pythonrewrite/www-data/pane_side_bottom.png delete mode 100644 pythonrewrite/www-data/pane_side_left.png delete mode 100644 pythonrewrite/www-data/pane_side_right.png delete mode 100644 pythonrewrite/www-data/pane_side_top.png delete mode 100644 pythonrewrite/www-data/pane_top_left.png delete mode 100644 pythonrewrite/www-data/pane_top_right.png delete mode 100644 pythonrewrite/www-data/register_active.png delete mode 100644 pythonrewrite/www-data/register_active2.png delete mode 100644 pythonrewrite/www-data/register_passive.png delete mode 100644 pythonrewrite/www-data/register_passive2.png delete mode 100644 pythonrewrite/www-data/screenshots/de_config.png delete mode 100644 pythonrewrite/www-data/screenshots/de_init.png delete mode 100644 pythonrewrite/www-data/screenshots/de_mount.png delete mode 100644 pythonrewrite/www-data/screenshots/de_w98_login.png delete mode 100644 pythonrewrite/www-data/screenshots/de_w98_network_drive.png delete mode 100644 pythonrewrite/www-data/screenshots/de_w98_not_logged_in.png delete mode 100644 pythonrewrite/www-data/screenshots/en_config.png delete mode 100644 pythonrewrite/www-data/screenshots/en_mount.png delete mode 100644 pythonrewrite/www-data/screenshots/en_w98_login.png delete mode 100644 pythonrewrite/www-data/screenshots/en_w98_network_drive.png delete mode 100644 pythonrewrite/www-data/screenshots/en_w98_not_logged_in.png delete mode 100644 pythonrewrite/www-data/smile.png delete mode 100644 pythonrewrite/www-data/smile4.png delete mode 100644 pythonrewrite/www-data/somerights20.gif delete mode 100644 pythonrewrite/www-data/volume_active_crypto.png delete mode 100644 pythonrewrite/www-data/volume_active_plain.png delete mode 100644 pythonrewrite/www-data/volume_passive_crypto.png delete mode 100644 pythonrewrite/www-data/volume_passive_plain.png delete mode 100644 pythonrewrite/www-data/volume_property_frame.png diff --git a/pythonrewrite/LICENSE b/pythonrewrite/LICENSE deleted file mode 100644 index b7b5f53..0000000 --- a/pythonrewrite/LICENSE +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/pythonrewrite/Makefile b/pythonrewrite/Makefile deleted file mode 100644 index bb2f6c6..0000000 --- a/pythonrewrite/Makefile +++ /dev/null @@ -1,70 +0,0 @@ -# -# Makefile for the cryptobox web-interface -# -# Copyright (c) 02006 senselab -# - -CRYPTOBOX_ROOT = . - -PREFIX = /usr/local -SHARE_DIR = $(PREFIX)/share/cryptobox -LIB_DIR = $(PREFIX)/lib/cryptobox -DOC_DIR = $(PREFIX)/share/doc/cryptobox -BUILD_DIR = build_dir -INSTALL = install - -OS_TYPE=$(shell uname -o | tr [:upper:] [:lower:] | sed s/[^a-z0-9\._\-]/_/g) - -.PHONY: install clean build - -build: - $(INSTALL) -d -m 755 $(BUILD_DIR)/etc - $(INSTALL) -c -m 644 conf-examples/cryptobox.conf $(BUILD_DIR)/etc/ - @sed -i 's#^HTML_TEMPLATE_DIR=.*$$#HTML_TEMPLATE_DIR=$(SHARE_DIR)/templates#' $(BUILD_DIR)/etc/cryptobox.conf - @sed -i 's#^LANGUAGE_DIR=.*$$#LANGUAGE_DIR=$(SHARE_DIR)/lang#' $(BUILD_DIR)/etc/cryptobox.conf - @sed -i 's#^DOC_DIR=.*$$#DOC_DIR=$(DOC_DIR)/html#' $(BUILD_DIR)/etc/cryptobox.conf - @sed -i 's#^CONFIG_DEFAULTS_DIR=.*$$#CONFIG_DEFAULTS_DIR=$(SHARE_DIR)/defaults#' $(BUILD_DIR)/etc/cryptobox.conf - - # choose the appropriate program_locations.conf - if test -e conf-examples/distributions/$(OS_TYPE) ; \ - then cat conf-examples/distributions/$(OS_TYPE) ;\ - else cat conf-examples/distributions/default ;\ - fi >$(BUILD_DIR)/etc/distribution.conf - - # compile the suid wrapper - $(MAKE) -C bin LIB_DIR=$(LIB_DIR) - @touch $(BUILD_DIR)-stamp - - -install: $(BUILD_DIR)-stamp - $(INSTALL) -d -m 755 $(LIB_DIR) - $(INSTALL) -c -m 755 bin/cbox-manage.sh $(LIB_DIR) - $(INSTALL) -c -m 755 bin/cbox-root-actions.sh $(LIB_DIR) - $(INSTALL) -c -m 755 bin/cryptobox.pl $(LIB_DIR) - $(INSTALL) -c -m 755 bin/cryptobox_cgi_wrapper $(LIB_DIR) - $(INSTALL) -c -m 4755 bin/cryptobox_root_wrapper $(LIB_DIR) - $(INSTALL) -d -m 755 $(SHARE_DIR)/lang - $(INSTALL) -c -m 644 lang/* $(SHARE_DIR)/lang/ - $(INSTALL) -d -m 755 $(SHARE_DIR)/templates - $(INSTALL) -c -m 644 templates/*.cs $(SHARE_DIR)/templates - $(INSTALL) -d -m 755 $(SHARE_DIR)/defaults - $(INSTALL) -c -m 644 conf-examples/default-settings/* $(SHARE_DIR)/defaults/ - $(INSTALL) -d -m 755 $(SHARE_DIR)/html - $(INSTALL) -c -m 644 www-data/*.css $(SHARE_DIR)/html/ - $(INSTALL) -c -m 644 www-data/*.png $(SHARE_DIR)/html/ - $(INSTALL) -c -m 644 www-data/*.gif $(SHARE_DIR)/html/ - #$(INSTALL) -d -m 755 $(SHARE_DIR)/html/screenshots - #$(INSTALL) -c -m 644 www-data/screenshots/*.png $(SHARE_DIR)/html/screenshots/ - $(INSTALL) -d -m 755 $(DOC_DIR)/html/en - $(INSTALL) -d -m 755 $(DOC_DIR)/html/de - $(INSTALL) -c -m 644 doc/html/en/* $(DOC_DIR)/html/en/ - $(INSTALL) -c -m 644 doc/html/de/* $(DOC_DIR)/html/de/ - $(INSTALL) -d -m 755 $(SHARE_DIR)/distributions - $(INSTALL) -c -m 644 conf-examples/distributions/* $(SHARE_DIR)/distributions/ - - -clean: - $(MAKE) -C bin clean - -rm -rf $(BUILD_DIR) - -rm -f $(BUILD_DIR)-stamp - diff --git a/pythonrewrite/README b/pythonrewrite/README deleted file mode 100644 index 2fa9850..0000000 --- a/pythonrewrite/README +++ /dev/null @@ -1 +0,0 @@ -link cbox-tree.d/usr/share/doc/cryptobox/README \ No newline at end of file diff --git a/pythonrewrite/bin-perl-old/Makefile b/pythonrewrite/bin-perl-old/Makefile deleted file mode 100644 index 6023795..0000000 --- a/pythonrewrite/bin-perl-old/Makefile +++ /dev/null @@ -1,37 +0,0 @@ -# Makefile to compile the binary suid-wrapper for cryptobox -# -# LIB_DIR should be defined in the higher level Makefile -# - -HEADER_FILE = cryptobox_wrapper.h -SRC_FILE = cryptobox_wrapper.c -CGI_SUID_FILE = cryptobox_cgi_wrapper -ROOT_SUID_FILE = cryptobox_root_wrapper - -CGI_FILENAME = cryptobox.pl -ROOT_SCRIPT_FILENAME = cbox-root-actions.sh -# fall back to default, if not overwritten -LIB_DIR = /usr/local/lib/cryptobox - - -# _always_ recompile (in case of a changed LIB_DIR) -.PHONY: build clean $(CGI_SUID_FILE) $(ROOT_SUID_FILE) - -build: $(CGI_SUID_FILE) $(ROOT_SUID_FILE) - - -$(CGI_SUID_FILE): $(SRC_FILE) - @echo '#define EXEC_PATH "$(LIB_DIR)/$(CGI_FILENAME)"' >$(HEADER_FILE) - $(CC) -o $(CGI_SUID_FILE) $(SRC_FILE) - -rm $(HEADER_FILE) - - -$(ROOT_SUID_FILE): $(SRC_FILE) - @echo '#define EXEC_PATH "$(LIB_DIR)/$(ROOT_SCRIPT_FILENAME)"' >$(HEADER_FILE) - $(CC) -o $(ROOT_SUID_FILE) $(SRC_FILE) - -rm $(HEADER_FILE) - - -clean: - -rm -f $(CGI_SUID_FILE) $(ROOT_SUID_FILE) $(HEADER_FILE) - diff --git a/pythonrewrite/bin-perl-old/cbox-manage.sh b/pythonrewrite/bin-perl-old/cbox-manage.sh deleted file mode 100755 index 30a82a6..0000000 --- a/pythonrewrite/bin-perl-old/cbox-manage.sh +++ /dev/null @@ -1,474 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 02005 sense.lab -# -# License: This script is distributed under the terms of version 2 -# of the GNU GPL. See the LICENSE file included with the package. -# -# $Id$ -# -# this script does EVERYTHING -# all other scripts are only frontends :) -# -# called by: -# - some rc-scripts -# - the web frontend cgi -# - -# TODO: check permissions and owners of config files, directories and scripts before -# running cbox-root-actions.sh - -set -eu - - -# default location of config file -CONF_FILE=/etc/cryptobox/cryptobox.conf - -LIB_DIR=$(dirname "$0") - -# to determine a nice default partition name -DEVICE_NAME_PREFIX="Disk #" - -# read the default setting file, if it exists -test -e /etc/default/cryptobox && . /etc/default/cryptobox - -test ! -e "$CONF_FILE" && echo "Could not find the configuration file: $CONF_FILE" >&2 && exit 1 - -# parse config file -. "$CONF_FILE" - -test ! -e "$CONF_FILE" && echo "Could not find the distribution specific configuration file: $CONF_FILE" >&2 && exit 1 - -# parse the distribution specific file -. "$DISTRIBUTION_CONF" - -# check for writable log file -test -w "$LOG_FILE" || LOG_FILE=/tmp/$(basename "$LOG_FILE") - -# retrieve configuration directory -CONFIG_DIR="$(getent passwd $CRYPTOBOX_USER | cut -d ':' -f 6)/config" -CONFIG_MARKER=cryptobox.marker - -## configuration -ROOT_PERM_SCRIPT="$LIB_DIR/cryptobox_root_wrapper" -# ROOT_PERM_SCRIPT needs the MNT_PARENT setting -export MNT_PARENT="$(cd ~; pwd)/mnt" - -######## stuff ########## - -# all partitions with a trailing number -ALL_PARTITIONS=$(cat /proc/partitions | sed '1,2d; s/ */ /g; s/^ *//' | cut -d " " -f 4 | grep '[0-9]$') - -######################### - -function log_msg() -{ - # the log file is (maybe) not writable during boot - try - # before writing ... - test -w "$LOG_FILE" || return 0 - echo >>"$LOG_FILE" - echo "##### `date` #####" >>"$LOG_FILE" - echo "$1" >>"$LOG_FILE" -} - - -function error_msg() -# parameters: ExitCode ErrorMessage -{ - local all=$@ - test $# -ne 2 && error_msg 1 "*** invalid call of error_msg *** $all" - echo "[`date`] - $2" | tee -a "$LOG_FILE" >&2 - # print the execution stack - not usable with busybox - # caller | sed 's/^/\t/' >&2 - exit "$1" -} - - -# Parameter: device -function is_device_allowed() { - # check for invalid characters and exit if one is found - local device=$(echo "$1" | sed 's#[^a-zA-Z0-9_\-\./]##g') - test "$1" = "$device" || return 1 - # remove leading "/dev/" - device=$(echo "$device" | sed 's#^/dev/##') - # return for empty name - test -z "$device" && return 1 - for a in $ALL_PARTITIONS - do echo "$device" | grep -q "^$a.*" && return 0 - done - # no matching device found - exit with error - return 1 -} - -function config_set_value() -# parameters: SettingName [SettingValue] -# read from stdin if SettingValue is not defined -{ - if test $# -gt 1 - then echo "$2" > "$CONFIG_DIR/$1" - else cat - >"$CONFIG_DIR/$1" - fi -} - - -function config_get_value() -# parameters: SettingName -{ - # use mounted config, if it exists - otherwise use defaults - local conf_dir - test -z "$1" && error_msg 1 "empty setting name" - # check for existence - maybe use default values (even for old - # releases that did not contain this setting) - if test -e "$CONFIG_DIR/$1" - then cat "$CONFIG_DIR/$1" - elif test -e "$CONFIG_DEFAULTS_DIR/$1" - then cat "$CONFIG_DEFAULTS_DIR/$1" - else case "$1" in - # you may place default values for older versions here - # for compatibility - * ) - error_msg 2 "unknown configuration value ($1)" - ;; - esac - fi - return 0 -} - - -function list_partitions_of_type() -# parameter: { config | crypto | plaindata | unused } -{ - local config= - local crypto= - local plaindata= - local unused= - for a in $ALL_PARTITIONS - do if "$ROOT_PERM_SCRIPT" is_crypto_partition "/dev/$a" - then crypto="$crypto /dev/$a" - elif "$ROOT_PERM_SCRIPT" is_config_partition "/dev/$a" - then config="$config /dev/$a" - elif "$ROOT_PERM_SCRIPT" is_plaindata_partition "/dev/$a" - then plaindata="$plaindata /dev/$a" - else unused="$unused /dev/$a" - fi - done - case "$1" in - config ) - echo "$config" - ;; - crypto ) - echo "$crypto" - ;; - plaindata ) - echo "$plaindata" - ;; - unused ) - echo "$unused" - ;; - * ) - error_msg 11 "wrong parameter ($1) for list_partition_types in $(basename $0)" - ;; - esac | tr " " "\n" | grep -v '^$' - return 0 -} - - -# Parameter: DEVICE -function get_device_mnt_name() { - "$ROOT_PERM_SCRIPT" get_device_mnt_name "$1" -} - - -# Parameter: DEVICE -function get_device_uuid() { - "$ROOT_PERM_SCRIPT" get_device_uuid "$1" -} - - -# Parameter: DEVICE -# return the readable name of the crypto container, if it is already defined -# if undefined - return the uuid -function get_device_name() { - local uuid=$(get_device_uuid "$1") - local dbname=$(config_get_value "names.db" | grep "^$uuid:" | cut -d ":" -f 2-) - # return dbname if it exists - test -n "$dbname" && echo "$dbname" && return 0 - # find a nice name for the new partition - local counter=1 - local test_name - local test_uuid - local test_result - # try to find a name with the defined "prefix" followed by a number ... - while true - do test_name="$DEVICE_NAME_PREFIX$counter" - if config_get_value "names.db" | grep -q ":$test_name$" - then counter=$((counter+1)) - else # save it for next time - set_device_name "$1" "$test_name" - echo "$test_name" - return 0 - fi - done -} - - -function set_device_name() -# TODO: the implementation is quite ugly, but it works (tm) -# Parameter: DEVICE NAME -{ - local uuid=$(get_device_uuid "$1") - # remove the old setting for this device and every possible entry with the same name - local new_config=$(config_get_value 'names.db' | sed "/^$uuid:/d; /^[^:]*:$2$/d"; echo "$uuid:$2") - echo "$new_config" | config_set_value "names.db" -} - - -function does_crypto_name_exist() -# Parameter: NAME -{ - config_get_value 'names.db' | grep -q "^[^:]*:$1$" -} - - -function create_crypto() -# Parameter: DEVICE NAME KEYFILE -# keyfile is necessary, to allow background execution via 'at' -{ - local device=$1 - local name=$2 - local keyfile=$3 - # otherwise the web interface will hang - # passphrase may be passed via command line - local key=$(<"$keyfile") - # remove the passphrase-file as soon as possible - dd if=/dev/zero of="$keyfile" bs=512 count=1 2>/dev/null - rm "$keyfile" - - log_msg "Creating crypto partition with the cipher $DEFAULT_CIPHER on $device" - echo "$key" | "$ROOT_PERM_SCRIPT" create_crypto "$device" - - set_crypto_name "$device" "$name" -} - - -function is_config_active() { - test -f "$CONFIG_DIR/$CONFIG_MARKER" -} - - -# Parameter: DEVICE -function is_mounted() { - local name=$(get_device_mnt_name "$1") - test -n "$name" && mountpoint -q "$MNT_PARENT/$name" -} - - -# Parameter: DEVICE -function is_plain() { - "$ROOT_PERM_SCRIPT" is_plain_partition "$1" -} - - -# Parameter: DEVICE -function is_encrypted() { - "$ROOT_PERM_SCRIPT" is_crypto_partition "$1" -} - - -# list which allowed disks are at the moment connected with the cbox -function get_available_disks() { - for scan in $SCAN_DEVICES - do for avail in $ALL_PARTITIONS - do echo "$avail" | grep -q "^$scan[^/]*" && echo "/dev/$avail" - done - done - return 0 -} - - -# Parameter: DEVICE -function mount_crypto() { - local device=$1 - test -z "$device" && error_msg 4 'No valid harddisk found!' - is_mounted "$device" && echo "The crypto filesystem is already active!" && return - # passphrase is read from stdin - log_msg "Mounting a crypto partition from $device" - "$ROOT_PERM_SCRIPT" mount "$device" >>"$LOG_FILE" 2>&1 -} - - -function umount_partition() { -# Parameter: device - local container=$(get_device_name "$1") - "$ROOT_PERM_SCRIPT" umount "$1" -} - - -function box_purge() -# removing just the first bytes from the harddisk should be enough -# every harddisk will be overriden! -# this feature is only useful for validation -{ - # TODO: not ALL harddisks, please! - get_available_disks | while read a - do log_msg "Purging $a ..." - "$ROOT_PERM_SCRIPT" trash_device "$a" - done -} - - -function turn_off_all_containers() { - # TODO - needs to be implemented - return 0 -} - - -### main ### - -# set PATH because thttpd removes /sbin and /usr/sbin for cgis -export PATH=/usr/sbin:/usr/bin:/sbin:/bin - - -ACTION=help -test $# -gt 0 && ACTION=$1 && shift - -case "$ACTION" in - crypto-up ) - test $# -ne 1 && error_msg 10 "invalid number of parameters for 'crypto-up'" - is_device_allowed "$1" || error_msg 12 "invalid device: $1" - mount_crypto "$1" - ;; - crypto-down ) - test $# -ne 1 && error_msg 10 "invalid number of parameters for 'crypto-down'" - is_device_allowed "$1" || error_msg 12 "invalid device: $1" - umount_partition "$1" - ;; - init ) - init_cryptobox >"$LOG_FILE" 2>&1 - ;; - list_container ) - test $# -ne 1 && error_msg 10 "invalid number of parameters for 'list_container'" - case "$1" in - config | unused | plaindata | crypto ) - list_partitions_of_type "$1" - ;; - * ) - return 1 - ;; - esac - return 0 - ;; - get_device_name ) - # Parameter: DEVICE - test $# -ne 1 && error_msg 10 "invalid number of parameters for 'get_device_name'" - is_device_allowed "$1" || error_msg 12 "invalid device: $1" - get_device_name "$1" - ;; - set_device_name ) - # Parameter: DEVICE NAME - test $# -ne 2 && error_msg 10 "invalid number of parameters for 'set_device_name'" - is_device_allowed "$1" || error_msg 12 "invalid device: $1" - set_device_name "$1" "$2" - ;; - device_init ) - # Parameter: DEVICE [KEYFILE] - test $# -lt 1 && error_msg 10 "invalid number of parameters for 'device_init' ($@)" - test $# -gt 2 && error_msg 10 "invalid number of parameters for 'device_init' ($@)" - if test $# -eq 2 - then test -z "$2" -o ! -e "$2" && error_msg 11 "invalid keyfile ($2) given for 'device_init'" - fi - is_device_allowed "$1" || error_msg 12 "invalid device: $1" - if test $# -eq 2 - then "$ROOT_PERM_SCRIPT" create_crypto "$1" "$2" - else "$ROOT_PERM_SCRIPT" create_plain "$1" - fi - true - ;; - is_mounted ) - test $# -ne 1 && error_msg 10 "invalid number of parameters for 'is_mounted'" - is_device_allowed "$1" || error_msg 12 "invalid device: $1" - is_mounted "$1" - ;; - is_encrypted ) - test $# -ne 1 && error_msg 10 "invalid number of parameters for 'is_encrypted'" - is_device_allowed "$1" || error_msg 12 "invalid device: $1" - is_encrypted "$1" - ;; - is_plain ) - test $# -ne 1 && error_msg 10 "invalid number of parameters for 'is_plain'" - is_device_allowed "$1" || error_msg 12 "invalid device: $1" - is_plain "$1" - ;; - check_config) - is_config_active - ;; - get_available_disks ) - get_available_disks - ;; - set_config ) - test $# -ne 2 && error_msg 7 "'set_config' requires two parameters" - config_set_value "$1" "$2" - ;; - get_config ) - test $# -ne 1 && error_msg 6 "'get_config' requires exactly one parameter" - config_get_value "$1" - ;; - get_capacity_info ) - test $# -ne 1 && error_msg 6 "'get_capacity_info' requires exactly one parameter" - is_device_allowed "$1" || error_msg 12 "invalid device: $1" - is_mounted "$1" || error_msg 13 "the device is not mounted: $1" - name=$(get_device_mnt_name "$1") - df -h "$MNT_PARENT/$name" | tail -1 - ;; - diskinfo ) - get_available_disks | while read a - do "$ROOT_PERM_SCRIPT" diskinfo "$a" - done 2>/dev/null - ;; - box-purge ) - log_msg "Cleaning the CryptoBox ..." - turn_off_all_containers - "$0" config-down - box_purge >>"$LOG_FILE" 2>&1 - ;; - poweroff ) - log_msg "Shutting down the Cryptobox ..." - turn_off_all_containers - "$ROOT_PERM_SCRIPT" poweroff - ;; - reboot ) - log_msg "Rebooting the Cryptobox ..." - turn_off_all_containers - "$ROOT_PERM_SCRIPT" reboot - ;; - umount_all ) - log_msg "Unmounting all volumes ..." - turn_off_all_containers - ;; - * ) - echo "[$(basename $0)] - unknown action: $ACTION" >&2 - echo "Syntax: $(basename $0) ACTION [PARAMS]" - echo " crypto-up - mount crypto partition" - echo " crypto-down - unmount crypto partition" - echo " crypto-create - a wrapper for 'crypto-create-bg'" - echo " crypto-create-bg - create encrypted blockdevice and run mkfs" - echo " is_mounted - check, if crypto partition is mounted" - echo " check_config - check, if the configuration is usable" - echo " get_available_disks - shows all accessible disks" - echo " get_current_ip - get the current IP of the network interface" - echo " set_config NAME VALUE - change a configuration setting" - echo " get_config NAME - retrieve a configuration setting" - echo " get_device_name DEVICE - retrieve the human readable name of a partition" - echo " set_device_name DEVICE - set the human readable name of a partition" - echo " device_init DEVICE KEYFILE - initialize the filesystem of a partition (the keyfile just contains the passphrase)" - echo " get_capacity_info - print the output of 'df' for the (mounted) partition" - echo " diskinfo - show the partition table of the harddisk" - echo " box-purge - destroy the partition tables of all harddisks (delete everything)" - echo " poweroff - turn off the computer" - echo " reboot - reboot the computer" - echo - ;; - esac - -exit 0 - diff --git a/pythonrewrite/bin-perl-old/cbox-root-actions.sh b/pythonrewrite/bin-perl-old/cbox-root-actions.sh deleted file mode 100755 index 9e25d7d..0000000 --- a/pythonrewrite/bin-perl-old/cbox-root-actions.sh +++ /dev/null @@ -1,341 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 02005 sense.lab -# -# License: This script is distributed under the terms of version 2 -# of the GNU GPL. See the LICENSE file included with the package. -# -# $Id$ -# -# this script is responsible for all dangerous actions, that require root privileges -# every action should be checked at least TWICE a day for open holes :) -# usually will get call via sudo -# -# called by: -# - cbox-manage.sh -# - -set -eu - -LIB_DIR=$(dirname "$0") -LIB_DIR=$(cd "$LIB_DIR"; pwd) - -test "$(id -u)" -ne 0 && echo "$(basename $0) - only root may call this script" >&2 && exit 100 - -# read the default setting file, if it exists -test -e /etc/default/cryptobox && . /etc/default/cryptobox - -# set CONF_FILE to default value, if not configured in /etc/default/cryptobox -CONF_FILE=${CONF_FILE:-/etc/cryptobox/cryptobox.conf} -# parse config file -. "$CONF_FILE" -# parse distribution specific file -. "$DISTRIBUTION_CONF" - -CB_SCRIPT="$LIB_DIR/cbox-manage.sh" -CONFIG_MARKER=cryptobox.marker - - -############ some useful functions ############### - -# check if the given device is part of the SCAN_DEVICE list -# every entry in SCAN_DEVICES is matched as "^/dev/${SCAN_DEVICE}[^/]*$" against -# the given device -# other devices may not be touched -function is_device_allowed() -# parameter: device -{ - for a in $SCAN_DEVICES - do echo "$1" | grep -q "^/dev/${a}[^/]*$" && return 0 - done - return 1 -} - - -# return the uuid of the partition (if possible) -# this works at least for luks, ext2/3 and vfat partitions -function get_device_uuid() { - local UUID - # check for luksUUID or ext2/3-uuid - if is_luks_device "$1" - then UUID=$("$CRYPTSETUP" luksUUID "$1") - else test -x "$BLKID" && UUID=$("$BLKID" -s UUID -o value -c /dev/null -w /dev/null "$1" 2>/dev/null) - fi - if test -z "$UUID" - then get_device_flat_name "$1" - else echo "$UUID" - fi - return 0 -} - - -# the device name is "flattened" -function get_device_flat_name() { - echo "$1" | sed 's#/#_#g' -} - - -# the basename of the mountpoint for this device - should be somehow human_readable -function get_device_mnt_name() { - "$CB_SCRIPT" get_device_name "$1" -} - - -# every devmapper name should look like a UUID -function is_uuid_valid() { - local hex=[0-9a-f] - echo "$1" | grep -q "^$hex\{8\}-$hex\{4\}-$hex\{4\}-$hex\{4\}-$hex\{12\}$" -} - - -# parameter ExitCode ErrorMessage -function error_msg() { - echo "CBOX-ERROR: [$(basename $0) - $ACTION] - $2" >&2 - exit $1 -} - - -# parameter: device sfdisk_layout_setup -# e.g.: /dev/hda "0,1,L \n,,L\n" -function partition_device() { - # TODO: allow different layouts - # TODO: skip config partition if a configuration is already active - # sfdisk -n doesn't actually write (for testing purpose) - if echo -e "$2" | "$SFDISK" -n "$1" - then echo -e "$2" | "$SFDISK" "$1" || return 1 - else return 2 - fi - true -} - - -function is_luks_device() -# parameter: device -{ - "$CRYPTSETUP" isLuks "$1" 2>/dev/null -} - - -################ main #################### - -ACTION=unknown -test $# -gt 0 && ACTION=$1 && shift - - -case "$ACTION" in - partition_disk ) - test $# -ne 2 && error_msg 1 "wrong number of parameters" - is_device_allowed "$1" || \ - error_msg 3 "this device ($1) is not listed in SCAN_DEVICES (see $CONF_FILE)" - partition_device "$1" "$2" || \ - error_msg 2 "failed to create new partition table on device $1" - ;; - mount ) - # parameters: device - # returns the relative name of the mointpoint for success - test $# -ne 1 && error_msg 1 "wrong number of parameters" - is_device_allowed "$1" || \ - error_msg 3 "this device ($1) is not listed in SCAN_DEVICES (see $CONF_FILE)" - mnt_name=$(get_device_mnt_name "$1") - mountpoint -q "$MNT_PARENT/$mnt_name" && \ - error_msg 5 "a device with the same name ($mnt_name) is already mounted" - mkdir -p "$MNT_PARENT/$mnt_name" - if is_luks_device "$1" - then "$CRYPTSETUP" luksOpen "$1" "$mnt_name" || \ - error_msg 6 "could not open encrypted device $1" - if mount "$DEV_MAPPER_DIR/$mnt_name" "$MNT_PARENT/$mnt_name" - then true - else "$CRYPTSETUP" luksClose "$mnt_name" || true - error_msg 7 "wrong password for $1 supplied" - fi - else mount "$1" "$MNT_PARENT/$mnt_name" || \ - error_msg 8 "invalid filesystem on device $1" - fi - # just in case, that there is no ext2/3 filesystem: - # set uid option (will fail silently for ext2/3) - # TODO: there is no FILE_USER setting anymore - do we still need it? - #mount -o remount,uid="$FILE_USER" "$MNT_PARENT/$name" 2>/dev/null || true - # adapt top-level permission to current setup - again: may fail silently - #chown "$FILE_USER" "$MNT_PARENT/$name" 2>/dev/null || true - true - ;; - umount ) - #parameter: device - test $# -ne 1 && error_msg 1 "wrong number of parameters" - is_device_allowed "$1" || \ - error_msg 3 "this device ($1) is not listed in SCAN_DEVICES (see $CONF_FILE)" - mnt_name=$(get_device_mnt_name "$1") - mountpoint -q "$MNT_PARENT/$mnt_name" || \ - error_msg 9 "the device ($1) is not mounted as '$mnt_name'" - # try to unmount - do it in lazy mode - umount -l "$MNT_PARENT/$mnt_name" - # TODO: check, what happens, if there are open files - does the device gets mapping removed? - # remove (if necessary) the device mapping - if test -e "$DEV_MAPPER_DIR/$mnt_name" - then "$CRYPTSETUP" luksClose "$mnt_name" || \ - error_msg 11 "could not remove the device mapper ($mnt_name) for device $1" - fi - # try to remove the mountpoint - a failure is not important - rmdir "$MNT_PARENT/$mnt_name" || true - # set exitcode - mountpoint -q "$MNT_PARENT/$mnt_name" && exit 1 - true - ;; - create_crypto ) - # parameter: device keyfile - test $# -ne 2 && error_msg 1 "wrong number of parameters" - keyfile=$2 - test -e "$keyfile" || error_msg 2 "keyfile ($keyfile) not found" - is_device_allowed "$1" || \ - error_msg 3 "this device ($1) is not listed in SCAN_DEVICES (see $CONF_FILE)" - # read the passphrase from stdin - # the iter-time is in milliseconds - keep it low for fast mounting - cat "$keyfile" | \ - "$CRYPTSETUP" --cipher "$DEFAULT_CIPHER" --iter-time 2000 --batch-mode luksFormat "$1" || \ - error_msg 11 "failed to create the encrypted partition" - name=$(get_device_mnt_name "$1") - cat "$keyfile" | "$CRYPTSETUP" --batch-mode luksOpen "$1" "$name" || \ - error_msg 12 "failed to open the encrypted partition" - # trash the passphrase in keyfile - echo "0123456789abcdefghijklmnopqrstuvwxyz" > "$keyfile" - # the disk cache surely prevents the previous line from being written, but we do it anyway ... - echo "zyxwvutsrqponmlkjihgfedcba9876543210" > "$keyfile" - rm "$keyfile" - # complete in background - ( - "$MKFS_DATA" "$DEV_MAPPER_DIR/$name" || \ - error_msg 13 "failed to create the encrypted filesystem" - "$CRYPTSETUP" --batch-mode luksClose "$name" || \ - error_msg 14 "failed to close the encrypted mapped device" - ) /dev/null 2>/dev/null & - true - ;; - create_plain ) - # parameter: device - test $# -ne 1 && error_msg 1 "wrong number of parameters for 'create_plain'" - is_device_allowed "$1" || \ - error_msg 3 "this device ($1) is not listed in SCAN_DEVICES (see $CONF_FILE)" - # complete in background - ( - "$MKFS_DATA" "$1" || \ - error_msg 15 "failed to create the plaintext filesystem" - ) /dev/null 2>/dev/null & - true - ;; - get_device_mnt_name ) - # parameter: device - test $# -ne 1 && error_msg 1 "wrong number of parameters" - is_device_allowed "$1" || \ - error_msg 3 "this device ($1) is not listed in SCAN_DEVICES (see $CONF_FILE)" - get_device_mnt_name "$1" - ;; - get_device_uuid ) - # parameter: device - test $# -ne 1 && error_msg 1 "wrong number of parameters" - is_device_allowed "$1" || \ - error_msg 3 "this device ($1) is not listed in SCAN_DEVICES (see $CONF_FILE)" - get_device_uuid "$1" - ;; - is_config_partition ) - # parameter: device - # returns exitcode 0 if the device contains a configuration - test $# -ne 1 && error_msg 1 "wrong number of parameters" - is_device_allowed "$1" || \ - error_msg 3 "this device ($1) is not listed in SCAN_DEVICES (see $CONF_FILE)" - is_config=0 - tmp_dir=/tmp/$(basename $0)-$$-mnt - mkdir -p "$tmp_dir" - # error means "no config partition" - if mount "$1" "$CONFIG_DIR" - then test -e "$CONFIG_DIR/$CONFIG_MARKER" && is_config=1 - umount "$CONFIG_DIR" || \ - error_msg 14 "unable to unmount configation partition after probing" - fi - rmdir "$tmp_dir" || true - # return 0 if $device is a config partition - test "$is_config" -eq 1 && exit 0 - exit 1 - ;; - is_crypto_partition ) - # parameter: device - # returns exitcode 0 if the device contains a luks header - test $# -ne 1 && error_msg 1 "wrong number of parameters" - is_device_allowed "$1" || \ - error_msg 3 "this device ($1) is not listed in SCAN_DEVICES (see $CONF_FILE)" - is_luks_device "$1" - ;; - is_plain_partition ) - # parameter: device - # returns exitcode 0 if the device contains a readable filesystem - test $# -ne 1 && error_msg 1 "wrong number of parameters" - is_device_allowed "$1" || \ - error_msg 3 "this device ($1) is not listed in SCAN_DEVICES (see $CONF_FILE)" - status=0 - tmp_dir=/tmp/$(basename $0)-$$-mnt - mkdir -p "$tmp_dir" - if mount "$1" "$tmp_dir" >/dev/null 2>/dev/null - then test ! -e "$tmp_dir/$CONFIG_MARKER" && status=1 - umount "$tmp_dir" - fi - rmdir "$tmp_dir" || true - test "$status" -eq 1 && exit 0 - exit 1 - ;; - trash_device ) - # parameter: device - test $# -ne 1 && error_msg 1 "wrong number of parameters" - is_device_allowed "$1" || \ - error_msg 3 "this device ($1) is not listed in SCAN_DEVICES (see $CONF_FILE)" - dd if=/dev/urandom of="$1" bs=512 count=1 2>/dev/null - ;; - diskinfo ) - # parameter: device - test $# -ne 1 && error_msg 1 "wrong number of parameters" - is_device_allowed "$1" || \ - error_msg 3 "this device ($1) is not listed in SCAN_DEVICES (see $CONF_FILE)" - "$SFDISK" -L -q -l "$1" - ;; - update_network ) - # parameter: none - ip= - # TODO: can we avoid to hard-code the filename ($CONFIG_DIR/ip) here? - test -e "$CONFIG_DIR/ip" && ip=$(<"$CONFIG_DIR/ip") - test -n "$z" && ifconfig "$NET_IFACE" "$ip" - ;; - poweroff ) - # TODO: check configuration setting before - "$POWEROFF" - ;; - reboot ) - # TODO: check configuration setting before - "$REBOOT" - ;; - * ) - echo "[$(basename $0)] - unknown action: $ACTION" >&2 - echo "Syntax: $(basename $0) ACTION PARAMETERS" - echo ' partition_disk $device $disk_layout' - echo ' get_device_name $device' - echo ' get_device_uuid $device' - echo ' create_crypto $device' - echo ' mount $device' - echo ' umount $name' - echo ' create_config $device' - echo ' mount_config $device' - echo ' remount_config { ro | rw }' - echo ' umount_config' - echo ' is_config_partition $device' - echo ' is_plain_partition $device' - echo ' is_crypto_partition $device' - echo ' trash_device $device' - echo ' diskinfo $device' - echo ' update_network' - echo ' poweroff' - echo ' reboot' - echo ' help' - echo - test "$ACTION" = "help" && exit 0 - # return error for any unknown/unspecified action - exit 1 - ;; - esac - diff --git a/pythonrewrite/bin-perl-old/cryptobox.pl b/pythonrewrite/bin-perl-old/cryptobox.pl deleted file mode 100755 index 7f36806..0000000 --- a/pythonrewrite/bin-perl-old/cryptobox.pl +++ /dev/null @@ -1,946 +0,0 @@ -#!/usr/bin/perl -# -# Copyright (c) 02005 sense.lab -# -# License: This script is distributed under the terms of version 2 -# of the GNU GPL. See the LICENSE file included with the package. -# -# $Id$ -# -# the web interface of the CryptoBox -# - - -############################################### - -use strict; -use CGI; -use ClearSilver; -use ConfigFile; -use English; -use CGI::Carp; -use IO::File; -use POSIX; - -use constant CRYPTOBOX_VERSION => 0.3; - -# debug levels -use constant DEBUG_NONE => 0; -use constant DEBUG_ERROR => 1; -use constant DEBUG_WARN => 2; -use constant DEBUG_INFO => 3; - -# drop privileges -$UID = $EUID; -$GID = $EGID; - -# necessary for suid perl scripts (see 'man perlsec' for details) -$ENV{'PATH'} = '/bin:/usr/bin'; -delete @ENV{qw(IFS CDPATH ENV BASH_ENV)}; # Make %ENV safer - -my $CONFIG_FILE = '/etc/cryptobox/cryptobox.conf'; - -my $pagedata; - -my ($LANGUAGE_DIR, $DEFAULT_LANGUAGE, $HTML_TEMPLATE_DIR, $DOC_DIR); -my ($CB_SCRIPT, $LOG_FILE, $IS_DEVEL, $STYLESHEET_URL, $DEBUG_LEVEL); - -# get the directory of the cryptobox scripts/binaries and untaint it -$CB_SCRIPT = $0; -$CB_SCRIPT =~ m/^(.*)\/[^\/]*$/; -$CB_SCRIPT = ($1)? "$1/cbox-manage.sh" : './cbox-manage.sh'; - -&fatal_error ("could not find configuration file ($CONFIG_FILE)") unless (-e $CONFIG_FILE); -my $config = ConfigFile::read_config_file($CONFIG_FILE); - -$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_DEVEL = ( -e $config->{DEV_FEATURES_SCRIPT}); -$STYLESHEET_URL = $config->{STYLESHEET_URL}; -if (defined($config->{DEBUG_LEVEL})) { - $DEBUG_LEVEL = $config->{DEBUG_LEVEL}; -} else { - $DEBUG_LEVEL = DEBUG_ERROR; # default debug level -} - -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 debug_msg() { - my ($level, $message) = @_; - return 0 unless ($level >= $DEBUG_LEVEL); - warn "[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 ); - - # set stylesheet url - $hdf->setValue("Settings.Stylesheet",$STYLESHEET_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 = &get_cbox_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 - # how it should be done now ... - $data->setValue('Settings.LinkAttrs.weblang', "$weblang"); - # old way of doing this ... (TODO: to be removed) - $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"); - } -} - - -# import the names of all available languages -sub get_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 { - # check, if we are behind a proxy with ssl (e.g. pound) - return (0==0) if ($ENV{'HTTP_FRONT_END_HTTPS'} =~ m/^on$/i); - # environment variable set (e.g. via apache directive "SetEnv HTTPS On") - return (0==0) if ($ENV{'HTTPS'} =~ m/^on$/i); - # port 80 -> not encrypted - return (0==1) if ($ENV{'SERVER_PORT'} == 80); - # other ports -> maybe ok - we accept it - return (0==0); -} - - -# check, if the given device is mounted/used somehow -# Paramter: device -sub check_mounted { - my ($dev) = @_; - return (system($CB_SCRIPT,"is_mounted",$dev) == 0); -} - - -sub check_config { - return (system($CB_SCRIPT,"check_config") == 0); -} - - -sub exec_cb_script { - my (@params) = @_; - my ($pid, @result); - &fatal_error("unable to fork process") unless defined($pid = open(PROG_OUT, "-|")); - if (!$pid) { - # child - exec($CB_SCRIPT, @params) or &fatal_error("failed to execute $CB_SCRIPT!"); - exit 0; - } else { - # parent - # only read lines containing at least one non-whitespace character - @result = grep /\S/, ; - foreach (@result) { chomp; } - unless (close PROG_OUT) { - &debug_msg(DEBUG_WARN, "error while running $CB_SCRIPT (params:" . join(" ",@params) . "): $?"); - return undef; - } - } - if (wantarray) { - return @result; - } elsif (@result > 0) { - return join('',@result); - } else { - return ""; - } -} - - -sub check_init_running { - # TODO: improve this - return (0==1); -} - - -# Parameter: device -sub check_device_plaintext { - return (system("$CB_SCRIPT","is_plain",$1) == 0); -} - - -# Parameter: device -sub check_device_encryption { - return (system("$CB_SCRIPT","is_encrypted",$1) == 0); -} - - -sub is_harddisk_available { - my @all_disks = &exec_cb_script("get_available_disks"); - return @all_disks > 0; -} - - -sub get_available_disks { - my @all_disks = &exec_cb_script("get_available_disks"); - my ($disk, @return_disks); - foreach $disk (@all_disks) { - $disk =~ m#^([/\._\-\w]*)$#; - push @return_disks, $1 if ($1); - } - return @return_disks; -} - - -sub get_disk_name { - my ($dev) = @_; - my $disk_name = &exec_cb_script("get_device_name", $dev); - return $disk_name; -} - - -# return the value of a configuration setting (timeout, language, ip, ...) -# Parameter: setting_name -sub get_cbox_config { - my ($setting) = @_; - # tell the exec function, that we want a scalar instead of an array - my $scalar = &exec_cb_script("get_config",$setting); - return $scalar; -} - - -sub render { - 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(); -} - - -# mount an encrypted volume -# Parameter: device password -sub mount_vol { - my ($device, $pw) = @_; - - if (&check_mounted($device)) { - $pagedata->setValue('Data.Warning', 'IsMounted'); - } else { - if ($pw eq '') { - &exec_cb_script("crypto-up", $device); - } else { - open(PW_INPUT, "| $CB_SCRIPT crypto-up $device"); - print PW_INPUT $pw; - close(PW_INPUT); - } - } -} - - -# unmount a volume -# Parameter: device -sub umount_vol { - my ($device) = @_; - if (&check_mounted($device)) { - system($CB_SCRIPT, "crypto-down",$device); - } else { - $pagedata->setValue('Data.Warning', 'NotMounted'); - } -} - - -# Parameter: device passphrase -# ignore passphrase (or leave it empty) to create a plaintext volume -sub volume_init { - my ($device, $crypto_pw) = @_; - my $result; - - # only for encrypted volumes: - # write passphrase to a file - necessary as perl in secured mode does not allow - # the 'open(FH, "|/bin/prog ....")' call because of possible shell expansion - stupid 'open' :( - if ($crypto_pw) { - my ($fh, $temp_file); - # generate a temporary filename (as suggested by the Perl Cookbook) - do { $temp_file = POSIX::tmpnam() } - # TODO: reduce the file mask to the minimum - maybe 0600 would be a good choice - until $fh = IO::File->new($temp_file, O_RDWR|O_CREAT|O_EXCL); - close $fh; - unless (open(TMP, ">$temp_file")) { - &debug_msg(DEBUG_ERROR, "could not open a temporary file"); - return (1==0); - } - print TMP $crypto_pw; - close TMP; - $result = &exec_cb_script("device_init", $device, $temp_file); - unlink ($temp_file) if (-e $temp_file); - } else { - $result = &exec_cb_script("device_init", $device); - } - # just to be sure, that the file does not get left behind - # usually the script should overwrite and remove it - return defined($result); -} - - -sub box_purge { - &exec_cb_script("box-purge"); -} - - -sub system_poweroff { - &exec_cb_script("poweroff"); -} - - -sub system_reboot { - &exec_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(); -my $current_admin_pw; - -my $action = $query->param('action'); -$action =~ m#^([\w\._\-]*)$#; -$action = ($1)? $1 : ''; - -my $device = $query->param('device'); -$device =~ m#^([/_\-\w\.]*)$#; -$device = ($1)? $1 : ''; - -# 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'); - # remove port number from HTTP_HOST - my $hostname = $ENV{'HTTP_HOST'}; - $hostname =~ s/:[0-9]*//; - $pagedata->setValue('Data.Redirect.URL', "https://" . $hostname . $ENV{'SCRIPT_NAME'}); - $pagedata->setValue('Data.Redirect.Delay', "3"); -} elsif ($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 'system_ask') { - $pagedata->setValue('Data.Action', 'form_system'); - ##################### 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 ($device eq '') { - &debug_msg(DEBUG_INFO, "invalid device: " . $query->param('device')); - $pagedata->setValue('Data.Warning', 'InvalidDevice'); - $pagedata->setValue('Data.Action', 'emptu'); - } elsif ( ! &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($device)) { - $pagedata->setValue('Data.Warning', 'NotMounted'); - $pagedata->setValue('Data.Action', 'show_volume'); - } else { - # unmounten - &umount_vol($device); - if (&check_mounted($device)) { - $pagedata->setValue('Data.Warning', 'UmountFailed'); - $pagedata->setValue('Data.Action', 'show_volume'); - } else { - #$pagedata->setValue('Data.Success', 'UmountDone'); - $pagedata->setValue('Data.Action', 'show_volume'); - } - } - ################ mount_do ######################## - } elsif ($action eq 'mount_do') { - my $is_encrypted = &check_device_encryption($device) if ($device ne ''); - if ($device eq '') { - &debug_msg(DEBUG_INFO, "invalid device: " . $query->param('device')); - $pagedata->setValue('Data.Warning', 'InvalidDevice'); - $pagedata->setValue('Data.Action', 'empty'); - } elsif ( ! &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($device)) { - $pagedata->setValue('Data.Warning', 'IsMounted'); - $pagedata->setValue('Data.Action', 'show_volume'); - } elsif ($is_encrypted && ($query->param('crypto_password') eq '')) { - # leeres Passwort - $pagedata->setValue('Data.Warning', 'EmptyCryptoPassword'); - $pagedata->setValue('Data.Action', 'show_volume'); - } else { - # mounten - if ($is_encrypted) { - &mount_vol($device, $query->param('crypto_password')); - } else { - &mount_vol($device); - } - if (!&check_mounted($device)) { - $pagedata->setValue('Data.Warning', 'MountFailed'); - $pagedata->setValue('Data.Action', 'show_volume'); - } else { - #$pagedata->setValue('Data.Success', 'MountDone'); - $pagedata->setValue('Data.Action', 'show_volume'); - } - } - ################## 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"); - } 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'); - } 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') { - $current_admin_pw = &get_cbox_config("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 { - if (&volume_init($query->param('crypto_password'),$query->param('admin_password'))) { - #$pagedata->setValue('Data.Success', 'InitRunning'); - $pagedata->setValue('Data.Action', 'form_config'); - } else { - $pagedata->setValue('Data.Error', 'InitFailed'); - } - } - #################### 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') { - my $query_language = $query->param('language'); - $query_language =~ m/^(\w+)$/; $query_language = $1; - my $query_timeout = $query->param('timeout'); - $query_timeout =~ m/^(\d+)$/; $query_timeout = $1; - if ( ! &check_config()) { - $pagedata->setValue('Data.Warning', 'NotInitialized'); - $pagedata->setValue('Data.Action', 'form_init'); - } else { - $current_admin_pw = &get_cbox_config("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_language)) { - $pagedata->setValue('Data.Warning', 'InvalidLanguage'); - $pagedata->setValue('Data.Action', 'form_config'); - } elsif ( ! &validate_timeout($query_timeout)) { - $pagedata->setValue('Data.Warning', 'InvalidTimeOut'); - $pagedata->setValue('Data.Action', 'form_config'); - } else { - system($CB_SCRIPT, "set_config", "language", $query_language); - &load_selected_language($pagedata); - system($CB_SCRIPT, "set_config", "timeout", $query_timeout); - # check, if the ip was reconfigured - # TODO: IP stuff should be moved to the live-cd stuff - if (defined($query->param('ip')) && ($query->param('ip') ne &get_cbox_config("ip"))) { - # set the new value - system($CB_SCRIPT, "set_config", "ip", $query->param('ip')); - # 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 (defined($query->param('timeout')) - && (&get_cbox_config("timeout") ne $query->param('timeout'))) { - $pagedata->setValue('Data.Warning', 'ConfigTimeOutFailed'); - } elsif (defined($query->param('ip')) && - (&get_cbox_config("ip") ne $query->param('ip'))) { - $pagedata->setValue('Data.Warning', 'ConfigIPFailed'); - } elsif (defined($query->param('language')) - && (&get_cbox_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"); - } - } - ############## change volume name ################### - } elsif ($action eq 'volume_name_set') { - my $volume_name = $query->param('volume_name'); - # remove all special characters which are not white-listed - $volume_name =~ s#[^\w \-_\#/\(\)\[\]]##g; - # untaint variable - $volume_name =~ m#^(.*)$#; $volume_name = $1; - if ($device eq '') { - &debug_msg(DEBUG_INFO, "invalid device: " . $query->param('device')); - $pagedata->setValue('Data.Warning', 'InvalidDevice'); - $pagedata->setValue('Data.Action', 'show_status'); - } elsif (&check_mounted($device)) { - $pagedata->setValue('Data.Warning','VolumeMayNotBeMounted'); - $pagedata->setValue('Data.Action', 'show_volume'); - } elsif ($volume_name eq '') { - $pagedata->setValue('Data.Warning','InvalidVolumeName'); - $pagedata->setValue('Data.Action', 'show_volume'); - } else { - &exec_cb_script('set_device_name',$device,$volume_name); - my $new_volume_name = &exec_cb_script('get_device_name',$device); - $pagedata->setValue('Data.Warning','SetVolumeNameFailed') unless ($new_volume_name eq $volume_name); - $pagedata->setValue('Data.Action', 'show_volume'); - } - ############ initialize volume (form) ############### - } elsif ($action eq 'volume_init_ask') { - if ($device eq '') { - &debug_msg(DEBUG_INFO, "invalid device: " . $query->param('device')); - $pagedata->setValue('Data.Warning', 'InvalidDevice'); - $pagedata->setValue('Data.Action', 'show_status'); - } elsif (&check_mounted($device)) { - $pagedata->setValue('Data.Warning','VolumeMayNotBeMounted'); - $pagedata->setValue('Data.Action', 'show_volume'); - } else { - $pagedata->setValue('Data.CurrentDisk.InitParams.encrypted',defined($query->param('encryption'))? 1 : 0); - $pagedata->setValue('Data.Action', 'form_init_partition'); - } - ############### initialize volume ################### - } elsif ($action eq 'volume_init_do') { - $current_admin_pw = &get_cbox_config("admin_pw"); - # remember the current "encryption" setting - just in case, we want to emit a warning and - # return to the same screen - $pagedata->setValue('Data.CurrentDisk.InitParams.encrypted',defined($query->param('encryption'))? 1 : 0); - if ($device eq '') { - &debug_msg(DEBUG_INFO, "invalid device: " . $query->param('device')); - $pagedata->setValue('Data.Warning', 'InvalidDevice'); - $pagedata->setValue('Data.Action', 'show_status'); - } elsif (&check_mounted($device)) { - $pagedata->setValue('Data.Warning','VolumeMayNotBeMounted'); - $pagedata->setValue('Data.Action', 'show_volume'); - } elsif ($current_admin_pw ne '' - && $current_admin_pw ne $query->param('current_admin_password')) { - $pagedata->setValue('Data.Warning', 'WrongAdminPassword'); - $pagedata->setValue('Data.Action', 'form_init_partition'); - } elsif (defined($query->param('encryption')) && ($query->param('crypto_password') ne $query->param('crypto_password2'))) { - # different crypto-passwords - $pagedata->setValue('Data.Warning', 'DifferentCryptoPasswords'); - $pagedata->setValue('Data.Action', 'form_init_partition'); - } elsif (defined($query->param('encryption')) && ($query->param('crypto_password') eq '')) { - # empty password - $pagedata->setValue('Data.Warning', 'EmptyCryptoPassword'); - $pagedata->setValue('Data.Action', 'form_init_partition'); - } elsif ($query->param('confirm') ne $pagedata->getValue('Lang.Text.ConfirmInit','')) { - # wrong confirm string - $pagedata->setValue('Data.Warning', 'InitNotConfirmed'); - $pagedata->setValue('Data.Action', 'form_init_partition'); - } else { - my $init_result; - if (defined($query->param('encryption'))) { - $init_result = &volume_init($device,$query->param('crypto_password')); - } else { - $init_result = &volume_init($device); - } - if ($init_result) { - #$pagedata->setValue('Data.Success', 'InitRunning'); - $pagedata->setValue('Data.Action', 'show_volume'); - } else { - $pagedata->setValue('Data.Error', 'InitFailed'); - $pagedata->setValue('Data.Action', 'show_volume'); - } - } - ################## volume info ###################### - } elsif ($action eq 'show_volume') { - if ($device eq '') { - &debug_msg(DEBUG_INFO, "invalid device: " . $query->param('device')); - $pagedata->setValue('Data.Warning', 'InvalidDevice'); - $pagedata->setValue('Data.Action', 'show_status'); - } else { - $pagedata->setValue('Data.Action', 'show_volume'); - } - #################### status ######################### - } elsif ($action eq 'show_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()) { - $current_admin_pw = &get_cbox_config("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); - -my $output = &get_cbox_config("admin_pw"); -$pagedata->setValue('Data.Config.AdminPasswordIsSet', 1) if ($output ne ''); - -$output = join ("
", &exec_cb_script("diskinfo")); -$pagedata->setValue('Data.PartitionInfo',"$output"); - -# preset config settings for clearsilver -$pagedata->setValue('Data.Config.IP', &get_cbox_config("ip")); -$pagedata->setValue('Data.Config.TimeOut', &get_cbox_config("timeout")); -$pagedata->setValue('Data.Config.Language', &get_cbox_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_DEVEL); - -# 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 ''); - -$pagedata->setValue('Data.Version', CRYPTOBOX_VERSION); - -my ($one_disk, $one_name, $isActive, $isEncrypted, $isPlaintext); -my $avail_counter = 0; my $active_counter = 0; my $passive_counter = 0; -for $one_disk (&get_available_disks()) { - $one_name = &get_disk_name($one_disk); - $isEncrypted = &check_device_encryption($one_disk); - $isPlaintext = &check_device_plaintext($one_disk); - $pagedata->setValue("Data.Disks.available.${avail_counter}.device",$one_disk); - $pagedata->setValue("Data.Disks.available.${avail_counter}.name",$one_name); - $pagedata->setValue("Data.Disks.available.${avail_counter}.encryption", $isEncrypted? 1 : 0); - $pagedata->setValue("Data.Disks.available.${avail_counter}.plaintext", $isPlaintext? 1 : 0); - $isActive = &check_mounted($one_disk); - if ($isActive) { - $pagedata->setValue("Data.Disks.available.${avail_counter}.isActive",1); - $pagedata->setValue("Data.Disks.active.${active_counter}.device",$one_disk); - $pagedata->setValue("Data.Disks.active.${active_counter}.name",$one_name); - $pagedata->setValue("Data.Disks.active.${active_counter}.encryption", $isEncrypted? 1 : 0); - $pagedata->setValue("Data.Disks.active.${active_counter}.plaintext", $isPlaintext? 1 : 0); - $active_counter++; - } else { - $pagedata->setValue("Data.Disks.available.${avail_counter}.isActive",0); - $pagedata->setValue("Data.Disks.passive.${passive_counter}.device",$one_disk); - $pagedata->setValue("Data.Disks.passive.${passive_counter}.name",$one_name); - $pagedata->setValue("Data.Disks.passive.${passive_counter}.encryption", $isEncrypted? 1 : 0); - $pagedata->setValue("Data.Disks.passive.${passive_counter}.plaintext", $isPlaintext? 1 : 0); - $passive_counter++; - } - if ($device eq $one_disk) { - $pagedata->setValue('Data.CurrentDisk.device', $one_disk); - $pagedata->setValue('Data.CurrentDisk.name', $one_name); - $pagedata->setValue('Data.CurrentDisk.active', $isActive? 1 : 0); - $pagedata->setValue("Data.CurrentDisk.encryption", $isEncrypted? 1 : 0); - $pagedata->setValue("Data.CurrentDisk.plaintext", $isPlaintext? 1 : 0); - # retrieve capacity information if the device is mounted - if (&check_mounted($device)) { - my $cap_info = &exec_cb_script("get_capacity_info",$device); - # filter the relevant values (a simple split is not working, as the device name may - # contain spaces - $cap_info =~ m#^.*\s+([0-9\.,]+\w)\s+([0-9\.,]+\w)\s+([0-9\.,]+\w)\s+([0-9\.,]+\%)\s+#; - my ($cap_size, $cap_used, $cap_free, $cap_percent) = ($1, $2, $3, $4); - $pagedata->setValue('Data.CurrentDisk.capacity.used', $cap_used); - $pagedata->setValue('Data.CurrentDisk.capacity.free', $cap_free); - $pagedata->setValue('Data.CurrentDisk.capacity.size', $cap_size); - $pagedata->setValue('Data.CurrentDisk.capacity.percent', $cap_percent); - } - } - $avail_counter++; -} - -&render(); - -close STDOUT; - -exit 0; - diff --git a/pythonrewrite/bin-perl-old/cryptobox_wrapper.c b/pythonrewrite/bin-perl-old/cryptobox_wrapper.c deleted file mode 100644 index b2f6e5b..0000000 --- a/pythonrewrite/bin-perl-old/cryptobox_wrapper.c +++ /dev/null @@ -1,21 +0,0 @@ -/* $Id$ */ - -// define the location of your cryptobox.pl file in this header file -#include "cryptobox_wrapper.h" - -#include -#include - -/* C wrapper to allow cryptobox to run under a different uid */ -/* Copyright (C) 02006, senselab, All Rights Reserved */ -/* See the LICENSE file in this distribution for copyright information */ - -int main(int argc, char *argv[]) { - - // necessary for mount action of the root-script - setreuid(geteuid(), -1); - - argv[0] = EXEC_PATH; - execv(EXEC_PATH, argv); - -} diff --git a/pythonrewrite/bin-perl-old/ro-system.sh b/pythonrewrite/bin-perl-old/ro-system.sh deleted file mode 100644 index 2d6e9d7..0000000 --- a/pythonrewrite/bin-perl-old/ro-system.sh +++ /dev/null @@ -1,191 +0,0 @@ -function create_config() -# Parameter: device -{ - local device=$1 - unload_config - # create the new configuration filesystem if it is not static - if [ "$USE_SEPERATE_CONFIG_PARTITION" != "1" ] - then log_msg "Using static configuration ..." - else log_msg "Creating config filesystem ..." - "$ROOT_PERM_SCRIPT" create_config "$device" - log_msg "Mounting config partition ..." - "$ROOT_PERM_SCRIPT" mount_config "$device" - "$ROOT_PERM_SCRIPT" remount_config rw - fi - log_msg "Copying configuration defaults ..." - cp -a "$CONFIG_DEFAULTS_DIR/." "$CONFIG_DIR" - - log_msg "Copying temporary certificate file to config filesystem ..." - log_msg "Setting inital values ..." - # beware: config_set_value remounts the config partition read-only - config_set_value "ip" "$(get_current_ip)" - # create database of readable names - config_set_value "names.db" "" - # create a marker to recognize a cryptobox partition - # this should be the last step, to prevent a half-initialized state - config_set_value "$CONFIG_MARKER" "$(date -I)" -} - - -function find_harddisk() -# look for the harddisk to be partitioned -{ - local device=$(get_available_disks | head -1) - if [ -z "$device" ] ; 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 "$device" -} - - -function load_config() -{ - unload_config - local status=0 - # look for a configuration partition - [ "$USE_SEPERATE_CONFIG_PARTITION" = "1" ] && \ - list_partitions_of_type config | while read part && [ "$status" = 0 ] - do log_msg "configuraton found on $part" - # error check? - "$ROOT_PERM_SCRIPT" mount_config "/dev/$part" - status=1 - done - if is_config_active - then return 0 - else log_msg "failed to locate config partition" - return 1 - fi -} - - -function unload_config() -{ - is_config_active || return - # only try to unmount, if it is not static (the config of a live-cd is always dynamic) - if [ "$USE_SEPERATE_CONFIG_PARTITION" = "1" ] - then "$ROOT_PERM_SCRIPT" umount_config - else return 0 - fi -} - - -# rename to "prepare_cryptobox" -function init_cryptobox() -# 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 - turn_off_all_crypto - unload_config || true - log_msg "Partitioning the device ($device) ..." - "$ROOT_PERM_SCRIPT" partition_disk "$device" "0,1,L \n,,L\n" - log_msg "Initializing config partition on ${device}1 ..." - # TODO: this should not be hard-coded - create_config "${device}1" -} - - -case "$ACTION" of - network-up ) - if [ "$SKIP_NETWORK_CONFIG" != 1 ] - then conf_ip=$(config_get_value "ip") - log_msg "Configuring $NET_IFACE for $conf_ip ..." - echo "Configuring network interface for $NET_IFACE: $conf_ip" - "$IFCONFIG" "$NET_IFACE" "$conf_ip" - fi - if [ "$EXEC_FIREWALL_RULES" = 1 ] - then log_msg "Starting the firewall ..." - "$FIREWALL_SCRIPT" start - fi - if [ "$USE_STUNNEL" = 1 ] - then # 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 - # TODO: this could be dangerous - right? - # this is necessary, to allow www-data to copy the certificate - chown "$WEB_USER" "$CERT_TEMP" - fi - log_msg "Starting stunnel ..." - stunnel -p "$USE_CERT" -r localhost:80 -d 443 \ - || echo "$USE_CERT not found - not starting stunnel" - fi - ;; - network-down ) - if [ "$EXEC_FIREWALL_RULES" = 1 ] - then log_msg "Stopping the firewall ..." - "$FIREWALL_SCRIPT" stop - fi - if [ "$USE_STUNNEL" = 1 ] - then log_msg "Stopping stunnel ..." - # TODO: what about a pid? - killall stunnel 2>/dev/null || true - fi - if [ "$SKIP_NETWORK_CONFIG" != 1 ] - then log_msg "Shutting the network interface down ..." - "$IFCONFIG" "$NET_IFACE" down - fi - ;; - services-up ) - # the mount point has to be writeable - # this action is called as root - so we are allowed to umount - # TODO: do this only for ro-filesystem - # TODO: this way of mounting is evil - if mountpoint -q "$MNT_PARENT" - then true - else mount -t tmpfs tmpfs "$MNT_PARENT" - fi - true - ;; - services-down ) - # this action is called as root - so we are allowed to umount - mountpoint -q "$MNT_PARENT" && umount "$MNT_PARENT" - # TODO: we should not depend on samba and thttpd - # /etc/init.d/samba stop || true - # /etc/init.d/thttpd stop || true - true - ;; - 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 - if [ "$SKIP_NETWORK_CONFIG" != 1 ] - then echo -n "sleep 5; \"$ROOT_PERM_SCRIPT\" update_network" | at now - fi - ;; - poweroff ) - log_msg "Turning off the CryptoBox ..." - turn_off_all_crypto - echo "poweroff" | at now - ;; - reboot ) - log_msg "Rebooting the CryptoBox ..." - turn_off_all_crypto - echo "reboot" | at now - ;; - * ) - echo "Syntax: $(basename $0) ACTION" - 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 " update_ip_address - update the network interface after reconfiguration" - echo " is_config_mounted - check, if configuration partition is mounted" - 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_harddisk_available - check, if there is a usable harddisk" - echo " poweroff - shutdown the cryptobox" - echo " reboot - reboot the cryptobox" - echo - ;; - esac diff --git a/pythonrewrite/bin/CryptoBox.py b/pythonrewrite/bin/CryptoBox.py deleted file mode 100755 index 1472b53..0000000 --- a/pythonrewrite/bin/CryptoBox.py +++ /dev/null @@ -1,276 +0,0 @@ -#!/usr/bin/env python2.4 -''' -This is the web interface for a fileserver managing encrypted filesystems. - -It was originally written in bash/perl. Now a complete rewrite is in -progress. So things might be confusing here. Hopefully not for long. -:) -''' - -# check python version -import sys -(ver_major, ver_minor, ver_sub, ver_desc, ver_subsub) = sys.version_info -if (ver_major < 2) or ((ver_major == 2) and (ver_minor < 4)): - sys.stderr.write("You need a python version >= 2.4\nCurrent version is:\n %s\n" % sys.version) - sys.exit(1) - -import CryptoBoxContainer -from CryptoBoxExceptions import * -import re -import os -import CryptoBoxTools -import subprocess - - - -class CryptoBox: - '''this class rules them all! - - put things like logging, conf and oter stuff in here, - that might be used by more classes, it will be passed on to them''' - - VERSION = "0.3~1" - - def __init__(self, config_file=None): - import CryptoBoxSettings - self.log = self.__getStartupLogger() - self.prefs = CryptoBoxSettings.CryptoBoxSettings(config_file) - self.__runTests() - - - def __getStartupLogger(self): - import logging - '''initialises the logging system - - use it with: 'self.log.[debug|info|warning|error|critical](logmessage)' - all classes should get the logging instance during __init__: - self.log = logging.getLogger("CryptoBox") - - first we output all warnings/errors to stderr - as soon as we opened the config file successfully, we redirect debug output - to the configured destination''' - ## basicConfig(...) needs python >= 2.4 - try: - log_handler = logging.getLogger("CryptoBox") - logging.basicConfig( - format='%(asctime)s CryptoBox %(levelname)s: %(message)s', - stderr=sys.stderr) - log_handler.setLevel(logging.ERROR) - log_handler.info("loggingsystem is up'n running") - ## from now on everything can be logged via self.log... - except: - raise CBEnvironmentError("couldn't initialise the loggingsystem. I give up.") - return log_handler - - - # do some initial checks - def __runTests(self): - self.__runTestUID() - self.__runTestRootPriv() - - - def __runTestUID(self): - if os.geteuid() == 0: - raise CBEnvironmentError("you may not run the cryptobox as root") - - - def __runTestRootPriv(self): - """try to run 'super' with 'CryptoBoxRootActions'""" - try: - devnull = open(os.devnull, "w") - except IOError: - raise CBEnvironmentError("could not open %s for writing!" % os.devnull) - try: - prog_super = self.prefs["Programs"]["super"] - except KeyError: - raise CBConfigUndefinedError("Programs", "super") - try: - prog_rootactions = self.prefs["Programs"]["CryptoBoxRootActions"] - except KeyError: - raise CBConfigUndefinedError("Programs", "CryptoBoxRootActions") - try: - proc = subprocess.Popen( - shell = False, - stdout = devnull, - stderr = devnull, - args = [prog_super, prog_rootactions, "check"]) - except OSError: - raise CBEnvironmentError("failed to execute 'super' (%s)" % self.prefs["Programs"]["super"]) - proc.wait() - if proc.returncode != 0: - raise CBEnvironmentError("failed to call CryptoBoxRootActions (%s) via 'super' - maybe you did not add the appropriate line to /etc/super.tab?" % prog_rootactions) - - - # this method just demonstrates inheritance effects - may be removed - def cbx_inheritance_test(self, string="you lucky widow"): - self.log.info(string) - - -# RFC: why should CryptoBoxProps inherit CryptoBox? [l] -# RFC: shouldn't we move all useful functions of CryptoBoxProps to CryptoBox? [l] -class CryptoBoxProps(CryptoBox): - '''Get and set the properties of a CryptoBox - - This class contains all available devices that may be accessed. - All properties of the cryptobox can be accessed by this class. - ''' - - def __init__(self, config_file=None): - '''read config and fill class variables''' - CryptoBox.__init__(self, config_file) - self.reReadContainerList() - - - def reReadContainerList(self): - self.log.debug("rereading container list") - self.containers = [] - for device in CryptoBoxTools.getAvailablePartitions(): - if self.isDeviceAllowed(device) and not self.isConfigPartition(device): - self.containers.append(CryptoBoxContainer.CryptoBoxContainer(device, self)) - ## sort by container name - self.containers.sort(cmp = lambda x,y: x.getName() < y.getName() and -1 or 1) - - - def isConfigPartition(self, device): - proc = subprocess.Popen( - shell = False, - stdout = subprocess.PIPE, - args = [ - self.prefs["Programs"]["blkid"], - "-c", os.path.devnull, - "-o", "value", - "-s", "LABEL", - device]) - (output, error) = proc.communicate() - return output.strip() == self.prefs["Main"]["ConfigVolumeLabel"] - - - def isDeviceAllowed(self, devicename): - "check if a device is white-listed for being used as cryptobox containers" - import types - allowed = self.prefs["Main"]["AllowedDevices"] - if type(allowed) == types.StringType: allowed = [allowed] - for a_dev in allowed: - "remove double dots and so on ..." - real_device = os.path.realpath(devicename) - if a_dev and re.search('^' + a_dev, real_device): return True - return False - - - def getLogData(self, lines=None, maxSize=None): - """get the most recent log entries of the cryptobox - - the maximum number and size of these entries can be limited by 'lines' and 'maxSize' - """ - # return nothing if the currently selected log output is not a file - try: - if self.prefs["Log"]["Destination"].upper() != "FILE": return [] - log_file = self.prefs["Log"]["Details"] - except KeyError: - self.log.error("could not evaluate one of the following config settings: [Log]->Destination or [Log]->Details") - return [] - try: - fd = open(log_file, "r") - if maxSize: fd.seek(-maxSize, 2) # seek relative to the end of the file - content = fd.readlines() - fd.close() - except IOError: - self.log.warn("failed to read the log file (%s)" % log_file) - return [] - if lines: content = content[-lines:] - content.reverse() - return content - - - def getContainerList(self, filterType=None, filterName=None): - "retrieve the list of all containers of this cryptobox" - try: - result = self.containers[:] - if filterType != None: - if filterType in range(len(CryptoBoxContainer.Types)): - return [e for e in self.containers if e.getType() == filterType] - else: - self.log.info("invalid filterType (%d)" % filterType) - result.clear() - if filterName != None: - result = [e for e in self.containers if e.getName() == filterName] - return result - except AttributeError: - return [] - - - def getContainer(self, device): - "retrieve the container element for this device" - all = [e for e in self.getContainerList() if e.device == device] - if all: - return all[0] - else: - return None - - - def setNameForUUID(self, uuid, name): - "assign a name to a uuid in the ContainerNameDatabase" - used_uuid = self.getUUIDForName(name) - "first remove potential conflicting uuid/name combination" - if used_uuid: - ## remember the container which name was overriden - for e in self.containers: - if e.getName() == name: - forcedRename = e - break - del self.prefs.nameDB[used_uuid] - self.prefs.nameDB[uuid] = name - self.prefs.nameDB.write() - ## rename the container that lost its name (necessary while we use cherrypy) - if used_uuid: - ## this is surely not the best way to regenerate the name - dev = e.getDevice() - old_index = self.containers.index(e) - self.containers.remove(e) - self.containers.insert(old_index, CryptoBoxContainer.CryptoBoxContainer(dev,self)) - ## there should be no reason for any failure - return True - - - def getNameForUUID(self, uuid): - "get the name belonging to a specified key (usually the UUID of a fs)" - try: - return self.prefs.nameDB[uuid] - except KeyError: - return None - - - def getUUIDForName(self, name): - """ get the key belonging to a value in the ContainerNameDatabase - this is the reverse action of 'getNameForUUID' """ - for key in self.prefs.nameDB.keys(): - if self.prefs.nameDB[key] == name: return key - "the uuid was not found" - return None - - - def removeUUID(self, uuid): - if uuid in self.prefs.nameDB.keys(): - del self.prefs.nameDB[uuid] - return True - else: - return False - - - def getAvailableLanguages(self): - '''reads all files in path LangDir and returns a list of - basenames from existing hdf files, that should are all available - languages''' - languages = [ f.rstrip(".hdf") - for f in os.listdir(self.prefs["Locations"]["LangDir"]) - if f.endswith(".hdf") ] - if len(languages) < 1: - self.log.error("No .hdf files found! The website won't render properly.") - return languages - - - - -if __name__ == "__main__": - cb = CryptoBoxProps() - diff --git a/pythonrewrite/bin/CryptoBoxContainer.py b/pythonrewrite/bin/CryptoBoxContainer.py deleted file mode 100755 index e658c53..0000000 --- a/pythonrewrite/bin/CryptoBoxContainer.py +++ /dev/null @@ -1,607 +0,0 @@ -#!/usr/bin/env python2.4 - -## check python version -import sys -(ver_major, ver_minor, ver_sub, ver_desc, ver_subsub) = sys.version_info -if (ver_major < 2) or ((ver_major == 2) and (ver_minor < 4)): - sys.stderr.write("You need a python version >= 2.4\nCurrent version is:\n %s\n" % sys.version) - sys.exit(1) - -import subprocess -import os -import re -import logging -from CryptoBoxExceptions import * - -"""exceptions: - VolumeIsActive - NameActivelyUsed - InvalidName - InvalidPassword - InvalidType - CreateError - MountError - ChangePasswordError - """ - -class CryptoBoxContainer: - - Types = { - "unused":0, - "plain":1, - "luks":2, - "swap":3} - - - __fsTypes = { - "plain":["ext3", "ext2", "vfat", "reiser"], - "swap":["swap"]} - # TODO: more filesystem types? / check 'reiser' - - __dmDir = "/dev/mapper" - - - def __init__(self, device, cbox): - self.device = device - self.cbox = cbox - self.log = logging.getLogger("CryptoBox") - self.resetObject() - - - def getName(self): - return self.name - - - def setName(self, new_name): - if new_name == self.name: return - if self.isMounted(): - raise CBVolumeIsActive("the container must be inactive during renaming") - if not re.search(r'^[a-zA-Z0-9_\.\- ]+$', new_name): - raise CBInvalidName("the supplied new name contains illegal characters") - "check for active partitions with the same name" - prev_name_owner = self.cbox.getContainerList(filterName=new_name) - if prev_name_owner: - for a in prev_name_owner: - if a.isMounted(): - raise CBNameActivelyUsed("the supplied new name is already in use for an active partition") - if not self.cbox.setNameForUUID(self.uuid, new_name): - raise CBContainerError("failed to change the volume name for unknown reasons") - self.name = new_name - - - def getDevice(self): - return self.device - - - def getType(self): - return self.type - - - def isMounted(self): - return os.path.ismount(self.__getMountPoint()) - - - def getCapacity(self): - """return the current capacity state of the volume - - the volume may not be mounted - the result is a tuple of values in megabyte: - (size, available, used) - """ - info = os.statvfs(self.__getMountPoint()) - return ( - int(info.f_bsize*info.f_blocks/1024/1024), - int(info.f_bsize*info.f_bavail/1024/1024), - int(info.f_bsize*(info.f_blocks-info.f_bavail)/1024/1024)) - - - def getSize(self): - """return the size of the block device (_not_ of the filesystem) - - the result is a value in megabyte - an error is indicated by "-1" - """ - import CryptoBoxTools - return CryptoBoxTools.getBlockDeviceSize(self.device) - - - def resetObject(self): - """ recheck the information about this container - this is especially useful after changing the type via 'create' """ - self.uuid = self.__getUUID() - self.type = self.__getTypeOfPartition() - self.name = self.__getNameOfContainer() - if self.type == self.Types["luks"]: - self.mount = self.__mountLuks - self.umount = self.__umountLuks - elif self.type == self.Types["plain"]: - self.mount = self.__mountPlain - self.umount = self.__umountPlain - - - def create(self, type, password=None): - old_name = self.getName() - if type == self.Types["luks"]: - self.__createLuks(password) - elif type == self.Types["plain"]: - self.__createPlain() - else: - raise CBInvalidType("invalid container type (%d) supplied" % (type, )) - ## no exception was raised during creation -> we can continue - ## reset the properties (encryption state, ...) of the device - self.resetObject() - ## restore the old name (must be after resetObject) - self.setName(old_name) - - - def changePassword(self, oldpw, newpw): - if self.type != self.Types["luks"]: - raise CBInvalidType("changing of password is possible only for luks containers") - if not oldpw: - raise CBInvalidPassword("no old password supplied for password change") - if not newpw: - raise CBInvalidPassword("no new password supplied for password change") - "return if new and old passwords are the same" - if oldpw == newpw: return - if self.isMounted(): - raise CBVolumeIsActive("this container is currently active") - devnull = None - try: - devnull = open(os.devnull, "w") - except IOError: - self.log.warn("Could not open %s" % (os.devnull, )) - "remove any potential open luks mapping" - self.__umountLuks() - "create the luks header" - proc = subprocess.Popen( - shell = False, - stdin = subprocess.PIPE, - stdout = subprocess.PIPE, - stderr = subprocess.PIPE, - args = [ - self.cbox.prefs["Programs"]["super"], - self.cbox.prefs["Programs"]["CryptoBoxRootActions"], - "cryptsetup", - "luksAddKey", - self.device, - "--batch-mode"]) - proc.stdin.write("%s\n%s" % (oldpw, newpw)) - (output, errout) = proc.communicate() - if proc.returncode != 0: - errorMsg = "Could not add a new luks key: %s - %s" % (output.strip(), errout.strip(), ) - self.log.error(errorMsg) - raise CBChangePasswordError(errorMsg) - ## retrieve the key slot we used for unlocking - keys_found = re.search(r'key slot (\d{1,3}) unlocked', output).groups() - if keys_found: - keyslot = int(keys_found[0]) - else: - raise CBChangePasswordError("could not get the old key slot") - "remove the old key" - proc = subprocess.Popen( - shell = False, - stdin = None, - stdout = devnull, - stderr = subprocess.PIPE, - args = [ - self.cbox.prefs["Programs"]["cryptsetup"], - "--batch-mode", - "luksDelKey", - self.device, - "%d" % (keyslot, )]) - proc.wait() - if proc.returncode != 0: - errorMsg = "Could not remove the old luks key: %s" % (proc.stderr.read().strip(), ) - self.log.error(errorMsg) - raise CBChangePasswordError(errorMsg) - - - - " ****************** internal stuff ********************* " - - def __getNameOfContainer(self): - "retrieve the name of the container by querying the database" - def_name = self.cbox.getNameForUUID(self.uuid) - if def_name: return def_name - "there is no name defined for this uuid - we will propose a good one" - prefix = self.cbox.prefs["Main"]["DefaultVolumePrefix"] - unused_found = False - counter = 1 - while not unused_found: - guess = prefix + str(counter) - if self.cbox.getUUIDForName(guess): - counter += 1 - else: - unused_found = True - self.cbox.setNameForUUID(self.uuid, guess) - return guess - - - def __getUUID(self): - if self.__getTypeOfPartition() == self.Types["luks"]: - guess = self.__getLuksUUID() - else: - guess = self.__getNonLuksUUID() - ## did we get a valid value? - if guess: - return guess - else: - ## emergency default value - return self.device.replace(os.path.sep, "_") - - - def __getLuksUUID(self): - """get uuid for luks devices""" - proc = subprocess.Popen( - shell = False, - stdout = subprocess.PIPE, - stderr = subprocess.PIPE, - args = [self.cbox.prefs["Programs"]["cryptsetup"], - "luksUUID", - self.device]) - (stdout, stderr) = proc.communicate() - if proc.returncode != 0: - self.cbox.log.info("could not retrieve luks uuid (%s): %s", (self.device, stderr.strip())) - return None - return stdout.strip() - - - def __getNonLuksUUID(self): - """return UUID for ext2/3 and vfat filesystems""" - try: - devnull = open(os.devnull, "w") - except IOError: - self.warn("Could not open %s" % (os.devnull, )) - proc = subprocess.Popen( - shell=False, - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - args=[self.cbox.prefs["Programs"]["blkid"], - "-s", "UUID", - "-o", "value", - "-c", os.devnull, - "-w", os.devnull, - self.device]) - (stdout, stderr) = proc.communicate() - devnull.close() - ## execution failed? - if proc.returncode != 0: - self.log.info("retrieving of partition type (%s) via 'blkid' failed: %s - maybe it is encrypted?" % (self.device, stderr.strip())) - return None - ## return output of blkid - return stdout.strip() - - - def __getTypeOfPartition(self): - "retrieve the type of the given partition (see CryptoBoxContainer.Types)" - if self.__isLuksPartition(): return self.Types["luks"] - typeOfPartition = self.__getTypeIdOfPartition() - if typeOfPartition in self.__fsTypes["plain"]: - return self.Types["plain"] - if typeOfPartition in self.__fsTypes["swap"]: - return self.Types["swap"] - return self.Types["unused"] - - - def __getTypeIdOfPartition(self): - "returns the type of the partition (see 'man blkid')" - devnull = None - try: - devnull = open(os.devnull, "w") - except IOError: - self.log.warn("Could not open %s" % (os.devnull, )) - proc = subprocess.Popen( - shell=False, - stdin=None, - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - args=[self.cbox.prefs["Programs"]["blkid"], - "-s", "TYPE", - "-o", "value", - "-c", os.devnull, - "-w", os.devnull, - self.device]) - proc.wait() - output = proc.stdout.read().strip() - if proc.returncode != 0: - self.log.warn("retrieving of partition type via 'blkid' failed: %s" % (proc.stderr.read().strip(), )) - return None - devnull.close() - return output - - - def __isLuksPartition(self): - "check if the given device is a luks partition" - devnull = None - try: - devnull = open(os.devnull, "w") - except IOError: - self.log.warn("Could not open %s" % (os.devnull, )) - proc = subprocess.Popen( - shell = False, - stdin = None, - stdout = devnull, - stderr = devnull, - args = [ - self.cbox.prefs["Programs"]["cryptsetup"], - "--batch-mode", - "isLuks", - self.device]) - proc.wait() - devnull.close() - return proc.returncode == 0 - - - def __getMountPoint(self): - "return the name of the mountpoint of this volume" - return os.path.join(self.cbox.prefs["Locations"]["MountParentDir"], self.name) - - - def __mountLuks(self, password): - "mount a luks partition" - if not password: - raise CBInvalidPassword("no password supplied for luksOpen") - if self.isMounted(): raise CBVolumeIsActive("this container is already active") - self.__umountLuks() - try: - devnull = open(os.devnull, "w") - except IOError: - self.log.warn("Could not open %s" % (os.devnull, )) - self.__cleanMountDirs() - if not os.path.exists(self.__getMountPoint()): - os.mkdir(self.__getMountPoint()) - if not os.path.exists(self.__getMountPoint()): - errorMsg = "Could not create mountpoint (%s)" % (self.__getMountPoint(), ) - self.log.error(errorMsg) - raise CBMountError(errorMsg) - proc = subprocess.Popen( - shell = False, - stdin = subprocess.PIPE, - stdout = devnull, - stderr = subprocess.PIPE, - args = [ - self.cbox.prefs["Programs"]["super"], - self.cbox.prefs["Programs"]["CryptoBoxRootActions"], - "cryptsetup", - "luksOpen", - self.device, - self.name, - "--batch-mode"]) - proc.stdin.write(password) - (output, errout) = proc.communicate() - if proc.returncode != 0: - errorMsg = "Could not open the luks mapping: %s" % (errout.strip(), ) - self.log.warn(errorMsg) - raise CBMountError(errorMsg) - proc = subprocess.Popen( - shell = False, - stdin = None, - stdout = devnull, - stderr = subprocess.PIPE, - args = [ - self.cbox.prefs["Programs"]["super"], - self.cbox.prefs["Programs"]["CryptoBoxRootActions"], - "mount", - os.path.join(self.__dmDir, self.name), - self.__getMountPoint()]) - proc.wait() - if proc.returncode != 0: - errorMsg = "Could not mount the filesystem: %s" % (proc.stderr.read().strip(), ) - self.log.warn(errorMsg) - raise CBMountError(errorMsg) - devnull.close() - - - def __umountLuks(self): - "umount a luks partition" - devnull = None - try: - devnull = open(os.devnull, "w") - except IOError: - self.log.warn("Could not open %s" % (os.devnull, )) - if self.isMounted(): - proc = subprocess.Popen( - shell = False, - stdin = None, - stdout = devnull, - stderr = subprocess.PIPE, - args = [ - self.cbox.prefs["Programs"]["super"], - self.cbox.prefs["Programs"]["CryptoBoxRootActions"], - "umount", - self.__getMountPoint()]) - proc.wait() - if proc.returncode != 0: - errorMsg = "Could not umount the filesystem: %s" % (proc.stderr.read().strip(), ) - self.log.warn(errorMsg) - raise CBUmountError(errorMsg) - if os.path.exists(os.path.join(self.__dmDir, self.name)): - proc = subprocess.Popen( - shell = False, - stdin = None, - stdout = devnull, - stderr = subprocess.PIPE, - args = [ - self.cbox.prefs["Programs"]["super"], - self.cbox.prefs["Programs"]["CryptoBoxRootActions"], - "cryptsetup", - "luksClose", - self.name, - "--batch-mode"]) - proc.wait() - if proc.returncode != 0: - errorMsg = "Could not remove the luks mapping: %s" % (proc.stderr.read().strip(), ) - self.log.warn(errorMsg) - raise CBUmountError(errorMsg) - devnull.close() - - - def __mountPlain(self): - "mount a plaintext partition" - if self.isMounted(): raise CBVolumeIsActive("this container is already active") - devnull = None - try: - devnull = open(os.devnull, "w") - except IOError: - self.log.warn("Could not open %s" % (os.devnull, )) - self.__cleanMountDirs() - if not os.path.exists(self.__getMountPoint()): - os.mkdir(self.__getMountPoint()) - if not os.path.exists(self.__getMountPoint()): - errorMsg = "Could not create mountpoint (%s)" % (self.__getMountPoint(), ) - self.log.error(errorMsg) - raise CBMountError(errorMsg) - proc = subprocess.Popen( - shell = False, - stdin = None, - stdout = devnull, - stderr = subprocess.PIPE, - args = [ - self.cbox.prefs["Programs"]["super"], - self.cbox.prefs["Programs"]["CryptoBoxRootActions"], - "mount", - self.device, - self.__getMountPoint()]) - proc.wait() - if proc.returncode != 0: - errorMsg = "Could not mount the filesystem: %s" % (proc.stderr.read().strip(), ) - self.log.warn(errorMsg) - raise CBMountError(errorMsg) - devnull.close() - - - def __umountPlain(self): - "umount a plaintext partition" - devnull = None - try: - devnull = open(os.devnull, "w") - except IOError: - self.log.warn("Could not open %s" % (os.devnull, )) - if self.isMounted(): - proc = subprocess.Popen( - shell = False, - stdin = None, - stdout = devnull, - stderr = subprocess.PIPE, - args = [ - self.cbox.prefs["Programs"]["super"], - self.cbox.prefs["Programs"]["CryptoBoxRootActions"], - "umount", - self.__getMountPoint()]) - proc.wait() - if proc.returncode != 0: - errorMsg = "Could not umount the filesystem: %s" % (proc.stderr.read().strip(), ) - self.log.warn(errorMsg) - raise CBUmountError(errorMsg) - devnull.close() - - - def __createPlain(self): - "make a plaintext partition" - if self.isMounted(): - raise CBVolumeIsActive("deactivate the partition before filesystem initialization") - devnull = None - try: - devnull = open(os.devnull, "w") - except IOError: - self.log.warn("Could not open %s" % (os.devnull, )) - proc = subprocess.Popen( - shell = False, - stdin = None, - stdout = devnull, - stderr = subprocess.PIPE, - args = [ - self.cbox.prefs["Programs"]["mkfs-data"], - self.device]) - proc.wait() - if proc.returncode != 0: - errorMsg = "Could not create the filesystem: %s" % (proc.stderr.read().strip(), ) - self.log.error(errorMsg) - raise CBCreateError(errorMsg) - devnull.close() - - - def __createLuks(self, password): - "make a luks partition" - if not password: - raise CBInvalidPassword("no password supplied for new luks mapping") - if self.isMounted(): - raise CBVolumeIsActive("deactivate the partition before filesystem initialization") - devnull = None - try: - devnull = open(os.devnull, "w") - except IOError: - self.log.warn("Could not open %s" % (os.devnull, )) - "remove any potential open luks mapping" - self.__umountLuks() - "create the luks header" - proc = subprocess.Popen( - shell = False, - stdin = subprocess.PIPE, - stdout = devnull, - stderr = subprocess.PIPE, - args = [ - self.cbox.prefs["Programs"]["super"], - self.cbox.prefs["Programs"]["CryptoBoxRootActions"], - "cryptsetup", - "luksFormat", - self.device, - "--batch-mode", - "--cipher", self.cbox.prefs["Main"]["DefaultCipher"], - "--iter-time", "2000"]) - proc.stdin.write(password) - (output, errout) = proc.communicate() - if proc.returncode != 0: - errorMsg = "Could not create the luks header: %s" % (errout.strip(), ) - self.log.error(errorMsg) - raise CBCreateError(errorMsg) - "open the luks container for mkfs" - proc = subprocess.Popen( - shell = False, - stdin = subprocess.PIPE, - stdout = devnull, - stderr = subprocess.PIPE, - args = [ - self.cbox.prefs["Programs"]["super"], - self.cbox.prefs["Programs"]["CryptoBoxRootActions"], - "cryptsetup", - "luksOpen", - self.device, - self.name, - "--batch-mode"]) - proc.stdin.write(password) - (output, errout) = proc.communicate() - if proc.returncode != 0: - errorMsg = "Could not open the new luks mapping: %s" % (errout.strip(), ) - self.log.error(errorMsg) - raise CBCreateError(errorMsg) - "make the filesystem" - proc = subprocess.Popen( - shell = False, - stdin = None, - stdout = devnull, - stderr = subprocess.PIPE, - args = [ - self.cbox.prefs["Programs"]["mkfs-data"], - os.path.join(self.__dmDir, self.name)]) - proc.wait() - "remove the mapping - for every exit status" - self.__umountLuks() - if proc.returncode != 0: - errorMsg = "Could not create the filesystem: %s" % (proc.stderr.read().strip(), ) - self.log.error(errorMsg) - "remove the luks mapping" - raise CBCreateError(errorMsg) - devnull.close() - - - def __cleanMountDirs(self): - """ remove all unnecessary subdirs of the mount parent directory - this should be called for every (u)mount """ - subdirs = os.listdir(self.cbox.prefs["Locations"]["MountParentDir"]) - for dir in subdirs: - abs_dir = os.path.join(self.cbox.prefs["Locations"]["MountParentDir"], dir) - if (not os.path.islink(abs_dir)) and os.path.isdir(abs_dir) and (not os.path.ismount(abs_dir)): - os.rmdir(abs_dir) - - diff --git a/pythonrewrite/bin/CryptoBoxExceptions.py b/pythonrewrite/bin/CryptoBoxExceptions.py deleted file mode 100644 index 743bfcd..0000000 --- a/pythonrewrite/bin/CryptoBoxExceptions.py +++ /dev/null @@ -1,107 +0,0 @@ -""" -exceptions of the cryptobox package -""" - - -class CryptoBoxError(Exception): - """base class for exceptions of the cryptobox""" - pass - - -class CBConfigError(CryptoBoxError): - """any kind of error related to the configuration of a cryptobox""" - pass - - -class CBConfigUnavailableError(CBConfigError): - """config file/input was not available at all""" - - def __init__(self, source=None): - self.source = source - - def __str__(self): - if self.source: - return "failed to access the configuration of the cryptobox: %s" % self.source - else: - return "failed to access the configuration of the cryptobox" - - -class CBConfigUndefinedError(CBConfigError): - """a specific configuration setting was not defined""" - - def __init__(self, section, name=None): - self.section = section - self.name = name - - def __str__(self): - # is it a settings or a section? - if self.name: - # setting - return "undefined configuration setting: [%s]->%s - please check your configuration file" % (self.section, self.name) - else: - # section - return "undefined configuration section: [%s] - please check your configuration file" % (self.section, ) - - - -class CBConfigInvalidValueError(CBConfigError): - """a configuration setting was invalid somehow""" - - def __init__(self, section, name, value, reason): - self.section = section - self.name = name - self.value = value - self.reason = reason - - def __str__(self): - return "invalid configuration setting [%s]->%s (%s): %s" % (self.section, self.name, self.value, self.reason) - - -class CBEnvironmentError(CryptoBoxError): - """some part of the environment of the cryptobox is broken - e.g. the wrong version of a required program - """ - - def __init__(self, desc): - self.desc = desc - - def __str__(self): - return "misconfiguration detected: %s" % self.desc - - -class CBContainerError(CryptoBoxError): - """any error raised while manipulating a cryptobox container""" - - def __init__(self, desc): - self.desc = desc - - def __str__(self): - return self.desc - -class CBCreateError(CBContainerError): - pass - -class CBVolumeIsActive(CBContainerError): - pass - -class CBInvalidName(CBContainerError): - pass - -class CBNameActivelyUsed(CBContainerError): - pass - -class CBInvalidType(CBContainerError): - pass - -class CBInvalidPassword(CBContainerError): - pass - -class CBChangePasswordError(CBContainerError): - pass - -class CBMountError(CBContainerError): - pass - -class CBUmountError(CBContainerError): - pass - diff --git a/pythonrewrite/bin/CryptoBoxPlugin.py b/pythonrewrite/bin/CryptoBoxPlugin.py deleted file mode 100644 index abb3f0c..0000000 --- a/pythonrewrite/bin/CryptoBoxPlugin.py +++ /dev/null @@ -1,165 +0,0 @@ -# $Id$ -# -# parent class for all plugins of the CryptoBox -# - -import os -import cherrypy - - -class CryptoBoxPlugin: - - ## default capability is "system" - the other supported capability is: "volume" - pluginCapabilities = [ "system" ] - - ## does this plugin require admin authentification? - requestAuth = False - - ## is this plugin enabled by default? - enabled = True - - ## default rank (0..100) of the plugin in listings (lower value means higher priority) - rank = 80 - - - ## default icon of this plugin (relative path) - defaultIconFileName = "plugin_icon.png" - - - def __init__(self, cbox, pluginDir): - self.cbox = cbox - self.hdf = {} - self.pluginDir = pluginDir - self.hdf_prefix = "Data.Plugins.%s." % self.getName() - - - def doAction(self, **args): - """override doAction with your plugin code""" - raise Exception, "undefined action handler ('doAction') in plugin '%'" % self.getName() - - - def getStatus(self): - """you should override this, to supply useful state information""" - raise Exception, "undefined state handler ('getStatus') in plugin '%'" % self.getName() - - - def getName(self): - """the name of the python file (module) should be the name of the plugin""" - return self.__module__ - - - @cherrypy.expose - def getIcon(self, image=None, **kargs): - """return the image data of the icon of the plugin - - the parameter 'image' may be used for alternative image locations (relative - to the directory of the plugin) - '**kargs' is necessary, as a 'weblang' attribute may be specified (and ignored)""" - import cherrypy, re - if (image is None): # or (re.search(u'[\w-\.]', image)): - plugin_icon_file = os.path.join(self.pluginDir, self.defaultIconFileName) - else: - plugin_icon_file = os.path.join(self.pluginDir, image) - if not os.access(plugin_icon_file, os.R_OK): - plugin_icon_file = os.path.join(self.cbox.prefs["Locations"]["PluginDir"], "plugin_icon_unknown.png") - return cherrypy.lib.cptools.serveFile(plugin_icon_file) - - - def getTemplateFileName(self, template_name): - """return the filename of the template, if it is part of this plugin - - use this function to check, if the plugin provides the specified template - """ - result_file = os.path.join(self.pluginDir, template_name + ".cs") - if os.access(result_file, os.R_OK) and os.path.isfile(result_file): - return result_file - else: - return None - - - def getLanguageData(self, lang="en"): - try: - import neo_cgi, neo_util - except: - raise CryptoBoxExceptions.CBEnvironmentError("couldn't import 'neo_*'! Try 'apt-get install python-clearsilver'.") - langdir = os.path.abspath(os.path.join(self.pluginDir, "lang")) - ## first: the default language file (english) - langFiles = [os.path.join(langdir, "en.hdf")] - ## maybe we have to load a translation afterwards - if lang != "en": - langFiles.append(os.path.join(langdir, lang + ".hdf")) - file_found = False - lang_hdf = neo_util.HDF() - for langFile in langFiles: - if os.access(langFile, os.R_OK): - lang_hdf.readFile(langFile) - file_found = True - if file_found: - return lang_hdf - else: - self.cbox.log.debug("Couldn't find a valid plugin language file (%s)" % str(langFiles)) - return None - - - def loadDataSet(self, hdf): - for (key, value) in self.hdf.items(): - hdf.setValue(key, str(value)) - - - def isAuthRequired(self): - """check if this plugin requires authentication - first step: check plugin configuration - second step: check default value of plugin""" - try: - if self.cbox.prefs.pluginConf[self.getName()]["requestAuth"] is None: - return self.requestAuth - if self.cbox.prefs.pluginConf[self.getName()]["requestAuth"]: - return True - else: - return False - except KeyError: - return self.requestAuth - - - def isEnabled(self): - """check if this plugin is enabled - first step: check plugin configuration - second step: check default value of plugin""" - import types - try: - if self.cbox.prefs.pluginConf[self.getName()]["enabled"] is None: - return self.enabled - if self.cbox.prefs.pluginConf[self.getName()]["enabled"]: - return True - else: - return False - except KeyError: - return self.enabled - - - def getRank(self): - """check the rank of this plugin - first step: check plugin configuration - second step: check default value of plugin""" - try: - if self.cbox.prefs.pluginConf[self.getName()]["rank"] is None: - return self.rank - return int(self.cbox.prefs.pluginConf[self.getName()]["rank"]) - except KeyError, TypeError: - return self.rank - - - def getTestClass(self): - import imp - pl_file = os.path.join(self.pluginDir, "unittests.py") - if os.access(pl_file, os.R_OK) and os.path.isfile(pl_file): - try: - return getattr(imp.load_source("unittests_%s" % self.getName(), pl_file), "unittests") - except AttributeError: - pass - try: - self.cbox.log.info("could not load unittests for plugin: %s" % self.getName()) - except AttributeError: - pass - return None - diff --git a/pythonrewrite/bin/CryptoBoxRootActions.py b/pythonrewrite/bin/CryptoBoxRootActions.py deleted file mode 100755 index b92ae3c..0000000 --- a/pythonrewrite/bin/CryptoBoxRootActions.py +++ /dev/null @@ -1,386 +0,0 @@ -#!/usr/bin/env python2.4 - -"""module for executing the programs, that need root privileges - -Syntax: - - program - - device - - [action] - - [action args] - -this script will always return with an exitcode 0 (true), if "check" is the only argument -""" - -import os -import sys -import subprocess -import pwd -import grp -import types - -allowedProgs = { - "sfdisk": "/sbin/sfdisk", - "cryptsetup": "/sbin/cryptsetup", - "mount": "/bin/mount", - "umount": "/bin/umount", - "blkid": "/sbin/blkid", - } - - -DEV_TYPES = { "pipe":1, "char":2, "dir":4, "block":6, "file":8, "link":10, "socket":12} - - -def checkIfPluginIsSafe(plugin): - """check if the plugin and its parents are only writeable for root""" - #FIXME: for now we may skip this test - but users will not like it this way :) - return True - props = os.stat(plugin) - ## check if it is owned by non-root - if props.st_uid != 0: return False - ## check group-write permission if gid is not zero - if (props.st_gid != 0) and (props.st_mode % 32 / 16 > 0): return False - ## check if it is world-writeable - if props.st_mode % 4 / 2 > 0: return False - ## are we at root-level (directory-wise)? If yes, then we are ok ... - if plugin == os.path.sep: return True - ## check if the parent directory is ok - recursively :) - return checkIfPluginIsSafe(os.path.dirname(os.path.abspath(plugin))) - - -def checkIfPluginIsValid(plugin): - import imp - try: - x = imp.load_source("cbox_plugin",plugin) - except Exception: - return False - try: - if getattr(x, "PLUGIN_TYPE") == "cryptobox": - return True - else: - return False - except Exception: - return False - - -def call_plugin(args): - """check if the plugin may be called - and do it finally ...""" - plugin = os.path.abspath(args[0]) - del args[0] - ## check existence and excutability - if not os.access(plugin, os.X_OK): - raise Exception, "could not find executable plugin (%s)" % plugin - ## check if the plugin (and its parents) are only writeable for root - if not checkIfPluginIsSafe(plugin): - raise Exception, "the plugin (%s) was not safe - check its (and its parents') permissions" % plugin - ## check if the plugin is a python program, that is marked as a cryptobox plugin - if not checkIfPluginIsValid(plugin): - raise Exception, "the plugin (%s) is not a correctly marked python script" % plugin - args.insert(0,plugin) - proc = subprocess.Popen( - shell = False, - args = args) - proc.wait() - return proc.returncode == 0 - - -def isWriteable(device, force_dev_type=None): - """check if the calling user (not root!) has write access to the device/file - - the real (not the effictive) user id is used for the check - additionally the permissions of the default groups of the real uid are checked - this check works nicely together with "super", as it changes (by default) only - the effective uid (not the real uid) - """ - # first check, if the device/file exists - if not os.path.exists(device): - return False - # check the type of the device - if necessary - if not force_dev_type is None: - dev_type = os.stat(device).st_mode % 65536 / 4096 - if dev_type != force_dev_type: return False - # retrieve the information for the real user id - (trustUserName, trustUID, groupsOfTrustUser) = getUserInfo(os.getuid()) - # set the default groups of the caller for the check (restore them later) - savedGroups = os.getgroups() - os.setgroups(groupsOfTrustUser) - # check permissions - result = os.access(device, os.W_OK) and os.access(device, os.R_OK) - # reset the groups of this process - os.setgroups(savedGroups) - return result - - -def run_cryptsetup(args): - """execute cryptsetup as root - - @args: list of arguments - they will be treated accordingly to the first element - of this list (the action)""" - if not args: raise "WrongArguments", "no action for cryptsetup supplied" - if type(args) != types.ListType: raise "WrongArguments", "invalid arguments supplied: %s" % (args, ) - try: - action = args[0] - del args[0] - device = None - cmd_args = [] - if action == "luksFormat": - device = args[0]; del args[0] - cmd_args.append(action) - cmd_args.append(device) - elif action == "luksUUID": - device = args[0]; del args[0] - cmd_args.append(action) - cmd_args.append(device) - elif action == "luksOpen": - if len(args) < 2: raise "WrongArguments", "missing arguments" - device = args[0]; del args[0] - destination = args[0]; del args[0] - cmd_args.append(action) - cmd_args.append(device) - cmd_args.append(destination) - elif action == "luksClose": - if len(args) < 1: raise "WrongArguments", "missing arguments" - destination = args[0]; del args[0] - # maybe add a check for the mapped device's permissions? - # dmsetup deps self.device - cmd_args.append(action) - cmd_args.append(destination) - elif action == "luksAddKey": - device = args[0]; del args[0] - cmd_args.append(action) - cmd_args.append(device) - elif action == "luksDelKey": - if len(cs_args) < 2: raise "WrongArguments", "missing arguments" - device = args[0]; del args[0] - cmd_args.insert(-1, action) - cmd_args.insert(-1, device) - elif action == "isLuks": - device = args[0]; del args[0] - cmd_args.append(action) - cmd_args.append(device) - else: raise "WrongArguments", "invalid action supplied: %s" % (action, ) - # check if a device was defined - and check it - if (not device is None) and (not isWriteable(device, DEV_TYPES["block"])): - raise "WrongArguments", "%s is not a writeable block device" % (device, ) - cs_args = [allowedProgs["cryptsetup"]] - cs_args.extend(args) - cs_args.extend(cmd_args) - except (TypeError, IndexError): - raise "WrongArguments", "invalid arguments supplied: %s" % (args, ) - # execute cryptsetup with the given parameters - proc = subprocess.Popen( - shell = False, - args = cs_args) - proc.wait() - ## chown the devmapper block device to the cryptobox user - if (proc.returncode == 0) and (action == "luksOpen"): - os.chown(os.path.join(os.path.sep, "dev", "mapper", destination), os.getuid(), os.getgid()) - return proc.returncode == 0 - - -def run_sfdisk(args): - """execute sfdisk for partitioning - - not implemented yet""" - print "ok - you are free to call sfdisk ..." - print " not yet implemented ..." - return True - - -def getFSType(device): - """get the filesystem type of a device""" - proc = subprocess.Popen( - shell = False, - stdout = subprocess.PIPE, - args = [ allowedProgs["blkid"], - "-s", "TYPE", - "-o", "value", - "-c", os.devnull, - "-w", os.devnull, - device]) - (stdout, stderr) = proc.communicate() - if proc.returncode != 0: - return None - return stdout.strip() - - -def run_mount(args): - """execute mount - """ - if not args: raise "WrongArguments", "no destination for mount supplied" - if type(args) != types.ListType: raise "WrongArguments", "invalid arguments supplied: %s" % (args, ) - try: - device = args[0] - del args[0] - destination = args[0] - del args[0] - # check permissions for the device - if not isWriteable(device, DEV_TYPES["block"]): - raise "WrongArguments", "%s is not a writeable block device" % (device, ) - ## check permissions for the mountpoint - if not isWriteable(destination, DEV_TYPES["dir"]): - raise "WrongArguments", "the mountpoint (%s) is not writeable" % (destination, ) - # check for additional (not allowed) arguments - if len(args) != 0: - raise "WrongArguments", "too many arguments for 'mount': %s" % (args, ) - except TypeError: - raise "WrongArguments", "invalid arguments supplied: %s" % (args, ) - # execute mount with the given parameters - # first overwrite the real uid, as 'mount' wants this to be zero (root) - savedUID = os.getuid() - os.setuid(os.geteuid()) - ## we have to change the permissions of the mounted directory - otherwise it will - ## not be writeable for the cryptobox user - ## for 'vfat' we have to do this during mount - ## for ext2/3 we have to do it afterward - ## first: get the user/group of the target - (trustUserName, trustUID, groupsOfTrustUser) = getUserInfo(savedUID) - trustGID = groupsOfTrustUser[0] - fsType = getFSType(device) - ## define arguments - if fsType == "vfat": - ## add the "uid/gid" arguments to the mount call - mount_args = [allowedProgs["mount"], - "-o", "uid=%d,gid=%d" % (trustUID, trustGID), - device, - destination] - else: - ## all other filesystem types will be handled after mount - mount_args = [allowedProgs["mount"], device, destination] - # execute mount - proc = subprocess.Popen( - shell = False, - args = mount_args) - proc.wait() - ## return in case of an error - if proc.returncode != 0: - return False - ## for vfat: we are done - if fsType == "vfat": return True - ## for all other filesystem types: chown the mount directory - try: - os.chown(destination, trustUID, groupsOfTrustUser[0]) - except OSError, errMsg: - sys.stderr.write("could not chown the mount destination (%s) to the specified user (%d/%d): %s\n" % (destination, trustUID, groupsOfTrustUser[0], errMsg)) - sys.stderr.write("UID: %d\n" % (os.geteuid(),)) - return False - ## BEWARE: it would be nice, if we could restore the previous uid (not euid) but - ## this would also override the euid (see 'man 2 setuid') - any ideas? - return True - - -def run_umount(args): - """execute mount - """ - if not args: raise "WrongArguments", "no mountpoint for umount supplied" - if type(args) != types.ListType: raise "WrongArguments", "invalid arguments supplied" - try: - destination = args[0] - del args[0] - # check permissions for the destination - if not isWriteable(os.path.dirname(destination), DEV_TYPES["dir"]): - raise "WrongArguments", "the parent of the mountpoint (%s) is not writeable" % (destination, ) - if len(args) != 0: raise "WrongArguments", "umount does not allow arguments" - except TypeError: - raise "WrongArguments", "invalid arguments supplied" - # execute umount with the given parameters - # first overwrite the real uid, as 'umount' wants this to be zero (root) - savedUID = os.getuid() - os.setuid(os.geteuid()) - # execute umount (with the parameter '-l' - lazy umount) - proc = subprocess.Popen( - shell = False, - args = [allowedProgs["umount"], "-l", destination]) - proc.wait() - # restore previous real uid - os.setuid(savedUID) - return proc.returncode == 0 - - -def getUserInfo(user): - """return information about the specified user - - @user: (uid or name) - @return: tuple of (name, uid, (groups)) - """ - if user is None: raise "KeyError", "no user supplied" - # first check, if 'user' contains an id - then check for a name - try: - userinfo = pwd.getpwuid(user) - except TypeError: - # if a KeyError is raised again, then the supplied user was invalid - userinfo = pwd.getpwnam(user) - u_groups =[one_group.gr_gid - for one_group in grp.getgrall() - if userinfo.pw_name in one_group.gr_mem] - if not userinfo.pw_gid in u_groups: u_groups.append(userinfo.pw_gid) - return (userinfo.pw_name, userinfo.pw_uid, u_groups) - - -# **************** main ********************** - -# prevent import -if __name__ == "__main__": - - # do we have root privileges (effective uid is zero)? - if os.geteuid() != 0: - sys.stderr.write("the effective uid is not zero - you should use 'super' to call this script (%s)" % sys.argv[0]) - sys.exit(100) - - # remove program name - args = sys.argv[1:] - - # do not allow to use root permissions (real uid may not be zero) - if os.getuid() == 0: - sys.stderr.write("the uid of the caller is zero (root) - this is not allowed\n") - sys.exit(100) - - # check if there were arguments - if (len(args) == 0): - sys.stderr.write("No arguments supplied\n") - sys.exit(100) - - # did the user call the "check" action? - if (len(args) == 1) and (args[0].lower() == "check"): - # exit silently - sys.exit(0) - - if args[0].lower() == "plugin": - del args[0] - try: - isOK = call_plugin(args) - except Exception, errMsg: - sys.stderr.write("Execution of plugin failed: %s\n" % errMsg) - sys.exit(100) - if isOK: - sys.exit(0) - else: - sys.exit(1) - - # check parameters count - if len(args) < 2: - sys.stderr.write("Not enough arguments supplied (%s)!\n" % " ".join(args)) - sys.exit(100) - - progRequest = args[0] - del args[0] - - if not progRequest in allowedProgs.keys(): - sys.stderr.write("Invalid program requested: %s\n" % progRequest) - sys.exit(100) - - if progRequest == "cryptsetup": runner = run_cryptsetup - elif progRequest == "sfdisk": runner = run_sfdisk - elif progRequest == "mount": runner = run_mount - elif progRequest == "umount": runner = run_umount - else: - sys.stderr.write("The interface for this program (%s) is not yet implemented!\n" % progRequest) - sys.exit(100) - try: - if runner(args): - sys.exit(0) - else: - sys.exit(1) - except "WrongArguments", errstr: - sys.stderr.write("Execution failed: %s\n" % errstr) - sys.exit(100) - diff --git a/pythonrewrite/bin/CryptoBoxSettings.py b/pythonrewrite/bin/CryptoBoxSettings.py deleted file mode 100644 index 73ca9a6..0000000 --- a/pythonrewrite/bin/CryptoBoxSettings.py +++ /dev/null @@ -1,481 +0,0 @@ -import logging -try: - import validate -except: - raise CryptoBoxExceptions.CBEnvironmentError("couldn't import 'validate'! Try 'apt-get install python-formencode'.") -import os -import CryptoBoxExceptions -import subprocess -try: - import configobj ## needed for reading and writing of the config file -except: - raise CryptoBoxExceptions.CBEnvironmentError("couldn't import 'configobj'! Try 'apt-get install python-configobj'.") - - - -class CryptoBoxSettings: - - CONF_LOCATIONS = [ - "./cryptobox.conf", - "~/.cryptobox.conf", - "/etc/cryptobox/cryptobox.conf"] - - NAMEDB_FILE = "cryptobox_names.db" - PLUGINCONF_FILE = "cryptobox_plugins.conf" - USERDB_FILE = "cryptobox_users.db" - - - def __init__(self, config_file=None): - self.log = logging.getLogger("CryptoBox") - config_file = self.__getConfigFileName(config_file) - self.log.info("loading config file: %s" % config_file) - self.prefs = self.__getPreferences(config_file) - self.__validateConfig() - self.__configureLogHandler() - self.__checkUnknownPreferences() - self.preparePartition() - self.nameDB = self.__getNameDatabase() - self.pluginConf = self.__getPluginConfig() - self.userDB = self.__getUserDB() - self.misc_files = self.__getMiscFiles() - - - def write(self): - """ - write all local setting files including the content of the "misc" subdirectory - """ - ok = True - try: - self.nameDB.write() - except IOError: - self.log.warn("could not save the name database") - ok = False - try: - self.pluginConf.write() - except IOError: - self.log.warn("could not save the plugin configuration") - ok = False - try: - self.userDB.write() - except IOError: - self.log.warn("could not save the user database") - ok = False - for misc_file in self.misc_files: - if not misc_file.save(): - self.log.warn("could not save a misc setting file (%s)" % misc_file.filename) - ok = False - return ok - - - def requiresPartition(self): - return bool(self.prefs["Main"]["UseConfigPartition"]) - - - def getActivePartition(self): - settings_dir = self.prefs["Locations"]["SettingsDir"] - if not os.path.ismount(settings_dir): return None - for line in file("/proc/mounts"): - fields = line.split(" ") - mount_dir = fields[1] - try: - if os.path.samefile(mount_dir, settings_dir): return fields[0] - except OSError: - pass - ## no matching entry found - return None - - - def mountPartition(self): - self.log.debug("trying to mount configuration partition") - if not self.requiresPartition(): - self.log.warn("mountConfigPartition: configuration partition is not required - mounting anyway") - if self.getActivePartition(): - self.log.warn("mountConfigPartition: configuration partition already mounted - not mounting again") - return False - confPartitions = self.getAvailablePartitions() - if not confPartitions: - self.log.error("no configuration partitions found - you have to create it first") - return False - partition = confPartitions[0] - proc = subprocess.Popen( - shell = False, - stdout = subprocess.PIPE, - stderr = subprocess.PIPE, - args = [ - self.prefs["Programs"]["super"], - self.prefs["Programs"]["CryptoBoxRootActions"], - "mount", - partition, - self.prefs["Locations"]["SettingsDir"]]) - (stdout, stderr) = proc.communicate() - if proc.returncode != 0: - self.log.error("failed to mount the configuration partition: %s" % partition) - self.log.error("output of mount: %s" % (stderr,)) - return False - self.log.info("configuration partition mounted: %s" % partition) - return True - - - def umountPartition(self): - if not self.getActivePartition(): - self.log.warn("umountConfigPartition: no configuration partition mounted") - return False - proc = subprocess.Popen( - shell = False, - stdout = subprocess.PIPE, - stderr = subprocess.PIPE, - args = [ - self.prefs["Programs"]["super"], - self.prefs["Programs"]["CryptoBoxRootActions"], - "umount", - self.prefs["Locations"]["SettingsDir"]]) - (stdout, stderr) = proc.communicate() - if proc.returncode != 0: - self.log.error("failed to unmount the configuration partition") - self.log.error("output of mount: %s" % (stderr,)) - return False - self.log.info("configuration partition unmounted") - return True - - - def getAvailablePartitions(self): - """returns a sequence of found config partitions""" - proc = subprocess.Popen( - shell = False, - stdout = subprocess.PIPE, - args = [ - self.prefs["Programs"]["blkid"], - "-c", os.path.devnull, - "-t", "LABEL=%s" % self.prefs["Main"]["ConfigVolumeLabel"] ]) - (output, error) = proc.communicate() - if output: - return [e.strip().split(":",1)[0] for e in output.splitlines()] - else: - return [] - - - def preparePartition(self): - if self.requiresPartition() and not self.getActivePartition(): - self.mountPartition() - - - def __getitem__(self, key): - """redirect all requests to the 'prefs' attribute""" - return self.prefs[key] - - - def __getPreferences(self, config_file): - import StringIO - config_rules = StringIO.StringIO(self.validation_spec) - try: - prefs = configobj.ConfigObj(config_file, configspec=config_rules) - if prefs: - self.log.info("found config: %s" % prefs.items()) - else: - raise CryptoBoxExceptions.CBConfigUnavailableError("failed to load the config file: %s" % config_file) - except IOError: - raise CryptoBoxExceptions.CBConfigUnavailableError("unable to open the config file: %s" % config_file) - return prefs - - - def __validateConfig(self): - result = self.prefs.validate(CryptoBoxSettingsValidator(), preserve_errors=True) - error_list = configobj.flatten_errors(self.prefs, result) - if not error_list: return - errorMsgs = [] - for sections, key, text in error_list: - section_name = "->".join(sections) - if not text: - errorMsg = "undefined configuration value (%s) in section '%s'" % (key, section_name) - else: - errorMsg = "invalid configuration value (%s) in section '%s': %s" % (key, section_name, text) - errorMsgs.append(errorMsg) - raise CryptoBoxExceptions.CBConfigError, "\n".join(errorMsgs) - - - def __checkUnknownPreferences(self): - import StringIO - config_rules = configobj.ConfigObj(StringIO.StringIO(self.validation_spec), list_values=False) - self.__recursiveConfigSectionCheck("", self.prefs, config_rules) - - - def __recursiveConfigSectionCheck(self, section_path, section_config, section_rules): - """should be called by '__checkUnknownPreferences' for every section - sends a warning message to the logger for every undefined (see validation_spec) - configuration setting - """ - for e in section_config.keys(): - element_path = section_path + e - if e in section_rules.keys(): - if isinstance(section_config[e], configobj.Section): - if isinstance(section_rules[e], configobj.Section): - self.__recursiveConfigSectionCheck(element_path + "->", section_config[e], section_rules[e]) - else: - self.log.warn("configuration setting should be a value instead of a section name: %s" % element_path) - else: - if not isinstance(section_rules[e], configobj.Section): - pass # good - the setting is valid - else: - self.log.warn("configuration setting should be a section name instead of a value: %s" % element_path) - else: - self.log.warn("unknown configuration setting: %s" % element_path) - - - def __getNameDatabase(self): - try: - try: - nameDB_file = os.path.join(self.prefs["Locations"]["SettingsDir"], self.NAMEDB_FILE) - except KeyError: - raise CryptoBoxExceptions.CBConfigUndefinedError("Locations", "SettingsDir") - except SyntaxError: - raise CryptoBoxExceptions.CBConfigInvalidValueError("Locations", "SettingsDir", nameDB_file, "failed to interprete the filename of the name database correctly (%s)" % nameDB_file) - ## create nameDB if necessary - if os.path.exists(nameDB_file): - nameDB = configobj.ConfigObj(nameDB_file) - else: - nameDB = configobj.ConfigObj(nameDB_file, create_empty=True) - ## check if nameDB file was created successfully? - if not os.path.exists(nameDB_file): - raise CryptoBoxExceptions.CBEnvironmentError("failed to create name database (%s)" % nameDB_file) - return nameDB - - - def __getPluginConfig(self): - import StringIO - plugin_rules = StringIO.StringIO(self.pluginValidationSpec) - try: - try: - pluginConf_file = os.path.join(self.prefs["Locations"]["SettingsDir"], self.PLUGINCONF_FILE) - except KeyError: - raise CryptoBoxExceptions.CBConfigUndefinedError("Locations", "SettingsDir") - except SyntaxError: - raise CryptoBoxExceptions.CBConfigInvalidValueError("Locations", "SettingsDir", pluginConf_file, "failed to interprete the filename of the plugin config file correctly (%s)" % pluginConf_file) - ## create pluginConf_file if necessary - if os.path.exists(pluginConf_file): - pluginConf = configobj.ConfigObj(pluginConf_file, configspec=plugin_rules) - else: - pluginConf = configobj.ConfigObj(pluginConf_file, configspec=plugin_rules, create_empty=True) - ## validate and convert values according to the spec - pluginConf.validate(validate.Validator()) - ## check if pluginConf_file file was created successfully? - if not os.path.exists(pluginConf_file): - raise CryptoBoxExceptions.CBEnvironmentError("failed to create plugin configuration file (%s)" % pluginConf_file) - return pluginConf - - - def __getUserDB(self): - import StringIO, sha - userDB_rules = StringIO.StringIO(self.userDatabaseSpec) - try: - try: - userDB_file = os.path.join(self.prefs["Locations"]["SettingsDir"], self.USERDB_FILE) - except KeyError: - raise CryptoBoxExceptions.CBConfigUndefinedError("Locations", "SettingsDir") - except SyntaxError: - raise CryptoBoxExceptions.CBConfigInvalidValueError("Locations", "SettingsDir", userDB_file, "failed to interprete the filename of the users database file correctly (%s)" % userDB_file) - ## create userDB_file if necessary - if os.path.exists(userDB_file): - userDB = configobj.ConfigObj(userDB_file, configspec=userDB_rules) - else: - userDB = configobj.ConfigObj(userDB_file, configspec=userDB_rules, create_empty=True) - ## validate and set default value for "admin" user - userDB.validate(validate.Validator()) - ## check if userDB file was created successfully? - if not os.path.exists(userDB_file): - raise CryptoBoxExceptions.CBEnvironmentError("failed to create user database file (%s)" % userDB_file) - ## define password hash function - never use "sha" directly - SPOT - userDB.getDigest = lambda password: sha.new(password).hexdigest() - return userDB - - - def __getMiscFiles(self): - misc_dir = os.path.join(self.prefs["Locations"]["SettingsDir"], "misc") - if (not os.path.isdir(misc_dir)) or (not os.access(misc_dir, os.X_OK)): - return [] - return [MiscConfigFile(os.path.join(misc_dir, f), self.log) - for f in os.listdir(misc_dir) - if os.path.isfile(os.path.join(misc_dir, f))] - - - def __getConfigFileName(self, config_file): - # search for the configuration file - import types - if config_file is None: - # no config file was specified - we will look for it in the ususal locations - conf_file_list = [os.path.expanduser(f) - for f in self.CONF_LOCATIONS - if os.path.exists(os.path.expanduser(f))] - if not conf_file_list: - # no possible config file found in the usual locations - raise CryptoBoxExceptions.CBConfigUnavailableError() - config_file = conf_file_list[0] - else: - # a config file was specified (e.g. via command line) - if type(config_file) != types.StringType: - raise CryptoBoxExceptions.CBConfigUnavailableError("invalid config file specified: %s" % config_file) - if not os.path.exists(config_file): - raise CryptoBoxExceptions.CBConfigUnavailableError("could not find the specified configuration file (%s)" % config_file) - return config_file - - - def __configureLogHandler(self): - try: - log_level = self.prefs["Log"]["Level"].upper() - log_level_avail = ["DEBUG", "INFO", "WARN", "ERROR"] - if not log_level in log_level_avail: - raise TypeError - except KeyError: - raise CryptoBoxExceptions.CBConfigUndefinedError("Log", "Level") - except TypeError: - raise CryptoBoxExceptions.CBConfigInvalidValueError("Log", "Level", log_level, "invalid log level: only %s are allowed" % log_level_avail) - try: - try: - log_handler = logging.FileHandler(self.prefs["Log"]["Details"]) - except KeyError: - raise CryptoBoxExceptions.CBConfigUndefinedError("Log", "Details") - except IOError: - raise CryptoBoxExceptions.CBEnvironmentError("could not create the log file (%s)" % self.prefs["Log"]["Details"]) - log_handler.setFormatter(logging.Formatter('%(asctime)s CryptoBox %(levelname)s: %(message)s')) - cbox_log = logging.getLogger("CryptoBox") - ## remove previous handlers - cbox_log.handlers = [] - ## add new one - cbox_log.addHandler(log_handler) - ## do not call parent's handlers - cbox_log.propagate = False - ## 'log_level' is a string -> use 'getattr' - cbox_log.setLevel(getattr(logging,log_level)) - ## the logger named "CryptoBox" is configured now - - - validation_spec = """ -[Main] -AllowedDevices = list(min=1) -DefaultVolumePrefix = string(min=1) -DefaultCipher = string(default="aes-cbc-essiv:sha256") -ConfigVolumeLabel = string(min=1, default="cbox_config") -UseConfigPartition = integer(min=0, max=1, default=0) - -[Locations] -MountParentDir = directoryExists(default="/var/cache/cryptobox/mnt") -SettingsDir = directoryExists(default="/var/cache/cryptobox/settings") -TemplateDir = directoryExists(default="/usr/share/cryptobox/template") -LangDir = directoryExists(default="/usr/share/cryptobox/lang") -DocDir = directoryExists(default="/usr/share/doc/cryptobox/html") -PluginDir = directoryExists(default="/usr/share/cryptobox/plugins") - -[Log] -Level = option("debug", "info", "warn", "error", default="warn") -Destination = option("file", default="file") -Details = string(min=1) - -[WebSettings] -Stylesheet = string(min=1) -Language = string(min=1, default="en") - -[Programs] -cryptsetup = fileExecutable(default="/sbin/cryptsetup") -mkfs-data = fileExecutable(default="/sbin/mkfs.ext3") -blkid = fileExecutable(default="/sbin/blkid") -blockdev = fileExecutable(default="/sbin/blockdev") -mount = fileExecutable(default="/bin/mount") -umount = fileExecutable(default="/bin/umount") -super = fileExecutable(default="/usr/bin/super") -# this is the "program" name as defined in /etc/super.tab -CryptoBoxRootActions = string(min=1) - """ - - pluginValidationSpec = """ -[__many__] -enabled = boolean(default=None) -requestAuth = boolean(default=None) -rank = integer(default=None) - """ - - userDatabaseSpec = """ -[admins] -admin = string(default=d033e22ae348aeb5660fc2140aec35850c4da997) - """ - - -class CryptoBoxSettingsValidator(validate.Validator): - - def __init__(self): - validate.Validator.__init__(self) - self.functions["directoryExists"] = self.check_directoryExists - self.functions["fileExecutable"] = self.check_fileExecutable - self.functions["fileWriteable"] = self.check_fileWriteable - - - def check_directoryExists(self, value): - dir_path = os.path.abspath(value) - if not os.path.isdir(dir_path): - raise validate.VdtValueError("%s (not found)" % value) - if not os.access(dir_path, os.X_OK): - raise validate.VdtValueError("%s (access denied)" % value) - return dir_path - - - def check_fileExecutable(self, value): - file_path = os.path.abspath(value) - if not os.path.isfile(file_path): - raise validate.VdtValueError("%s (not found)" % value) - if not os.access(file_path, os.X_OK): - raise validate.VdtValueError("%s (access denied)" % value) - return file_path - - - def check_fileWriteable(self, value): - file_path = os.path.abspath(value) - if os.path.isfile(file_path): - if not os.access(file_path, os.W_OK): - raise validate.VdtValueError("%s (not found)" % value) - else: - parent_dir = os.path.dirname(file_path) - if os.path.isdir(parent_dir) and os.access(parent_dir, os.W_OK): - return file_path - raise validate.VdtValueError("%s (directory does not exist)" % value) - return file_path - - - -class MiscConfigFile: - - maxSize = 20480 - - def __init__(self, filename, logger): - self.filename = filename - self.log = logger - self.load() - - - def load(self): - fd = open(self.filename, "rb") - ## limit the maximum size - self.content = fd.read(self.maxSize) - if fd.tell() == self.maxSize: - self.log.warn("file in misc settings directory (%s) is bigger than allowed (%s)" % (self.filename, self.maxSize)) - fd.close() - - - def save(self): - save_dir = os.path.dirname(self.filename) - ## create the directory, if necessary - if not os.path.isdir(save_dir): - try: - os.mkdir(save_dir) - except IOError: - return False - ## save the content of the file - try: - fd = open(self.filename, "wb") - except IOError: - return False - try: - fd.write(self.content) - fd.close() - return True - except IOError: - fd.close() - return False - diff --git a/pythonrewrite/bin/CryptoBoxTools.py b/pythonrewrite/bin/CryptoBoxTools.py deleted file mode 100644 index 25ffa03..0000000 --- a/pythonrewrite/bin/CryptoBoxTools.py +++ /dev/null @@ -1,186 +0,0 @@ -import logging -import os -import re - -logger = logging.getLogger("CryptoBox") - - -def getAvailablePartitions(): - "retrieve a list of all available containers" - ret_list = [] - try: - "the following reads all lines of /proc/partitions and adds the mentioned devices" - fpart = open("/proc/partitions", "r") - try: - line = fpart.readline() - while line: - p_details = line.split() - if (len(p_details) == 4): - "the following code prevents double entries like /dev/hda and /dev/hda1" - (p_major, p_minor, p_size, p_device) = p_details - ## ignore lines with: invalid minor/major or extend partitions (size=1) - if re.search('^[0-9]*$', p_major) and re.search('^[0-9]*$', p_minor) and (p_size != "1"): - p_parent = re.sub('[1-9]?[0-9]$', '', p_device) - if p_parent == p_device: - if [e for e in ret_list if re.search('^' + p_parent + '[1-9]?[0-9]$', e)]: - "major partition - its children are already in the list" - pass - else: - "major partition - but there are no children for now" - ret_list.append(p_device) - else: - "minor partition - remove parent if necessary" - if p_parent in ret_list: ret_list.remove(p_parent) - ret_list.append(p_device) - line = fpart.readline() - finally: - fpart.close() - return map(getAbsoluteDeviceName, ret_list) - except IOError: - logger.warning("Could not read /proc/partitions") - return [] - - -def getAbsoluteDeviceName(shortname): - """ returns the absolute file name of a device (e.g.: "hda1" -> "/dev/hda1") - this does also work for device mapper devices - if the result is non-unique, one arbitrary value is returned""" - if re.search('^/', shortname): return shortname - default = os.path.join("/dev", shortname) - if os.path.exists(default): return default - result = findMajorMinorOfDevice(shortname) - "if no valid major/minor was found -> exit" - if not result: return default - (major, minor) = result - "for device-mapper devices (major == 254) ..." - if major == 254: - result = findMajorMinorDeviceName("/dev/mapper", major, minor) - if result: return result[0] - "now check all files in /dev" - result = findMajorMinorDeviceName("/dev", major, minor) - if result: return result[0] - return default - - -def findMajorMinorOfDevice(device): - "return the major/minor numbers of a block device" - if re.match("/", device) or not os.path.exists(os.path.join(os.path.sep,"sys","block",device)): - ## maybe it is an absolute device name - if not os.path.exists(device): return None - ## okay - it seems to to a device node - rdev = os.stat(device).st_rdev - return (os.major(rdev), os.minor(rdev)) - blockdev_info_file = os.path.join(os.path.join(os.path.sep,"sys","block", device), "dev") - try: - f_blockdev_info = open(blockdev_info_file, "r") - blockdev_info = f_blockdev_info.read() - f_blockdev_info.close() - (str_major, str_minor) = blockdev_info.split(":") - "numeric conversion" - try: - major = int(str_major) - minor = int(str_minor) - return (major, minor) - except ValueError: - "unknown device numbers -> stop guessing" - return None - except IOError: - pass - return None - - -def findMajorMinorDeviceName(dir, major, minor): - "returns the names of devices with the specified major and minor number" - collected = [] - try: - subdirs = [os.path.join(dir, e) for e in os.listdir(dir) if (not os.path.islink(os.path.join(dir, e))) and os.path.isdir(os.path.join(dir, e))] - "do a recursive call to parse the directory tree" - for dirs in subdirs: - collected.extend(findMajorMinorDeviceName(dirs, major, minor)) - "filter all device inodes in this directory" - collected.extend([os.path.realpath(os.path.join(dir, e)) for e in os.listdir(dir) if (os.major(os.stat(os.path.join(dir, e)).st_rdev) == major) and (os.minor(os.stat(os.path.join(dir, e)).st_rdev) == minor)]) - ## remove double entries - result = [] - for e in collected: - if e not in result: result.append(e) - return result - except OSError: - return [] - - -def getParentBlockDevices(): - devs = [] - for line in file("/proc/partitions"): - p_details = line.split() - ## we expect four values - otherwise continue with next iteration - if len(p_details) != 4: continue - (p_major, p_minor, p_size, p_device) = p_details - ## we expect numeric values in the first two columns - if re.search(u'\D',p_major) or re.search(u'\D',p_minor): continue - ## now let us check, if it is a (parent) block device or a partition - if not os.path.isdir(os.path.join(os.path.sep, "sys", "block", p_device)): continue - devs.append(p_device) - return map(getAbsoluteDeviceName, devs) - - -def isPartOfBlockDevice(parent, subdevice): - """check if the given block device is a parent of 'subdevice' - e.g. for checking if a partition belongs to a block device""" - try: - (par_major, par_minor) = findMajorMinorOfDevice(parent) - (sub_major, sub_minor) = findMajorMinorOfDevice(subdevice) - except TypeError: - ## at least one of these devices did not return a valid major/minor combination - return False - ## search the entry below '/sys/block' belonging to the parent - root = os.path.join(os.path.sep, 'sys', 'block') - for bldev in os.listdir(root): - blpath = os.path.join(root, bldev, 'dev') - if os.access(blpath, os.R_OK): - try: - if (str(par_major), str(par_minor)) == tuple([e for e in file(blpath)][0].strip().split(":",1)): - parent_path = os.path.join(root, bldev) - break - except IndexError, OSError: - pass - else: - ## no block device with this major/minor combination found below '/sys/block' - return False - for subbldev in os.listdir(parent_path): - subblpath = os.path.join(parent_path, subbldev, "dev") - if os.access(subblpath, os.R_OK): - try: - if (str(sub_major), str(sub_minor)) == tuple([e for e in file(subblpath)][0].strip().split(":",1)): - ## the name of the subdevice node is not important - we found it! - return True - except IndexError, OSError: - pass - return False - - -def getBlockDeviceSize(device): - if not device: return -1 - try: - rdev = os.stat(device).st_rdev - except OSError: - return -1 - minor = os.minor(rdev) - major = os.major(rdev) - for f in file("/proc/partitions"): - try: - elements = f.split() - if len(elements) != 4: continue - if (int(elements[0]) == major) and (int(elements[1]) == minor): - return int(elements[2])/1024 - except ValueError: - pass - return -1 - - -def getBlockDeviceSizeHumanly(device): - size = getBlockDeviceSize(device) - if size > 5120: - return "%sGB" % size/1024 - else: - return "%sMB" % size - diff --git a/pythonrewrite/bin/CryptoBoxWebserver.py b/pythonrewrite/bin/CryptoBoxWebserver.py deleted file mode 100755 index b841262..0000000 --- a/pythonrewrite/bin/CryptoBoxWebserver.py +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env python2.4 -import os -import WebInterfaceSites -import sys - -try: - import cherrypy -except: - print "Could not import the cherrypy module! Try 'apt-get install python-cherrypy'." - sys.exit(1) - -class CryptoBoxWebserver: - '''this class starts the cherryp webserver and serves the single sites''' - - def __init__(self): - cherrypy.root = WebInterfaceSites.WebInterfaceSites() - #expose static content: - #I currently have no idea how to cleanly extract the stylesheet path from - #the config object without an extra CryptoBox.CryptoBoxProps instance. - #perhaps put config handling into a seperate class in CryptoBox.py? - # - # the following manual mapping is necessary, as we may not use relative - # paths in the config file - cherrypy.config.configMap.update({ - "/cryptobox-misc": { - "staticFilter.on" : True, - "staticFilter.dir": os.path.abspath("../www-data" )} - }) - - def start(self): - # just use this config, when we're started directly - cherrypy.config.update(file = "cryptoboxwebserver.conf") - cherrypy.server.start() - -if __name__ == "__main__": - cbw = CryptoBoxWebserver() - cbw.start() - diff --git a/pythonrewrite/bin/Plugins.py b/pythonrewrite/bin/Plugins.py deleted file mode 100644 index 97a7e83..0000000 --- a/pythonrewrite/bin/Plugins.py +++ /dev/null @@ -1,67 +0,0 @@ -# $Id$ - -import imp -import os -import logging - - -class PluginManager: - """manage available plugins""" - - def __init__(self, cbox, plugin_dirs="."): - self.cbox = cbox - self.log = logging.getLogger("CryptoBox") - if hasattr(plugin_dirs, "__iter__"): - self.plugin_dirs = [os.path.abspath(dir) for dir in plugin_dirs] - else: - self.plugin_dirs = [os.path.abspath(plugin_dirs)] - self.pluginList = self.__getAllPlugins() - - - def getPlugins(self): - return self.pluginList[:] - - - def getPlugin(self, name): - for p in self.pluginList[:]: - if p.getName() == name: - return p - return None - - - def __getAllPlugins(self): - list = [] - for plfile in self.__getPluginFiles(): - list.append(self.__getPluginClass(os.path.basename(plfile)[:-3])) - return list - - - def __getPluginClass(self, name): - for plfile in self.__getPluginFiles(): - if name == os.path.basename(plfile)[:-3]: - try: - pl_class = getattr(imp.load_source(name, plfile), name) - except AttributeError: - return None - return pl_class(self.cbox, os.path.dirname(plfile)) - else: - return None - - - def __getPluginFiles(self): - result = [] - for dir in [os.path.abspath(e) for e in self.plugin_dirs if os.access(e, os.R_OK) and os.path.isdir(e)]: - for plname in [f for f in os.listdir(dir)]: - pldir = os.path.join(dir, plname) - plfile = os.path.join(pldir, plname + ".py") - if os.path.isfile(plfile) and os.access(plfile, os.R_OK): - result.append(plfile) - return result - - -if __name__ == "__main__": - x = PluginManager(None, "../plugins") - for a in x.getPlugins(): - if not a is None: - print "Plugin: %s" % a.getName() - diff --git a/pythonrewrite/bin/WebInterfaceDataset.py b/pythonrewrite/bin/WebInterfaceDataset.py deleted file mode 100644 index 7f2de6c..0000000 --- a/pythonrewrite/bin/WebInterfaceDataset.py +++ /dev/null @@ -1,136 +0,0 @@ -import os -import CryptoBoxContainer -import CryptoBoxTools - -## useful constant for some functions -CONT_TYPES = CryptoBoxContainer.CryptoBoxContainer.Types - -class WebInterfaceDataset(dict): - """this class contains all data that should be available for the clearsilver - templates - """ - - def __init__(self, cbox, prefs, plugins): - self.prefs = prefs - self.cbox = cbox - self.__setConfigValues() - self.plugins = plugins - self.setCryptoBoxState() - self.setPluginData() - self.setContainersState() - - - def setCryptoBoxState(self): - import cherrypy - self["Data.Version"] = self.cbox.VERSION - langs = self.cbox.getAvailableLanguages() - langs.sort() - for (index, lang) in enumerate(langs): - self.cbox.log.info("language loaded: %s" % lang) - self["Data.Languages.%d.name" % index] = lang - self["Data.Languages.%d.link" % index] = self.__getLanguageName(lang) - try: - self["Data.ScriptURL.Prot"] = cherrypy.request.scheme - host = cherrypy.request.headers["Host"] - self["Data.ScriptURL.Host"] = host.split(":",1)[0] - complete_url = "%s://%s" % (self["Data.ScriptURL.Prot"], self["Data.ScriptURL.Host"]) - try: - port = int(host.split(":",1)[1]) - complete_url += ":%s" % port - except (IndexError, ValueError): - if cherrypy.request.scheme == "http": - port = 80 - elif cherrypy.request.scheme == "https": - port = 443 - else: - ## unknown scheme -> port 0 - self.cbox.log.info("unknown protocol scheme used: %s" % (cherrypy.request.scheme,)) - port = 0 - self["Data.ScriptURL.Port"] = port - ## retrieve the relative address of the CGI (or the cherrypy base address) - ## remove the last part of the url and add a slash - path = "/".join(cherrypy.request.path.split("/")[:-1]) + "/" - self["Data.ScriptURL.Path"] = path - complete_url += path - self["Data.ScriptURL"] = complete_url - except AttributeError: - self["Data.ScriptURL"] = "" - - - def setCurrentDiskState(self, device): - for container in self.cbox.getContainerList(): - if container.getDevice() == device: - isEncrypted = (container.getType() == CONT_TYPES["luks"]) and 1 or 0 - isPlain = (container.getType() == CONT_TYPES["plain"]) and 1 or 0 - isMounted = container.isMounted() and 1 or 0 - self["Data.CurrentDisk.device"] = container.getDevice() - self["Data.CurrentDisk.name"] = container.getName() - self["Data.CurrentDisk.encryption"] = isEncrypted - self["Data.CurrentDisk.plaintext"] = isPlain - self["Data.CurrentDisk.active"] = isMounted - self["Data.CurrentDisk.size"] = CryptoBoxTools.getBlockDeviceSizeHumanly(container.getDevice()) - if isMounted: - (size, avail, used) = container.getCapacity() - percent = used / size - self["Data.CurrentDisk.capacity.used"] = used - self["Data.CurrentDisk.capacity.free"] = avail - self["Data.CurrentDisk.capacity.size"] = size - self["Data.CurrentDisk.capacity.percent"] = percent - self["Settings.LinkAttrs.device"] = device - - - def setContainersState(self): - avail_counter = 0 - active_counter = 0 - for container in self.cbox.getContainerList(): - ## useful if the container was changed during an action - container.resetObject() - isEncrypted = (container.getType() == CONT_TYPES["luks"]) and 1 or 0 - isPlain = (container.getType() == CONT_TYPES["plain"]) and 1 or 0 - isMounted = container.isMounted() and 1 or 0 - self["Data.Disks.%d.device" % avail_counter] = container.getDevice() - self["Data.Disks.%d.name" % avail_counter] = container.getName() - self["Data.Disks.%d.encryption" % avail_counter] = isEncrypted - self["Data.Disks.%d.plaintext" % avail_counter] = isPlain - self["Data.Disks.%d.active" % avail_counter] = isMounted - self["Data.Disks.%d.size" % avail_counter] = CryptoBoxTools.getBlockDeviceSizeHumanly(container.getDevice()) - if isMounted: active_counter += 1 - avail_counter += 1 - self["Data.activeDisksCount"] = active_counter - - - def setPluginData(self): - for p in self.plugins: - lang_data = p.getLanguageData() - entryName = "Settings.PluginList." + p.getName() - self[entryName] = p.getName() - self[entryName + ".Link"] = lang_data.getValue("Link", p.getName()) - self[entryName + ".Rank"] = p.getRank() - self[entryName + ".RequestAuth"] = p.isAuthRequired() and "1" or "0" - self[entryName + ".Enabled"] = p.isEnabled() and "1" or "0" - for a in p.pluginCapabilities: - self[entryName + ".Types." + a] = "1" - - - def __setConfigValues(self): - self["Settings.TemplateDir"] = os.path.abspath(self.prefs["Locations"]["TemplateDir"]) - self["Settings.LanguageDir"] = os.path.abspath(self.prefs["Locations"]["LangDir"]) - self["Settings.DocDir"] = os.path.abspath(self.prefs["Locations"]["DocDir"]) - self["Settings.Stylesheet"] = self.prefs["WebSettings"]["Stylesheet"] - self["Settings.Language"] = self.prefs["WebSettings"]["Language"] - self["Settings.PluginDir"] = self.prefs["Locations"]["PluginDir"] - self["Settings.SettingsDir"] = self.prefs["Locations"]["SettingsDir"] - - - def __getLanguageName(self, lang): - try: - import neo_cgi, neo_util, neo_cs - except: - raise CryptoBoxExceptions.CBEnvironmentError("couldn't import 'neo_*'! Try 'apt-get install python-clearsilver'.") - hdf_path = os.path.join(self.prefs["Locations"]["LangDir"], lang + ".hdf") - hdf = neo_util.HDF() - hdf.readFile(hdf_path) - return hdf.getValue("Name",lang) - - - diff --git a/pythonrewrite/bin/WebInterfaceSites.py b/pythonrewrite/bin/WebInterfaceSites.py deleted file mode 100755 index 82405e9..0000000 --- a/pythonrewrite/bin/WebInterfaceSites.py +++ /dev/null @@ -1,427 +0,0 @@ -import CryptoBox -import WebInterfaceDataset -import re -import Plugins -from CryptoBoxExceptions import * -import cherrypy -import types -import os - -try: - import neo_cgi, neo_util, neo_cs -except ImportError: - errorMsg = "Could not import clearsilver module. Try 'apt-get install python-clearsilver'." - self.log.error(errorMsg) - sys.stderr.write(errorMsg) - raise ImportError, errorMsg - - - -class PluginIconHandler: - - def __init__(self, plugins): - for plugin in plugins.getPlugins(): - if not plugin: continue - plname = plugin.getName() - ## expose the getIcon function of this plugin - setattr(self, plname, plugin.getIcon) - - - -class WebInterfaceSites: - ''' - ''' - - ## this template is used under strange circumstances - defaultTemplate = "empty" - - - def __init__(self): - import logging - self.cbox = CryptoBox.CryptoBoxProps() - self.log = logging.getLogger("CryptoBox") - self.prefs = self.cbox.prefs - self.__resetDataset() - - - def __resetDataset(self): - """this method has to be called at the beginning of every "site" action - important: only at the beginning of an action (to not loose information) - important: for _every_ "site" action (cherrypy is stateful) - also take care for the plugins, as they also contain datasets - """ - self.__loadPlugins() - self.dataset = WebInterfaceDataset.WebInterfaceDataset(self.cbox, self.prefs, self.pluginList.getPlugins()) - ## publish plugin icons - self.icons = PluginIconHandler(self.pluginList) - self.icons.exposed = True - ## check, if a configuration partition has become available - self.cbox.prefs.preparePartition() - - - def __loadPlugins(self): - self.pluginList = Plugins.PluginManager(self.cbox, self.prefs["Locations"]["PluginDir"]) - for plugin in self.pluginList.getPlugins(): - if not plugin: continue - plname = plugin.getName() - if plugin.isEnabled(): - self.cbox.log.info("Plugin '%s' loaded" % plname) - ## this should be the "easiest" way to expose all plugins as URLs - setattr(self, plname, self.return_plugin_action(plugin)) - setattr(getattr(self, plname), "exposed", True) - # TODO: check, if this really works - for now the "stream_response" feature seems to be broken - #setattr(getattr(self, plname), "stream_respones", True) - else: - self.cbox.log.info("Plugin '%s' is disabled" % plname) - ## remove the plugin, if it was active before - setattr(self, plname, None) - - - ## this is a function decorator to check authentication - ## it has to be defined before any page definition requiring authentification - def __requestAuth(self=None): - def check_credentials(site): - def _inner_wrapper(self, *args, **kargs): - import base64 - ## define a "non-allowed" function - user, password = None, None - try: - resp = cherrypy.request.headers["Authorization"][6:] # ignore "Basic " - (user, password) = base64.b64decode(resp).split(":",1) - except KeyError: - ## no "authorization" header was sent - pass - except TypeError: - ## invalid base64 string - pass - except AttributeError: - ## no cherrypy response header defined - pass - authDict = self.cbox.prefs.userDB["admins"] - if user in authDict.keys(): - if self.cbox.prefs.userDB.getDigest(password) == authDict[user]: - ## ok: return the choosen page - self.cbox.log.info("access granted for: %s" % user) - return site(self, *args, **kargs) - else: - self.cbox.log.info("wrong password supplied for: %s" % user) - else: - self.cbox.log.info("unknown user: %s" % str(user)) - ## wrong credentials: return "access denied" - cherrypy.response.headers["WWW-Authenticate"] = '''Basic realm="CryptoBox"''' - cherrypy.response.status = 401 - return self.__render("access_denied") - return _inner_wrapper - return check_credentials - - - ###################################################################### - ## put real sites down here and don't forget to expose them at the end - - - @cherrypy.expose - def index(self, weblang=""): - self.__resetDataset() - self.__setWebLang(weblang) - self.__checkEnvironment() - ## do not forget the language! - param_dict = {"weblang":weblang} - ## render "disks" plugin by default - return self.return_plugin_action(self.pluginList.getPlugin("disks"))(**param_dict) - - - def return_plugin_action(self, plugin): - def handler(self, **args): - self.__resetDataset() - self.__checkEnvironment() - args_orig = dict(args) - ## set web interface language - try: - self.__setWebLang(args["weblang"]) - del args["weblang"] - except KeyError: - self.__setWebLang("") - ## we always read the "device" setting - otherwise volume-plugin links - ## would not work easily (see "volume_props" linking to "format_fs") - ## it will get ignored for non-volume plugins - try: - plugin.device = None - if self.__setDevice(args["device"]): - plugin.device = args["device"] - del args["device"] - except KeyError: - pass - ## check the device argument of volume plugins - if "volume" in plugin.pluginCapabilities: - ## initialize the dataset of the selected device if necessary - if plugin.device: - self.dataset.setCurrentDiskState(plugin.device) - else: - ## invalid (or missing) device setting - return self.__render(self.defaultTemplate) - ## check if there is a "redirect" setting - this will override the return - ## value of the doAction function (e.g. useful for umount-before-format) - try: - if args["redirect"]: - override_nextTemplate = { "plugin":args["redirect"] } - if "volume" in plugin.pluginCapabilities: - override_nextTemplate["values"] = {"device":plugin.device} - del args["redirect"] - except KeyError: - override_nextTemplate = None - ## call the plugin handler - nextTemplate = plugin.doAction(**args) - ## for 'volume' plugins: reread the dataset of the current disk - ## additionally: set the default template for plugins - if "volume" in plugin.pluginCapabilities: - ## maybe the state of the current volume was changed? - self.dataset.setCurrentDiskState(plugin.device) - if not nextTemplate: nextTemplate = { "plugin":"volume_mount", "values":{"device":plugin.device}} - else: - ## maybe a non-volume plugin changed some plugin settings (e.g. plugin_manager) - self.dataset.setPluginData() - ## update the container hdf-dataset (maybe a plugin changed the state of a container) - self.dataset.setContainersState() - ## default page for non-volume plugins is the disk selection - if not nextTemplate: nextTemplate = { "plugin":"disks", "values":{} } - ## was a redirect requested? - if override_nextTemplate: - nextTemplate = override_nextTemplate - ## if another plugins was choosen for 'nextTemplate', then do it! - if isinstance(nextTemplate, types.DictType) \ - and "plugin" in nextTemplate.keys() \ - and "values" in nextTemplate.keys() \ - and self.pluginList.getPlugin(nextTemplate["plugin"]): - valueDict = dict(nextTemplate["values"]) - ## force the current weblang attribute - otherwise it gets lost - valueDict["weblang"] = self.dataset["Settings.Language"] - new_plugin = self.pluginList.getPlugin(nextTemplate["plugin"]) - return self.return_plugin_action(new_plugin)(**valueDict) - ## save the currently active plugin name - self.dataset["Data.ActivePlugin"] = plugin.getName() - return self.__render(nextTemplate, plugin) - ## apply authentication? - if plugin.isAuthRequired(): - return lambda **args: self.__requestAuth()(handler)(self, **args) - else: - return lambda **args: handler(self, **args) - - - ## test authentication - @cherrypy.expose - @__requestAuth - def test(self, weblang=""): - self.__resetDataset() - self.__setWebLang(weblang) - self.__checkEnvironment() - return "test passed" - - - @cherrypy.expose - def test_stream(self): - """just for testing purposes - to check if the "stream_response" feature - actually works - for now (September 02006) it does not seem to be ok""" - import time - yield "neu

    " - for a in range(10): - yield "
  • yes: %d - %s
  • " % (a, str(time.time())) - time.sleep(1) - yield "

" - - - - ##################### input checker ########################## - - def __checkEnvironment(self): - """here we should place all interesting checks to inform the user of problems - - examples are: non-https, readonly-config, ... - """ - ## TODO: maybe add an option "mount"? - if self.cbox.prefs.requiresPartition() and not self.cbox.prefs.getActivePartition(): - self.dataset["Data.EnvironmentWarning"] = "ReadOnlyConfig" - # TODO: turn this on soon (add "not") - for now it is annoying - if self.__checkHTTPS(): - self.dataset["Data.EnvironmentWarning"] = "NoSSL" - - - def __checkHTTPS(self): - ## check the request scheme - if cherrypy.request.scheme == "https": return True - ## check an environment setting - this is quite common behind proxies - try: - if os.environ["HTTPS"]: return True - except KeyError: - pass - ## check http header TODO (check pound for the name) - try: - if cherrypy.request.headers["TODO"]: return True - except KeyError: - pass - ## the connection seems to be unencrypted - return False - - - def __setWebLang(self, value): - guess = value - availLangs = self.cbox.getAvailableLanguages() - ## no language specified: check browser language - if not guess: - guess = self.__getPreferredBrowserLanguage(availLangs) - ## no preferred language or invalid language? - if not guess \ - or not guess in availLangs \ - or re.search(u'\W', guess): - ## warn only for invalid languages - if not guess is None: - self.cbox.log.info("invalid language choosen: %s" % guess) - guess = self.prefs["WebSettings"]["Language"] - ## maybe the language is still not valid - if not guess in availLangs: - self.log.warn("the configured language is invalid: %s" % guess) - guess = "en" - ## maybe there is no english dataset??? - if not guess in availLangs: - self.log.warn("couldn't find the english dataset") - guess = availLangs[0] - self.dataset["Settings.Language"] = guess - ## we only have to save it, if it was specified correctly and explicitly - if value == guess: - self.dataset["Settings.LinkAttrs.weblang"] = guess - - - def __getPreferredBrowserLanguage(self, availLangs): - """guess the preferred language of the user (as sent by the browser) - take the first language, that is part of 'availLangs' - """ - try: - pref_lang_header = cherrypy.request.headers["Accept-Language"] - except KeyError: - ## no language header was specified - return None - ## this could be a typical 'Accept-Language' header: - ## de-de,de;q=0.8,en-us;q=0.5,en;q=0.3 - regex = re.compile(u"\w+(-\w+)?(;q=[\d\.]+)?$") - pref_langs = [e.split(";",1)[0] - for e in pref_lang_header.split(",") - if regex.match(e)] - ## is one of these preferred languages available? - for lang in pref_langs: - if lang in availLangs: return lang - ## we try to be nice: also look for "de" if "de-de" was specified ... - for lang in pref_langs: - ## use only the first part of the language - short_lang = lang.split("-",1)[0] - if short_lang in availLangs: return short_lang - ## we give up - return None - - - def __setDevice(self, device): - if device and re.match(u'[\w /\-]+$', device) and self.cbox.getContainer(device): - self.log.debug("select device: %s" % device) - return True - else: - self.log.warn("invalid device: %s" % device) - self.dataset["Data.Warning"] = "InvalidDevice" - return False - - - def __checkVolumeName(self, name): - if name and re.match(u'[\w \-]+$', name): - return True - else: - return False - - - def __getLanguageValue(self, value): - hdf = self.__getLanguageData(self.dataset["Settings.Language"]) - return hdf.getValue(value, "") - - - def __getLanguageData(self, web_lang="en"): - default_lang = "en" - conf_lang = self.prefs["WebSettings"]["Language"] - hdf = neo_util.HDF() - langDir = os.path.abspath(self.prefs["Locations"]["LangDir"]) - langFiles = [] - ## first: read default language (en) - if (default_lang != conf_lang) and (default_lang != web_lang): - langFiles.append(os.path.join(langDir, default_lang + ".hdf")) - ## second: read language as defined in the config file - if (conf_lang != web_lang): - langFiles.append(os.path.join(langDir, conf_lang + ".hdf")) - ## third: read language as configured via web interface - langFiles.append(os.path.join(langDir, web_lang + ".hdf")) - for langFile in langFiles: - if os.access(langFile, os.R_OK): - hdf.readFile(langFile) - else: - log.warn("Couldn't read language file: %s" % langFile) - return hdf - - - def __render(self, renderInfo, plugin=None): - '''renders from clearsilver templates and returns the resulting html - ''' - ## is renderInfo a string (filename of the template) or a dictionary? - if type(renderInfo) == types.DictType: - template = renderInfo["template"] - if renderInfo.has_key("generator"): - generator = renderInfo["generator"] - else: - generator = False - else: - (template, generator) = (renderInfo, None) - - ## load the language data - hdf = neo_util.HDF() - hdf.copy("Lang", self.__getLanguageData(self.dataset["Settings.Language"])) - - ## first: assume, that the template file is in the global template directory - self.dataset["Settings.TemplateFile"] = os.path.abspath(os.path.join(self.prefs["Locations"]["TemplateDir"], template + ".cs")) - - if plugin: - ## check, if the plugin provides the template file -> overriding - plugin_cs_file = plugin.getTemplateFileName(template) - if plugin_cs_file: - self.dataset["Settings.TemplateFile"] = plugin_cs_file - - ## add the current state of the plugins to the hdf dataset - self.dataset["Data.Status.Plugins.%s" % plugin.getName()] = plugin.getStatus() - ## load the language data - pl_lang = plugin.getLanguageData(self.dataset["Settings.Language"]) - if pl_lang: - hdf.copy("Lang.Plugins.%s" % plugin.getName(), pl_lang) - ## load the dataset of the plugin - plugin.loadDataSet(hdf) - - self.log.info("rendering site: " + template) - - cs_path = os.path.abspath(os.path.join(self.prefs["Locations"]["TemplateDir"], "main.cs")) - if not os.access(cs_path, os.R_OK): - log.error("Couldn't read clearsilver file: %s" % cs_path) - yield "Couldn't read clearsilver file: %s" % cs_path - return - - self.log.debug(self.dataset) - for key in self.dataset.keys(): - hdf.setValue(key,str(self.dataset[key])) - cs = neo_cs.CS(hdf) - cs.parseFile(cs_path) - - ## is there a generator containing additional information? - if generator is None: - ## all content in one flush - yield cs.render() - else: - content_generate = generator() - dummy_line = """""" - ## now we do it linewise - checking for the content marker - for line in cs.render().splitlines(): - if line.find(dummy_line) != -1: - yield line.replace(dummy_line, content_generate.next()) - else: - yield line + "\n" - - diff --git a/pythonrewrite/bin/WebInterfaceTestClass.py b/pythonrewrite/bin/WebInterfaceTestClass.py deleted file mode 100644 index c210a0f..0000000 --- a/pythonrewrite/bin/WebInterfaceTestClass.py +++ /dev/null @@ -1,77 +0,0 @@ -""" -super class of all web interface unittests for the cryptobox - -just inherit this class and add some test functions -""" - -import unittest -import twill -import cherrypy -import WebInterfaceSites - -## we do the following, for easy surfing -## e.g. use: cbx.go(your_url) -## commands api: http://twill.idyll.org/commands.html -CBXHOST="localhost" -CBXPORT=8081 -CBX_URL="http://%s:%d/" % (CBXHOST, CBXPORT) -LOG_FILE="/tmp/twill.log" - -class WebInterfaceTestClass(unittest.TestCase): - '''this class checks the webserver, using "twill" - - the tests in this class are from the browsers point of view, so not - really unittests. - fetch twill from: http://twill.idyll.org - one way to manually run twill code is through the python - interpreter commandline e.g.: - - import twill - twill.shell.main() - go http://localhost:8080 - find "my very special html content" - help - ''' - - def setUp(self): - '''configures the cherrypy server that it works nice with twill - ''' - cherrypy.config.update({ - 'server.logToScreen' : False, - 'autoreload.on': False, - 'server.threadPool': 1, - 'server.environment': 'production', - }) - cherrypy.root = WebInterfaceSites.WebInterfaceSites() - cherrypy.server.start(initOnly=True, serverClass=None) - - from cherrypy._cpwsgi import wsgiApp - twill.add_wsgi_intercept(CBXHOST, CBXPORT, lambda: wsgiApp) - - # grab the output of twill commands - self.output = open(LOG_FILE,"a") - twill.set_output(self.output) - self.cmd = twill.commands - self.URL = CBX_URL - self.cbox = cherrypy.root.cbox - self.globals, self.locals = twill.namespaces.get_twill_glocals() - - - def tearDown(self): - '''clean up the room when leaving''' - # remove intercept. - twill.remove_wsgi_intercept(CBXHOST, CBXPORT) - # shut down the cherrypy server. - cherrypy.server.stop() - self.output.close() - - - def __get_soup(): - browser = twill.commands.get_browser() - soup = BeautifulSoup(browser.get_html()) - return soup - - - def register_auth(self, url, user="admin", password="admin"): - self.cmd.add_auth("CryptoBox", url, user, password) - diff --git a/pythonrewrite/bin/coding_guidelines.txt b/pythonrewrite/bin/coding_guidelines.txt deleted file mode 100644 index a6fb47c..0000000 --- a/pythonrewrite/bin/coding_guidelines.txt +++ /dev/null @@ -1,18 +0,0 @@ -Maybe we can add some notes here to get a consistent coding experience :) - -------------------------------------------------------------------------------- - -comments: - - should be usable for pydoc - - ''' or """ at the beginning of every class/method - - ## for longterm comments, that are useful for understanding - - #blabla for codelines, that are out for experimenting and might be used later again - -error handling: - - unspecific error handling is evil (try: "grep -r except: .") - -unit testing: - - first write a unittest and then write the relating code until the unittest stops failing :) - - 'unittests.ClassName.py' should contain all tests for 'ClassName.py' - - commits with broken unit tests are evil (fix or disable the code (not the test ;) )) - diff --git a/pythonrewrite/bin/cryptobox.conf b/pythonrewrite/bin/cryptobox.conf deleted file mode 100644 index 02ef334..0000000 --- a/pythonrewrite/bin/cryptobox.conf +++ /dev/null @@ -1,83 +0,0 @@ -[Main] - -# comma separated list of possible prefixes for accesible devices -# beware: .e.g "/dev/hd" grants access to _all_ harddisks -AllowedDevices = /dev/loop, /dev/ubdb - -# use sepepate config partition? (1=yes / 0=no) -UseConfigPartition = 1 - -# the default name prefix of not unnamed containers -DefaultVolumePrefix = "Disk " - -# which cipher should cryptsetup-luks use? -#TODO: uml does not support this module - DefaultCipher = aes-cbc-essiv:sha256 -DefaultCipher = aes-plain - -# label of the configuration partition (you should never change this) -ConfigVolumeLabel = cbox_config - - -[Locations] -# where should we mount volumes? -# this directory must be writeable by the cryptobox user (see above) -MountParentDir = /var/cache/cryptobox/mnt - -# settings directory: contains name database and plugin configuration -SettingsDir = /var/cache/cryptobox/settings - -# where are the clearsilver templates? -#TemplateDir = /usr/share/cryptobox/templates -TemplateDir = ../templates - -# path to language files -#LangDir = /usr/share/cryptobox/lang -LangDir = ../lang - -# path to documentation files -#DocDir = /usr/share/doc/cryptobox/html -DocDir = ../doc/html - -# path to the plugin directory -#PluginDir = /usr/share/cryptobox/plugins -PluginDir = ../plugins - - - -[Log] -# possible values are "debug", "info", "warn" and "error" or numbers from -# 0 (debug) to 7 (error) -Level = debug - -# where to write the log messages to? -# possible values are: file -# syslog support will be added later -Destination = file - -# depending on the choosen destination (see above) you may select -# details. Possible values for the different destinations are: -# file: $FILENAME -# syslog: $LOG_FACILITY -#Details = /var/log/cryptobox.log -Details = ./cryptobox.log - - -[WebSettings] -# URL of default stylesheet -Stylesheet = /cryptobox-misc/cryptobox.css - -# default language -Language = de - - -[Programs] -cryptsetup = /sbin/cryptsetup -mkfs-data = /sbin/mkfs.ext3 -blkid = /sbin/blkid -blockdev = /sbin/blockdev -mount = /bin/mount -umount = /bin/umount -super = /usr/bin/super -# this is the "program" name as defined in /etc/super.tab -CryptoBoxRootActions = CryptoBoxRootActions - diff --git a/pythonrewrite/bin/cryptoboxd b/pythonrewrite/bin/cryptoboxd deleted file mode 100755 index 85258bd..0000000 --- a/pythonrewrite/bin/cryptoboxd +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/sh - -#TODO: CBXPATH=/usr/lib/cryptobox -CBXPATH=$(pwd) -CBXSERVER=CryptoBoxWebserver.py -PIDFILE=/var/run/cryptobox.pid -DAEMON=/usr/bin/python2.4 -DAEMON_OPTS=${CBXPATH}/CryptoBoxWebserver.py -NAME=cryptoboxd -DESC="CryptoBox Daemon (webinterface)" -#TODO: RUNAS=cryptobox -RUNAS=$USERNAME - -#test -x $DAEMON -a -f /etc/exports || exit 0 - -set -e - -case "$1" in - start) - echo -n "Starting $DESC: " - start-stop-daemon --background --chdir "$CBXPATH" --chuid "$RUNAS" --start --quiet --oknodo --user "$RUNAS" --make-pidfile --pidfile "$PIDFILE" --exec "$DAEMON" \ - -- $DAEMON_OPTS - echo "$NAME." - ;; - - stop) - echo -n "Stopping $DESC: " - #FIXME: this is the same as "killall python2.4" - # using a pid file instead prevents problems, but does not kill children??? - start-stop-daemon --stop --oknodo --exec "$DAEMON" - echo "$NAME." - ;; - *) - echo "Usage: $(basename $0) {start|stop}" >&2 - exit 1 - ;; -esac - -exit 0 diff --git a/pythonrewrite/bin/cryptoboxwebserver.conf b/pythonrewrite/bin/cryptoboxwebserver.conf deleted file mode 100644 index b8e1e6a..0000000 --- a/pythonrewrite/bin/cryptoboxwebserver.conf +++ /dev/null @@ -1,17 +0,0 @@ -[global] -server.socketPort = 8080 -#server.environment = "production" -server.environment = "development" -server.logToScreen = True -server.log_tracebacks = True -server.threadPool = 1 -server.reverseDNS = False -server.logFile = "cryptoboxwebserver.log" - -[/favicon.ico] -static_filter.on = True -# TODO: use live-cd/live-cd-tree.d/var/www/favicon.ico -static_filter.file = "/usr/share/doc/python-cherrypy/cherrypy/favicon.ico" - -[/test_stream] -stream_response = True diff --git a/pythonrewrite/bin/do_unittests.sh b/pythonrewrite/bin/do_unittests.sh deleted file mode 100755 index 6af0d02..0000000 --- a/pythonrewrite/bin/do_unittests.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh -# -# run this script _before_ you do a commit and fix errors before uploading -# - -# check if /dev/loop1 is available - otherwise some tests will fail! -if /sbin/losetup /dev/loop1 &>/dev/null - then true - else echo "misconfiguration detected: sorry - you need /dev/loop1 for the tests" >&2 - echo "just do the following:" >&2 - echo " dd if=/dev/zero of=test.img bs=1M count=1 seek=100" >&2 - echo " sudo /sbin/losetup /dev/loop1 test.img" >&2 - echo "then you can run the tests again ..." >&2 - echo >&2 - exit 1 - fi - -# do the tests -for a in unittests.*.py - do testoob -v "$a" - done - diff --git a/pythonrewrite/bin/example-super.tab b/pythonrewrite/bin/example-super.tab deleted file mode 100644 index 03d21c0..0000000 --- a/pythonrewrite/bin/example-super.tab +++ /dev/null @@ -1,2 +0,0 @@ -# adapt the following line to your local setup and add it to /etc/super.tab -CryptoBoxRootActions /your/local/path/to/CryptoBoxRootActions.py yourUserName diff --git a/pythonrewrite/bin/test.complete.CryptoBox.py b/pythonrewrite/bin/test.complete.CryptoBox.py deleted file mode 100755 index db5300d..0000000 --- a/pythonrewrite/bin/test.complete.CryptoBox.py +++ /dev/null @@ -1,116 +0,0 @@ -#!/usr/bin/env python2.4 - -""" -BEWARE: this script may overwrite the data of one of your loop devices. You -should restrict the AllowedDevices directive in cryptobox.conf to exclude -your precious black devices from being used by this script. - -the following script runs a number of tests for different parts -""" - -from CryptoBox import CryptoBoxProps -from CryptoBoxContainer import CryptoBoxContainer -import sys - - -def main(): - cb = CryptoBoxProps() - - print "Confguration:" - print "\tConfig file:\t\t%s" % (cb.prefs.prefs.filename, ) - print "\tAllowed devices:\t%s" % (cb.prefs["Main"]["AllowedDevices"], ) - - """for e in cb.getContainerList(filterType=CryptoBoxContainer.Types["luks"]):""" - for e in cb.getContainerList(): - print "\t\t%d\t\t%s - %s - %d" % (cb.getContainerList().index(e), e.getDevice(), e.getName(), e.getType()) - - if not cb.getContainerList() or len(cb.getContainerList()) < 1: - print "no loop devices found for testing" - sys.exit(1) - - if len(cb.getContainerList()) > 1: - print "I found more than one available loop device - I will stop now to avoid risking data loss." - print "Please change the 'AllowedDevices' setting in 'cryptobox.conf' to reduce the number of allowed devices to only one." - sys.exit(1) - - testElement = cb.getContainerList()[0] - print "\nRunning some tests now ..." - if not plain_tests(testElement): - print "some previous tests failed - we should stop now" - sys.exit(1) - luks_tests(testElement) - - -" ***************** some functions ******************** " - -def luks_tests(e): - # umount if necessary - try: - e.umount() - except "MountError": - pass - - e.create(e.Types["luks"], "alt") - print "\tluks create:\tok" - - e.changePassword("alt","neu") - print "\tluks changepw:\tok" - - e.setName("lalla") - print "\tluks setName:\tok" - - try: - e.mount("neu") - except "MountError": - pass - if e.isMounted(): print "\tluks mount:\tok" - else: print "\tluks mount:\tfailed" - - print "\tCapacity (size, free, used) [MB]:\t%s" % (e.getCapacity(), ) - - try: - e.umount() - except "MountError": - pass - if e.isMounted(): print "\tluks umount:\tfailed" - else: print "\tluks umount:\tok" - - if e.isMounted(): return False - else: return True - - -def plain_tests(e): - # umount if necessary - try: - e.umount() - except "MountError": - pass - - e.create(e.Types["plain"]) - print "\tplain create:\tok" - - e.setName("plain-lili") - print "\tplain setName:\tok" - - try: - e.mount() - except "MountError": - pass - if e.isMounted(): print "\tplain mount:\tok" - else: print "\tplain mount:\tfailed" - - print "\tCapacity (size, free, used) [MB]:\t%s" % (e.getCapacity(), ) - - try: - e.umount() - except "MountError": - pass - if e.isMounted(): print "\tplain umount:\tfailed" - else: print "\tplain umount:\tok" - - if e.isMounted(): return False - else: return True - -# ************ main **************** - -main() diff --git a/pythonrewrite/bin/uml-setup.sh b/pythonrewrite/bin/uml-setup.sh deleted file mode 100755 index 8826f3d..0000000 --- a/pythonrewrite/bin/uml-setup.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh - -ROOT_IMG=/home/lars/devel-stuff/devel-chroots/cryptobox.img -TEST_IMG=test.img -TEST_SIZE=256 -MEM_SIZE=128M - -# Preparations: -# echo "tun" >>/etc/modules -# follow the instructions in /usr/share/doc/uml-utilities/README.Debian -# add your user to the group 'uml-net' -# - -/sbin/ifconfig tap0 &>/dev/null || { echo "tap0 is not configured - read /usr/share/doc/uml-utilities/README.Debian for hints"; exit 1; } - - -if [ ! -e "$TEST_IMG" ] - then echo "Creating testing image file ..." - dd if=/dev/zero of="$TEST_IMG" bs=1M count=$TEST_SIZE - fi - -linux ubd0="$ROOT_IMG" ubd1="$TEST_IMG" con=xterm hostfs=../ fakehd eth0=daemon mem=$MEM_SIZE - diff --git a/pythonrewrite/bin/unittests.CryptoBox.py b/pythonrewrite/bin/unittests.CryptoBox.py deleted file mode 100755 index baaad3c..0000000 --- a/pythonrewrite/bin/unittests.CryptoBox.py +++ /dev/null @@ -1,138 +0,0 @@ -#!/usr/bin/env python2.4 - -import unittest -import sys -from CryptoBox import * -from CryptoBoxExceptions import * -import CryptoBoxSettings - -class CryptoBoxPropsDeviceTests(unittest.TestCase): - import CryptoBox - cb = CryptoBox.CryptoBoxProps() - - def testAllowedDevices(self): - '''isDeviceAllowed should accept permitted devices''' - self.assertTrue(self.cb.isDeviceAllowed("/dev/loop")) - self.assertTrue(self.cb.isDeviceAllowed("/dev/loop1")) - self.assertTrue(self.cb.isDeviceAllowed("/dev/loop/urgd")) - self.assertTrue(self.cb.isDeviceAllowed("/dev/usb/../loop1")) - - def testDeniedDevices(self): - '''isDeviceAllowed should fail with not explicitly allowed devices''' - self.assertFalse(self.cb.isDeviceAllowed("/dev/hda")) - self.assertFalse(self.cb.isDeviceAllowed("/dev/loopa/../hda")) - self.assertFalse(self.cb.isDeviceAllowed("/")) - - -class CryptoBoxPropsConfigTests(unittest.TestCase): - '''test here if everything with the config turns right''' - import os - import CryptoBox - - files = { - "configFileOK" : "cbox-test_ok.conf", - "configFileBroken" : "cbox-test_broken.conf", - "nameDBFile" : "cryptobox_names.db", - "pluginConf" : "cryptobox_plugins.conf", - "userDB" : "cryptobox_users.db", - "logFile" : "cryptobox.log", - "tmpdir" : "cryptobox-mnt" } - tmpdirname = "" - filenames = {} - configContentOK = """ -[Main] -AllowedDevices = /dev/loop -DefaultVolumePrefix = "Data " -DefaultCipher = aes-cbc-essiv:sha256 -[Locations] -SettingsDir = %s -MountParentDir = %s -TemplateDir = ../templates -LangDir = ../lang -DocDir = ../doc/html -PluginDir = ../plugins -[Log] -Level = debug -Destination = file -Details = %s/cryptobox.log -[WebSettings] -Stylesheet = /cryptobox-misc/cryptobox.css -[Programs] -blkid = /sbin/blkid -cryptsetup = /sbin/cryptsetup -super = /usr/bin/super -CryptoBoxRootActions = CryptoBoxRootActions -""" - - - def setUp(self): - '''generate all files in tmp and remember the names''' - import tempfile - os = self.os - self.tmpdirname = tempfile.mkdtemp(prefix="cbox-") - for file in self.files.keys(): - self.filenames[file] = os.path.join(self.tmpdirname, self.files[file]) - self.writeConfig() - - - def tearDown(self): - '''remove the created tmpfiles''' - os = self.os - # remove temp files - for file in self.filenames.values(): - compl_name = os.path.join(self.tmpdirname, file) - if os.path.exists(compl_name): - os.remove(compl_name) - # remove temp dir - os.rmdir(self.tmpdirname) - - - def testConfigInit(self): - '''Check various branches of config file loading''' - import os - self.assertRaises(CBConfigUnavailableError, self.CryptoBox.CryptoBoxProps,"/invalid/path/to/config/file") - self.assertRaises(CBConfigUnavailableError, self.CryptoBox.CryptoBoxProps,"/etc/shadow") - """ check one of the following things: - 1) are we successfully using an existing config file? - 2) do we break, if no config file is there? - depending on the existence of a config file, only one of these conditions - can be checked - hints for more comprehensive tests are appreciated :) """ - for a in CryptoBoxSettings.CryptoBoxSettings.CONF_LOCATIONS: - if os.path.exists(a): - self.CryptoBox.CryptoBoxProps() - break # this skips the 'else' clause - else: self.assertRaises(CBConfigUnavailableError, self.CryptoBox.CryptoBoxProps) - self.assertRaises(CBConfigUnavailableError, self.CryptoBox.CryptoBoxProps,[]) - - - def testBrokenConfigs(self): - """Check various broken configurations""" - self.writeConfig("SettingsDir", "SettingsDir=/foo/bar", filename=self.filenames["configFileBroken"]) - self.assertRaises(CBConfigError, self.CryptoBox.CryptoBoxProps,self.filenames["configFileBroken"]) - self.writeConfig("Level", "Level = ho", filename=self.filenames["configFileBroken"]) - self.assertRaises(CBConfigError, self.CryptoBox.CryptoBoxProps,self.filenames["configFileBroken"]) - self.writeConfig("Details", "#out", filename=self.filenames["configFileBroken"]) - self.assertRaises(CBConfigError, self.CryptoBox.CryptoBoxProps,self.filenames["configFileBroken"]) - self.writeConfig("super", "super=/bin/invalid/no", filename=self.filenames["configFileBroken"]) - self.assertRaises(CBConfigError, self.CryptoBox.CryptoBoxProps,self.filenames["configFileBroken"]) - self.writeConfig("CryptoBoxRootActions", "#not here", filename=self.filenames["configFileBroken"]) - self.assertRaises(CBConfigError, self.CryptoBox.CryptoBoxProps,self.filenames["configFileBroken"]) - self.writeConfig("CryptoBoxRootActions", "CryptoBoxRootActions = /bin/false", filename=self.filenames["configFileBroken"]) - self.assertRaises(CBEnvironmentError, self.CryptoBox.CryptoBoxProps,self.filenames["configFileBroken"]) - - - def writeConfig(self, replace=None, newline=None, filename=None): - """write a config file and (optional) replace a line in it""" - import re - if not filename: filename = self.filenames["configFileOK"] - content = self.configContentOK % (self.tmpdirname, self.tmpdirname, self.tmpdirname) - if replace: - pattern = re.compile('^' + replace + '\\s*=.*$', flags=re.M) - content = re.sub(pattern, newline, content) - cf = open(filename, "w") - cf.write(content) - cf.close() - - -if __name__ == "__main__": - unittest.main() diff --git a/pythonrewrite/bin/unittests.CryptoBoxTools.py b/pythonrewrite/bin/unittests.CryptoBoxTools.py deleted file mode 100755 index 10daf4e..0000000 --- a/pythonrewrite/bin/unittests.CryptoBoxTools.py +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env python2.4 - -import unittest -import CryptoBoxTools -import os - - -class CryptoBoxToolsTests(unittest.TestCase): - - def testGetAbsoluteDeviceName(self): - func = CryptoBoxTools.getAbsoluteDeviceName - self.assertTrue(func("hda") == "/dev/hda") - self.assertTrue(func("loop0") == "/dev/loop0") - self.assertTrue(func(os.path.devnull) == os.path.devnull) - - - def testFindMajorMinorOfDevice(self): - func = CryptoBoxTools.findMajorMinorOfDevice - self.assertTrue(func("/dev/hda") == (3,0)) - self.assertTrue(func("/dev/hda1") == (3,1)) - self.assertTrue(func(os.path.devnull) == (1,3)) - self.assertTrue(func("/dev/nothere") is None) - - - def testFindMajorMinorDeviceName(self): - func = CryptoBoxTools.findMajorMinorDeviceName - dir = os.path.join(os.path.sep, "dev") - self.assertTrue(os.path.join(dir,"hda") in func(dir,3,0)) - self.assertTrue(os.path.devnull in func(dir,1,3)) - self.assertFalse(os.path.devnull in func(dir,2,3)) - - - def testIsPartOfBlockDevice(self): - func = CryptoBoxTools.isPartOfBlockDevice - self.assertTrue(func("/dev/hda", "/dev/hda1")) - self.assertFalse(func("/dev/hda", "/dev/hda")) - self.assertFalse(func("/dev/hda1", "/dev/hda")) - self.assertFalse(func("/dev/hda1", "/dev/hda1")) - self.assertFalse(func("/dev/hda", "/dev/hdb1")) - self.assertFalse(func(None, "/dev/hdb1")) - self.assertFalse(func("/dev/hda", None)) - self.assertFalse(func(None, "")) - self.assertFalse(func("loop0", "loop1")) - - -if __name__ == "__main__": - unittest.main() - diff --git a/pythonrewrite/bin/unittests.Plugins.py b/pythonrewrite/bin/unittests.Plugins.py deleted file mode 100755 index 929c9de..0000000 --- a/pythonrewrite/bin/unittests.Plugins.py +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/python2.4 - -import unittest -import Plugins - -class CheckForUndefinedTestCases(unittest.TestCase): - """here we will add failing test functions for every non-existing testcase""" - - -def create_testcases(): - - plugins = Plugins.PluginManager(None, "../plugins").getPlugins() - glob_dict = globals() - loc_dict = locals() - for pl in plugins: - test_class = pl.getTestClass() - if test_class: - ## add the testclass to the global dictionary - glob_dict["unittest" + pl.getName()] = test_class - else: - subname = "test_existence_%s" % pl.getName() - def test_existence(self): - """check if the plugin (%s) contains tests""" % pl.getName() - self.fail("no tests defined for plugin: %s" % pl.getName()) - ## add this function to the class above - setattr(CheckForUndefinedTestCases, subname, test_existence) - #FIXME: the failure output always contains the same name for all plugins - - -create_testcases() - -if __name__ == "__main__": - unittest.main() diff --git a/pythonrewrite/bin/unittests.WebSites.py b/pythonrewrite/bin/unittests.WebSites.py deleted file mode 100755 index 89e514d..0000000 --- a/pythonrewrite/bin/unittests.WebSites.py +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env python2.4 - -import unittest - -## this makes assertRaises shorter -from twill.errors import * -from mechanize import BrowserStateError, LinkNotFoundError - -## import the module of the common super class of all web interface test classes -import WebInterfaceTestClass - - - -class WebServer(WebInterfaceTestClass.WebInterfaceTestClass): - - def test_is_server_running(self): - '''the server should run under given name and port''' - self.cmd.go(self.URL) - ## other URLs must not be checked, as we do not know, if they are valid - - -class BuiltinPages(WebInterfaceTestClass.WebInterfaceTestClass): - - - def test_goto_index(self): - '''display all devices''' - self.cmd.go(self.URL + "?weblang=en") - self.cmd.find("The CryptoBox") - self.cmd.go(self.URL + "?weblang=de") - self.cmd.find("Die CryptoBox") - self.cmd.go(self.URL + "?weblang=si") - self.cmd.find("Privatnost v vsako vas") - self.cmd.go(self.URL + "?weblang=fr") - self.cmd.find("La CryptoBox") - - -if __name__ == "__main__": - unittest.main() - diff --git a/pythonrewrite/conf-examples/cryptobox.conf b/pythonrewrite/conf-examples/cryptobox.conf deleted file mode 100644 index 4ac399a..0000000 --- a/pythonrewrite/conf-examples/cryptobox.conf +++ /dev/null @@ -1,36 +0,0 @@ -# this file is directly sourced by some bash scripts -# so there should be no space around the "=" - -LANGUAGE=en -CRYPTOBOX_USER=cryptobox -SCAN_DEVICES="sd loop" - -# web interface -HTML_TEMPLATE_DIR=/usr/share/cryptobox/templates -STYLESHEET_URL=/cryptobox-misc/cryptobox.css - -# directories -LANGUAGE_DIR=/usr/share/cryptobox/lang -DOC_DIR=/usr/share/doc/cryptobox/html -CONFIG_DEFAULTS_DIR=/usr/share/cryptobox/defaults - -# some files -LOG_FILE=/var/log/cryptobox.log - -# crypto settings -# TODO: for now, the usual default cipher does not work on ARM, so we enable it during development -#DEFAULT_CIPHER=aes-cbc-essiv:sha256 -DEFAULT_CIPHER=aes -DEV_MAPPER_DIR=/dev/mapper - -# distribution specific configuration -# examples can be found in /usr/local/share/cryptobox/distributions -DISTRIBUTION_CONF=/etc/cryptobox/distribution.conf - -# choose a debug level: -# 0 => no debug messages at all -# 1 => critical errors (default) -# 2 => warning messages -# 3 => information -DEBUG_LEVEL=1 - diff --git a/pythonrewrite/conf-examples/default-settings/admin_pw b/pythonrewrite/conf-examples/default-settings/admin_pw deleted file mode 100644 index e69de29..0000000 diff --git a/pythonrewrite/conf-examples/default-settings/cryptobox.marker b/pythonrewrite/conf-examples/default-settings/cryptobox.marker deleted file mode 100644 index e69de29..0000000 diff --git a/pythonrewrite/conf-examples/default-settings/ip b/pythonrewrite/conf-examples/default-settings/ip deleted file mode 100644 index 1cad3c7..0000000 --- a/pythonrewrite/conf-examples/default-settings/ip +++ /dev/null @@ -1 +0,0 @@ -192.168.0.23 diff --git a/pythonrewrite/conf-examples/default-settings/language b/pythonrewrite/conf-examples/default-settings/language deleted file mode 100644 index c574d07..0000000 --- a/pythonrewrite/conf-examples/default-settings/language +++ /dev/null @@ -1 +0,0 @@ -en diff --git a/pythonrewrite/conf-examples/default-settings/names.db b/pythonrewrite/conf-examples/default-settings/names.db deleted file mode 100644 index e69de29..0000000 diff --git a/pythonrewrite/conf-examples/default-settings/timeout b/pythonrewrite/conf-examples/default-settings/timeout deleted file mode 100644 index 64bb6b7..0000000 --- a/pythonrewrite/conf-examples/default-settings/timeout +++ /dev/null @@ -1 +0,0 @@ -30 diff --git a/pythonrewrite/conf-examples/default-settings/version b/pythonrewrite/conf-examples/default-settings/version deleted file mode 100644 index be58634..0000000 --- a/pythonrewrite/conf-examples/default-settings/version +++ /dev/null @@ -1 +0,0 @@ -0.3 diff --git a/pythonrewrite/conf-examples/distributions/README b/pythonrewrite/conf-examples/distributions/README deleted file mode 100644 index 7a9edfa..0000000 --- a/pythonrewrite/conf-examples/distributions/README +++ /dev/null @@ -1,11 +0,0 @@ -You need to copy one of these files to /etc/cryptobox/distribution.conf. -Choose the one, that fits to your particular operating system - if you are -not sure which operation system you are using, then you should run - uname -o -to get to know yourself :) - -If the file for your specific operating system is not available, then you -may consider to send a copy of the one you wrote for yourself to - devel@systemausfall.org. -Thanks! - diff --git a/pythonrewrite/conf-examples/distributions/gnu_linux b/pythonrewrite/conf-examples/distributions/gnu_linux deleted file mode 100644 index 7bf9377..0000000 --- a/pythonrewrite/conf-examples/distributions/gnu_linux +++ /dev/null @@ -1,12 +0,0 @@ -# program locations for debian -SFDISK=/sbin/sfdisk -MKFS_DATA=/sbin/mkfs.ext3 -MKFS_CONFIG=/sbin/mkfs.ext2 -CRYPTSETUP=/sbin/cryptsetup -IFCONFIG=/sbin/ifconfig -PMOUNT=/bin/pmount -PUMOUNT=/bin/pumount -BLKID=/sbin/blkid -POWEROFF=/sbin/poweroff -REBOOT=/sbin/reboot - diff --git a/pythonrewrite/debian/README.Debian b/pythonrewrite/debian/README.Debian deleted file mode 100644 index f06e815..0000000 --- a/pythonrewrite/debian/README.Debian +++ /dev/null @@ -1,5 +0,0 @@ -CryptoBox for Debian - installation notes - -be aware of one thing: -1) you need cryptsetup with luks support (for now only in unstable) - diff --git a/pythonrewrite/debian/changelog b/pythonrewrite/debian/changelog deleted file mode 100644 index f9c1d29..0000000 --- a/pythonrewrite/debian/changelog +++ /dev/null @@ -1,3 +0,0 @@ -cryptobox (0.3.0-1) unstable; urgency=low - * Initial release - -- Lars Kruse Wed, 10 May 2006 20:26:47 +0100 diff --git a/pythonrewrite/debian/control b/pythonrewrite/debian/control deleted file mode 100644 index 26058dc..0000000 --- a/pythonrewrite/debian/control +++ /dev/null @@ -1,18 +0,0 @@ -Source: cryptobox -Section: admin -Priority: extra -Maintainer: Lars Kruse -Build-Depends: debhelper (>>3.0.0), dpatch, gcc (>=2.95) -Standards-Version: 3.6.2 - -Package: cryptobox -Architecture: any -Depends: bash (>=2.0), sed (>=4.0), coreutils, grep (>=2.0), httpd-cgi, hashalot, cryptsetup (>=20050111), dmsetup, initscripts, e2fsprogs (>= 1.27), adduser, python (>=2.4), python-clearsilver -Suggests: cron, samba -Description: Web interface for an encrypting fileserver - This bundle of scripts and cgis allow you to manage an encrypted harddisk - via a web interface. The data is platform independently available - via samba file shares. - Even non-technical users are able to encrypt their private data with the - CryptoBox. - diff --git a/pythonrewrite/debian/copyright b/pythonrewrite/debian/copyright deleted file mode 100644 index 0219b29..0000000 --- a/pythonrewrite/debian/copyright +++ /dev/null @@ -1,27 +0,0 @@ -This package was debianized by Lars Kruse on -Wed, May 10 21:23:16 CEST 2006 - -It was downloaded from http://cryptobox.org/ - -Upstream Authors: - sense.lab development - -Copyright: - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the - Free Software Foundation, Inc., - 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. - -On Debian GNU/Linux systems, the complete text of the GNU General -Public License can be found in `/usr/share/common-licenses/GPL'. - diff --git a/pythonrewrite/debian/cryptobox.default b/pythonrewrite/debian/cryptobox.default deleted file mode 100644 index 175e245..0000000 --- a/pythonrewrite/debian/cryptobox.default +++ /dev/null @@ -1,12 +0,0 @@ -# boot configuration file for the CryptoBox -# -# $Id$ -# -# the default setup of the cryptobox is complete inactivity - -# set to "1" to turn off the cryptobox - otherwise "0" -NO_START=1 - -# change the default configuration file if necessary -#CONF_FILE=/etc/cryptobox/cryptobox.conf - diff --git a/pythonrewrite/debian/cryptobox.init b/pythonrewrite/debian/cryptobox.init deleted file mode 100755 index bb13012..0000000 --- a/pythonrewrite/debian/cryptobox.init +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/sh -# -# runlevel script of the cryptobox package -# -# Copyright (c) 02006, senselab -# -# see LICENSE file in this package for details -# - -# check if the cryptobox is installed -[ -e "/usr/lib/cryptobox/cbox-manage.sh" ] || exit 0 - -# read the default setting file, if it exists -[ -e /etc/default/cryptobox ] && source /etc/default/cryptobox - -# startup switch defaults to zero (enabled) -NO_START=${NO_START:-0} - -#if [ "$NO_START" = "1" ] -# then [ $# -eq 0 ] && exit 0 -# [ "$1" = "status" ] && exit 1 -# [ "$1" = "stop" ] && exit 0 -# echo "CryptoBox is disabled by default" -# exit 0 -# fi - -# set CONF_FILE to default value, if not configured in /etc/default/cryptobox -CONF_FILE=${CONF_FILE:-/etc/cryptobox/cryptobox.conf} - -# parse config file -if [ -e "$CONF_FILE" ] - then source "$CONF_FILE" - else echo "[$(basename $0)] - configuration file ($CONF_FILE) not found!" >&2 - exit 1 - fi - -case "$1" in - start ) - # nothing to be done - ;; - stop ) - # unmount all active containers - "/usr/lib/cryptobox/cbox-manage.sh" umount_all - ;; - force-reload | restart ) - "$0" stop - "$0" start - ;; - * ) - echo "invalid action specified - try { start | stop | restart }" >&2 - exit 1 - ;; - esac - diff --git a/pythonrewrite/debian/dirs b/pythonrewrite/debian/dirs deleted file mode 100644 index 7135fc4..0000000 --- a/pythonrewrite/debian/dirs +++ /dev/null @@ -1,4 +0,0 @@ -etc/cryptobox -etc/default -etc/init.d -usr/lib/cgi-bin diff --git a/pythonrewrite/debian/links b/pythonrewrite/debian/links deleted file mode 100644 index bd32720..0000000 --- a/pythonrewrite/debian/links +++ /dev/null @@ -1 +0,0 @@ -/usr/share/cryptobox/html /var/www/cryptobox-misc diff --git a/pythonrewrite/debian/patches/00list b/pythonrewrite/debian/patches/00list deleted file mode 100644 index e69de29..0000000 diff --git a/pythonrewrite/debian/postinst b/pythonrewrite/debian/postinst deleted file mode 100755 index 3dd5ec1..0000000 --- a/pythonrewrite/debian/postinst +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/sh - -# read the default setting file, if it exists -[ -e /etc/default/cryptobox ] && . /etc/default/cryptobox - -# set CONF_FILE to default value, if not configured in /etc/default/cryptobox -CONF_FILE=${CONF_FILE:-/etc/cryptobox/cryptobox.conf} - -# parse config file -if test -e "$CONF_FILE" - then . "$CONF_FILE" - # create mount and config directories with appropriate permissions - test ! -e "$LOG_FILE" && touch "$LOG_FILE" && chown "$CRYPTOBOX_USER" "$LOG_FILE" - fi - -if getent passwd "$CRYPTOBOX_USER" 2>/dev/null >/dev/null - then # do nothing - the user already exists - true - else # create cryptobox user - echo "Creating new user '$CRYPTOBOX_USER' ..." - USER_HOME=/var/lib/cryptobox - adduser --system --group --home "$USER_HOME" cryptobox - # add the user to the group "plugdev" (necessary for pmount) - adduser cryptobox plugdev - cp -r "$CONFIG_DEFAULTS_DIR" "$USER_HOME/config" - mkdir "$USER_HOME/mnt" - chown -R ${CRYPTOBOX_USER}: "$USER_HOME" - # only members of the cryptobox group may access the user directory - chmod 750 "$USER_HOME" - # no one may look into the config directory (protect init passwords) - chmod 700 "$USER_HOME/config" - fi - -# set permissions for suid wrappers -chown root:$CRYPTOBOX_USER "/usr/lib/cryptobox/cryptobox_root_wrapper" -chmod 4750 "/usr/lib/cryptobox/cryptobox_root_wrapper" -chown $CRYPTOBOX_USER: "/usr/lib/cgi-bin/cryptobox" -chmod 6755 "/usr/lib/cgi-bin/cryptobox" - -#DEBHELPER# - -true - diff --git a/pythonrewrite/debian/postrm b/pythonrewrite/debian/postrm deleted file mode 100755 index b96ff52..0000000 --- a/pythonrewrite/debian/postrm +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -if test "$1" = "purge" && getent passwd cryptobox 2>/dev/null >/dev/null \ - && test "$(cd ~cryptobox;pwd)" = /var/lib/cryptobox - then echo "Removing user 'cryptobox' ..." - userdel -r cryptobox - fi - -#DEBHELPER# - -# return without error -true diff --git a/pythonrewrite/debian/rules b/pythonrewrite/debian/rules deleted file mode 100755 index 5d6d90b..0000000 --- a/pythonrewrite/debian/rules +++ /dev/null @@ -1,93 +0,0 @@ -#!/usr/bin/make -f -# -*- makefile -*- -# Sample debian/rules that uses debhelper. -# This file was originally written by Joey Hess and Craig Small. -# As a special exception, when this file is copied by dh-make into a -# dh-make output file, you may use that output file without restriction. -# This special exception was added by Craig Small in version 0.37 of dh-make. - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -# This is the debhelper compatibility version to use. -export DH_COMPAT=4 - -# necessary for dpatch -.NOTPARALLEL: - -DEB_BUILD_DIR=$(CURDIR)/debian/cryptobox - -configure: configure-stamp -configure-stamp: patch - dh_testdir - @# PUT SOMETHING HERE - touch configure-stamp - - -build: build-stamp - -build-stamp: configure-stamp - dh_testdir - $(MAKE) build PREFIX=/usr - touch build-stamp - -clean: clean-patched unpatch - -clean-patched: - dh_testdir - dh_testroot - $(MAKE) clean - rm -f build-stamp configure-stamp - dh_clean - -patch: patch-stamp -patch-stamp: - dpatch apply-all - touch patch-stamp - -unpatch: - dpatch deapply-all - rm -rf patch-stamp debian/patched - -install: build - dh_testdir - dh_testroot - dh_clean -k - dh_installdirs - $(MAKE) install PREFIX=$(DEB_BUILD_DIR)/usr - install -c -m 644 build_dir/etc/cryptobox.conf $(DEB_BUILD_DIR)/etc/cryptobox/ - install -c -m 644 build_dir/etc/distribution.conf $(DEB_BUILD_DIR)/etc/cryptobox/ - install -c -m 755 bin/cryptobox_cgi_wrapper $(DEB_BUILD_DIR)/usr/lib/cgi-bin/cryptobox - - -# Build architecture-independent files here. -binary-indep: build install - -# Build architecture-dependent files here. -binary-arch: build install - dh_testdir - dh_testroot - dh_installchangelogs - dh_installdocs - dh_installexamples -# dh_install -# dh_installmenu -# dh_installdebconf -# dh_installlogrotate - dh_installinit -# dh_installcron - dh_installman - dh_link - dh_strip - dh_compress - dh_fixperms - dh_python -# dh_makeshlibs - dh_installdeb - dh_shlibdeps - dh_gencontrol - dh_md5sums - dh_builddeb - -binary: binary-indep binary-arch -.PHONY: build clean binary-indep binary-arch binary install configure clean-patched patch patch-stamp unpatch diff --git a/pythonrewrite/design/background_frame_corner.svg b/pythonrewrite/design/background_frame_corner.svg deleted file mode 100644 index deb4ae3..0000000 --- a/pythonrewrite/design/background_frame_corner.svg +++ /dev/null @@ -1,265 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - diff --git a/pythonrewrite/design/icon_background_active.svg b/pythonrewrite/design/icon_background_active.svg deleted file mode 100644 index c6ee31a..0000000 --- a/pythonrewrite/design/icon_background_active.svg +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - diff --git a/pythonrewrite/design/icons/applications-system_tango.svg b/pythonrewrite/design/icons/applications-system_tango.svg deleted file mode 100644 index 35e2ffa..0000000 --- a/pythonrewrite/design/icons/applications-system_tango.svg +++ /dev/null @@ -1,245 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - System Applications - - - Jakub Steiner - - - http://jimmac.musichall.cz/ - - - system - applications - group - category - admin - root - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pythonrewrite/design/icons/computer_tango.svg b/pythonrewrite/design/icons/computer_tango.svg deleted file mode 100644 index d6e0f6b..0000000 --- a/pythonrewrite/design/icons/computer_tango.svg +++ /dev/null @@ -1,738 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - Computer - 2005-03-08 - - - Jakub Steiner - - - - - workstation - computer - node - client - - - - http://jimmac.musichall.cz/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pythonrewrite/design/icons/dialog-error_tango.svg b/pythonrewrite/design/icons/dialog-error_tango.svg deleted file mode 100644 index 602fa79..0000000 --- a/pythonrewrite/design/icons/dialog-error_tango.svg +++ /dev/null @@ -1,316 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - Rodney Dawes - - - - - Jakub Steiner, Garrett LeSage - - - - Dialog Error - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pythonrewrite/design/icons/dialog-information_tango.svg b/pythonrewrite/design/icons/dialog-information_tango.svg deleted file mode 100644 index 1e957cc..0000000 --- a/pythonrewrite/design/icons/dialog-information_tango.svg +++ /dev/null @@ -1,1145 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - Info - - - Jakub Steiner - - - - - dialog - info - - - http://jimmac.musichall.cz - - - - Garrett LeSage - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pythonrewrite/design/icons/dialog-warning_tango.svg b/pythonrewrite/design/icons/dialog-warning_tango.svg deleted file mode 100644 index 3870db2..0000000 --- a/pythonrewrite/design/icons/dialog-warning_tango.svg +++ /dev/null @@ -1,290 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - Dialog Warning - 2005-10-14 - - - Andreas Nilsson - - - - - Jakub Steiner, Garrett LeSage - - - - - dialog - warning - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pythonrewrite/design/icons/drive-cdrom_tango.svg b/pythonrewrite/design/icons/drive-cdrom_tango.svg deleted file mode 100644 index 6588a65..0000000 --- a/pythonrewrite/design/icons/drive-cdrom_tango.svg +++ /dev/null @@ -1,444 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - Drive - CD-ROM - - - Jakub Steiner - - - - - cdrom - cd-rom - optical - drive - - - - - http://jimmac.musichall.cz - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pythonrewrite/design/icons/drive-harddisk_tango.svg b/pythonrewrite/design/icons/drive-harddisk_tango.svg deleted file mode 100644 index 406c4ac..0000000 --- a/pythonrewrite/design/icons/drive-harddisk_tango.svg +++ /dev/null @@ -1,469 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - Drive - Hard Disk - - - Jakub Steiner - - - - - hdd - hard drive - fixed - media - solid - - - - - http://jimmac.musichall.cz - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pythonrewrite/design/icons/drive-removable-media_tango.svg b/pythonrewrite/design/icons/drive-removable-media_tango.svg deleted file mode 100644 index e448605..0000000 --- a/pythonrewrite/design/icons/drive-removable-media_tango.svg +++ /dev/null @@ -1,390 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - Drive - Removable - - - Jakub Steiner - - - - - media - removable - - - - - http://jimmac.musichall.cz - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pythonrewrite/design/icons/globe-lips.svg b/pythonrewrite/design/icons/globe-lips.svg deleted file mode 100644 index 8b700f9..0000000 --- a/pythonrewrite/design/icons/globe-lips.svg +++ /dev/null @@ -1,512 +0,0 @@ - - - - - - - mouth - body part - - - - bodypart - mouth - - - - - Open Clip Art Library - - - - - Nicu Buculei - - - - - Nicu Buculei - - - - image/svg+xml - - - en - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pythonrewrite/design/icons/gnome-dev-removable-usb_nuvola.svg b/pythonrewrite/design/icons/gnome-dev-removable-usb_nuvola.svg deleted file mode 100644 index a2c624a..0000000 --- a/pythonrewrite/design/icons/gnome-dev-removable-usb_nuvola.svg +++ /dev/null @@ -1,1004 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - Adobe PDF library 6.66 - - - - - - - - - - 2004-10-01T14:58:15+02:00 - - 2005-02-15T09:49:25Z - - Illustrator - - 2004-10-01T14:58:15+02:00 - - - - - JPEG - - 256 - - 256 - - /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA -AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK -DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f -Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER -AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA -AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB -UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE -1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ -qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy -obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp -0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo -+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 -FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F -XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX -Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY -q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq -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 -rF+j9Kff61cAxoy+KJ9uT/iPuM1mo1/Qn4BmIvavJn5QeUfLJS4WH9Iamm/125AYq3jHH9lPnu3v -mqyaiUvIMwGcZQl2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvnX82fJH+Hda+u -2kdNI1Fi0QA2il6vF7D9pfbbtmywz8SNHmGB2Zn+UfnE32m/oS8k5XdktbV26yQDYD5x9PlmHkhR -ZBl19rSopFsnrsNjJWkYPf4v2iPBfppkEvMPO3mlUJS9ufVmG6WybAf7Cvw/Nt/nlmPFKfLkgli/ -l/yV5r86XHOyt/q+nBqPeTVWIeIBpWRvZR86Zk8OPFz3kx3KX+d/J2oeUNabTrl/XgkUSWt0F4rK -h6mlWoVOxFf4Zm6XUA7sSEsLX99YQ2d7f3EumQ1EGncykC/EWPJVpzPIk1b5ZsYaWBPEWFrTd2dp -GIoEWg6IgAUfdkp6iEBQWmS+WPy087+a+EqQ/o/S33+t3AKIy+KL9uT/AIj75rNRr+hPwDMRey+U -Pyb8oeXeE8kP6U1FaH61dAFVbxji3RfatSPHNVk1MpeQbAGd5jpdirsVdirsVdirsVdirsVdirsV -dirsVdirsVdirsVdirsVdirsVdiqV+ZvL1j5g0W50q8H7udfgkH2o5Bujr7qcnjmYmwpD568uxQ+ -VvPcdp5jpDDYSSC5JUupUxtSigEsrggjbeubDLHjjcWA2ZDq/nrzH5vv20ryfYSpFsDPQepx6cmb -7EK/M/TlcdPGAuZTbJvJ/wCR+m2brfeZZBqd8TyNsCfQU/5RPxSn50HscryaonaOwUReoRRRxRrF -EixxoAqIoAVQNgAB0GYjJiX5peUo/MnlO5iSPnqFmpubBgPi5oKsg/4yL8NPGnhl2DJwy8kEPFvK -/wCT3nTXkje4T9FacaH1roEOVPdIRRj/ALLiPfNll1oAq7YCL2Lyn+UPk/y9xm+r/pG/Xf61dgPx -P+RHTgvsaV9812TUSl5BmAzbKEuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2K -uxV2KuxV2KsT84flroPmm/s72+aSKW2BSUw0Bmj6hGJBpQ9/n9F2LPKAICCE/wBI0XStHs1s9MtY -7S2X9iMUqfFid2PuTXK5TMjZSjcirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV -dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd -irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi -rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir -sVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs -VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV -dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd -irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi -rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir//Z - - - - - - - - - - - - uuid:74d5a603-9ab8-427f-9735-c474bf2487a1 - - - - - - image/svg+xml - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pythonrewrite/design/icons/gnome-globe_nuvola.svg b/pythonrewrite/design/icons/gnome-globe_nuvola.svg deleted file mode 100644 index 3a5a620..0000000 --- a/pythonrewrite/design/icons/gnome-globe_nuvola.svg +++ /dev/null @@ -1,1195 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -2004-03-28T20:03:13Z - -2004-03-28T20:03:13Z - -Illustrator - - - - -JPEG - -256 - -256 - -/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA -AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK -DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f -Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER -AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA -AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB -UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE -1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ -qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy -obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp -0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo -+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 -FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqlvmDzFo -3l7TJdT1e5W1tItuTbszHoiKN2Y+AxV4j5g/5ydvTcMnl/SYlgU0Se/LOzDxMcTIF/4M4qk//QzP -nv8A5YNL/wCRVx/2UYq7/oZnz3/ywaX/AMirj/soxV3/AEMz57/5YNL/AORVx/2UYq7/AKGZ89/8 -sGl/8irj/soxV3/QzPnv/lg0v/kVcf8AZRirv+hmfPf/ACwaX/yKuP8AsoxV3/QzPnv/AJYNL/5F -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 -4lCRoEQdFUAD8MVXYq7FXYq//9k= - - - - - - -image/svg+xml - - - - - - - - - -2004-03-28T20:07:21Z - -2004-03-28T20:07:21Z - -Illustrator - - - - -JPEG - -256 - -256 - -/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA -AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK -DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f -Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER -AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA -AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB -UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE -1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ -qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy -obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp -0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo -+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 -FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqlvmDzFo -3l7TJdT1e5W1tItuTbszHoiKN2Y+AxV4j5g/5ydvTcMnl/SYlgU0Se/LOzDxMcTIF/4M4qk//QzP -nv8A5YNL/wCRVx/2UYq7/oZnz3/ywaX/AMirj/soxV3/AEMz57/5YNL/AORVx/2UYq7/AKGZ89/8 -sGl/8irj/soxV3/QzPnv/lg0v/kVcf8AZRirv+hmfPf/ACwaX/yKuP8AsoxV3/QzPnv/AJYNL/5F -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 - - - - - - -image/svg+xml - - - - -begin='' id='W5M0MpCehiHzreSzNTczkc9d' - - - - - - -2004-03-28T20:10:24Z - -2004-03-28T20:13:14Z - -Illustrator - - - - -JPEG - -256 - -256 - -/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA -AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK -DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f -Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER -AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA -AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB -UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE -1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ -qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy -obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp -0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo -+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 -FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqlvmDzFo -3l7TJdT1e5W1tItuTbszHoiKN2Y+AxV4j5g/5ydvTcMnl/SYlgU0Se/LOzDxMcTIF/4M4qk//QzP -nv8A5YNL/wCRVx/2UYq7/oZnz3/ywaX/AMirj/soxV3/AEMz57/5YNL/AORVx/2UYq7/AKGZ89/8 -sGl/8irj/soxV3/QzPnv/lg0v/kVcf8AZRirv+hmfPf/ACwaX/yKuP8AsoxV3/QzPnv/AJYNL/5F -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 -/9k= - - - - - - -image/svg+xml - - - - -end='w' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pythonrewrite/design/icons/gtk-zoom-in_nuvola.svg b/pythonrewrite/design/icons/gtk-zoom-in_nuvola.svg deleted file mode 100644 index 1737355..0000000 --- a/pythonrewrite/design/icons/gtk-zoom-in_nuvola.svg +++ /dev/null @@ -1,433 +0,0 @@ - - -image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/pythonrewrite/design/icons/help_contents.svg b/pythonrewrite/design/icons/help_contents.svg deleted file mode 100644 index c3beee8..0000000 --- a/pythonrewrite/design/icons/help_contents.svg +++ /dev/null @@ -1,701 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - Help Contents - - - help - index - contents - - - - - - Jakub Steiner - - - http://jimmac.musichall.cz - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pythonrewrite/design/icons/inaccessible_tango_emblem-unreadable.svg b/pythonrewrite/design/icons/inaccessible_tango_emblem-unreadable.svg deleted file mode 100644 index 82a4a4f..0000000 --- a/pythonrewrite/design/icons/inaccessible_tango_emblem-unreadable.svg +++ /dev/null @@ -1,357 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - Jakub Steiner - - - http://jimmac.musichall.cz - - Unreadable - - - emblem - access - denied - unreadable - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pythonrewrite/design/icons/language.png b/pythonrewrite/design/icons/language.png deleted file mode 100644 index 3334b5d6db6c37e0f2bb49331307d4e076172507..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3520 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - Jakub Steiner - - - http://jimmac.musichall.cz - - Read Only Emblem - - - emblem - read-only - nowrite - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pythonrewrite/design/icons/multimedia-dell-dj-pocket_tango.svg b/pythonrewrite/design/icons/multimedia-dell-dj-pocket_tango.svg deleted file mode 100644 index 0e25751..0000000 --- a/pythonrewrite/design/icons/multimedia-dell-dj-pocket_tango.svg +++ /dev/null @@ -1,4405 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - Portable Media - iPod Mini Silver - October 2005 - - - Ryan Collier (pseudo) - - - - - http://www.tango-project.org - - - http://www.pseudocode.org - - - media - device - ipod - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - R - - - - - - - - - - diff --git a/pythonrewrite/design/icons/multimedia-player-ipod-mini-blue_tango.svg b/pythonrewrite/design/icons/multimedia-player-ipod-mini-blue_tango.svg deleted file mode 100644 index 0c35cf8..0000000 --- a/pythonrewrite/design/icons/multimedia-player-ipod-mini-blue_tango.svg +++ /dev/null @@ -1,4126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - Portable Media - iPod Mini Blue - October 2005 - - - Ryan Collier (pseudo) - - - http://www.pseudocode.org - - - media - device - ipod - - - - - - http://www.tango-project.org - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MENU - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - R - - - - - - - - - - - diff --git a/pythonrewrite/design/icons/multimedia-player-motorola-rokr_tango.svg b/pythonrewrite/design/icons/multimedia-player-motorola-rokr_tango.svg deleted file mode 100644 index 207e27f..0000000 --- a/pythonrewrite/design/icons/multimedia-player-motorola-rokr_tango.svg +++ /dev/null @@ -1,1025 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - Portable Media - Motorola ROKR - October 2005 - - - Ryan Collier (pseudo) - - - - - http://www.tango-project.org - - - http://www.pseudocode.org - - - media - device - ipod - phone - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - R - - - - - - - - - - diff --git a/pythonrewrite/design/icons/network-transmit-receive_design.svg b/pythonrewrite/design/icons/network-transmit-receive_design.svg deleted file mode 100644 index dd48cc4..0000000 --- a/pythonrewrite/design/icons/network-transmit-receive_design.svg +++ /dev/null @@ -1,1041 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - Computer - 2005-03-08 - - - Jakub Steiner - - - - - workstation - computer - node - client - - - - http://jimmac.musichall.cz/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pythonrewrite/design/icons/pile_of_devices.png b/pythonrewrite/design/icons/pile_of_devices.png deleted file mode 100644 index 3591de98d51b9fbeb4f39a0fcb4f63aaa9acf692..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17218 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MENU - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - R - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - R - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pythonrewrite/design/icons/preferences-desktop-locale_tango.svg b/pythonrewrite/design/icons/preferences-desktop-locale_tango.svg deleted file mode 100644 index e5e87cd..0000000 --- a/pythonrewrite/design/icons/preferences-desktop-locale_tango.svg +++ /dev/null @@ -1,828 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - Jakub Steiner - - - http://jimmac.musichall.cz - - Locale Preferences - - - locale preferences - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pythonrewrite/design/icons/preferences-system_tango.svg b/pythonrewrite/design/icons/preferences-system_tango.svg deleted file mode 100644 index a6183e8..0000000 --- a/pythonrewrite/design/icons/preferences-system_tango.svg +++ /dev/null @@ -1,396 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - Jakub Steiner - - - http://jimmac.musichall.cz - - Preferences System - - - preferences - settings - control panel - tweaks - system - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pythonrewrite/design/icons/redhat-config-users_wasp.svg b/pythonrewrite/design/icons/redhat-config-users_wasp.svg deleted file mode 100644 index 4668db8..0000000 --- a/pythonrewrite/design/icons/redhat-config-users_wasp.svg +++ /dev/null @@ -1,1904 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pythonrewrite/design/icons/seahorse-preferences_gnome.svg b/pythonrewrite/design/icons/seahorse-preferences_gnome.svg deleted file mode 100644 index 583aa18..0000000 --- a/pythonrewrite/design/icons/seahorse-preferences_gnome.svg +++ /dev/null @@ -1,1250 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pythonrewrite/design/icons/spherecrystal_help.svg b/pythonrewrite/design/icons/spherecrystal_help.svg deleted file mode 100644 index dfa203c..0000000 --- a/pythonrewrite/design/icons/spherecrystal_help.svg +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/pythonrewrite/design/icons/system-log-out_tango.svg b/pythonrewrite/design/icons/system-log-out_tango.svg deleted file mode 100644 index c04625a..0000000 --- a/pythonrewrite/design/icons/system-log-out_tango.svg +++ /dev/null @@ -1,362 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - Jakub Steiner - - - http://jimmac.musichall.cz - - System Log Out - - - log out - logout - exit - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pythonrewrite/design/icons/unlocked_clavdia.svg b/pythonrewrite/design/icons/unlocked_clavdia.svg deleted file mode 100644 index ce5175e..0000000 --- a/pythonrewrite/design/icons/unlocked_clavdia.svg +++ /dev/null @@ -1,515 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - Jakub Steiner - - - http://jimmac.musichall.cz - - Read Only Emblem - - - emblem - read-only - nowrite - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pythonrewrite/design/icons/unlocked_lars.svg b/pythonrewrite/design/icons/unlocked_lars.svg deleted file mode 100644 index 963467d..0000000 --- a/pythonrewrite/design/icons/unlocked_lars.svg +++ /dev/null @@ -1,1198 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - Drive - Hard Disk - - - Jakub Steiner - - - - - hdd - hard drive - fixed - media - solid - - - - - http://jimmac.musichall.cz - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pythonrewrite/design/logo/ameisenkopp.svg b/pythonrewrite/design/logo/ameisenkopp.svg deleted file mode 100644 index d018f39..0000000 --- a/pythonrewrite/design/logo/ameisenkopp.svg +++ /dev/null @@ -1,3242 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pythonrewrite/design/logo/antlogo100px.png b/pythonrewrite/design/logo/antlogo100px.png deleted file mode 100644 index 454709d24449e98d592fca0a2f5881fdad5fc054..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7318 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�mM{M z8oXw+iAJN*x85Lx*mz*&%0u5#e*0znXD`_arnkw;Q*{IdYo zYELP(bd}ZZ)Bz#HCKC)(_2@XyAQ0@&8ay4i)89?WYPDLZR;vWy`ZJz4f}j&Vk-hIavJJB)9q;N+>fm`^<^tQ2q02GtsChq%IzL{sWI$$SW*#0J8@tKW zhZ+F$GMQ;giD@HrzGk!8vyn_+x>G_3)M_;h4Gm#>dfI8VTDK%g@;%@8_cv=Jjk(HD zBM;=+`snm*eRSHsZva8ed`%dJmzPSVo)tVB1UpUN)1(8DdT*GyGHT{E)<3d&NgT(m z-Me=`x-3AReDcYM$HvBD$8lWKP-|dJW0ePn34~tEF+t7Ssj_0lip<-o)oPfVn+uxF z<}Gm?KjHiS0zNgicc^og#nA?*- zbM$N5X{sXK4|CS=gxKJ^ z?rJHe8w5e7?@d=VuRdFH%>O#goamYZ!pv*;xvQ?y+%8cN**p+$@!>YV$i*XtM>8p6!XOu5-?Zf&>QTa9@Pd!9#{>H3_A z85FebL{VKf2)0_ybN$V}=atXQXfzr>y!-CEi(_z$0ptT8_`vuB4?OVf>eZ{a6Hy=I zZBNVWh)Je9sXH<>G?bkIUkqtrMn*E)lyqUK7{2=KtzvrnXEh**#o!Rap zhaj)K@$vD8@3`ZRMZa-wK?wnXFMa7t6Vubve>OEWRk#3^HyS<9%e*MNGv-9f9M!rr z_QcF)pq}6@MLNuTc0X*8iq>}QI?Q{vRL#xJCC@$g+<#dt7{DSW1OWEz+4GmxYW0o7 z!^5jx*IiIA>-Qe!NtBKS*-Wq{%}mStT;$Cy)^-%7DW!TQsf&>WJ1vf5jE|51^#?!r z!6m&Ub5Rlk0QcT|Z)<95>T74toEd0Cw2E?!t)jLUlAR}~;uSdabKcC_Tr|p)jyzko z7|GFfXy?V2sv^5(_h)i)a_;%(pTBo0U;s;y5CHh$4}bX0TCMixk&%(DLD2v1OuJL2 z*P_1%LC_}&c0LmTa~7=c={!X?M5iw#9YyvRXy`pW6kr`aAUdheDwvdueJ>pFU+ilUYBC{-_j?3F)Yk&BLWM7 zVYPYLX!*C*UlRnuE2`D` z9}2Jm(O~2;-yUW54BuvWo|CXxDJhZ!J73X#B0>~JJ)oGjZ+dzfFTC)=*UknEV2L)w zr2Fo>uX*6WfsefS;)^HR`pu)(JR%Ik9v9cN4})w+-el4IY(@<7$|$l4c{6G|-=H)A z*?YdsavO~X4jnr5f8X}Dw|#B-P;_Y7fB?Wf_uMmn^ytx#96o%wrAMG{sPFrIM!d+7 zo9X(y85#llrDBjleyM=bUR|rz%F>(7CXO6A^31ot{q0Zla`eAN%d#Ohee#o^y!nC) zF8JLI8#V~N{j^f)-Qb<)*4k<2a%ay=m@T!X?Z;y1Yz===8T#}1`1tq}PdxD(zwty;CJ zVlF0xvcFm{@rW0<5p8gqleAX*3*J6}2K zNP}r6Ad4C8d9)nqNYfOPlauY|pMU;~Z-4vS|9VLkE~RZR1t0)$|NZxiTCMi}HEY(q zad>!GXb&Y%N;CtMQfRl^*$x)lpzFLvZCBZ{Pm5dcA(N@B6hhO;IkFd$t7uXUFiOGV~jLn$0FpPEPKfot^!M#~yp^>-XGq z&%n*lFE#yG0nv2pt+$Fdyx|S648!p1FbuC99Ua|NtyWPgm6o)-(I(sWwA*d8+ilFu z%tX`E(@)LJ%sjGx|Ne(Q^q~(OIT!sn7xWVWh)s9hb=Rg%n>JlnDwVDo9v;4=R4O^< z@of98653_9&!(7rk*BApryGsN_ot?&9)0r3Cm;FDXFjvkpG^H{p`S=VOnU2E-&#HY z{PS0>S+k~IE|=>;5R7=9S9ctzE~TtXDMyH?!pxIOsR^ajWE{t*<2asdx7!nQb8{01 m4jh=+zkmO+AD3NN3jKfcr2WMqRedx70000 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - diff --git a/pythonrewrite/design/logo/bubblebutton.svg b/pythonrewrite/design/logo/bubblebutton.svg deleted file mode 100644 index 92cfc73..0000000 --- a/pythonrewrite/design/logo/bubblebutton.svg +++ /dev/null @@ -1,774 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pythonrewrite/design/logo/entwurf.svg b/pythonrewrite/design/logo/entwurf.svg deleted file mode 100644 index 456a84a..0000000 --- a/pythonrewrite/design/logo/entwurf.svg +++ /dev/null @@ -1,945 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - doire wrote to mention a Physicsweb piecerevealing some of the first bits of data fromthe Deep Impact mission. From the article:"Based on data from the flyby spacecraft andthe impactor, Michael O'Hearn of theUniversity of Maryland and colleagues saythat Tempel 1 belongs to the Jupiter family ofcomets, although its overall shape and surfacefeatures are quite different from the nuclei ofthe two other comets that have been studiedin detail -- Wild 2 and Borelly. They also reportthat Tempel 1 consists largely of extremelyfine particles that seem to be very looselybound together: in other words, the comet ismore like a pile of powder than a solid rock."Looks like the Electric Universe folks were off.Yours sincerely,Big Brother - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pythonrewrite/design/logo/evil_stick.png b/pythonrewrite/design/logo/evil_stick.png deleted file mode 100644 index 0f711c62d84bcb24fc37fa2e1eb2b6d8927aabe3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18297 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 l@fb!#4mc-9G0qi$_&wqG diff --git a/pythonrewrite/design/logo/evil_stick.svg b/pythonrewrite/design/logo/evil_stick.svg deleted file mode 100644 index adb361e..0000000 --- a/pythonrewrite/design/logo/evil_stick.svg +++ /dev/null @@ -1,811 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - During the course of our ongoing review of the Secure Flight program,we found that TSA did not fully disclose to the public its use of personalinformation in its fall 2004 privacy notices as required by the Privacy Act.In particular, the public was not made fully aware of, nor had theopportunity to comment on, TSA's use of personal information drawnfrom commercial sources to test aspects of the Secure Flight program.In September 2004 and November 2004, TSA issued privacy notices inthe Federal Register that included descriptions of how such informationwould be used. However, these notices did not fully inform the publicbefore testing began about the procedures that TSA and its contractorswould follow for collecting, using, and storing commercial data. Inaddition, the scope of the data used during commercial data testing wasnot fully disclosed in the notices. Specifically, a TSA contractor, acting onbehalf of the agency, collected more than 100 million commercial datarecords containing personal information such as name, date of birth, andtelephone number without informing the public. As a result of TSA'sactions, the public did not receive the full protections of the Privacy Act.Yours sincerely,Big Brother - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pythonrewrite/design/logo/evil_stick2.png b/pythonrewrite/design/logo/evil_stick2.png deleted file mode 100644 index a7a48a9d6783f45d8436c236d1627c672139ffe9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17008 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 diff --git a/pythonrewrite/design/logo/evil_stick2.svg b/pythonrewrite/design/logo/evil_stick2.svg deleted file mode 100644 index 4153b9b..0000000 --- a/pythonrewrite/design/logo/evil_stick2.svg +++ /dev/null @@ -1,820 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - During the course of our ongoing review of the Secure Flight program,we found that TSA did not fully disclose to the public its use of personalinformation in its fall 2004 privacy notices as required by the Privacy Act.In particular, the public was not made fully aware of, nor had theopportunity to comment on, TSA's use of personal information drawnfrom commercial sources to test aspects of the Secure Flight program.In September 2004 and November 2004, TSA issued privacy notices inthe Federal Register that included descriptions of how such informationwould be used. However, these notices did not fully inform the publicbefore testing began about the procedures that TSA and its contractorswould follow for collecting, using, and storing commercial data. Inaddition, the scope of the data used during commercial data testing wasnot fully disclosed in the notices. Specifically, a TSA contractor, acting onbehalf of the agency, collected more than 100 million commercial datarecords containing personal information such as name, date of birth, andtelephone number without informing the public. As a result of TSA'sactions, the public did not receive the full protections of the Privacy Act.Yours sincerely,Big Brother - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pythonrewrite/design/logo/evil_stick3.png b/pythonrewrite/design/logo/evil_stick3.png deleted file mode 100644 index efc372c89d02689c83d08e3e9090073d90c3d0cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17744 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 Rh^!Hqdg9eL91PhzJA#S$7Jf7=h*dfqIkS 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - During the course of our ongoing review of the Secure Flight program,we found that TSA did not fully disclose to the public its use of personalinformation in its fall 2004 privacy notices as required by the Privacy Act.In particular, the public was not made fully aware of, nor had theopportunity to comment on, TSA's use of personal information drawnfrom commercial sources to test aspects of the Secure Flight program.In September 2004 and November 2004, TSA issued privacy notices inthe Federal Register that included descriptions of how such informationwould be used. However, these notices did not fully inform the publicbefore testing began about the procedures that TSA and its contractorswould follow for collecting, using, and storing commercial data. Inaddition, the scope of the data used during commercial data testing wasnot fully disclosed in the notices. Specifically, a TSA contractor, acting onbehalf of the agency, collected more than 100 million commercial datarecords containing personal information such as name, date of birth, andtelephone number without informing the public. As a result of TSA'sactions, the public did not receive the full protections of the Privacy Act.Yours sincerely,Big Brother - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pythonrewrite/design/logo/vault_pingu_gross.png b/pythonrewrite/design/logo/vault_pingu_gross.png deleted file mode 100644 index 51c320a0b61a95b3b1349368a8c10a4522d62fc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93838 zcmXtgV{oO<)AmVnV%x^XwryLRoNR1cCpI_S*x1q zcj~r>ZpU#x%*-f!GMHpCxakn87y?=Ov_E2LhBm8OHO!vwZg(ulkslE61?#`j--pc8 zJ1PH&nHx~+tkSnHBnw*Om^-7vvr2ONHHP2mt#9CR`{S zAQ1$HOL7;137UJ&-u!Ydd@|!mR+#2Z`s_a~Jkv#51ijEUqpB(!`g(3>Ec=MPch<_T z>)Y#VEEZG{`wDn{q+VWKMyIehPIlkkTvltpOw@g>HdWgXm^^WW0EdphB1wzGe^WMQ z*^&uPYpFeZ)p}L#A+>$v^CDf{`hM|6wxN;Rt=DEd{nZAHJh!Lx!rO@nUaYZ=giy%+jrrDL^9X zaeb|4?gCT7IXI)ie@aiW+*f3M{lmY)W_Ve5o#((m3?h<(CYm>qqiQ4^{-v z4AMo{X~iXNe|ZhiR_oIgo;i4@QYYIF2#$nL`DgS_{m2P4N-5qR8ogkUq^EBY>CWrT zE%+v#l6dd;XUh^WC`%!o-JJ_jzS2=EqJk8k=r0@szeD>f48tpL{5`NYdTx1e_4IZs zGTF{x@6Les^R0;$P~7m!28E=mpAC#x+k(y4M^ZmH)ym#Hx^u4#J9~b+2T-rxf=&Y- z-pD#tUf%DZE0yw*VVpZU^?ZdaYZJH|^pOkCgv*+Vf#o>l7p^TVjjx0U{tgf+n=+C+ zvc0I~8E6N!3G?q?Hxl4xjb@l2M>|l#FuAYxkXWK}4+a7$7lf&w4{&M&qnP%KH2cD> z^UD(JI%*w`8SsNlkklvFCgXWC57cm#ac}nrJ(HI*fDs_UpV#C*XActV5sJ0Z7HauN z6;9E5N8Y*1UtOeSc}aQcL?t7=yey6PRMf1O4ClfMM@-g7bmRivNrR%rs)GRRve$mW zgj)hivMBtdxo^_WBAe4xorm|!Wy^*iK4EQbhb0+_0Y)!HeBF6wGe?g(%eL3ayzhPh z`rer(|I`ajDFiaCOC2>F6|EEp0}nQWYpg$Uz204n^bNG#y<7UQN4PB>3SQtegjp$A zT$Edu?sr`eEvEMj&bW`@XVshYIp4lO(+CzWoVFhvrEhlgBg1>Q zW>*4!wj->ruW`@j1hkIK5m{{5WkS`RIW&a*{Ig4jCl%WF!H zNT%M(wBNe!$$Eugf@^!{`3#7L`N8#pcyjeQ(J|)1f9N&E%Z^SUb#mW|D9feSdW7bk z+O4KVBP~^V~%=P%iC0az42J9$n7QE8_jrNh(|WM`3Tx`VbUnC zBgIU8^JBrgK}>>dZ`Q5-+>8$W3}x_hXOGKBdeKh_o$PtRQk?OF<_L{SAk;oG4&D

R#yKoi-*w`)s9vGEGF-( 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 KMNUMnLSTaWr&s>~ diff --git a/pythonrewrite/design/logo/vault_pingu_uncut.png b/pythonrewrite/design/logo/vault_pingu_uncut.png deleted file mode 100644 index c367dd433b5d0fcd9f8119cbbf4a0fa4750440d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121097 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 - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, version 2. - -This program is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License with -your Debian GNU/Linux system, in /usr/share/common-licenses/GPL, or with the -Debian GNU/Linux hello source package as the file COPYING. If not, -write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, -Boston, MA 02110-1301 USA - -$Id$ diff --git a/pythonrewrite/doc/html/de/CryptoBox.html b/pythonrewrite/doc/html/de/CryptoBox.html deleted file mode 100644 index fe28780..0000000 --- a/pythonrewrite/doc/html/de/CryptoBox.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - -

-

-

- -

-

Die CryptoBox

-

-English version -

-

Neuigkeiten

-
  • [14.04.02006] Leider ist codecoop.org wahrscheinlich noch bis 17. April offline. Update: der Download funktioniert wieder, die aktuellste Version findest du hier. -
  • [07.03.02006] Wir strukturieren die CryptoBox gerade um. Zukünftig wird es das CryptoBox-Webfrontend als einzelnes Paket geben, so dass du es in ein bestehendes Linuxsystem installieren kannst. stay tuned.. -
  • [30.10.02005] Die neue CryptoBox Version 0.2.1 ist verfügbar: codecoop.org -
  • [21.10.02005] Wir haben einen Fehler im Release v0.2 entdeckt, der unter bestimmten Umständen die Initialisierung fehlschlagen lässt. Die Veröffentlichung der v0.2.1 behebt diesen Fehler. Wir raten sehr, nur noch v0.2.1 und nachfolgende Versionen zu benutzen und entschuldigen uns, euch Umstände bereitet zu haben. -
  • [04.10.02005] Das erste Release (v0.2) der CryptoBox ist unter Codecoop.org 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. -

-

-Damit sprechen wir hauptsächlich Menschen an, die ihre Daten (Ideen, Werke, Geheimnisse ...) auf einfachem Wege vor unbefugtem Zugriff sichern wollen. Kurzum: Privatsphäre, als grundlegendes Menschenrecht sichern! -

-

-Die Bedienung erfolgt vollständig per Webbrowser. Wirf einen Blick auf die ScreenShots. -

-

-Nutze das Web-Interface der CryptoBox in deiner Lieblingssprache: -

-
  • deutsch -
  • englisch -
  • slowenisch -

Spezifikation

-

-einige eher technische Details: -

- -
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 -
-

Download

-

-Wenn du die CryptoBox benutzen möchtest, kannst du ein aktuelles Image herunterladen und auf eine CD brennen. -

-

-Denk bitte daran, dass dies ein Open Source Projekt ist! Wir bitten dich deshalb, deine Erfahrungen (vor allem auch negative) im Umgang mit der CryptoBox, mit uns zu teilen. So können wir etwaige Fehler schneller beheben und letztlich der Community ein besseres "Produkt" bereitstellen. -

-
  • Zur aktuellsten Version führt dich dieser Link -
    • Vielen Dank an die Menschen der Codecoop für die Bereitstellung der Download-Möglichkeit! -

Für dich von uns

-

-Wir wollen dir, soweit wir können, beim Umgang mit der CryptoBox helfen. -

-
  • Im Nutzerhandbuch findest du eine ausführliche Hilfe. -
  • Schreibe eine eMail an cryptobox[at]systemausfall.org, wenn du weitere Fragen hast. -

Von dir für andere

-

-Du bist nicht nur Konsument. Durch deine Taten kannst du anderen Menschen helfen. - -

-
  • Wir suchen noch Übersetzungen in andere Sprachen. Wenn du dich beteiligen möchtest, wirf einen Blick in die Übersetzungen-Sektion. Dort gibt es eine "README" Datei in der genauere Beschreibungen stehen. -
  • Probleme und Anregungen kannst du in unserer Fehlerdatenbank melden. (Dabei kannst du alle Eingabefelder, die dir unklar sind, getrost ignorieren.) -

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.
-Trage dich einfach in die Entwickler-Mailingliste ein: cryptobox-dev-subscribe@lists.systemausfall.org und hab Spaß. -

-

-Das Mailinglisten-Archiv ist verfügbar unter https://systemausfall.org/mail-archive. -

-

-Die englischsprachige Entwickler-Doku findest du unter CryptoBoxDev. Dort wird detailiert beschrieben, wie du die Entwicklungsumgebung der CryptoBox verwenden kannst. -

-

-Unsere Enwticklungspläne kannst du dir in der Roadmap anschauen. -

-

Mitwirkende

-

-Vielen Dank an alle HelferInnen - ihr macht die CryptoBox erst richtig rund! :) -

-

-

  • 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

-

Comment by anonymous on Tue Nov 29 10:54:06 2005

-

-Ein feines Projekt! -

-

-Das würde ich gerne in meinen Server integrieren. -Ein Howto für Debian wäre nicht schlecht. -

-
-

-den Rest der Diskussion findest du in Ticket #84* -

-
-

- -

-
diff --git a/pythonrewrite/doc/html/de/CryptoBoxDev.html b/pythonrewrite/doc/html/de/CryptoBoxDev.html deleted file mode 100644 index 98072d8..0000000 --- a/pythonrewrite/doc/html/de/CryptoBoxDev.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - -
-

-

- -

-

-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

-

-Join the mailing list: cryptobox-dev-subscribe@lists.systemausfall.org. -

-

Bug reports

-

-If you think you found a bug or you get an error message, please help us to fix the problem and file a ticket (a bug report). Follow these steps: -

-
  1. Have a look at Open bugs that need to be fixed -
  2. Create a New Ticket -
-
- - - diff --git a/pythonrewrite/doc/html/de/CryptoBoxDevBackground.html b/pythonrewrite/doc/html/de/CryptoBoxDevBackground.html deleted file mode 100644 index 2c1ae1b..0000000 --- a/pythonrewrite/doc/html/de/CryptoBoxDevBackground.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - -
-

-

-

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) -

-See source:trunk/hints/kernel-build.txt for more 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/pythonrewrite/doc/html/de/CryptoBoxDevCustomBuild.html b/pythonrewrite/doc/html/de/CryptoBoxDevCustomBuild.html deleted file mode 100644 index 1abfd92..0000000 --- a/pythonrewrite/doc/html/de/CryptoBoxDevCustomBuild.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - -
-

-

- -

-

-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/pythonrewrite/doc/html/de/CryptoBoxDevCustomConfigure.html b/pythonrewrite/doc/html/de/CryptoBoxDevCustomConfigure.html deleted file mode 100644 index 67d3fb1..0000000 --- a/pythonrewrite/doc/html/de/CryptoBoxDevCustomConfigure.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - -
-

-

-

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/pythonrewrite/doc/html/de/CryptoBoxDevKnownProblems.html b/pythonrewrite/doc/html/de/CryptoBoxDevKnownProblems.html deleted file mode 100644 index 861b783..0000000 --- a/pythonrewrite/doc/html/de/CryptoBoxDevKnownProblems.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - -
-

-

- -

-

-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. -

-

dfsbuild

-

can't cd to _builddir/target/var/lib/apt/lists

-

-Try to downgrade cdebootstrap to v0.3.4 (for debian: apt-get install cdebootstrap/stable). This problem occours at least up to v0.3.8 of cdebootstrap. -

-
-

Comments

-

- -

-
diff --git a/pythonrewrite/doc/html/de/CryptoBoxDevPreparation.html b/pythonrewrite/doc/html/de/CryptoBoxDevPreparation.html deleted file mode 100644 index 849b714..0000000 --- a/pythonrewrite/doc/html/de/CryptoBoxDevPreparation.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - -
-

-

- -

-

-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/pythonrewrite/doc/html/de/CryptoBoxDevValidation.html b/pythonrewrite/doc/html/de/CryptoBoxDevValidation.html deleted file mode 100644 index df9c2e2..0000000 --- a/pythonrewrite/doc/html/de/CryptoBoxDevValidation.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - -
-

-

-

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/pythonrewrite/doc/html/de/CryptoBoxDevWorkFlow.html b/pythonrewrite/doc/html/de/CryptoBoxDevWorkFlow.html deleted file mode 100644 index 015bf8c..0000000 --- a/pythonrewrite/doc/html/de/CryptoBoxDevWorkFlow.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - -
-

-

- -

-

-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. -

-

Copying a testversion

-

-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. -

-

Setting up a new Release

-

-Once you finished your development, you surely want to make a new release. Please read the instructions in the releas-policy.txt it will save you a lot of time! Then you basically just have to run scripts/cbox-build.sh release and get yourself a good coffee. After the command has finished you'll see the releasefiles in _buildir. -

-
-

Comments

-

- -

-
diff --git a/pythonrewrite/doc/html/de/CryptoBoxUser.html b/pythonrewrite/doc/html/de/CryptoBoxUser.html deleted file mode 100644 index 4687081..0000000 --- a/pythonrewrite/doc/html/de/CryptoBoxUser.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - -
-

-

- -

-

-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/pythonrewrite/doc/html/de/CryptoBoxUserConfiguration.html b/pythonrewrite/doc/html/de/CryptoBoxUserConfiguration.html deleted file mode 100644 index 5ee43de..0000000 --- a/pythonrewrite/doc/html/de/CryptoBoxUserConfiguration.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - -
-

-

- -

-

-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/pythonrewrite/doc/html/de/CryptoBoxUserDailyUse.html b/pythonrewrite/doc/html/de/CryptoBoxUserDailyUse.html deleted file mode 100644 index 8f214ac..0000000 --- a/pythonrewrite/doc/html/de/CryptoBoxUserDailyUse.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - -
-

-

- -

-

-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/pythonrewrite/doc/html/de/CryptoBoxUserGettingStarted.html b/pythonrewrite/doc/html/de/CryptoBoxUserGettingStarted.html deleted file mode 100644 index 04ffe7a..0000000 --- a/pythonrewrite/doc/html/de/CryptoBoxUserGettingStarted.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - -
-

-

- -

-

-Navigation: ( CryptoBoxUser/de, CryptoBoxUserConfiguration/de, CryptoBoxUserDailyUse/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/pythonrewrite/doc/html/en/CryptoBox.html b/pythonrewrite/doc/html/en/CryptoBox.html deleted file mode 100644 index 9c514e5..0000000 --- a/pythonrewrite/doc/html/en/CryptoBox.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - -
-

-

- -

-

The CryptoBox

-

-deutschsprachige Version -

-

News

-
  • [14/04/02006] Sorry folks, codecoop.org is temporarly down. Update: it's up and running again. Fetch the latest version here -
  • [07/03/02006] We're currently splitting the CryptoBox up in the CryptoBox-Webfrontend and the Cryptobox-CD. This will let you use the CryptoBox-Webfrontend in your favourite Linux Installation. stay tuned.. -
  • [30/10/02005] The new CryptoBox version 0.2.1 is available at codecoop.org! -
  • [21/10/02005] We discovered a bug in v0.2, which in some cases prevents the intialization of the CryptoBox. Please wait for v0.2.1 to obtain a working release. We recommend not using v0.2 and are very sorry for the inconvenience. -
  • [04/10/02005] The first release (v0.2) of the CryptoBox is available at Codecoop.org. -

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.
-The CryptoBox is fully controllable via your web browser. Have a look at the ScreenShots. -

-

-Use the web interface of the CryptoBox in your favourite language: -

-
  • English -
  • German -
  • Slovenian -

Specifications

-

-some rather technical details: -

- -
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 -
-

Download

-

What we share

-

-We do our best to help you using the CryptoBox. -

-
  • You can find detailed information in the user manual. -
  • For further questions write an email to cryptobox[at]systemausfall.org -

What you might share

-

-You are not just a consumer. You can help others with your knowledge. - -

-
  • We are looking for more translations. Take a look at the "README"-file in our language section. There you can find further instructions if you'd like to contribute. -
  • Open up a ticket for your feature requests and bugs. -

Development

-

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

-

Comment by anonymous on Tue Nov 29 13:54:27 2005

-

-Let me just make sure I understand correctly. -The protected data is encrypted on the Cryptobox drive, -but is available in clear on the network, between the cryptobox and the user. Right? -

-
-

-see the whole discussion at ticket #83* -

-
-

Comment by anonymous on Sun Dec 4 06:51:50 2005

-

-Do you have suggestions on how to secure the file transfer in a platform independent way? -

-

-Perhaps the simplest thing to do would be make (one version of) CryptoBox be a https (secure web server). -(Instead of, or in addition to, being a samba file server). -

-

-Web browsers use encryption when they upload a file to a "https:// " web server, right? -(using a <FORM> with <INPUT type="file" name="name_of_files">, see -http://www.w3.org/TR/html4/interact/forms.html#h-17.4 -). -Then one (static) web page on that server asks users to upload files using such a form. -

-

-All https servers use encryption when they download files, right? -So another (dynamic) web page on that server lists all of that user's files. Each one is hotlinked, so the user simply clicks on it to download / view it. -

-

-Perhaps a bit kludgy, but I think even unexperienced users could figure it out. -

-
-

-see the whole discussion at ticket #83*, too -

-
-

Comment by anonymous on Sat Dec 10 12:15:55 2005

-

-What happens when there are multiple hard drives in the machine? Will it erase all? Does it combine them to one share with something like raid or lvm, or will they be mountable as different shares? I'd try myself, but I currently only have one free hdd to test with. -btw, wonderful tool, keep up the good work, and tell us if you need more testers :-) -

-
-

-If there are multiple harddisks available, then it will use only the first.
-We are going to implement an interface to manually partition harddisks and choose more than one of them for (seperated) encrypted containers. This feature should be available in the next release (v0.3).
-If you would like to help us (e.g. by testing), then you could subscribe to the mailing list. -

-
-

Comment by anonymous on Sat May 6 10:41:21 2006

-

-Could the hdd be external usb or firewire? -

-
-

-yes - version 2.1 should support usb drives (firewire will work with 3.0) -

-
-

- -

-
diff --git a/pythonrewrite/doc/html/en/CryptoBoxDev.html b/pythonrewrite/doc/html/en/CryptoBoxDev.html deleted file mode 100644 index 4690ee3..0000000 --- a/pythonrewrite/doc/html/en/CryptoBoxDev.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - -
-

-

- -

-

-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

-

-Join the mailing list: cryptobox-dev-subscribe@lists.systemausfall.org. -

-

Bug reports

-

-If you think you found a bug or you get an error message, please help us to fix the problem and file a ticket (a bug report). Follow these steps: -

-
  1. Have a look at Open bugs that need to be fixed -
  2. Create a New Ticket -
-
- - - diff --git a/pythonrewrite/doc/html/en/CryptoBoxDevBackground.html b/pythonrewrite/doc/html/en/CryptoBoxDevBackground.html deleted file mode 100644 index 9caa67c..0000000 --- a/pythonrewrite/doc/html/en/CryptoBoxDevBackground.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - -
-

-

-

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) -

-See source:trunk/hints/kernel-build.txt for more 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/pythonrewrite/doc/html/en/CryptoBoxDevCustomBuild.html b/pythonrewrite/doc/html/en/CryptoBoxDevCustomBuild.html deleted file mode 100644 index f364dbe..0000000 --- a/pythonrewrite/doc/html/en/CryptoBoxDevCustomBuild.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - -
-

-

- -

-

-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/pythonrewrite/doc/html/en/CryptoBoxDevCustomConfigure.html b/pythonrewrite/doc/html/en/CryptoBoxDevCustomConfigure.html deleted file mode 100644 index 536ae8a..0000000 --- a/pythonrewrite/doc/html/en/CryptoBoxDevCustomConfigure.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - -
-

-

-

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/pythonrewrite/doc/html/en/CryptoBoxDevKnownProblems.html b/pythonrewrite/doc/html/en/CryptoBoxDevKnownProblems.html deleted file mode 100644 index 3dcc08e..0000000 --- a/pythonrewrite/doc/html/en/CryptoBoxDevKnownProblems.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - -
-

-

- -

-

-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. -

-

dfsbuild

-

can't cd to _builddir/target/var/lib/apt/lists

-

-Try to downgrade cdebootstrap to v0.3.4 (for debian: apt-get install cdebootstrap/stable). This problem occours at least up to v0.3.8 of cdebootstrap. -

-
-

Comments

-

- -

-
diff --git a/pythonrewrite/doc/html/en/CryptoBoxDevPreparation.html b/pythonrewrite/doc/html/en/CryptoBoxDevPreparation.html deleted file mode 100644 index a5e9ba8..0000000 --- a/pythonrewrite/doc/html/en/CryptoBoxDevPreparation.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - -
-

-

- -

-

-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/pythonrewrite/doc/html/en/CryptoBoxDevValidation.html b/pythonrewrite/doc/html/en/CryptoBoxDevValidation.html deleted file mode 100644 index 2f62d45..0000000 --- a/pythonrewrite/doc/html/en/CryptoBoxDevValidation.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - -
-

-

-

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/pythonrewrite/doc/html/en/CryptoBoxDevWorkFlow.html b/pythonrewrite/doc/html/en/CryptoBoxDevWorkFlow.html deleted file mode 100644 index f70a97e..0000000 --- a/pythonrewrite/doc/html/en/CryptoBoxDevWorkFlow.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - -
-

-

- -

-

-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. -

-

Copying a testversion

-

-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. -

-

Setting up a new Release

-

-Once you finished your development, you surely want to make a new release. Please read the instructions in the releas-policy.txt it will save you a lot of time! Then you basically just have to run scripts/cbox-build.sh release and get yourself a good coffee. After the command has finished you'll see the releasefiles in _buildir. -

-
-

Comments

-

- -

-
diff --git a/pythonrewrite/doc/html/en/CryptoBoxUser.html b/pythonrewrite/doc/html/en/CryptoBoxUser.html deleted file mode 100644 index 4f8ccbc..0000000 --- a/pythonrewrite/doc/html/en/CryptoBoxUser.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - -
-

-

- -

-

-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/pythonrewrite/doc/html/en/CryptoBoxUserConfiguration.html b/pythonrewrite/doc/html/en/CryptoBoxUserConfiguration.html deleted file mode 100644 index 7664310..0000000 --- a/pythonrewrite/doc/html/en/CryptoBoxUserConfiguration.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - -
-

-

- -

-

-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. -

-

-en_init.png -

-

-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: -

-

-en_config.png -

-
  • If you defined an administration password 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/pythonrewrite/doc/html/en/CryptoBoxUserDailyUse.html b/pythonrewrite/doc/html/en/CryptoBoxUserDailyUse.html deleted file mode 100644 index 8d0a00d..0000000 --- a/pythonrewrite/doc/html/en/CryptoBoxUserDailyUse.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - -
-

-

- -

-

-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 Tools menu: -

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

-en_w98_network_drive.png -

-

-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 fastest method to secure your data. -

-

-back to CryptoBoxUser -

-
-

Questions and Answers

-

Windows: network drive cannot be mapped

-

-en_w98_not_logged_in.png -

-

-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. -

-

-en_w98_login.png -

-

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/pythonrewrite/doc/html/en/CryptoBoxUserGettingStarted.html b/pythonrewrite/doc/html/en/CryptoBoxUserGettingStarted.html deleted file mode 100644 index 3a37b84..0000000 --- a/pythonrewrite/doc/html/en/CryptoBoxUserGettingStarted.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -
-

-

- -

-

-Navigation: ( CryptoBoxUser/en, CryptoBoxUserConfiguration/en, CryptoBoxUserDailyUse/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/pythonrewrite/doc/html/fr b/pythonrewrite/doc/html/fr deleted file mode 120000 index 2c4c454..0000000 --- a/pythonrewrite/doc/html/fr +++ /dev/null @@ -1 +0,0 @@ -en \ No newline at end of file diff --git a/pythonrewrite/doc/html/si b/pythonrewrite/doc/html/si deleted file mode 120000 index 2c4c454..0000000 --- a/pythonrewrite/doc/html/si +++ /dev/null @@ -1 +0,0 @@ -en \ No newline at end of file diff --git a/pythonrewrite/known_problems b/pythonrewrite/known_problems deleted file mode 100644 index 0d87995..0000000 --- a/pythonrewrite/known_problems +++ /dev/null @@ -1,4 +0,0 @@ -Bug-Report: twill/other-modules/ClientForm.py: uncomment line 846 ("XHTMLCompatibleFormParser" instead of default parser) - this solves an eternal loop-problem caused by line 958 ("fp.feed(ch)") - -Bug-Report: testoob - loading of a TestSuite (as advertised by the commandline help) does not work (due to unittest.py/loadTestsFromModule) - diff --git a/pythonrewrite/lang/README b/pythonrewrite/lang/README deleted file mode 100644 index e117d71..0000000 --- a/pythonrewrite/lang/README +++ /dev/null @@ -1,37 +0,0 @@ -$Id$ - -You may want to translate the CryptoBox into another language? -Most welcome! - -Existing translations can be found in the .hdf files in the -language directory (online available as -https://systemausfall.org/svn/cryptobox/trunk/lang/). - -There are three easy steps, that won't take longer than one hour -to go through, if you want to translate the cryptobox into a -language of your choice: - -1.) Download one .hdf in your preferred language (e.g. "en.hdf" -if you're a native english speaker). - -2.) Start to change the text following the equal signs line by line. - -3.) Send us your changed .hdf file. That's it - thank you! - - -Hints: -We are available via mail (cryptobox@systemausfall.org) for any -questions. Don't worry to ask us if something is vague. - -We prefer "utf" encoded hdf-files. If you don't know what utf -means - just don't care, send us your file and everything else -will be fine. - -You don't have to translate the whole file - some minor parts are -enough to send back. The community will do the rest. ;) - -Again, thanks for your help! We do the Cryptobox things in our -free time for fun and to provide an open source solution for this -special purpose. By helping us, you're taking part in this -development. - diff --git a/pythonrewrite/lang/TODO b/pythonrewrite/lang/TODO deleted file mode 100644 index 0207e79..0000000 --- a/pythonrewrite/lang/TODO +++ /dev/null @@ -1,18 +0,0 @@ -$Id$ - -Here are some minor fixes that have to be done. Thanks a lot for your -help! - - -################################ slovenian ################################## - -- SuccessMessage.InitRunning contains only the first sentence -- SuccessMessage.ReBoot: add a hint for automatic redirection (3rd sentence) -- EmptyCryptoPassword: change 'Text' accordingly to English string. -- Button.System: is in eglish -- ErrorMessage.NoDocumentation: is in english - -Below are some smaller changes in English sentences. Someone may change it accordingly. -- MountFailed: add 'Pleasy try again' to the end of the string. -- UmountFailed: changed 'Also close all unclean programs' to 'Close all unclean programs'. -- InitRunning: changed 'You may configure it now. You may activate the encrypted filesystem in a few minutes.' to 'You may configure it now and activate the encrypted filesystem in a few minutes.' diff --git a/pythonrewrite/lang/de.hdf b/pythonrewrite/lang/de.hdf deleted file mode 100644 index a1c1960..0000000 --- a/pythonrewrite/lang/de.hdf +++ /dev/null @@ -1,230 +0,0 @@ -Name = Deutsch - -Status = $Id$ - -Title { - Top = Die CryptoBox - Slogan = ... und 1984 war gestern! - Init = Initialisierung der CryptoBox - Mount = Aktivierung des Containers - Umount = Deaktivierung des Containers - Config = Konfiguration der CryptoBox - System = System - Status = Status der CryptoBox - Volume = Eigenschaften von -} - - -Text { - EnterCurrentCryptoPassword = Das Crypto-Passwort eingeben - EnterNewCryptoPassword = Das neue Crypto-Passwort eingeben - EnterSameCryptoPassword = Das Crypto-Passwort wiederholen - EnterCurrentAdminPassword = Das aktuelle Admin-Passwort eingeben: - EnterNewAdminPassword = Das neue Admin-Passwort eingeben: - EnterSameAdminPassword = Das neue Admin-Passwort wiederholen: - InitWarning = Bei der Initialisierung werden ALLE DATEN auf der Festplatte GELÖSCHT! - ConfirmInitHint = Um zu bestätigen, dass du weisst, was du tust, tippe hier bitte exakt Folgendes ein: - ConfirmInit = Ja, loesche alle Daten! - PartitionInfo = Derzeitige Partitionierung der Festplatte: - IPAddress = Netzwerk-Adresse (IP) der CryptoBox: - TimeOut = Zeitabschaltung des Crypto-Dateisystems (in Minuten): - SelectLanguage = Spracheinstellung: - RedirectNote = Klicke hier, falls dein Browser die automatische Weiterleitung nicht unterstützt. - ProjectHomePage = Projekt-Seite - ProjectNote = Die CryptoBox ist ein Projekt von - DoUmount = Deaktivierung des verschlüsselten Dateisystems - DoMount = Aktivierung des verschlüsselten Dateisystems - Configuration = Einstellungen - CryptoIsActive = Die Crypto-Daten sind verfügbar. - CryptoIsDown = Die Crypto-Daten sind vor jedem Zugriff geschützt. - ChoosePartition = Welchen Daten-Container möchtest du auswählen? - ChosenPartition = Der aktuelle Daten-Container ist - ActivePartitions = Die folgenden Daten-Container sind derzeit aktiv - PassivePartitions = Die folgenden Daten-Container sind derzeit inaktiv - ContainerName = Der Name des Daten-Containers - ContainerEncryption = Aktiviere Verschlüsselung -} - - -Button { - DoInit = Initialisierung - SaveConfig = Speichere Konfiguration - Update = Aktualisieren - Mount = Container aktivieren - Umount = Container deaktivieren - Config = Einstellungen - PowerOff = ausschalten - ReBoot = neu starten - Documentation = Hilfe - Status = Status - System = System - ContainerNameSet = Setze den neuen Namen - InitContainer = Reinitialisiere den Container -} - - -WarningMessage { - InitNotConfirmed { - Title = Bestätigung schlug fehl - Text = Der Bestätigungssatz muss exakt eingegeben werden! - } - - EmptyCryptoPassword { - Title = Ungültiges Crypto-Passwort - Text = Du musst ein Crypto-Passwort eingeben! - } - - DifferentCryptoPasswords { - Title = Ungleiche Crypto-Passworte - Text = Die beiden Passworte müssen identisch sein, um Eingabefehler zu verhindern. - } - - DifferentAdminPasswords { - Title = Ungleiche Administrations-Passworte - Text = Die beiden Passworte müssen identisch sein, um Eingabefehler zu verhindern. - } - - WrongAdminPassword { - Title = Falsches Administrations-Passwort - Text = Das eingegebene Administrations-Passwort ist falsch. Versuche es noch einmal. - } - - MountFailed { - Title = Aktivierung schlug fehl - Text = Das verschlüsselte Dateisystem konnte nicht aktiviert werden. Wahrscheinlich war das Passwort falsch. Versuche es noch einmal. - } - - UmountFailed { - Title = Deaktivierung schlug fehl - Text = Das verschlüsselte Dateisystem konnte nicht abgeschaltet werden. Wahrscheinlich sind noch Dateien geöffnet. Schließe alle potentiell unsauberen Programme (beispielsweise die weitverbreitete Textverarbeitung). Notfalls einfach die CryptoBox ausschalten! - } - - NotInitialized { - Title = Keine Konfiguration gefunden - Text = Die CryptoBox wurde noch nicht eingerichtet. - } - - InitNotFinished { - Title = Initalisierung noch nicht abgeschlossen - Text = Die Initialisierung wird in wenigen Minuten beendet sein. Erst danach ist diese Aktion möglich. - } - - IsMounted { - Title = Bereits aktiv - Text = Das verschlüsselte Dateisystem ist bereits aktiv. - } - - NotMounted { - Title = Nicht aktiv - Text = Das verschlüsselte Dateisystem ist derzeit nicht aktiv. - } - - AlreadyConfigured { - Title = Konfiguration gefunden - Text = Die CryptoBox wurde bereits eingerichtet. Bei einer erneuten Initialisierung werden alle Daten gelöscht! - } - - InvalidLanguage { - Title = Ungültige Sprache - Text = Die ausgewählte Sprache ist nicht verfügbar! - } - - ConfigLanguageFailed { - Title = Fehler beim Ändern der Spracheinstellung - Text = Die Spracheinstellung konnte nicht geändert werden! - } - - NoDiskAvailableForMount { - Title = Kein Daten-Container verfügbar - Text = Es ist kein inaktiver Daten-Container verfügbar. Vielleicht sind bereits alle Container aktiv? - } - - NoDiskAvailableForUmount { - Title = Kein Daten-Container verfügbar - Text = Kein Daten-Container ist aktiv. Vielleicht wurden alle Container deaktiviert. - } - - InvalidDevice { - Title = Ungültiger Container - Text = Der angegebene Daten-Container ist nicht zulässig. - } - - InvalidVolumeName { - Title = Umbenennung fehlgeschlagen - Text = Der gewählte neue Name des Containers ist ungültig. Versuche es erneut. - } - - SetVolumeNameFailed { - Title = Umbenennung fehlgeschlagen - Text = Die Umbenennung des Containers schlug fehl. Details findest du in der Log-Datei. - } - - VolumeMayNotBeMounted { - Title = Der Container ist derzeit aktiv - Text = Die gewünschte Aktion kann nicht durchgeführt werden, solange der Container aktiv ist. - } -} - - -SuccessMessage { - InitRunning { - Title = Initialisierung läuft - Text = Die Initialisierung der CryptoBox wird im Hintergrund abgeschlossen. Du kannst die CryptoBox nun konfigurieren und das verschlüsselte Dateisystem in ein paar Minuten aktivieren. - } - - ConfigSaved { - Title = Konfiguration gespeichert - Text = Die neuen Einstellungen der CryptoBox wurden übernommem. - } - - MountDone { - Title = Crypto-Daten aktiviert - Text = Das verschlüsselte Dateisystem ist nun verfügbar. - } - - UmountDone { - Title = Crypto-Daten deaktiviert - Text = Das verschlüsselte Dateisystem ist nun vor jedem Zugriff geschützt. - } - - PowerOff { - Title = Abschaltung - Text = Die CryptoBox wird gerade heruntergefahren. In wenigen Sekunden kannst du sie ausschalten (falls dies nicht automatisch geschieht). - } - - ReBoot { - Title = Neustart - Text = Die CryptoBox wird gerade neu gestartet. In wenigen Sekunden ist sie wieder verfügbar. Bitte warte solange - du wirst automatisch weitergeleitet. - } -} - - -ErrorMessage { - - UnknownAction { - Title = Unbekannte Aktion - Text = Du hast eine undefinierte Aktion angefordert. - } - - NoSSL { - Title = Unverschlüsselte Verbindung - Text = Die CryptoBox akzeptiert nur verschlüsselte Verbindungen (https). So bleibt das Passwort vor neugierigen Augen geschützt. In wenigen Sekunden wird eine verschlüsselte Verbindung hergestellt. - } - - InitFailed { - Title = Initialisierung fehlgeschlagen - Text = Sende bitte den Inhalt des Protokolls (siehe oben) an die Entwickler der CryptoBox (cryptobox@systemausfall.org). - } - - NoHardDisk { - Title = Keine Festplatte - Text = Es wurde kein Datenträger gefunden, der zur Speicherung der verschlüsselten Daten geeignet ist. Prüfe bitte, ob beim Anschalten des Computers eine Festplatte vom BIOS erkannt wurde. - } - - NoDocumentation { - Title = Keine Hilfeseiten - Text = Es sind keine Hilfeseiten verfügbar! - } - -} - diff --git a/pythonrewrite/lang/en.hdf b/pythonrewrite/lang/en.hdf deleted file mode 100644 index b06631b..0000000 --- a/pythonrewrite/lang/en.hdf +++ /dev/null @@ -1,187 +0,0 @@ -Name = English - -Status = $Id$ - -Title { - Top = The CryptoBox - Slogan = Privacy for the rest of us. - Init = CryptoBox initialization - Config = CryptoBox configuration - System = System - Status = Status - Volume = Volume - AccessDenied = Access denied -} - - -Text { - AccessDenied = Sorry - you are not allowed to do this! - EnterCurrentPassword = Enter the password - EnterNewPassword = Enter new password - EnterSamePassword = Repeat new password - TimeOut = Timeout for deactivation of the encrypted filesystem (in minutes): - SelectLanguage = Language preferences: - RedirectNote = Click here if your browser does not support automatic redirection. - ProjectHomePage = Website of project - ProjectNote = The CryptoBox is a project of - Configuration = Configuration - CryptoIsActive = The encrypted data is accessible. - CryptoIsDown = The encrypted data is protected from any access. - ChoosePartition = Which container do you want to enable? - ChosenPartition = The chosen container is - ActivePartitions = The following containers are enabled - PassivePartitions = The following containers are disabled - ContainerName = Container's name - ContainerEncryption = Enable encryption -} - - -Button { - DoInit = Initialization - SaveConfig = Save configuration - Update = Refresh - Config = Configuration - Documentation = Help - Status = Status - System = System - InitContainer = Initialize container - SelectLanguage = Select language - HelpForForm = Get help -} - - -WarningMessage { - - EmptyPassword { - Title = Missing password - Text = You have to enter a password! - } - - EmptyNewPassword { - Title = Missing new password - Text = You have to enter a new password! - } - - DifferentPasswords { - Title = Different passwords - Text = The passwords you entered did not match. - } - - NotInitialized { - Title = No configuration found - Text = The CryptoBox has not yet been configured. - } - - InitNotFinished { - Title = Initialization not yet completed - Text = Initialization will be completed in a few minutes. After completed initialization this action will become available. - } - - AlreadyConfigured { - Title = Configuration found - Text = The CryptoBox has already been configured. If you initialize again, all data will be deleted! - } - - InvalidLanguage { - Title = Invalid language - Text = The selected language is not available! - } - - - ConfigLanguageFailed { - Title = Error during change of language preferences - Text = The language preferences could not be changed! - } - - - NoDiskAvailableForMount { - Title = No partition available - Text = There is no unused container available. Maybe all containers are already mounted? - } - - NoDiskAvailableForUmount { - Title = No partition available - Text = There is no active container available for turning off. Maybe there is no active container? - } - - InvalidDevice { - Title = Invalid device - Text = The device you have chosen is invalid! - } - - - InvalidType { - Title = Unknown type - Text = The type of this volume is unknown. - } - - VolumeMayNotBeMounted { - Title = The container is mounted - Text = This action is not available while the container is active. Please turn it off first. - } -} - - -SuccessMessage { - InitRunning { - Title = Initialization running - Text = The initialization will be completed in background. You may configure it now and activate the encrypted filesystem in a few minutes. - } - - ConfigSaved { - Title = Configuration saved - Text = The new settings have been accepted. - } - - PowerOff { - Title = Shutdown - Text = The CryptoBox is currently going to halt. In a few seconds you can power it off (in case this does not happen automatically). - } - - ReBoot { - Title = Reboot - Text = The CryptoBox is currently rebooting. In a few seconds it will be available again. Please wait - you will get redirected, when the reboot has finished. - } -} - - -EnvironmentWarning { - - ReadOnlyConfig { - Text = Read-only setup detected - probably you should create a configuration partition. - Link.Text = Initialize partition - Link.Rel = partition - } - - NoSSL { - Text = The connection is not encrypted - passwords can be easily intercepted. - Link.Text = Use encrypted connection - Link.Prot = https - } - } -} - - -ErrorMessage { - - UnknownAction { - Title = Unknown action - Text = You have requested an undefined action. - } - - InitFailed { - Title = Initialization failed - Text = Please send the logfiles (see above) to the developers of the CryptoBox (cryptobox@systemausfall.org). - } - - NoHardDisk { - Title = No hard disk - Text = No disk suitable for an encrypted filesystem found. Please ensure the BIOS detected the disk during power-on of the computer. - } - - NoDocumentation { - Title = No documentation - Text = There is no documentation available! - } -} - diff --git a/pythonrewrite/lang/fr.hdf b/pythonrewrite/lang/fr.hdf deleted file mode 100644 index e6241ee..0000000 --- a/pythonrewrite/lang/fr.hdf +++ /dev/null @@ -1,254 +0,0 @@ -Name = Francais - -Status = $Id$ - -Title { - Top = La CryptoBox - Slogan = La vie privée pour nous autres. - Init = Initialisation CryptoBox - Mount = Activation des données cryptées - Umount = Déactivation des données cryptées - Config = CryptoBox configuration - Log = fichiers log CryptoBox - System = Système - Status = Statut - Volume = Propriétés de -} - - -Text { - EnterCurrentCryptoPassword = Entrez le mot de passe crypto : - EnterNewCryptoPassword = Entrez le nouveau mot de passe crypto : - EnterSameCryptoPassword = Répétez le nouveau mot de passe crypto : - EnterCurrentAdminPassword = Entrez le mot de passe administrateur actuel: - EnterNewAdminPassword = Entrez le nouveau mot de passe administrateur : - EnterSameAdminPassword = Répétez le nouveau mot de passe administrateur : - InitWarning = Pendant le procès d'initialisation TOUTES LES DONNÉES sur le disque vont être SUPPRIMÉES ! - ConfirmInitHint = Pour confirmer que vous sachiez exactement ce que vous faites, veuillez taper exactement la phrase suivante : - ConfirmInit = Oui, supprimer toutes les données ! - PartitionInfo = Partitionnement actuel du disque : - IPAddress = Adresse réseau (IP) de la CryptoBox : - TimeOut = Timeout pour la désactivation du système de fichiers crypté (en minutes): - EmptyLog = Les fichiers log de la CryptoBox sont vides. - SelectLanguage = Préférences de langue : - RedirectNote = Cliquez ici si votre navigateur ne supporte pas la redirection automatique. - ProjectHomePage = Site web du projet - ProjectNote = La CryptoBox est un projet de - DoUmount = Déactivation du système de fichiers crypté - DoMount = Activation du système de fichiers crypté - Configuration = Configuration - CryptoIsActive = Les données cryptées sont accessibles. - CryptoIsDown = Les données cryptées sont protégés de tout accès. - ChoosePartition = Quel conteneur voulez-vous activer ? - ChosenPartition = Le conteneur que vous avez choisi est - ActivePartitions = Les conteneurs suivants sont activés - PassivePartitions = Les conteneurs suivants sont désactivés - ContainerName = Nom du conteneur : - ContainerEncryption = Aciver le cryptage -} - - -Button { - DoInit = Initialisation - SaveConfig = Sauvegarder la configuration - Update = Recharger - Mount = Activer système de fichiers - Umount = Déactiver système de fichiers - Config = Configuration - PowerOff = Arrêt - ReBoot = Redémarrage - Protocol = Montrer fichiers log - Documentation = Aide - Status = Status - System = Système - ContainerNameSet = Changer nom - InitContainer = Initialiser conteneur -} - - -WarningMessage { - InitNotConfirmed { - Title = Echec de la confirmation - Text = La phrase n'a pas été tapé exactement ! - } - - EmptyCryptoPassword { - Title = Mot de passe crypto invalide - Text = Vous devez entrer un mot de passe crypto ! - } - - DifferentCryptoPasswords { - Title = Les mots de passe crypto ne correspondent pas - Text = Les deux mots de passe rentrés doivent être identiques afin de vérifier que ce mot de passe soit celui qui est désiré. - } - - DifferentAdminPasswords { - Title = Les mots de passe administrateur ne correspondent pas - Text = Les deux mots de passe rentrés doivent être identiques afin de vérifier que ce mot de passe soit celui qui est désiré. - } - - WrongAdminPassword { - Title = Mot de passe administrateur erroné - Text = Le mot de passe administrateur que vous avez rentré est erroné. Veuillez réessayer. - } - - MountFailed { - Title = Echec de l'activation - Text = Le sytème de fichiers crypté n'a pu être activé. Probablement le mot de passe que vous avez fourni était erroné. Veuillez réessayer. - } - - UmountFailed { - Title = Echec de la désactivation - Text = Le système de fichiers crypté n'a pu être désactivé. Probablement certains fichiers sont en cours d'utilisation. Fermez tous les programmes. En cas d'urgence, éteignez la CryptoBox ! - } - - NotInitialized { - Title = Aucune configuration trouvée - Text = La CryptoBox n'a pas encore été configurée. - } - - InitNotFinished { - Title = L'initialisation n'est pas encore complétée - Text = L'initialisation va être complétée en quelques minutes. Après comlpétion de l'initialisation cette action va être disponible. - } - - IsMounted { - Title = Déjà actif - Text = Le système de fichiers crypté a déjà été activé. - } - - NotMounted { - Title = Inactif - Text = Le système de fichiers crypté n'est pas actif actuellement. - } - - AlreadyConfigured { - Title = Configuration trouvé - Text = La CryptoBox a déjà été configurée. Si vous réinitialisez une nouvelle fois, toutes les données seront perdues ! - } - - InvalidLanguage { - Title = Langue invalide - Text = La langue choisie n'est pas disponible ! - } - - InvalidIP { - Title = Addresse IP invalide - Text = L'adresse réseau sélectionnée n'est pas valide ! - } - - InvalidTimeOut { - Title = Timeout invalide - Text = Le timeout sélectionné n'est pas valide ! - } - - ConfigTimeOutFailed { - Title = Erreur pendant le changement du timeout - Text = La valeur du timeout n'a pas pu être changé ! - } - - ConfigLanguageFailed { - Title = Erreur pendant le changement des préférences de langue - Text = Les préférences de langue n'ont pu être changées ! - } - - ConfigIPFailed { - Title = Erreur pendant le changement de l'adresse réseau - Text = L'adresse réseau n'a pas pu être changée ! - } - - IPAddressChanged { - Title = Changement de l'adresse réseau - Text = L'adresse réseau a été changée. dans quelques secondes vous allez être redirigés vers la nouvelle adresse. - } - - NoDiskAvailableForMount { - Title = Aucune partition disponible - Text = Il n'y a pas de conteneur inutilisé disponible. Peut-être tous les conteneur sont déjà montés ? - } - - NoDiskAvailableForUmount { - Title = Aucune partition disponible - Text = Il n'y a pas de conteneur actif qui peut être éteint. Peut-être n y a-t-il pas de conteneur actif ? - } - - InvalidDevice { - Title = Device invalide - Text = Le device que vous avez choisi est invalide ! - } - - InvalidVolumeName { - Title = Echec du changement du nom du conteneur - Text = Le nouveau nom du conteneur était invalide. Veuillez réessayer ! - } - - SetVolumeNameFailed { - Title = Echec lors du changmenent du nom du conteneur - Text = Le nom du conteneur n'a pas pu être changé. Veuillez regarder les fichiers log pour plus de détails. - } - - VolumeMayNotBeMounted { - Title = Le conteneur est monté - Text = Cette action n'est pas disponible pendant que le conteneur est actif. Désactivez-le d'abord. - } -} - - -SuccessMessage { - InitRunning { - Title = Initialisation en cours - Text = L'initialisation va être complétée en tant que tâche de fond. Vous pouvez configurer maintenant et le système de fichiers crypté dans quelques minutes. - } - - ConfigSaved { - Title = Configuration sauvegardée - Text = Les nouveaux paramètres ont été acceptés. - } - - MountDone { - Title = Système de fichiers crypté activé - Text = Le système de fichiers crypté est maintenant disponible. - } - - UmountDone { - Title = Système de fichiers crypté déactivé - Text = Le système de fichiers crypté est maintenant sécurisé de toute forme d'accès. - } - - PowerOff { - Title = Arrêt - Text = La CryptoBox va maintenant s'éteindre. Dans quelques secondes vous pouvez l'éteindre (au cas où ceci ne se passe pas automatiquement). - } - - ReBoot { - Title = Redémarrage - Text = La CryptoBox est en train de redémarrer. Dans quelques secondes elle va à nouveau être disponible. Veuillez attendre - vous allez être redirigés quand le redémarrage est accomplie. - } -} - - -ErrorMessage { - - UnknownAction { - Title = Action inconnue - Text = Vous avez demandé une action indéfinie. - } - - NoSSL { - Title = Connexion non cryptée - Text = La CryptoBox accepte seulement des connexions cryptées (https), afin que le mot de passe ne soit pas visible pour des yeux curieux. La connexion cryptée va être établie dans quelques secondes. - } - - InitFailed { - Title = Initialisation échouée - Text = Veuillez envoyer les fichiers log (voir ci-dessus) aux développeurs de la CryptoBox (cryptobox@systemausfall.org). - } - - NoHardDisk { - Title = Aucun disque dur - Text = Aucun disque utilisable pour un système de fichier crypté a été trouvé. Veuillez vérifier que le BIOS a détecté le disque pendant le démarrage de l'ordinateur. - } -} - -} - diff --git a/pythonrewrite/lang/language_specification.txt b/pythonrewrite/lang/language_specification.txt deleted file mode 100644 index 7cfaf44..0000000 --- a/pythonrewrite/lang/language_specification.txt +++ /dev/null @@ -1,24 +0,0 @@ -Some important notes regarding the language files: - -1) language file informations - -The toplevel attribute "Name" is mandatory and should represent the local name of -the language (e.g.: English, German, French, ...). - - -2) warning/success messages - -Attributes: - Title - title of the message - Text - text of the message - Link.Text - textual representation of a link - Link.Abs - absolute URL e.g. http://cryptobox.org/trac - Link.Prot - http|https - Link.Rel - relative url (based on the cgi root) - - All values are optional, but you should follow these rules: - - at least one of "Title" and "Text" should be defined - - if there are "Link" attributes, then you should also define "Link.Text" - - "Link.Abs" can not be combined with "Link.Prot" or "Link.Rel" - - "Link.Rel" and "Link.Prot" may be used together - diff --git a/pythonrewrite/lang/si.hdf b/pythonrewrite/lang/si.hdf deleted file mode 100644 index 802cd8e..0000000 --- a/pythonrewrite/lang/si.hdf +++ /dev/null @@ -1,193 +0,0 @@ -Name = Slovenščina - -Status = $Id$ - -Title { - Top = The CryptoBox - Slogan = Privatnost v vsako vas! - Init = CryptoBox zagon - Mount = Aktivacija kriptiranih podatkov - Umount = Deaktivacija kriptiranih podatkov - Config = CryptoBox konfiguracija - Log = CryptoBox dnevnik - ShutDown = Ugasni - Status = Stanje -} - - -Text { - EnterCurrentCryptoPassword = Vpišite geslo: - EnterNewCryptoPassword = Vpišite novo geslo: - EnterSameCryptoPassword = Ponovite novo geslo: - EnterCurrentAdminPassword = Vnesite trenutno obstoječe geslo administratorja/ke: - EnterNewAdminPassword = Vnesite novo geslo administratorja/ke: - EnterSameAdminPassword = Ponovite novo geslo administratorja/ke: - InitWarning = Med incializacijo bodo VSI PODATKI z vašega trdega diska IZBRISANI! - ConfirmInitHint = Vsled potrditve vaših dejanj vpišite naslednje besedilo: - ConfirmInit = Da, zbirši vse podatke! - PartitionInfo = trenutna porazdelitev trdega diska: - IPAddress = IP CryptoBoxa: - TimeOut = Čas preklica deaktivacije kriptiranega datotečnega sistema:(v minutah) - EmptyLog = Dnevnik CryptoBoxa je prazen. - SelectLanguage = Jezikovne nastavitve: - RedirectNote = Kliknite če vaš iskalnik ne podpira avtomatične preusmeritve. - ProjectHomePage = Spletna stran projekta - ProjectNote = CryptoBox je projekt - DoUmount = Deaktivacija kriptiranega datotečnega sistema - DoMount = Aktivacija kriptiranega datotečnega sistema - Configuration = Konfiguracija - CryptoIsActive = Kriptirani podatki so dostopni. - CryptoIsDown = Kriptirani podatki soso zaèiteni pred kakr nimkoli dostopom. -} - - -Button { - DoInit = Zagon CryptoBoxa - SaveConfig = Shrani konfiguracijo - Update = Osveži - Mount = Aktivacija kriptiranega datotečnega sistema - Umount = Deaktivacija kriptiranega datotečnega sistema - Config = Konfiguracija - PowerOff = Ugasni - ReBoot = Ponovni zagon - Protocol = Dnevnik - Documentation = Priročnik - Status = Stanje - System = System -} - - -WarningMessage { - InitNotConfirmed { - Title = Potrditev ni uspela - Text = Besedilo mora biti vpisano natanko kot je prikazano! - } - - EmptyCryptoPassword { - Title = Nepravilno geslo - Text = Geslo ne sme biti prazno! - } - - DifferentCryptoPasswords { - Title = Gesli se ne ujemata! - Text = Obe vnešeni gesli morata biti identični, v zagotovilo, da je vpisano željeno geslo. - } - - DifferentAdminPasswords { - Title = Administracijski gesli se ne ujemata - Text = Obe vnešeni gesli morata biti identični, v zagotovilo da je vpisano željeno geslo. - } - - WrongAdminPassword { - Title = Napačno administracijsko geslo! - Text = Vnešeno administracijsko geslo je nepravilno. Prosimo poskusite znova! - } - - MountFailed { - Title = Aktivacija ni uspela - Text = Kriptiran datotečni sistem se ni aktiviral.Po vsej verjetnosti je bilo geslo napačno. - } - - UmountFailed { - Title = Deaktivacija ni uspela - Text = Kriptiran datotečni sistem se ni aktiviral.Datoteke so morda v uporabi. Zaprite vse programe. (naprimer ta nadvse razširjen urejevalnik besedil). V primeru nuje ugasnite CryptoBox! - } - - NotInitialized { - Title = Konfiguracija ni najdena - Text = CryptoBox še ni bil konfiguriran. - } - - InitNotFinished { - Title = Zagon še ni dovršen - Text = Zagon bo dovršen v nekaj minutah. Po končanem zagonu bo ta možnost omogočena. - } - - IsMounted { - Title = Že aktivno - Text = Kriptiran datotečni sistem je že aktiviran. - } - - NotMounted { - Title = Onemogočeno - Text = Kriptiran datotečni sistem trenutno ni aktiven. - } - - AlreadyConfigured { - Title = Konfiguracija uspela - Text = CryptoBox je đe bil konfiguriran. Če ponovno zaženete bodo vsi podatki izbrisani! - } - - InvalidLanguage { - Title = Nepravilna izbira jezika - Text = Izbrani jezik ni na voljo! - } - - ConfigLanguageFailed { - Title = Napaka med spremembo jezikovnih nastavitev - Text = Spreminjanje jezikovnih nastavitev ni mogoče. - } -} - - -SuccessMessage { - InitRunning { - Title = Zagon poteka - Text = Zagon bo dokončan v ozadju. - } - - ConfigSaved { - Title = Konfiguracija spravljena - Text = Nove nastavitve so sprejete. - } - - MountDone { - Title = Kriptiran datotečni sistem aktiviran - Text = Kriptiran datotečni sistem je na voljo. - } - - UmountDone { - Title = Kriptiran datotečni sistem deaktiviran. - Text = Kriptiran datotečni sistem je varovan pred vstopom. - } - - PowerOff { - Title = Ugasni - Text = CryptoBox se zaustavlja. V nekaj sekundah ga lahko izklopite.(v kolikor se to ne zgodi avtomatično). - } - - ReBoot { - Title = Ponovni zagon - Text = CryptoBox se zaganja. V nekaj sekundah bo zopet na voljo. - } -} - - -ErrorMessage { - - UnknownAction { - Title = Neznan zahtevek - Text = Podali ste nedefiniran zahtevek. - } - - NoSSL { - Title = Nekriptirana povezava - Text = CryptoBox sprejme le kriptirane povezave (https), da je geslo zaščiteno pred radovednimi očmi. V nekaj sekundah bo kriptirana povezava vzpostavljena. - } - - InitFailed { - Title = Zagon ni uspel - Text = Prosim pošljite dnevnik (poglejte zgoraj) razvijalcem CryptoBoxa (cryptobox@systemausfall.org). - } - - NoHardDisk { - Title = Ni trdega diska - Text = Primeren trdi disk za shranjenje kriptiranega datotečnega sistema ni zaznan. Poskrbite da bo med zagonom BIOS zaznal trdi disk. - } - - NoDocumentation { - Title = No documentation - Text = There is no documentation available! - } -} - diff --git a/pythonrewrite/plugins/date/date.py b/pythonrewrite/plugins/date/date.py deleted file mode 100644 index 466a81a..0000000 --- a/pythonrewrite/plugins/date/date.py +++ /dev/null @@ -1,69 +0,0 @@ -import CryptoBoxPlugin - - -class date(CryptoBoxPlugin.CryptoBoxPlugin): - - pluginCapabilities = [ "system" ] - requestAuth = False - rank = 10 - - def doAction(self, store=None, year=None, month=None, day=None, hour=None, minute=None): - import datetime - if store: - try: - year, month, day = int(year), int(month), int(day) - hour, minute = int(hour), int(minute) - new_date = datetime.datetime(year, month, day, hour, minute) - except ValueError: - self.hdf["Data.Warning"] = "Plugins.date.InvalidDate" - self.__prepareFormData() - return "form_date" - date = "%02d%02d%02d%02d%d" % (month, day, hour, minute, year) - if self.__setDate(date): - self.cbox.log.info("changed date to: %s" % date) - self.hdf["Data.Success"] = "Plugins.date.DateChanged" - return None - else: - ## a failure should usually be an invalid date (we do not check it really) - self.cbox.log.info("failed to set date: %s" % date) - self.hdf["Data.Warning"] = "Plugins.date.InvalidDate" - self.__prepareFormData() - return "form_date" - else: - self.__prepareFormData() - return "form_date" - - - def getStatus(self): - now = self.__getCurrentDate() - return "%d/%d/%d/%d/%d/%d" % (now.year, now.month, now.day, now.hour, now.minute, now.second) - - - def __prepareFormData(self): - date = self.__getCurrentDate() - self.hdf[self.hdf_prefix + "year"] = date.year - self.hdf[self.hdf_prefix + "month"] = date.month - self.hdf[self.hdf_prefix + "day"] = date.day - self.hdf[self.hdf_prefix + "hour"] = date.hour - self.hdf[self.hdf_prefix + "minute"] = date.minute - - - def __getCurrentDate(self): - import datetime - return datetime.datetime(2000,1,1).now() - - - def __setDate(self, date): - import subprocess - import os - proc = subprocess.Popen( - shell = False, - args = [ - self.cbox.prefs["Programs"]["super"], - self.cbox.prefs["Programs"]["CryptoBoxRootActions"], - "plugin", - os.path.join(self.pluginDir, "root_action.py"), - date]) - proc.wait() - return proc.returncode == 0 - diff --git a/pythonrewrite/plugins/date/form_date.cs b/pythonrewrite/plugins/date/form_date.cs deleted file mode 100644 index 3dd732a..0000000 --- a/pythonrewrite/plugins/date/form_date.cs +++ /dev/null @@ -1,44 +0,0 @@ - - -

- - - - - -


- - -

- -


-  :  -

- - - - - - - diff --git a/pythonrewrite/plugins/date/lang/en.hdf b/pythonrewrite/plugins/date/lang/en.hdf deleted file mode 100644 index df00df5..0000000 --- a/pythonrewrite/plugins/date/lang/en.hdf +++ /dev/null @@ -1,35 +0,0 @@ -Name = Change date and time -Link = Set date/time - -Title.ConfigDate = Date and time setting - -Button.ConfigDate = Set date and time - -Text.Date = Date -Text.Time = Time -Text.Months { - 1 = January - 2 = February - 3 = March - 4 = April - 5 = May - 6 = June - 7 = July - 8 = August - 9 = September - 10 = October - 11 = November - 12 = December -} - -SuccessMessage.DateChanged { - Title = Date changed - Text = The date was changed successfully. -} - -WarningMessage { - InvalidDate { - Title = Invalid value - Text = An invalid value for date or time was supplied. Please try again. - } -} diff --git a/pythonrewrite/plugins/date/plugin_icon.png b/pythonrewrite/plugins/date/plugin_icon.png deleted file mode 100644 index f26390681e007bb92eff31d2e074a56f061d666b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3285 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 1: - sys.stderr.write("%s: too many arguments (%s)\n" % (self_bin, args)) - sys.exit(1) - - if len(args) == 0: - sys.stderr.write("%s: no argument supplied\n" % self_bin) - sys.exit(1) - - if re.search(u'\D', args[0]): - sys.stderr.write("%s: illegal argument (%s)\n" % (self_bin, args[0])) - sys.exit(1) - - proc = subprocess.Popen( - shell = False, - stdout = subprocess.PIPE, - args = [DATE_BIN, args[0]]) - proc.wait() - sys.exit(proc.returncode) - diff --git a/pythonrewrite/plugins/date/unittests.py b/pythonrewrite/plugins/date/unittests.py deleted file mode 100644 index 82f1faa..0000000 --- a/pythonrewrite/plugins/date/unittests.py +++ /dev/null @@ -1,60 +0,0 @@ -import WebInterfaceTestClass - -class unittests(WebInterfaceTestClass.WebInterfaceTestClass): - - def test_get_date(self): - date = self._getCurrentDate() - - - def test_change_date(self): - now = self._getCurrentDate() - ## copy current time - new_date = dict(now) - ## move three minutes forward (more is not nice because of screensavers) - new_date["minute"] = (now["minute"] + 3) % 60 - ## in case of minute-overflow we also have to move the hour a little bit forward - new_date["hour"] = now["hour"] + ((now["minute"] + 3) / 60) - ## move forward ... - self._setDate(new_date) - self.assertEquals(new_date, self._getCurrentDate()) - ## ... and backward - self._setDate(now) - self.assertEquals(now, self._getCurrentDate()) - - - def _getCurrentDate(self): - date_url = self.URL + "date" - self.register_auth(date_url) - self.cmd.go(date_url) - self.cmd.find("Data.Status.Plugins.date=([0-9]+/[0-9]+/[0-9]+/[0-9]+/[0-9]+/[0-9]+)$", "m") - dateNumbers = self.locals["__match__"].split("/") - self.assertEquals(len(dateNumbers), 6) - ## we ignore seconds - dateField = { - "year" : int(dateNumbers[0]), - "month" : int(dateNumbers[1]), - "day" : int(dateNumbers[2]), - "hour" : int(dateNumbers[3]), - "minute" : int(dateNumbers[4])} - return dateField - - - def _setDate(self, date): - """for now we have to use this function instead of the one below""" - date_url = self.URL + "date?store=1&year=%d&month=%d&day=%d&hour=%d&minute=%d" % (date["year"], date["month"], date["day"], date["hour"], date["minute"]) - self.register_auth(date_url) - self.cmd.go(date_url) - - - def _setDateBroken(self, date): - """this should work, but the parsing of twill seems to be broken""" - date_url = self.URL + "date" - self.register_auth(date_url) - self.cmd.go(date_url) - self.cmd.formvalue("set_date", "year", str(date["year"])) - self.cmd.formvalue("set_date", "month", str(date["month"])) - self.cmd.formvalue("set_date", "day", str(date["day"])) - self.cmd.formvalue("set_date", "hour", str(date["hour"])) - self.cmd.formvalue("set_date", "minute", str(date["minute"])) - self.cmd.submit() - diff --git a/pythonrewrite/plugins/disks/disks.cs b/pythonrewrite/plugins/disks/disks.cs deleted file mode 100644 index 8857774..0000000 --- a/pythonrewrite/plugins/disks/disks.cs +++ /dev/null @@ -1,17 +0,0 @@ - - -

- - - - - - - - - - - - - - diff --git a/pythonrewrite/plugins/disks/disks.py b/pythonrewrite/plugins/disks/disks.py deleted file mode 100644 index 5824a72..0000000 --- a/pythonrewrite/plugins/disks/disks.py +++ /dev/null @@ -1,17 +0,0 @@ -import CryptoBoxPlugin - -class disks(CryptoBoxPlugin.CryptoBoxPlugin): - - pluginCapabilities = [ "menu" ] - requestAuth = False - rank = 10 - - def doAction(self): - self.cbox.reReadContainerList() - return "disks" - - - def getStatus(self): - return "TODO" - - diff --git a/pythonrewrite/plugins/disks/lang/de.hdf b/pythonrewrite/plugins/disks/lang/de.hdf deleted file mode 100644 index c2ef355..0000000 --- a/pythonrewrite/plugins/disks/lang/de.hdf +++ /dev/null @@ -1,6 +0,0 @@ -Name = Datenträger-Übersicht -Link = Datenträger - -Title.Disks = Verfügbare Datenträger - -Text.NoDisksAvailable = Es sind keine Datenträger verfügbar! diff --git a/pythonrewrite/plugins/disks/lang/en.hdf b/pythonrewrite/plugins/disks/lang/en.hdf deleted file mode 100644 index f30795a..0000000 --- a/pythonrewrite/plugins/disks/lang/en.hdf +++ /dev/null @@ -1,6 +0,0 @@ -Name = Disk overview -Link = Disks - -Title.Disks = Available disks - -Text.NoDisksAvailable = No available disks were found! diff --git a/pythonrewrite/plugins/disks/plugin_icon.png b/pythonrewrite/plugins/disks/plugin_icon.png deleted file mode 100644 index ae6bd7479dc4decc3b4ae3ab20d3988f799c5dad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6279 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 diff --git a/pythonrewrite/plugins/format_fs/unittests.py b/pythonrewrite/plugins/format_fs/unittests.py deleted file mode 100644 index 4310865..0000000 --- a/pythonrewrite/plugins/format_fs/unittests.py +++ /dev/null @@ -1,10 +0,0 @@ -import WebInterfaceTestClass - -class unittests(WebInterfaceTestClass.WebInterfaceTestClass): - - def test_read_form(self): - url = self.URL + "format_fs?weblang=en&device=%2Fdev%2Floop1" - self.register_auth(url) - self.cmd.go(url) - self.cmd.find('Initializing filesystem') - diff --git a/pythonrewrite/plugins/format_fs/volume_format.cs b/pythonrewrite/plugins/format_fs/volume_format.cs deleted file mode 100644 index ba9ed14..0000000 --- a/pythonrewrite/plugins/format_fs/volume_format.cs +++ /dev/null @@ -1,37 +0,0 @@ - - - - -

- - - - - - - - - - -

- -

- -

- - - - - - - - - diff --git a/pythonrewrite/plugins/format_fs/volume_format_luks.cs b/pythonrewrite/plugins/format_fs/volume_format_luks.cs deleted file mode 100644 index e2c52bb..0000000 --- a/pythonrewrite/plugins/format_fs/volume_format_luks.cs +++ /dev/null @@ -1,32 +0,0 @@ - - - - -

- - - - - - - - - - -

:

-

:

- -

-

- - - - - - - - - - diff --git a/pythonrewrite/plugins/help/doc.cs b/pythonrewrite/plugins/help/doc.cs deleted file mode 100644 index 57bfdad..0000000 --- a/pythonrewrite/plugins/help/doc.cs +++ /dev/null @@ -1,9 +0,0 @@ - - -
- - - - - -
diff --git a/pythonrewrite/plugins/help/help.py b/pythonrewrite/plugins/help/help.py deleted file mode 100644 index b9c9be5..0000000 --- a/pythonrewrite/plugins/help/help.py +++ /dev/null @@ -1,25 +0,0 @@ -import CryptoBoxPlugin - -class help(CryptoBoxPlugin.CryptoBoxPlugin): - - pluginCapabilities = [ "menu" ] - requestAuth = False - rank = 80 - - def doAction(self, page=""): - '''prints the offline wikipage - ''' - import re - ## check for invalid characters - if page and not re.search(u'\W', page): - self.hdf[self.hdf_prefix + "Page"] = page - else: - ## display this page as default help page - self.hdf[self.hdf_prefix + "Page"] ="CryptoBoxUser" - return "doc" - - - def getStatus(self): - return "TODO" - - diff --git a/pythonrewrite/plugins/help/lang/en.hdf b/pythonrewrite/plugins/help/lang/en.hdf deleted file mode 100644 index f2eb3fc..0000000 --- a/pythonrewrite/plugins/help/lang/en.hdf +++ /dev/null @@ -1,5 +0,0 @@ -Name = User manual -Link = Help - -Title.Help = User manual - diff --git a/pythonrewrite/plugins/help/plugin_icon.png b/pythonrewrite/plugins/help/plugin_icon.png deleted file mode 100644 index c3792009e3ad4f0e92654a5e2535aada72a1e879..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12693 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 OfWWdUGSyP1A^!t|@C#A^ diff --git a/pythonrewrite/plugins/help/unittests.py b/pythonrewrite/plugins/help/unittests.py deleted file mode 100644 index f1e1f97..0000000 --- a/pythonrewrite/plugins/help/unittests.py +++ /dev/null @@ -1,29 +0,0 @@ -import WebInterfaceTestClass -from twill.errors import * - -class unittests(WebInterfaceTestClass.WebInterfaceTestClass): - - def test_help_pages(self): - '''help pages should be available in different languages''' - - ## check english help pages - self.cmd.go(self.URL + "help?weblang=en") - self.cmd.find("Table of Contents") - self.cmd.find("Getting started") - - self.cmd.go(self.URL + "help?weblang=de") - self.cmd.find("Table of Contents") - self.cmd.find("Wie geht es los") - - self.cmd.go(self.URL + "help?weblang=si") - self.assertRaises(TwillAssertionError, self.cmd.notfind, "Table of Contents") - #TODO: add a slovene text here, as soon as the help is translated - - self.cmd.go(self.URL + "help?weblang=fr") - self.assertRaises(TwillAssertionError, self.cmd.notfind, "Table of Contents") - #TODO: add a french text here, as soon as the help is translated - - ## test a random language - it should fall back to english - self.cmd.go(self.URL + "help?weblang=foobar") - self.assertRaises(TwillAssertionError, self.cmd.notfind, "Table of Contents") - diff --git a/pythonrewrite/plugins/language_selection/lang/en.hdf b/pythonrewrite/plugins/language_selection/lang/en.hdf deleted file mode 100644 index 5789cbc..0000000 --- a/pythonrewrite/plugins/language_selection/lang/en.hdf +++ /dev/null @@ -1,5 +0,0 @@ -Name = Choose interface language -Link = Languages - -Title.Language = Choose an interface language - diff --git a/pythonrewrite/plugins/language_selection/language_selection.cs b/pythonrewrite/plugins/language_selection/language_selection.cs deleted file mode 100644 index e3f0ac1..0000000 --- a/pythonrewrite/plugins/language_selection/language_selection.cs +++ /dev/null @@ -1,15 +0,0 @@ - - -

- - - -
diff --git a/pythonrewrite/plugins/language_selection/language_selection.py b/pythonrewrite/plugins/language_selection/language_selection.py deleted file mode 100644 index 9b28764..0000000 --- a/pythonrewrite/plugins/language_selection/language_selection.py +++ /dev/null @@ -1,16 +0,0 @@ -import CryptoBoxPlugin - - -class language_selection(CryptoBoxPlugin.CryptoBoxPlugin): - - pluginCapabilities = [ "system", "menu" ] - requestAuth = False - rank = 60 - - def doAction(self): - return "language_selection" - - - def getStatus(self): - return "TODO" - diff --git a/pythonrewrite/plugins/language_selection/plugin_icon.png b/pythonrewrite/plugins/language_selection/plugin_icon.png deleted file mode 100644 index fdaa85296c6831e525961a24f533bfc274e94ac3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13094 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 AiU0rr diff --git a/pythonrewrite/plugins/language_selection/unittests.py b/pythonrewrite/plugins/language_selection/unittests.py deleted file mode 100644 index 6e9b349..0000000 --- a/pythonrewrite/plugins/language_selection/unittests.py +++ /dev/null @@ -1,10 +0,0 @@ -import WebInterfaceTestClass - -class unittests(WebInterfaceTestClass.WebInterfaceTestClass): - - def test_read_form(self): - url = self.URL + "language_selection?weblang=en" - self.register_auth(url) - self.cmd.go(url) - self.cmd.find('hoose an interface language') - diff --git a/pythonrewrite/plugins/logs/lang/en.hdf b/pythonrewrite/plugins/logs/lang/en.hdf deleted file mode 100644 index c81fbc4..0000000 --- a/pythonrewrite/plugins/logs/lang/en.hdf +++ /dev/null @@ -1,6 +0,0 @@ -Name = Show the content of the log file -Link = Show log file - -Title.Log = CryptoBox logfiles - -Text.EmptyLog = The logfile of the CryptoBox is empty. diff --git a/pythonrewrite/plugins/logs/logs.css b/pythonrewrite/plugins/logs/logs.css deleted file mode 100644 index 41335ed..0000000 --- a/pythonrewrite/plugins/logs/logs.css +++ /dev/null @@ -1,6 +0,0 @@ -#log p.console { - margin-left: 10%; - margin-right: 10%; - font-family: monospace; - text-align: left; -} diff --git a/pythonrewrite/plugins/logs/logs.py b/pythonrewrite/plugins/logs/logs.py deleted file mode 100644 index 683056a..0000000 --- a/pythonrewrite/plugins/logs/logs.py +++ /dev/null @@ -1,29 +0,0 @@ -import CryptoBoxPlugin -import os - -class logs(CryptoBoxPlugin.CryptoBoxPlugin): - - pluginCapabilities = [ "system" ] - requestAuth = False - rank = 90 - - def doAction(self): - self.__prepareFormData() - return "show_log" - - - def getStatus(self): - return "%s:%s:%s" % ( - self.cbox.prefs["Log"]["Level"], - self.cbox.prefs["Log"]["Destination"], - self.cbox.prefs["Log"]["Details"]) - - - def __prepareFormData(self): - self.hdf[self.hdf_prefix + "Content"] = self.__getLogContent() - self.hdf[self.hdf_prefix + "StyleSheetFile"] = os.path.abspath(os.path.join(self.pluginDir, "logs.css")) - - - def __getLogContent(self, lines=30, maxSize=2000): - return "
".join(self.cbox.getLogData(lines, maxSize)) - diff --git a/pythonrewrite/plugins/logs/plugin_icon.png b/pythonrewrite/plugins/logs/plugin_icon.png deleted file mode 100644 index 1fbb4f0220b857306284222d7d80b060c170b3ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16601 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 diff --git a/pythonrewrite/plugins/logs/show_log.cs b/pythonrewrite/plugins/logs/show_log.cs deleted file mode 100644 index 623b4b7..0000000 --- a/pythonrewrite/plugins/logs/show_log.cs +++ /dev/null @@ -1,19 +0,0 @@ - - - - -
- -

- - - - -

- -

- - -
diff --git a/pythonrewrite/plugins/logs/unittests.py b/pythonrewrite/plugins/logs/unittests.py deleted file mode 100644 index 25b7727..0000000 --- a/pythonrewrite/plugins/logs/unittests.py +++ /dev/null @@ -1,21 +0,0 @@ -import WebInterfaceTestClass - -class unittests(WebInterfaceTestClass.WebInterfaceTestClass): - - def test_read_logs(self): - log_url = self.URL + "logs" - self.register_auth(log_url) - self.cmd.go(log_url) - self.cmd.find('class="console"') - - def test_write_logs(self): - ## we have to assume two things: - ## 1) log level is at least "error" - ## 2) the log message does not get lost in a possible stream of log messages - log_text = "unittest - just a marker - please ignore" - self.cbox.log.error(log_text) - log_url = self.URL + "logs" - self.register_auth(log_url) - self.cmd.go(log_url) - self.cmd.find(log_text) - diff --git a/pythonrewrite/plugins/network/form_network.cs b/pythonrewrite/plugins/network/form_network.cs deleted file mode 100644 index 509e2d5..0000000 --- a/pythonrewrite/plugins/network/form_network.cs +++ /dev/null @@ -1,30 +0,0 @@ - - - - -

- - - - - -

- ...

- - - - - - - - - diff --git a/pythonrewrite/plugins/network/lang/en.hdf b/pythonrewrite/plugins/network/lang/en.hdf deleted file mode 100644 index 0828755..0000000 --- a/pythonrewrite/plugins/network/lang/en.hdf +++ /dev/null @@ -1,23 +0,0 @@ -Name = Configure network -Link = Configure network - -Title.Network = Network settings - -Button.Network = Update network settings - -Text.IP = Network address - - -WarningMessage { - InvalidIP { - Title = Invalid value - Text = An invalid network address (IP) was supplied. Please try again. - } -} - -SuccessMessage { - IPChanged { - Title = Network address changed - Text = The network address has been changed. In a few seconds you will get redirected to the new address. - } -} diff --git a/pythonrewrite/plugins/network/network.py b/pythonrewrite/plugins/network/network.py deleted file mode 100644 index 5d6d0d2..0000000 --- a/pythonrewrite/plugins/network/network.py +++ /dev/null @@ -1,126 +0,0 @@ -import subprocess -import os -import CryptoBoxPlugin - - -## specify (in seconds), how long we should wait before redirecting and ip change -REDIRECT_DELAY=20 -CHANGE_IP_DELAY=1 - -class network(CryptoBoxPlugin.CryptoBoxPlugin): - - pluginCapabilities = [ "system" ] - requestAuth = True - rank = 30 - - def doAction(self, store=None, redirected="", ip1="", ip2="", ip3="", ip4=""): - ## if we were redirected, then we should display the default page - self.cbox.log.debug("executing network plugin") - if redirected == "1": - self.cbox.log.debug("network plugin: redirected") - return None - ## request for IP change? - if store: - self.cbox.log.debug("network plugin: changing IP") - try: - for ip_in in (ip1, ip2, ip3, ip4): - if (int(ip_in) < 0) or (int(ip_in) > 255): - self.cbox.log.info("invalid IP supplied: %s" % str((ip1,ip2,ip3,ip4))) - raise ValueError - ip = "%d.%d.%d.%d" % (int(ip1), int(ip2), int(ip3), int(ip4)) - except ValueError: - self.hdf["Data.Warning"] = "Plugins.network.InvalidIP" - self.__prepareFormData() - return "form_network" - if self.__setIP(ip): - self.cbox.log.info("the IP was successfully changed: %s" % ip) - self.hdf["Data.Success"] = "Plugins.network.IPChanged" - self.hdf["Data.Redirect.URL"] = self.__getRedirectDestination(ip) - self.hdf["Data.Redirect.Delay"] = REDIRECT_DELAY - return None - else: - self.cbox.log.warn("failed to change IP address to: %s" % ip) - self.hdf["Data.Warning"] = "Plugins.network.InvalidIP" - self.__prepareFormData() - return "form_network" - else: - self.cbox.log.debug("network plugin: show form") - ## just show the form - self.__prepareFormData() - return "form_network" - - - def getStatus(self): - return "%d.%d.%d.%d" % self.__getCurrentIP() - - - def __getRedirectDestination(self, ip): - import cherrypy - req = cherrypy.request - base_parts = req.base.split(":") - dest = "%s:%s" % (base_parts[0], ip) - if len(base_parts) == 3: - dest += ":%s" % base_parts[2] - return dest - - - def __prepareFormData(self): - (oc1, oc2, oc3, oc4) = self.__getCurrentIP() - self.hdf[self.hdf_prefix + "ip.oc1"] = oc1 - self.hdf[self.hdf_prefix + "ip.oc2"] = oc2 - self.hdf[self.hdf_prefix + "ip.oc3"] = oc3 - self.hdf[self.hdf_prefix + "ip.oc4"] = oc4 - - - def __getCurrentIP(self): - import re - import imp - ## load some values from the root_action.py script - root_action_plug = imp.load_source("root_action", os.path.join(self.pluginDir, "root_action.py")) - ## get the current IP of the network interface - proc = subprocess.Popen( - shell = False, - stdout = subprocess.PIPE, - args = [ - root_action_plug.IFCONFIG_BIN, - root_action_plug.IFACE]) - (stdout, stderr) = proc.communicate() - if proc.returncode != 0: return (0,0,0,0) - ## this regex matches the four numbers of the IP - match = re.search(u'inet [\w]+:(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\s', stdout) - if match: - ## use the previously matched numbers - return tuple([int(e) for e in match.groups()]) - else: - return (0,0,0,0) - - - def __setIP(self, ip): - import threading - ## call the root_action script after some seconds - so we can deliver the page before - def delayedIPchange(): - import time - time.sleep(CHANGE_IP_DELAY) - proc = subprocess.Popen( - shell = False, - stderr = subprocess.PIPE, - args = [ - self.cbox.prefs["Programs"]["super"], - self.cbox.prefs["Programs"]["CryptoBoxRootActions"], - "plugin", - os.path.join(self.pluginDir, "root_action.py"), - ip]) - proc.wait() - if proc.returncode != 0: - self.cbox.log.warn("failed to change IP address: %s" % ip) - self.cbox.log.warn("error output: %s" % str(proc.stderr.read())) - return - thread = threading.Thread() - thread.run = delayedIPchange - thread.setDaemon(True) - thread.start() - # TODO: how could we guess, if it failed? - return True - - - diff --git a/pythonrewrite/plugins/network/plugin_icon.png b/pythonrewrite/plugins/network/plugin_icon.png deleted file mode 100644 index 0a1ee2d888f74a869a51f40e666f8f9aa827cb58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13698 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 diff --git a/pythonrewrite/plugins/network/root_action.py b/pythonrewrite/plugins/network/root_action.py deleted file mode 100755 index d0ec3b1..0000000 --- a/pythonrewrite/plugins/network/root_action.py +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env python2.4 - -#TODO: add netmask and gateway - -## necessary: otherwise CryptoBoxRootActions.py will refuse to execute this script -PLUGIN_TYPE = "cryptobox" - -IFCONFIG_BIN = "/sbin/ifconfig" -#TODO: put IFACE in config -IFACE = "eth0" - -import subprocess -import re -import sys -import os - - -if __name__ == "__main__": - args = sys.argv[1:] - - self_bin =sys.argv[0] - - if len(args) > 1: - sys.stderr.write("%s: too many arguments (%s)\n" % (self_bin, args)) - sys.exit(1) - - if len(args) == 0: - sys.stderr.write("%s: no argument supplied\n" % self_bin) - sys.exit(1) - - match = re.search(u'^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$', args[0]) - ## did we match? If yes, then: are there wrong values inside? - if not match or [e for e in match.groups() if int(e) > 255]: - sys.stderr.write("%s: illegal argument (%s)\n" % (self_bin, args[0])) - sys.exit(1) - - proc = subprocess.Popen( - shell = False, - args = [IFCONFIG_BIN, IFACE, args[0]]) - proc.wait() - sys.exit(proc.returncode) - diff --git a/pythonrewrite/plugins/network/unittests.py b/pythonrewrite/plugins/network/unittests.py deleted file mode 100644 index 0a04f59..0000000 --- a/pythonrewrite/plugins/network/unittests.py +++ /dev/null @@ -1,45 +0,0 @@ -import WebInterfaceTestClass -from network import CHANGE_IP_DELAY - - -class unittests(WebInterfaceTestClass.WebInterfaceTestClass): - - def test_ip_change(self): - '''change of network address''' - ## the time module is necessary for the CHANGE_IP_DELAY - import time - self.register_auth(self.URL + "network") - self.cmd.go(self.URL + "network") - ## extract the current IP from the network plugin output - def getCurrentIP(): - self.cmd.go(self.URL + "network") - self.cmd.show() - self.cmd.find(u'Data.Status.Plugins.network=([0-9\.]*)$', "m") - return self.locals["__match__"] - origIPtext = getCurrentIP() - origIPocts = origIPtext.split(".") - ## check, if the original IP is valid (contains four octets) - self.assertEquals(4, len(origIPocts)) - self.cmd.echo(origIPocts) - wrongIP = "192.168.123.321" - def setIP((ip1, ip2, ip3, ip4)): - self.cmd.go(self.URL + "network") - self.cmd.formvalue("set_ip", "ip1", str(ip1)) - self.cmd.formvalue("set_ip", "ip2", str(ip2)) - self.cmd.formvalue("set_ip", "ip3", str(ip3)) - self.cmd.formvalue("set_ip", "ip4", str(ip4)) - self.cmd.submit() - ## sleep a little bit longer than the delay necessary for ip-change - time.sleep(CHANGE_IP_DELAY + 0.2) - setIP([1,-2,0,1]) - self.assertEquals(origIPtext, getCurrentIP()) - setIP([1,0,0,256]) - self.assertEquals(origIPtext, getCurrentIP()) - setIP([1,"foo",0,1]) - self.assertEquals(origIPtext, getCurrentIP()) - setIP([10,12,0,2]) - self.assertEquals("10.12.0.2", getCurrentIP()) - setIP(origIPocts) - self.assertEquals(origIPtext, getCurrentIP()) - - diff --git a/pythonrewrite/plugins/partition/current_partition_info.cs b/pythonrewrite/plugins/partition/current_partition_info.cs deleted file mode 100644 index eaeb349..0000000 --- a/pythonrewrite/plugins/partition/current_partition_info.cs +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - diff --git a/pythonrewrite/plugins/partition/lang/en.hdf b/pythonrewrite/plugins/partition/lang/en.hdf deleted file mode 100644 index 64bfb72..0000000 --- a/pythonrewrite/plugins/partition/lang/en.hdf +++ /dev/null @@ -1,83 +0,0 @@ -Name = Disk partitioning -Link = Partition a disk - -Title.Partition = Disk partitions - -Button { - SelectDevice = Manual partitioning - EasySetup = Automatic setup - AddPartition = Add - DelPartition = Remove - SavePartitions = Write new partition table - AbortPartitions = Cancel -} - -Text { - FS { - Type = Filesystem type - Fat = FAT (Windows) - Ext2 = Ext2 - Ext3 = Ext3 - Reiser = Reiser - } - PartNum = Id - PartType = Type - Size = Size (MB) - SelectDevice = Choose a disk for partitioning - ProgressInfo = Progress of formatting: - CreateConfigPartition = Automatically creating a configuration partition. - RemovalContainers = These disks will be destroyed, if you continue -} - -AdviceMessage { - DeviceDataIsLost { - Text = If you continue, you will destroy all data on the choosen disk. Please be VERY careful! - } -} - -SuccessMessage { - Partitioned { - Title = Partitioning complete - Text = The disk was partitioned successfully. - } - - EasySetup { - Title = Initialization completed - Text = Automatic initialization was finished successfully. - - } -} - -WarningMessage { - NoDisksAvailable { - Title = No disks found - Text = No suitable disks found - please check your configuration and hardware setup. - } - - PartitioningFailed { - Title = Partitioning failed - Text = The partitioning of the device failed for some reason - sorry! - } - - FormattingFailed { - Title = Formatting failed - Text = The formatting of the filesystems of the device failed - sorry! - } - - DiskIsBusy { - Title = This disk is busy - Text = Please deactivate all containers of this disk before partitioning. - Link.Text = Show all disks - Link.Rel = disks - } - - PartitionTooBig { - Title = Invalid size - Text = The container size you entered exceeded the available size of the disk. - } - - PartitionTooSmall { - Title = Invalid size - Text = The minimum size of a container is 10 megabytes. - } -} diff --git a/pythonrewrite/plugins/partition/partition.css b/pythonrewrite/plugins/partition/partition.css deleted file mode 100644 index 4c47c37..0000000 --- a/pythonrewrite/plugins/partition/partition.css +++ /dev/null @@ -1,4 +0,0 @@ -table.partition tr td{ - text-align: center - } - diff --git a/pythonrewrite/plugins/partition/partition.py b/pythonrewrite/plugins/partition/partition.py deleted file mode 100644 index 20b2222..0000000 --- a/pythonrewrite/plugins/partition/partition.py +++ /dev/null @@ -1,416 +0,0 @@ -import subprocess -import os -import logging -import CryptoBoxTools -import CryptoBoxPlugin - -class partition(CryptoBoxPlugin.CryptoBoxPlugin): - - pluginCapabilities = [ "system" ] - requestAuth = True - rank = 80 - - PartTypes = { - "windows" : ["0xC", "vfat"], - "linux" : ["L", "ext3"]} - - ConfigPartition = { - "size" : 5, # size of configuration partition (if necessary) in MB - "type" : "L", - "fs" : "ext2"} - - - def doAction(self, **args): - ## load default hdf values - self.__prepareDataset() - ## retrieve some values from 'args' - defaults are empty - self.device = self.__getSelectedDevice(args) - self.withConfigPartition = self.__isWithConfigPartition() - self.cbox.log.debug("partition plugin: selected device=%s" % str(self.device)) - self.deviceSize = self.__getAvailableDeviceSize(self.device) - try: - step = args["step"] - del args["step"] - except KeyError: - step = "select_device" - try: - ## this way of selecting the easy setup is necessary: see select_device.py for details - if args["easy"]: step = "easy" - except KeyError: - pass - ## no (or invalid) device was supplied - if not self.device: - step == "select_device" - if step == "add_partition": - return self.__actionAddPartition(args) - elif step == "del_partition": - return self.__actionDelPartition(args) - elif step == "finish": - return self.__actionFinish(args) - elif step == "easy": - return self.__actionEasySetup(args) - else: # for "select_device" and for invalid targets - return self.__actionSelectDevice(args) - - - def getStatus(self): - return "%s / %s / %s" % (self.device, self.deviceSize, self.withConfigPartition) - - - def __prepareDataset(self): - self.hdf[self.hdf_prefix + "StyleSheetFile"] = os.path.join(self.pluginDir, "partition.css") - - - def __getSelectedDevice(self, args): - try: - device = args["block_device"] - except KeyError: - return None - if not self.__isDeviceValid(device): - return None - if self.__isDeviceBusy(device): - self.hdf["Data.Warning"] = "Plugins.partition.DiskIsBusy" - return None - return device - - - def __isDeviceValid(self, device): - if not device: - return False - if not self.cbox.isDeviceAllowed(device): - return False - if not device in CryptoBoxTools.getParentBlockDevices(): - return False - return True - - - def __isDeviceBusy(self, device): - """check if the device (or one of its partitions) is mounted""" - # the config partition is ignored, as it will get unmounted if necessary - import re - for c in self.cbox.getContainerList(): - if re.match(device + "\d*$", c.getDevice()): - if c.isMounted(): return True - return False - - - def __actionSelectDevice(self, args): - import CryptoBoxTools - block_devices = [e - for e in CryptoBoxTools.getParentBlockDevices() - if self.cbox.isDeviceAllowed(e)] - counter = 0 - for a in block_devices: - self.hdf[self.hdf_prefix + "BlockDevices.%d.name" % counter] = a - self.hdf[self.hdf_prefix + "BlockDevices.%d.size" % counter] = CryptoBoxTools.getBlockDeviceSizeHumanly(a) - self.cbox.log.debug("found a suitable block device: %s" % a) - counter += 1 - if self.withConfigPartition: - self.hdf[self.hdf_prefix + "CreateConfigPartition"] = "1" - ## there is no disk available - if not block_devices: - self.hdf["Data.Warning"] = "Plugins.partition.NoDisksAvailable" - return "select_device" - - - def __actionAddPartition(self, args): - self.hdf[self.hdf_prefix + "Device"] = self.device - self.hdf[self.hdf_prefix + "Device.Size"] = self.deviceSize - parts = self.__getPartitionsFromArgs(args) - self.__setPartitionData(parts) - return "set_partitions" - - - def __actionDelPartition(self, args): - try: - part_num = int(args["del_num"]) - except (TypeError,KeyError): - return self.__actionAddPartition(args) - self.hdf[self.hdf_prefix + "Device"] = self.device - self.hdf[self.hdf_prefix + "Device.Size"] = self.deviceSize - parts = self.__getPartitionsFromArgs(args) - ## valid partition number to be deleted? - if part_num < len(parts): - del parts[part_num] - else: - return self.__actionAddPartition(args) - self.__setPartitionData(parts) - return "set_partitions" - - - def __actionFinish(self, args): - parts = self.__getPartitionsFromArgs(args) - if parts: - self.__setPartitionData(parts) - if CryptoBoxTools.isPartOfBlockDevice(self.device, self.cbox.prefs.getActivePartition()): - self.cbox.prefs.umountPartition() - if not self.__runFDisk(parts): - self.hdf["Data.Warning"] = "Plugins.partition.PartitioningFailed" - return self.__actionAddPartition(args) - else: - """ - tricky problem: if the device was partitioned, then a created config partition is still part of the containerlist, as the label is not checked again - very ugly!!! So we will call reReadContainerList after formatting the last partition - see below - """ - self.cbox.reReadContainerList() - def result_generator(): - counter = 0 - ## initialize the generator - formatPart_gen = self.__formatPartitions(parts) - while counter < len(parts): - ## first part: get the device name - yield formatPart_gen.next() - counter += 1 - ## second part: do the real formatting of a partition - result = formatPart_gen.next() - ## after the first partiton, we can reRead the containerList (as the possible config partition was already created) - if self.withConfigPartition and (counter == 1): - ## important: reRead the containerList - but somehow it breaks the flow (hanging process) - #self.cbox.reReadContainerList() - ## write config data - self.cbox.prefs.mountPartition() - self.cbox.prefs.write() - self.cbox.log.info("settings stored on config partition") - ## return the result - if result: - yield "OK" - else: - yield "Error" - return { - "template": "show_format_progress", - "generator": result_generator} - else: - return self.__actionAddPartition(args) - - - def __actionEasySetup(self, args): - import types - ## we do not have to take special care for a possible config partition - parts = [ { "size": self.deviceSize, "type": "windows" } ] - ## umount partition if necessary - if CryptoBoxTools.isPartOfBlockDevice(self.device, self.cbox.prefs.getActivePartition()): - self.cbox.prefs.umountPartition() - ## partition it - if not self.__runFDisk(parts): - self.hdf["Data.Warning"] = "Plugins.partition.PartitioningFailed" - return None - ## "formatPartitions" is a generator, returning device names and bolean values - result = [e for e in self.__formatPartitions(parts) if type(e) == types.BooleanType] - if self.withConfigPartition: - self.cbox.prefs.mountPartition() - self.cbox.prefs.write() - ## check if there is a "False" return value - if False in result: - ## operation failed - self.hdf["Data.Warning"] = "Plugins.partition.FormattingFailed" - self.cbox.log.info("easy partitioning failed") - return "select_partitions" - else: - ## operation was successful - self.hdf["Data.Success"] = "Plugins.partition.EasySetup" - self.cbox.log.info("easy partitioning succeeded") - ## do not show the disk overview immediately - it does not get updated that fast - return { "plugin":"system_preferences", "values":[] } - - - def __setPartitionData(self, parts): - availSize = self.deviceSize - i = 0 - for part in parts: - self.cbox.log.debug(part) - self.hdf[self.hdf_prefix + "Parts.%d.Size" % i] = part["size"] - self.hdf[self.hdf_prefix + "Parts.%d.Type" % i] = part["type"] - availSize -= part["size"] - i += 1 - self.hdf[self.hdf_prefix + "availSize"] = availSize - if self.withConfigPartition: - self.hdf[self.hdf_prefix + "CreateConfigPartition"] = "1" - for t in self.PartTypes.keys(): - self.hdf[self.hdf_prefix + "Types.%s" % t] = t - ## store the currently existing partitions of the choosen block device - current_containers = [ e for e in self.cbox.getContainerList() if CryptoBoxTools.isPartOfBlockDevice(self.device, e.getDevice()) ] - ## additionally store the uuids (to be removed after partitioning) - for (index, t) in enumerate(current_containers): - self.hdf[self.hdf_prefix + "ExistingContainers.%d.name" % index] = t.getName() - self.hdf[self.hdf_prefix + "ExistingContainers.%d.size" % index] = CryptoBoxTools.getBlockDeviceSizeHumanly(t.getDevice()) - - - def __getPartitionsFromArgs(self, args): - parts = [] - done = False - availSize = self.deviceSize - i = -1 - while not done: - i += 1 - try: - size = int(args["part%d_size" % i]) - partType = args["part%d_type" % i] - if int(size) > availSize: - self.hdf["Data.Warning"] = "Plugins.partition.PartitionTooBig" - continue - if int(size) < 10: - self.hdf["Data.Warning"] = "Plugins.partition.PartitionTooSmall" - continue - if not partType in self.PartTypes.keys(): continue - parts.append({"size":size, "type":partType}) - availSize -= size - except TypeError: - pass - except KeyError: - done = True - return parts - - - def __getAvailableDeviceSize(self, device): - """calculate the available size (MB) of the device - also consider a (possible) configuration partition""" - import CryptoBoxTools - deviceSize = CryptoBoxTools.getBlockDeviceSize(device) - if deviceSize < 0: return 0 - if self.withConfigPartition: - deviceSize -= self.ConfigPartition["size"] - return deviceSize - - - def __isWithConfigPartition(self): - """check if we have to create a configuration partition""" - if self.cbox.prefs.requiresPartition(): - active = self.cbox.prefs.getActivePartition() - ## we need a partition, if there is no active one - if not active: return True - ## check if the active one is part of the current device - return CryptoBoxTools.isPartOfBlockDevice(self.device, active) - return False - - - def __runFDisk(self, parts): - ## check if the device is completely filled (to avoid some empty last blocks) - avail_size = self.deviceSize - for d in parts: avail_size -= d["size"] - self.cbox.log.debug("remaining size: %d" % avail_size) - isFilled = avail_size == 0 - proc = subprocess.Popen( - shell = False, - stdin = subprocess.PIPE, - stdout = subprocess.PIPE, - stderr = subprocess.PIPE, - args = [ - self.cbox.prefs["Programs"]["super"], - self.cbox.prefs["Programs"]["CryptoBoxRootActions"], - "plugin", - os.path.join(self.pluginDir, "root_action.py"), - "partition", - self.device]) - for line in self.__getSFDiskLayout(parts, isFilled): - proc.stdin.write(line + "\n") - (output, error) = proc.communicate() - if proc.returncode != 0: self.cbox.log.debug("partitioning failed: %s" % error) - return proc.returncode == 0 - - - def __getSFDiskLayout(self, paramParts, isFilled): - """this generator returns the input lines for sfdisk""" - parts = paramParts[:] - ## first a (possible) configuration partition - so it will be reusable - if self.withConfigPartition: - ## fill the main table (including a config partition) - yield ",%d,%s" % (self.ConfigPartition["size"], self.ConfigPartition["type"]) - ## one primary partition - if isFilled and (len(parts) == 1): - ## fill the rest of the device - yield ",,%s,*" % self.PartTypes[parts[0]["type"]][0] - else: - ## only use the specified size - yield ",%d,%s,*" % (parts[0]["size"], self.PartTypes[parts[0]["type"]][0]) - del parts[0] - ## no extended partition, if there is only one disk - if not parts: return - ## an extended container for the rest - yield ",,E" - ## an empty partition in main table - yield ";" - ## maybe another empty partition if there is no config partition - if not self.withConfigPartition: yield ";" - while parts: - if isFilled and (len(parts) == 1): - yield ",,%s" % (self.PartTypes[parts[0]["type"]][0],) - else: - yield ",%d,%s" % (parts[0]["size"], self.PartTypes[parts[0]["type"]][0]) - del parts[0] - - - def __formatPartitions(self, paramParts): - import threading - parts = paramParts[:] - part_num = 1 - ## maybe a config partition? - if self.withConfigPartition: - dev_name = self.device + str(part_num) - self.cbox.log.info("formatting config partition (%s)" % dev_name) - if self.__formatOnePartition(dev_name, self.ConfigPartition["fs"]): - self.__setLabelOfPartition(dev_name, self.cbox.prefs["Main"]["ConfigVolumeLabel"]) - part_num += 1 - ## the first data partition - dev_name = self.device + str(part_num) - partType = self.PartTypes[parts[0]["type"]][1] - self.cbox.log.info("formatting partition (%s) as '%s'" % (dev_name, partType)) - yield dev_name - yield self.__formatOnePartition(dev_name, partType) - del parts[0] - ## other data partitions - part_num = 5 - while parts: - dev_name = self.device + str(part_num) - partType = self.PartTypes[parts[0]["type"]][1] - self.cbox.log.info("formatting partition (%s) as '%s'" % (dev_name, partType)) - yield dev_name - yield self.__formatOnePartition(dev_name, partType) - part_num += 1 - del parts[0] - return - - - def __formatOnePartition(self, dev_name, type): - ## first: retrieve UUID - it can be removed from the database afterwards - prev_uuid = [self.cbox.getUUIDForName(e.getName()) for e in self.cbox.getContainerList() if e.getDevice() == dev_name ] - ## call "mkfs" - proc = subprocess.Popen( - shell = False, - args = [ - self.cbox.prefs["Programs"]["super"], - self.cbox.prefs["Programs"]["CryptoBoxRootActions"], - "plugin", - os.path.join(self.pluginDir, "root_action.py"), - "format", - dev_name, - type]) - (output, error) = proc.communicate() - if proc.returncode != 0: - self.cbox.log.warn("failed to create filesystem on %s: %s" % (dev_name, error)) - return False - else: - ## remove unused uuid - if prev_uuid: - self.cbox.removeUUID(prev_uuid[0]) - return True - - - def __setLabelOfPartition(self, dev_name, label): - proc = subprocess.Popen( - shell = False, - stdout = subprocess.PIPE, - stderr = subprocess.PIPE, - args = [ - self.cbox.prefs["Programs"]["super"], - self.cbox.prefs["Programs"]["CryptoBoxRootActions"], - "plugin", - os.path.join(self.pluginDir, "root_action.py"), - "label", - dev_name, - label]) - (output, error) = proc.communicate() - if proc.returncode == 0: - return True - else: - self.cbox.log.warn("failed to create filesystem on %s: %s" % (dev_name, error)) - return False - diff --git a/pythonrewrite/plugins/partition/plugin_icon.png b/pythonrewrite/plugins/partition/plugin_icon.png deleted file mode 100644 index 235cf749af525c5bb20666ea96e2c01763bfb927..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2943 zcmV-_3xM>AP)N-}n4}zwf!{z;%4S5Q`1C8r1Ii+r9rY;YBHx)vhTM zr%F6E@yZkby}+xV7>>mTTn$=oUcTd}U%s6`{-?JwTr*RN_!!#Q#eG+J^%FxbHsETI zS$EUQ(R*#CzBd1|AcW0g&MZ<`IA#2r%>9{$P$t3Dj0aK^ll*w|J|g8K50^jkpeNgnyr z`(f&>CQ?V6rdt8%8ycrCI`XM<ip=AhRPb~yUDG@?&>F8l7uYmLISOP2o4IM`q9O~!J!lihtZ$juA zlOrjFQlRGBB&DRbHWJP+aE6n~1f8AdzBDkvbc9$SP7w91e#a3D(TI{-x@J;Xc}zG_myddy!HS8=pYY3C#C^Whq=PNo(sf zEMHzrW8< z=U4m6aCgsN!a7i%$%a(0n%a$e{fBa{EHZZW)KRG${ zP2du<+;^oUu1|*#fMMua-!yY`aL1|$=RJO?UWX+lLX$X@LP$YgVM!*`q;#-#>-}85 z+{ga?tsFV>5o^|b30-eukAchOKq-jFQ{?68Y}l|BpRe$b+S>N~OETH}B#_xB z7W|mox%00++`Rd=^1M7dX#)Z8bkZ^_d1oiH-L7eJx?N^+C!Od*2u4Svw6*;wue|aq zPG=eS+;bnHP>9QyKgQ{F(9%*%MMVJs?d_L1bf}$z0zZL39v^(r&2!KFlK0;~_-$Yh zFrwu${{H(P4H$;;_qDaF5JI5qnyoT(Aac-8lSzkJdQ4h+Uw-*Nc=p*{R8*{D=gyt1 zT^nZU(tJuw^RX<&AO6tIk|hByTo~l&(JsQ_QmU$o2nIcbLM22Z%|xTt`ktQdpk+1Z*w_egQ%(X(S(yZOIJB(fwUOx->?t}^#MfYH%7LcoR%HC((n!hr*)7#o|Sxp@Vt zltq7klxQ?YUYS zxuGB7aC@#7abeYzXSu@49#!d|b}&@?S$NE&GpGsP7YN=Y;t zqqFlP>gy|!Qd@|Cj6@=YO-<|Ay?ZbB-n)Z}ihS<4Bf`^9xADa<)>2&T#p5w>I&HHiCzH5bIt2v* zVzD?aEvreTOirEZ=DFv70njsVBU`s_(|5LQyLGwW?_qZMOq08+IzVl0Ex-HS3+&$g z?-Um=$L;oD820DG;9!i($^r@s+&G;MdV4?St+zT@yY_~REFV1h29G`Vt^TgAH-8K4 zo=2d$`L>_kdFK|7t~(Yr=+o8#G)*HE3NbNpnSJ|SV02W+?=N8e`jxodPL3b%qO>$X zN5=p?JyGiGmm#I(^y!QI`qz7DZGGxeEY`al_$_cUi@-wr4 zfzRiouC9*K(g1C3dpLi7n3|d}m6e6m)Rgd>-<-kWkgQ%^PCRb%=9}-cYu8Wd>N>*s z_~4#YDzz7Q54fC_14799nwqNVXTe-0TFAiJ?TbC9e@jYAC@CqSy1JUDpZ+;dKKUaa ze)xOT)GX!Zn?nG6^wAiH55LE=&pytI6(!WwZRX_36Uj4Y-aQM91Lhn8Vr@8FMJknI zcz8Hx2wY1@DXFQc;rrkJ4u=mP=DXkhCYv^Woo(A%h{dLO{`r67$u%+wr}4~b8|B< zzW5^J<384}-%3?g70Z?_qp+}$p`j?6=5PQ8Fa>i62m!;xBNP|=|6d8Dk)NNB+wJDQ z`|e|GYz&{zM=%(~<#J8$#ACBQ-)&?OkWvzlCs9ge4lsRveIybIlv30EaSX#C9*?8z zI*CLAUDrt_lNpt%t*zz%3d1n)dcE`7l~NdnbKa%FTopno6Qxwf13sURcs!12nz&pp z`uqFwcs#`8ahy&krfCB9p}()Mk7zW?nl)><7BEdSqlC$1a{5?$MFRGzXEuSnyga0o zq*5uQv=2A4ix2{b!;$ft)9JkG@Utw7e?0sQH`IjaKG(yew|#>|B7vFXntrYa;_-L_ z%d#>dB<2R)BG9zl=jTrY(=-{B104VG1D1&Znxad-ps2`$ z!{IyOOeI7`r z`{u<*I2`deHg5UnV6eDBh#dEXp97S#tbu_`r}poEX3x~r002ovPDHLkV1jI`ov8o- diff --git a/pythonrewrite/plugins/partition/root_action.py b/pythonrewrite/plugins/partition/root_action.py deleted file mode 100755 index 4cb4758..0000000 --- a/pythonrewrite/plugins/partition/root_action.py +++ /dev/null @@ -1,96 +0,0 @@ -#!/usr/bin/env python2.4 - -## necessary: otherwise CryptoBoxRootActions.py will refuse to execute this script -PLUGIN_TYPE = "cryptobox" - -SFDISK_BIN = "/sbin/sfdisk" -MKFS_BIN = "/sbin/mkfs" -LABEL_BIN = "/sbin/e2label" - -import subprocess -import re -import sys -import os - - -def __partitionDevice(device): - ## do not use the "-q" flag, as this spoils the exit code of sfdisk (seems to be a bug) - proc = subprocess.Popen( - shell = False, - args = [ - SFDISK_BIN, - "-uM", - device]) - proc.wait() - return proc.returncode == 0 - - -def __formatPartition(device, type): - import time, threading - result = True - def formatting(): - proc = subprocess.Popen( - shell = False, - stdin = subprocess.PIPE, - stdout = subprocess.PIPE, - stderr = subprocess.PIPE, - args = [ - MKFS_BIN, - "-t", type, - device]) - proc.wait() - ## TODO: very ugly way of communication: it assumes, that failures are fast - success is slow - if proc.returncode == 0: - time.sleep(1) - return True - else: - return False - thread = threading.Thread() - thread.setDaemon(True) - thread.run = formatting - thread.start() - time.sleep(0.5) - return thread.isAlive() - - -def __labelPartition(device, label): - proc = subprocess.Popen( - shell = False, - args = [ - LABEL_BIN, - device, - label]) - proc.wait() - return proc.returncode == 0 - - -if __name__ == "__main__": - args = sys.argv[1:] - - self_bin =sys.argv[0] - - if len(args) == 0: - sys.stderr.write("%s: no argument supplied\n" % self_bin) - sys.exit(1) - - try: - if args[0] == "partition": - if len(args) != 2: raise "InvalidArgNum" - result = __partitionDevice(args[1]) - elif args[0] == "format": - if len(args) != 3: raise "InvalidArgNum" - result = __formatPartition(args[1], args[2]) - elif args[0] == "label": - if len(args) != 3: raise "InvalidArgNum" - result = __labelPartition(args[1], args[2]) - else: - sys.stderr.write("%s: invalid action (%s)\n" % (self_bin, args[0])) - sys.exit(1) - if result: - sys.exit(0) - else: - sys.exit(1) - except "InvalidArgNum": - sys.stderr.write("%s: invalid number of arguments (%s)\n" % (self_bin, args)) - sys.exit(1) - diff --git a/pythonrewrite/plugins/partition/select_device.cs b/pythonrewrite/plugins/partition/select_device.cs deleted file mode 100644 index bfb7b59..0000000 --- a/pythonrewrite/plugins/partition/select_device.cs +++ /dev/null @@ -1,45 +0,0 @@ - - - - -

- - - - 0 ?> - - - - - -


-

- - - - - -
- - - -
- - - - - - - diff --git a/pythonrewrite/plugins/partition/set_partitions.cs b/pythonrewrite/plugins/partition/set_partitions.cs deleted file mode 100644 index f2a9db5..0000000 --- a/pythonrewrite/plugins/partition/set_partitions.cs +++ /dev/null @@ -1,78 +0,0 @@ - - - - -

- - - -
- - 0) || (subcount(Data.Plugins.partition.Parts) > 0) ?> - - - - - - - - - - - - - - - - -

- - - 0 ?> - - - - - - - - - - - - -
- - - - - - -
- -
- -
- -

- - -

: -

    - -
  • ()
  • - -

- - - 0 ?> - - - - - - - - - diff --git a/pythonrewrite/plugins/partition/show_format_progress.cs b/pythonrewrite/plugins/partition/show_format_progress.cs deleted file mode 100644 index 126d37b..0000000 --- a/pythonrewrite/plugins/partition/show_format_progress.cs +++ /dev/null @@ -1,17 +0,0 @@ - - - - -

- - - -

-

    - -
  • :  -
  • - -
-

- diff --git a/pythonrewrite/plugins/partition/unittests.py b/pythonrewrite/plugins/partition/unittests.py deleted file mode 100644 index c2f5512..0000000 --- a/pythonrewrite/plugins/partition/unittests.py +++ /dev/null @@ -1,10 +0,0 @@ -import WebInterfaceTestClass - -class unittests(WebInterfaceTestClass.WebInterfaceTestClass): - - def test_read_form(self): - url = self.URL + "partition?weblang=en" - self.register_auth(url) - self.cmd.go(url) - self.cmd.find('VERY careful') - diff --git a/pythonrewrite/plugins/plugin-interface.txt b/pythonrewrite/plugins/plugin-interface.txt deleted file mode 100644 index 3fef72f..0000000 --- a/pythonrewrite/plugins/plugin-interface.txt +++ /dev/null @@ -1,63 +0,0 @@ -The following directory structure is required: - - python code: plugins/PLUGINNAME/PLUGINNAME.py (all lower case is recommended) - - language files: plugins/PLUGINNAME/lang/(en|de|??).hdf - - clearsilver templates: plugins/PLUGINNAME/*.cs - - icon (128x128px recommended): plugins/PLUGINNAME/plugin_icon.png - - -Python code interface: - - create a class with the same name as the plugin - it must inherit CryptoBoxPlugin - - function "doAction": - - this function will get called whenever this plugins is involved in a request - - all arguments should be optional (e.g. for displaying a form without previous input values) - - the argument "store" should be used to process a form submission (just a recommendation) - - if the processing failed for some reason (invalid input, ...), it should manually set - "Data.Warning" or "Data.Success") to a value of your choice (preferably - you may want to use messages of the namespace of your plugin - (e.g. "Data.Plugins.PLUGINNAME.WarningMessage.InvalidInput")) - - the return value should be the name of the template that should be displayed after processing - (a template file in the plugin directory takes precedence over global template files) - - the return value may also be a dictionary with the following elements: - * template: the name of the template file (mandatory) - * generator: a generator object ("yield") - its content will replace every - occurrence of "" in the template (useful for pages that - are displayed step by step (as for formatting of filesystems)) - - the return value may also be a dictionary with the following elements: - * plugin: the name of a plugin - * values: a dictionary of variables that should be defined for this plugin - - an empty (e.g. None) return value can be used to go to the default page ("disks" - or "volume_mount" (for volume plugins)) - - function "getStatus": - - returns a string, that describes a state connected to this plugin (e.g. the current date and - time (for the "date" plugin)) - - the class variable "pluginCapabilities" must be an array of strings (supported: "system" and - "volume") - - the class variable "requestAuth" is boolean and defines, if admin authentication is necessary - for this plugin - - the class variable "rank" is an integer in the range of 0..100 - it determines the order - of plugins in listings (lower value -> higher priority) - - the class variable "enabled" is boolean and detemines the default availability of the plugin - - volume plugins contain the attribute "device" (you may trust this value - a volume plugin will - never get called with an invalid device) - - the python module which contains the plugin's class should also contain a class called - 'unittests' - it should inherit WebInterfaceTestClass.WebInterfaceTestClass - - -Language file structure: - - the content of the language file will be added to the hdf dataset below "Lang.Plugins.PLUGINNAME" - (this avoids namespace conflicts) - - the following values _must_ be defined: - Name (a short description) - Link (the visible text for links to this plugin) - Rank (defines the order of the plugins displayed (0..100)) - - all warnings, error and success messages should be stored below WarningMessage.??? - (resp. ErrorMessage or SuccessMessage) - - -Clearsilver template: - - should start with a "

" tag (volume plugins: "h2") - - links to the plugin (e.g. in form headers) could look like the following: - - - volume plugins must include "show_volume_[header|footer]" (see examples) - - diff --git a/pythonrewrite/plugins/plugin_icon_unknown.png b/pythonrewrite/plugins/plugin_icon_unknown.png deleted file mode 100644 index d6e9b3a184b012df341fe6e378e0b4603f9e3fc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14269 zcmW+-1ymbd6Ae!BmLSEYxVsj2cPQ>I!7V_r3I&Q&+}$;}ySo%^ad)>r-=A|fd$P&O zdoyq5-aC^YYAUjrXhdiL002{7PD%r|hy1spBE#N$Ma)KFJ4AO0c`a1f3yf;{9rpPh zNbZX}06;zW-v%eq6)yri_|ZdJ&qLG2+QZw-%?jY{?agZE?BH%;2C`yxakEJ~6(#}z zC;;+O;#xlGC+*(pB!ixtZxxv&-n`}n0w^Jfgk6a27@=PidXpgyt!JYI{?;PwNd^8=if6%4_lW zn>mI54L6yv9_Uw8SXkOpx?ZMRW!&yZ!>zoPf%aGKt~D4NFdA(2xCQ+r4>v2O6%=_6 zJRk2^&*Yo13*SJl?p(vO1%^?t?ZJs=(WS@+;p;w}taY{cEgrq`s;!@*apSOZN%Erb zx1*|}_AhFH+bF|?zJnfcu%JqGVX+QQ{4?$QP9+ZlVcyIrfJXTH7h~48U1VTEyejOF((R6^UjbDpfywu?|6eI4as9z-(en)l9MwR_r!9MeW zKj#Zqsw9glVh=Y)zeU2i_N`vQgNMs%h*aLoFLa@9qkcz0a$t;B54aBzN6fY-^2f%6 zm-uH)2Y4YS*7cs5Ch9u6p>p)9mmvFu;v?HDq>Z|2kN6x+A%QxRLLz|*q{Mlo?$scP z=?opGJx30ax%C!C@fpO0u;GYNyvzO$3YLh4{Yb8$4)ui%hkFNN^;ZsB^~kjT@jRLq zkUSdRdoUyGvmOFsY!Vktlcm^t$)U|7fphd}C30omBvl5y7SaNxqaU>dbq8KKdL>Xf z57NoLnzGxn9Fel1v~8inp8hu1;T%54dYb~@l5@GX*@SB4H#|2*o;zGnS1C)N4Q`jf z7bKWP(9RdTh&IU|{rrvXH;*P{=^TTq<*A6|3a;ENnVBnKTR_rw$k&#opelWar}9d5S#C{wcAl3hW_r%0KYvMq0hbP+NT1^{wu2r67N z7*2UsAzUoyCwSLGEdke11%)+h7>TF{t|#_136%c?w;5>4QvK0~o8;g%L#C|?pF05n z`wDB5VKX4fR_NRWLU(iH*PbH>2!;sMN=H3(O5u!Ij!T3n?<$xY@y|Gw*&y8*jqn9y zhX8dvtKm$rWm`H4qdj!#8HwRAsUe_z|Ig=CkA-7}*Jr3HYPVrUTHHo!S0tk(Vp{RIESPl zxYz0`D4j3H!V&#EJtgD9lrS0~g z`+(}k{Lwww#6|Tl#t{_ZUN@g4tk-OBhN;T3zjWTZ-TH%Trtd#_^XcN)6W`7DfcDR` zHkT9OVr&1oa0dy@*BK%<8&_P+RvKAoTJFFdU2Iva!|tjgn7_|NQNhJk(7l^kpT!TG zUis65JaYJGT_ZPpuG0ksaOVrt?+dr$8l?o@>s|N2H+hUIIP!-7_+j@*_Vh8~b`tSi zbJHvv3L8=bL{KpJ4g220BYI`M`8!ip2T>=bjb7NSA#1PVq{v{`J9kJMpzX*JdC*Wz z7amo%g%2fS|?26)rUvaabggR;`onkgdLn`?>7#`amx+(eY!M`y~{Y*&cmn zy70`Pn9<*>vnS2}_M`L*NmB)Ed?qKKZ4f;F??@bR`nvQHn-+I#y^l9#0C83mQ!t}= zNA`#7)^|v4w0}NuF_1k^Tac`GZs@OCbOpfdk(YGo)Flh)?BS$qT~l#uhR-b2!Dlm? z_*d}L4hu;Q_yDgwyYwIvgcoLT3^x`(T-2Au+4-q;Avn4yOz>5i{S(w`wS`shp)Xx%KT0n=@)zo;5eeAG* zyR*5A0OmXQzpJilsaC|zy+jk{r%vauh}!4uP$LzQFRa4_pA`sB6i^SwOvaMmqs040a$lYm2UfKbephyhy*q*e6Z7)VK9 zOq93fiY5rJU~F#(>e?%0*yP#LIA9iiSe|WbbhnYuY+SH*_M5~kH|a!%u6$ueCnQWY ze~UFMw5U@Wj4v+L@$?w2N+dNN7akK-UUEVkS2os93qX9yjH~5JA^GMhA!lG2-ao2a z{ZdNm`!EO(oLpc^ffRpIM6`_PQ+cku%KTNA~^NSX8OKlFB3}UPiyOuHM{2 zU+w~cH!WmkXES8{XsOznM>hJ_{jv|>uuy5a)-wNChFCX@F{r8%Gp^w2AyE6Xif!N< zv!RVWFkd5|-4?MhL3&l12dxTgH7O1IH){BE%rG9vz)5D`sRHr*>_isK7n{ zn;s-2&VtXcCb(`^DkHvDmDJ*T70b3`$IGC>R}G<^<>vEM-gY1w`@|I)J^1@~CT0A1 ziVW#hiBH*}u06csjG3}-iix)N*Fp0(U)%4o7yPNE@;|Ah8|jmoKutlBe{1xt0!uqh zP=i;jY;J0K!vM;f2mb#U5FP+;HJL--1m8m{OCDJuA*GjHFW8#&KpZj6uAjZmOyZ3k z8j57?<;#`>hMXb5!w+?KG6NQUxC~m_y=Ks4$74MqwH&{}1zr@UC@7V+$b8L|E;2Q~ zgqn7ut?+Pn9`&dAFN$C0uM9R^G=U4{wu=H0rgvpkT%5v|9#@jEfM-&M(owDkZHK@B z;9zhS0tP15#aLaH+(KF1ty>tesT)E&E>6q3DW^DhrlqB@iaD**7a24$rjKh8^s?+$ zLk9fbYEm?{KdGT{rjgIcl*ga>rQS9_rIzaK2+m)Pis&`hbs=A6@_t5v)PP`>_-0@4&N70Jk!A%0!O%J1WGO$ue}Z zwZ!8#{mf=r8=kPV3#((2-*u}I&yO}X{t&fz0!T_9bAame$o?!m$R+O<;ZOkp8(3Y} zAV7PT`}A#Ha@$>_W)^t9S-ql!kxWezLz0KFtRrtkknJjXeBWL@8A9& zx>V%}^bX2&*23<|#OJMF+T=1#=z&_9_w$;ToV#sr4;|}d?z*MxYIi4_uqh*eydkp- z3XW7|`c0Euuuz)3FL~T&lWl_22_p~)k94xTbnCs13aiqa9GK6z_b}HhuBO9)Pe=K? zljol^I~Gz%ZW&lKJ27JAJBEAxu!MfT&Gtk{NP@gQ zgn7S)mq)A+>m=Po|DKd(lmkw@^V>}s{`4}wA-fR46;-*;Yq&D*e6wWKfmpEi=%4%; zX2ij0?Ao)aHJM~3c=FSulajgo`S(N;|4q@C%{;jm{*9;8(Cup;|EaTST_kNB5tP~r zyPuYnK`I6A1*8)xHSR~;u7$^|pH7i*{?+zZ+zV?o^L+l?>mHzLHa!Z?g<%pc>T`?m zuU`-kCh%T~OzquLO@v>$_cLZzw==vw(oostt#*L4<1tD$M?DjJdsyyuR}ZMejEId5 z_jd1wji!}&Cuajx<5kiOUf;@Kmz$RPJAf9|i1zy7+<0@uCMz%)opos_ReKa9c#Qbs z3|j(RW+jMfi0b$mO4hzxo2K%I9)dq}cv;XAbmAD;6oEe~xTS}mr0fc7Ye)Y%baY+@ zh*ZVXWKf3T0MUr5P6Oko&D`tuJhyc&1%kg4g&ztY{i2Sd^Vtl}iWyZzQt#Sh)x^<` zKGg^t?u`Axe<2m2N2SahOPeVd$~(AUJ~AP|;$`ePuU2RHS?R`yGJn1%cj$I(qA-P! zyv}Ro?C$2)l3y0YiuH9YcebN9#{l6=jKRc2#Srfs^K8$OR9nq4IJ&tNU#Ke8q=c*r zRh&7KDkF(goqoR{FK_LS$z3Kw`tScvf5w}^#^&1qe^&VhwqndEP*W>0ecfSRf{A*zR->MmSn{Rc>^}3}auvF0BK29tLPJXQpp|9Jpw5_hA5}DD>0YpN7`|Y>m&@EO zQHTo%3tnFu+At9v*W5&8u}Cdx-y_^>@z1>cf_Vc9j2EcEPbv4d!r`-h>Dg5-!x@ye1#g%hJ-T`(;Zm17dEgplq<9072uoTf2-DV26yuWsrCG#q2v+G?Y!O)VT3 zRV+^~C@ZE!Ow`_WF}N$P=(DJ6^OtX1&xcEY6cr?+!-?^WjUv{m2{Iwrvgidszf!L) z!mK0wrJe2&1yg_k0Am3z2wrgJ^M~``-8+$xwL)0P7fH!B{Vg>w#+yJjcK<;&f63o8 zMvK-Y2|0<)$?T}m>OP<{ZexHpmqgenGUu;4EnU&?-@hqhe|H~v%*?DRxhsC(-NkWO zEVo?ygNL_jZpl26hNALbF+XA_>6bHCsoR{vaCZ8BD?XClJ9z@c!N+g+2dZS89&l9% z$=v$y=j5=?k*;?)+>WA_oZL)AQ%17wck)am9>DrUY&i^@eC0B+$7yT%l zkjiLUL7`Nit1bpCa$+7Pp2dCMEr%gS8IZYK5-g&of5-{mh6ud2&LC|A6(1LUt zE+>)e8#Ywz~lbu&&-fF1#QLIHKI%VMjr`+&- z#+|*~Z<)&09`W6bS2iCB?XLOOfqZNo z-~_{U`&3m<5>`YenPeHDJYV}sFKx9yadUx1N`j8;N2vR%!rwq&*VtfZJp<46h$Tcc?v8ctHO}GQo57m zHD(1<42pz&A1?SNt3z2hQwqS8+)(Q$?H|4Xq9hu$Wu_S)xE4|4!K~6f#rPT`qEl&T zrM0DClr@86+Xn>Ei5d7a{lsrL)SJ&&Zi~%zWYCIwAm`^+>d3~&6CF}9Y%Win@H*&s zu(gZ}dYV8Om=xHYfZac9u8sp1OfO(k3Gb#uSCRPz;l{o%WHNAfE6&Je9~KT|2K17W z6kj;?i1Ji%XKR2JEFxUSsKK*#)X7ZMHz6z}pWT+|&2(W=8Mzw8M>1&LaOhzBAv^P% zWI$IzS3IQ2?I{twf9g#gwt5;l5U*7pt7xxr*`1STfe|I67}&TBbZ&9xB7?>ovQ83o zT=NVJ4n}77H+>!{~_ z(t}#7%M)qOfA81azC!AlzH;d^=h^9mcjK|Z=_A{Wf(^5K)^5=b7jh~QfIH(IedEr6 zzZ!T66`fePS_I%^$;YegDWI3?ohGZGmloE*)-hMz$E##a2LjjE0UCht)v9ygeebs@ z=8c1+lZPcco^1@60OAa949^>~$@cdAYyZ$u93eB{FAi6o1~P*YrWWf<!vYDF(nIP%MH0#MsK0>mOR(^gF9)98ofe}>dZE(WVi!1K6I{!)$vo)U>OQ{95 zV!Pp0zJ>BQ=v>zPS_|JeL&hAqneBF`Y-2`)cnA)b`6JWsE9T#=f<&;sMOiYA?uovM z$`!`RgzCc5Mc;0zZu@`w4A$_@Qp*l};GO0jfL##Z=8l+7DNN{?SJ)ZlM+*0R()Wsr zK%EL(N%aJc2};Bg%Onq4-5HJt!{FuRPq>U{x?$QTGhFexuu z_o+q#878y5k@?OHYNxEmO;=7e7iSbG3Vms@X+i6=|b!?n<&2N=ix`ydneVL-f>ndHE49vq)gVW;RVY z8pQ0nyNIhj*!rn8@8?WnJ;_y+_0XL9wRT$E_B{uKvt_Hm9=EfmUI^s#8(i7dH;2KL z)L3h7$Fyvi`S}TD*!qed-i|kFj#lKZ{JYaY&An_7%(DmND;4gKTeCf3gHJy?ajx{$om%&0T8t4AR5swCH zCH3%ZoSk3Ba*PQG8#s21czYQqv$oa*@VJOD>;YJ0HWv)m`}+x;3I%{&ry#BUj#2Sh z?n|UZ31bcC4z=tU-2xYYI}woP;0c9}ke|ni74JRhat>JI6X&QxW5G(AQ%8*o|5di| zJ3dk#IZO!2XJVW+-9I|v%a`4If z<#FD_qh8079VcV542XvGqA6RC6k%;#z{11md)$X8Nj^Tmq98w>UKBwgEfOD<1JDZg?d=*1XExNtSN* zUw;gL%&qyvRcEJhK++5rKRr!+`ACGNIjlM3Bd*z{Swf%F@==>&bD>oZvF zZZ|sr{+{0pj6>P=R}CaYO7dBxaz*Gn(aE4=88?QuK%jZL#ULI1_UI%KpXbLsceD&R zCp%8TN`At6ymqa>%ne@{={HH&PTW;OM13oCuInbZsMCIcE=Ln0^G+0K~{5mVv`-^v#E*y^lWSo|d zA?$Aj+>qtvl4FGPa$fALcEfItDydhySBPV!Z4LDuyc@|8IUkQniB=L=h2WAIuUM@B zZMg*A?k$VS`99(Jp+lJ+BaD`=aQwE_2+NVTJ5~FHK9{*+ngSCx4IBajdDxjF(=4IV zjrKb~cLb3>;z&2k2R4iV;BAW(vJ!D2CELS$JGMNlEaS9X$Lm~b>cO}8qQr~diCQw+ zik|laE?e>Mz+`lF!_2sv8Y|kT0c9SH97NP&33s%f-l;ywY5=uqW>Pl2nl{YjS>xe} zSc&V4SNVSz3CDSEUd9}WtaB4$0}e#i&CcFG7>g2-a3BIj)^%TSjNK7cRmSyY9BSaF zeH2uL@ZEI7xLf)p)?{cE7Hl+sE!8n*LF_Dp67eMtFf#Y7eM7_ZZgXx5 z(K(s8Xf%4wIj>;(+u{*b{BZ2>_7H&4RSv-~LhPJ{KkFHVjPa2DuukvqKcPPNAYiCI4-8vRKTQ>|*2<$)4=p6uP zdaj1!H8s}10ED2+c!EM{%+xLQotByAfeqQQ<9NSQlsP#B`j_qzsq-vIj@XvpN?H>2 z;sIW#eks$_>VN+Hv30VeCA?0vR|@vHvA=6M_pO+ZC+p@)5r)Z}%UTPo$gExpDRVA% zQ4L$=9McED@Q{eLN>KMMrto#O9sQHYx(Iv|X*L6)<%PL#v>tQ!{WfrG3m4;8G=~UBw}(fnQsZvQ4D%!0nj1YGB#@fj z#|8WCaiwb0gr(3?GFm`r1<84Fl5{CWAGn*@s?d%gc+n~ z{86qmX;odrK%~D8`OxbcnAGAE@u7ZEk8~~$9dSluxAerJW(6;97$fMBz=R@EA#@J4 zvg}*HszjIH_DK&*+QVwlJz`+zPc6p5zOcXex{VH&p9cE2mF!x#QTl&rP)?nAO|4Ug zSG2p3{qq-n&WRO3Cy|h?-0?kf{9`;zuVwSm<#6&v2FyRRrW8vbIe7(lmD!MNvfdxf z1WUSt@9tMWeXwgUDfnH{J(*}s*0RRN7|MddM4NvTi zz`*ohKj=YyMTqCO@X38_z$2bbSuB3H34Jjm9g1p=*SLL~aS^vU`$uISD_N@|EnIw6 zSXQ!h@L@aBS1!3arw9qFXbrqJ(KEL1cFN{fCK6O?#Dhrcee{ zv&g_0E#@Pl43!Zt^##^ZT9t=oxNp5*jl9!vqiBCeq)v!u*=n^Oo-lA@K7TOXcny{Q zHm#iLOVoKDa5g>7&ylgldSJhG7dR-)zlBH!E9;(>*`)QvI@`c36?z>Y$Bwg!9rPxW zj)ej%OZqTtx7=apYY1?rfXBTUw7dto@Dn{i(8*2<<%T?G@hb_#IMQ(nN?eFT2;#HE8+3#Tm z*J}f*TXG-twGc>QHnbdJ0=&_xHnr3lgsLs7@442na=&UL8a`{Mf|7+44U?vVvX72c z(P6dpei&Hii}AYAgrRL_7FH{0cl+7FF-(JU5=h2GI2rCKGw`@BF#4BR0>il9|p}sxX@5>t`BWko}$> zOq)-xb`dJ`wevq_H)`)$ ziNYNLc*XGbB=X*HrQ35#xZCUd$52@05w+ds5cCrC5GSAT95Hxgx;4OBA}qeH@HkW1 zE_}X8JvOGr|6Pt!c{plNd0JeGz>386d>6LyM)tFH5hl~2anWB1Q9l4@yZC-a*uDVx0!>%*l zlb2tl#OyKH=j}32=+61^#ZSThfYYWEuSVxsZ;^?y{FL&=8s zo>37d{2REym3*G8N}CWPgB2s1+jHGKzsmTbi$=DwW(=3STVL|;O7KZb3xMen_N}HB zfd?9RG#@lj-u|4%lZbGS^xa3cnHQEnIq~*Obp*>$Qe=#93Ilh#Uf*M#64Sm{HApI` zH9knF>1P>hlM$OOf;Q`LEi`m)oWWC`FlG9*Y@5fh@uKnR*w*I_O;W!cH^D>(-^TRL z_gRzSlY5_HK?#CUdXQ?%!g5A}gtBO!e>L0}da1#$@@*n?tWeUT-soPl!M|#1!C+oh zR$Yo@O?kRH%P38O0soOAhA(iwrOne!UVC_!ls5?YbI|9eq5Vqi3`9wZX#8tbVd?0< zW}VUueH(s)^`1BUwVD0!47OOMk0I1%x^W;=ZD~2~S6G*`?#M0It``~JuY&Q~9$lmEKiW)DBCSF& zrKjoW{_6)whw^jPkS4=%)3Y0VOJ5ltxB2w8UG3GMJcI5Jl~j&DnwNav5tJlud~hMV zSg=A=Psi9sQq!VnTTo|Jp8q|Mq@1Sw7ni(6QE)!#d>*D^8Y86F1A?6`r}vds{)(^OtaAuBuo)?1wy?^+6ESkhRSZRw^)CLCDa zhg+$b5DG!_4ItIKSFL)@Em6@E6e69Y%+TxDlg1S%tIB88QtGGxP!hSRbT1Pc1w7oA=h%_ zY1&x|BPWz2AvTq-tY0NK&^Y6a_5E!9N#1_sb@X?F4VFcS?Eu^n2w+k@1km^`lYmPv zQCN(FWv@zQ8v_1+&x%x5yXGt7t=y-k?@Xz?D#k3^^d;t11Ujg$iJD$z6rQdiSh7(? zcz$6ZErf!7o&m~lJ@reIxku~3e)*S2V`S7u=ax}YoRXP}G%rX+(0E(L8&OVb>va#m z^dPb1>Kmv%pPwd#-ZL(cK_yPnWsS>k)QI%HR{nd^tKx*^@ZPo^lqHSNZGLAZGOH0T zNZkcI@5u&J*VX}TX!j&oC_&FCS%nSKnf$7Knq!|h2^Dbb;0J=tUZO>EnGYgF=jO^2 z3uiTxk_}E?a?1_tj?E)yt(X{eXS3byrdIpwIw%DbKk>wOlY>I3e*Y+763!Vz;%$}C z{7FDbk*IQ|Yx0OTJ54x5eX#=TR5CUOnO%vk@k5+BUjUm3O?wE?>4lj{9JlqXjNysT zXd^N|H_j~8bz@B9Ws{rs$k)(~{B^h4a2HB11rjAxXtLtTrZ^dV?UyO=Ld6l` zol{qy`PXJbb=}LLVUXQW31ga)v{YZ1-uXm*M<}`+s~KFRvpyT{rvhgpVeH<6muxsD zZNM8EgF>)#yWg|atgLQpcQXyVG_Pa0M_?5c4CM|NUOG{jf9@CXGIKaPd?-^zp>@@e zm$Q3$MaZ!*(dKbmhJWD1b5s1jdyRHDy? z|JSH@M|E<(Z|kykd$;a5;WT})oEzAtKd3Lbx>GydK@TzT&bKAi7RmZ~D=nTXv7TF7 z0MDS^Bp=lPO*Gw&n;32W+HkC-af()ol;|j^${Sx4lYHgPjlcJ!$YlHGGm6p{C3I1| zc;12REED@fQpr|8?9rFDq3fIL6xjOo{|xe8(6EBxRK$CHxlW0!`}4J#Zs1G|RhDK6 z2q6!poZ}UO9@N!zqWB2(JE{nThhrN}_B8h%x@lP4>pSv{QQ4Cpw;UpzryYzL>YR@7Mf~obF8o$^pEH## z$DDTbvkyr64;r^Xf=%Wt($DuczlgQVe}+c-F*Cga*E9!6p&f(yGmed7_Pjr-q>yTJ z=*t-*DCUm)4;Xb|8~}AAa8q37M#yv002=IVLT>$VsX~Hv;6J$Kx_L3gvZJIBEh1SY z!q+1$PsBw(;-H5VX1F)nY}8`T5d(wu$Ln>!$X~bjlm-=|d`x^Tuw|cA&kvqNdP?yW zKgpuEfSMdN#L6kjTUIZP0RMe=&gKU<#qDH>TH{_>$_kwD!-E0SH|odcwu&@9*Ntzd zaSL^+19O&fhK(K~VYwcs9?N!UzGD^I+SS!s>3=CSY454mGam|gPA&XQ6Sjm5Dv9CantJU2NXR>AW(SJKsNen?5EJO`+4>bA4{gfKG^-uSWB zRgo3xIL#$SqpZ{(md9zs zR~*rl$H`{BS-UEA@6KPyMU{Bz_N0_GWw&ZBM15a&vP2QSj}xqe?A+ZK$(N6#nIeU~ z(xTA$vL+vn7VFGTh`?~ztVPOHWsw(c5wBAcC#B*DodlT@wPh|UrMV=8S5HXpg=)6v5Z+tBpt|lmEvL0|x#>(%~{$(0m zDdxueQxDi|pS{(Wk!77lF&oC~I&g=KHx&08q>@aNelQ(0QXy z;=2k2d*dOn(ZuVAQoh~Tr|pd3;OrI4ykX0Tv$uV^<8=o=Bbuzq*Xwm`OeGtj0 z1OO)ux(@PnS6n3ja~!Q$?peL;Sgzj^iCMN-Z8a;?g73ZQv8)g&!J}HsCR(uIM*jPD^ zK8kANGj0!EacLfIdzykM(e}Pze;&DN#n>(rU2DIhyBnKOA}Ia@;qprG)Ip>OtAS4% ze5q`DJgrbkzSEWXP7A?ab>reQZk1FuEdAntbk5Q7@IoFlh3#USil3H|@;X`7aXpj= zjIC5tKt!Y9b!iXuFSfcUa^iiG_9IoG0Akdd-4Io-dc8YZVCIv(np;v*4lY}ww>^oe z#F`l<5%t-&5x%>ujIa!sc=e(Ee6_THUXz7Q610VAHB>10z8K=Q94&O}?hpU=3#aE@ zb$(sEYS6PWK1*CjxaI-(M!-3x*U36Mq_lK0ga7uC6k%}VHv`k+v#=(s8a6z8Og>-) zZxMWMUo?9agVTcoI!V+8EjpbooDIg0=F0|Nz+iCW{(h_4kf?iY&>49a>>7lL->dNO zNi)j+z$S9(?@f568^570sx*hu8a%8!@O68(vls2<@Xx;GjA79t3@lO3F$R!fWfE;& zy}gX?x|He@suWoV3UDmEEnQHzVsr4-j&3Q$G#-RF@HKdr-=j#^RKQiQoPe*R@9J(s zqQFmY&)*mCNZ8jOwqrxt)`Y-^Q;rR8*OSl;K)DnJ>)LCuqVW3WuW+0b0D)l)SBah{GVfkq{8Ej`e#CM8&^wTAO*-n;U?t2AWD|r9x zN%=H1sks*&wN)&>HT3@F^lUf&m6q=j5UNiv+!*At5fHzHVE0+|-Asj5#sT*fD!dw? z<|ZypmygF=acL!UZTIM_O|~ulbUxI z$Fv?)Hc9@Ni_;@KV@$tI?(4LuD#|0ol~IvYBn&P@RI6$SR0u!A;@b^2b_bri_6;6n z_`r@^S#q}CkT?EuW@3*Fypi)VNnW>&n=~0NvJ+MWP!LQUDzP^MZq5xA3!E`EKBPGq zs#Vyrv(x|DDJdl)Cl=sUe6^BZN3#+Lx=>KHXT<2dLBlIL%0!FPhkl~7xCb=Z)3j!9Z zFN}yuMdIjxE|wP5iP+?!@E_6=W<@_ijPw2ZNxW@YCdZ5F=>XPjsV>k*oX=cbzj?c^qr#5 z=6e{k`*QPUOG^iU(sqJ8oaXqBbqw3Zr;f`baE~{5VmUEF#zT9Y3DIK$$(B4lH;?0b zw;4Q_IdFr$Jj$9kiQ)n?yAqp*s1;()UzYC6r*MI2&4JRcPNXEPg3DUF)dL(&k{xPY z6scfVcT~H`<|)s>il%U!$+pgnsP#@F?mkh7N=7)RL@|D2B~d9QlqlDMs!iB%XfIlj zq_RSDnsC_>t7w)3ijj@mwQV_9FFRzdff9RnGRCLM7KWpe?2r(4#B*3NrH1kz-&qa4 zIpk1Igj7m*jU8S}BCg;epH^bI(-%#a5(YN9?VFhApVDPBs4VEb{LfS|P1q>F-Zt!Np(@_y8K`dd z$0|HH$EUCn1 zY|M6o=NA%idajlmKzvVp?~T?;2{CcM$Ao)M s?R7!jTqFsU1a$766T{#0e0w9;*5RZr_r1P?{nZX2FRda~DPbD&KX`cMa{vGU diff --git a/pythonrewrite/plugins/plugin_manager/lang/en.hdf b/pythonrewrite/plugins/plugin_manager/lang/en.hdf deleted file mode 100644 index c1c7856..0000000 --- a/pythonrewrite/plugins/plugin_manager/lang/en.hdf +++ /dev/null @@ -1,15 +0,0 @@ -Name = Plugin Manager -Link = Manage plugins - -Title.PluginManager = Plugin Manager - -Button.SaveSettings = Save settings - -Text { - PluginName = Plugin - PluginRank = Priority - PluginEnabled = Enabled? - RequestsAuth = Requires admin? - VolumePlugins = Volume plugins - SystemPlugins = System plugins -} diff --git a/pythonrewrite/plugins/plugin_manager/plugin_icon.png b/pythonrewrite/plugins/plugin_manager/plugin_icon.png deleted file mode 100644 index 236169c602af7a41ecfa7f18eea0a4bff0c7408d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 631 zcmV--0*L*IP)wF@bTE5(h_ zjTUqv=)#52;zs-r3SGEX+;wHeNNhwUVnMOiVhc8D8;yC*BzLY0@5HHEN$p0|0~hXN z?sw+J!AORRE$>x;kju@jC_9o=Y_$67IxFwxe`5<_390%-QG4b`(fUs>Dy8u~#`bfG< z3v&7L*>&KVd{$=iS-HGc2r`NL40Hv05I77RQuBVGx9l{TP4{fbDm^e1TwVuKKmn)% zQU_RgKBGB~W8!(yh^|MYmTB0Q)xM?0lX$fXjobqmxe^2%1wH{a;4@GH9KV8efT?R2 zHC$IWM9YW?*GLIh-`%Y9vE>2KcV+}pT4lBFuyd`@-UrIS98gpV%0PV`__@0eH#8tK zxQEKU+nBurthgTT+tHTeOg{V7 zuzmd`ZA~Ofb$|p(G{H=sx)dU@P_Xr z5N>*Ma=O&04o=UF0X*5Cr~FOx^8uZIFtn2wWdSKGtQ`%7LVZb%n*b#t#~tD2fOo25 z8j5vQDbW#lNImZukOaEbkiZhKs47K#-^e!83pAA^0(7apN&xr|ZMpwed;#r);jz2X Rq*MR^002ovPDHLkV1kwF9P|JH diff --git a/pythonrewrite/plugins/plugin_manager/plugin_list.cs b/pythonrewrite/plugins/plugin_manager/plugin_list.cs deleted file mode 100644 index 7449f3e..0000000 --- a/pythonrewrite/plugins/plugin_manager/plugin_list.cs +++ /dev/null @@ -1,65 +0,0 @@ - - - - - -

- - - - - - -

-

- - - - - - - - - - - - - -
checked="checked" />checked="checked" />

- - -

-

- - - - - - - - - - - - - -
checked="checked" />checked="checked" />

- -

- - - -

- - diff --git a/pythonrewrite/plugins/plugin_manager/plugin_manager.py b/pythonrewrite/plugins/plugin_manager/plugin_manager.py deleted file mode 100644 index 3b6a839..0000000 --- a/pythonrewrite/plugins/plugin_manager/plugin_manager.py +++ /dev/null @@ -1,52 +0,0 @@ -import CryptoBoxPlugin - - -class plugin_manager(CryptoBoxPlugin.CryptoBoxPlugin): - - pluginCapabilities = [ "system" ] - requestAuth = True - rank = 90 - - def doAction(self, store=None, **args): - import re - if store: - for key in args.keys(): - if key.endswith("_listed"): - if not re.search(u'\W',key): - self.__setConfig(key[:-7], args) - else: - self.cbox.log.info("plugin_manager: invalid plugin name (%s)" % str(key[:-7])) - try: - self.cbox.prefs.pluginConf.write() - except IOError: - self.cbox.log.warn("failed to write plugin configuration") - return "plugin_list" - - - def getStatus(self): - return "no status" - - - def __setConfig(self, name, args): - setting = {} - setting["enabled"] = False - try: - if args[name + "_enabled"]: - setting["enabled"] = True - except KeyError: - pass - setting["rank"] = "80" - try: - r = int(args[name + "_rank"]) - if r>=0 and r<=100: - setting["rank"] = r - except KeyError, ValueError: - pass - setting["requestAuth"] = False - try: - if args[name + "_auth"]: - setting["requestAuth"] = True - except KeyError, ValueError: - pass - self.cbox.prefs.pluginConf[name] = setting - diff --git a/pythonrewrite/plugins/plugin_manager/unittests.py b/pythonrewrite/plugins/plugin_manager/unittests.py deleted file mode 100644 index 93d61bc..0000000 --- a/pythonrewrite/plugins/plugin_manager/unittests.py +++ /dev/null @@ -1,12 +0,0 @@ -import WebInterfaceTestClass - -class unittests(WebInterfaceTestClass.WebInterfaceTestClass): - - def test_read_form(self): - url = self.URL + "plugin_manager?weblang=en" - self.register_auth(url) - self.cmd.go(url) - self.cmd.find('Plugin Manager') - self.cmd.find('System plugins') - self.cmd.find('Volume plugins') - diff --git a/pythonrewrite/plugins/shutdown/form_shutdown.cs b/pythonrewrite/plugins/shutdown/form_shutdown.cs deleted file mode 100644 index 306ffd1..0000000 --- a/pythonrewrite/plugins/shutdown/form_shutdown.cs +++ /dev/null @@ -1,15 +0,0 @@ - - -

- - - -
- - icon: shutdown
- -
- - icon: reboot
diff --git a/pythonrewrite/plugins/shutdown/gnome-reboot.png b/pythonrewrite/plugins/shutdown/gnome-reboot.png deleted file mode 100644 index 1556089ccfb1ae03d2b839fb003e3f52c23306a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3752 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 SnSu2H0000Ul5 diff --git a/pythonrewrite/plugins/shutdown/lang/en.hdf b/pythonrewrite/plugins/shutdown/lang/en.hdf deleted file mode 100644 index 2356e4a..0000000 --- a/pythonrewrite/plugins/shutdown/lang/en.hdf +++ /dev/null @@ -1,34 +0,0 @@ -Name = Shutdown or reboot the computer -Link = Shutdown - -Title.Shutdown = Shutdown computer -Title.ProgressShutdown = The CryptoBox is shutting down -Title.ProgressReboot = The CryptoBox is rebooting - -Button.Shutdown = Poweroff -Button.Reboot = Reboot - - -SuccessMessage { - Shutdown { - Title = Shutting down the system - Text = If the computer does not turn off itself within a minute, then you should plug it off manually. - } - - Reboot { - Title = Rebooting the system - Text = This may take a while (depending on your hardware) ... - } -} - -WarningMessage { - ShutdownFailed { - Title = Shutdown failed - Text = Shutting down of the system failed for some reason - sorry! - } - - RebootFailed { - Title = Reboot failed - Text = Reboot of the system failed for some reason - sorry! - } -} diff --git a/pythonrewrite/plugins/shutdown/plugin_icon.png b/pythonrewrite/plugins/shutdown/plugin_icon.png deleted file mode 100644 index 9d537e73815b3c3935d21cd28cdceac75db6f27b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7588 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 - -

- - - diff --git a/pythonrewrite/plugins/shutdown/progress_shutdown.cs b/pythonrewrite/plugins/shutdown/progress_shutdown.cs deleted file mode 100644 index a4afd10..0000000 --- a/pythonrewrite/plugins/shutdown/progress_shutdown.cs +++ /dev/null @@ -1,6 +0,0 @@ - - -

- - - diff --git a/pythonrewrite/plugins/shutdown/root_action.py b/pythonrewrite/plugins/shutdown/root_action.py deleted file mode 100755 index 9aa553b..0000000 --- a/pythonrewrite/plugins/shutdown/root_action.py +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env python2.4 - -## necessary: otherwise CryptoBoxRootActions.py will refuse to execute this script -PLUGIN_TYPE = "cryptobox" - -SHUTDOWN_BIN = "/sbin/shutdown" - -## delay (in seconds) before shutdown -SHUTDOWN_DELAY = 3 - -import subprocess -import sys - - -def call_prog(progy): - proc = subprocess.Popen( - shell = False, - args = progy) - proc.communicate() - return proc.returncode == 0 - - -if __name__ == "__main__": - args = sys.argv[1:] - - self_bin = sys.argv[0] - - if len(args) > 1: - sys.stderr.write("%s: too many arguments (%s)\n" % (self_bin, args)) - sys.exit(1) - - if len(args) == 0: - sys.stderr.write("%s: no argument supplied\n" % self_bin) - sys.exit(1) - - if args[0] == "reboot": - result = call_prog([SHUTDOWN_BIN, "-t", str(SHUTDOWN_DELAY), "-r", "now"]) - elif args[0] == "shutdown": - result = call_prog([SHUTDOWN_BIN, "-t", str(SHUTDOWN_DELAY), "-h", "now"]) - else: - sys.stderr.write("%s: illegal argument (%s)\n" % (self_bin, args[0])) - sys.exit(1) - - if result: - sys.exit(0) - else: - sys.exit(1) - diff --git a/pythonrewrite/plugins/shutdown/shutdown.py b/pythonrewrite/plugins/shutdown/shutdown.py deleted file mode 100644 index 0638058..0000000 --- a/pythonrewrite/plugins/shutdown/shutdown.py +++ /dev/null @@ -1,51 +0,0 @@ -import CryptoBoxPlugin - -REDIRECT_DELAY = 180 - -class shutdown(CryptoBoxPlugin.CryptoBoxPlugin): - - pluginCapabilities = [ "system", "menu" ] - requestAuth = False - rank = 90 - - def doAction(self, type=None): - if not type: - return "form_shutdown" - elif type == "shutdown": - if self.__doShutdown("shutdown"): - self.hdf["Data.Success"] = "Plugins.shutdown.Shutdown" - return "progress_shutdown" - else: - self.hdf["Data.Warning"] = "Plugins.shutdown.ShutdownFailed" - return "form_shutdown" - elif type == "reboot": - if self.__doShutdown("reboot"): - self.hdf["Data.Success"] = "Plugins.shutdown.Reboot" - self.hdf["Data.Redirect.URL"] = "" - self.hdf["Data.Redirect.Delay"] = REDIRECT_DELAY - return "progress_reboot" - else: - self.hdf["Data.Warning"] = "Plugins.shutdown.RebootFailed" - return "form_shutdown" - else: - return "form_shutdown" - - - def getStatus(self): - return "the box is up'n'running" - - - def __doShutdown(self, action): - import subprocess - import os - proc = subprocess.Popen( - shell = False, - args = [ - self.cbox.prefs["Programs"]["super"], - self.cbox.prefs["Programs"]["CryptoBoxRootActions"], - "plugin", - os.path.join(self.pluginDir, "root_action.py"), - action]) - proc.wait() - return proc.returncode == 0 - diff --git a/pythonrewrite/plugins/shutdown/unittests.py b/pythonrewrite/plugins/shutdown/unittests.py deleted file mode 100644 index baa0308..0000000 --- a/pythonrewrite/plugins/shutdown/unittests.py +++ /dev/null @@ -1,11 +0,0 @@ -import WebInterfaceTestClass - -class unittests(WebInterfaceTestClass.WebInterfaceTestClass): - - def test_read_form(self): - url = self.URL + "shutdown" - self.register_auth(url) - self.cmd.go(url) - self.cmd.find('shutdown\?type=reboot') - self.cmd.find('shutdown\?type=shutdown') - diff --git a/pythonrewrite/plugins/system_preferences/lang/en.hdf b/pythonrewrite/plugins/system_preferences/lang/en.hdf deleted file mode 100644 index 2beeec5..0000000 --- a/pythonrewrite/plugins/system_preferences/lang/en.hdf +++ /dev/null @@ -1,5 +0,0 @@ -Name = System preferences -Link = Preferences - -Title.Preferences = Preferences - diff --git a/pythonrewrite/plugins/system_preferences/plugin_icon.png b/pythonrewrite/plugins/system_preferences/plugin_icon.png deleted file mode 100644 index 1355333906b55d31fca9210e939d055af84303b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12762 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 OKpHB#%C(BN(fj8oQ diff --git a/pythonrewrite/plugins/system_preferences/show_plugins.cs b/pythonrewrite/plugins/system_preferences/show_plugins.cs deleted file mode 100644 index b39f6a1..0000000 --- a/pythonrewrite/plugins/system_preferences/show_plugins.cs +++ /dev/null @@ -1,15 +0,0 @@ - - -

- - - - - - - - diff --git a/pythonrewrite/plugins/system_preferences/system_preferences.py b/pythonrewrite/plugins/system_preferences/system_preferences.py deleted file mode 100644 index df86e14..0000000 --- a/pythonrewrite/plugins/system_preferences/system_preferences.py +++ /dev/null @@ -1,16 +0,0 @@ -import CryptoBoxPlugin - -class system_preferences(CryptoBoxPlugin.CryptoBoxPlugin): - - pluginCapabilities = [ "menu" ] - requestAuth = False - rank = 20 - - def doAction(self): - return "show_plugins" - - - def getStatus(self): - return "TODO" - - diff --git a/pythonrewrite/plugins/system_preferences/unittests.py b/pythonrewrite/plugins/system_preferences/unittests.py deleted file mode 100644 index 5e0e862..0000000 --- a/pythonrewrite/plugins/system_preferences/unittests.py +++ /dev/null @@ -1,8 +0,0 @@ -import WebInterfaceTestClass - -class unittests(WebInterfaceTestClass.WebInterfaceTestClass): - - def test_preferences_overview(self): - self.cmd.go(self.URL + "system_preferences?weblang=en") - self.cmd.find("Preferences") - diff --git a/pythonrewrite/plugins/user_manager/lang/en.hdf b/pythonrewrite/plugins/user_manager/lang/en.hdf deleted file mode 100644 index 3d99c44..0000000 --- a/pythonrewrite/plugins/user_manager/lang/en.hdf +++ /dev/null @@ -1,51 +0,0 @@ -Name = User Manager -Link = Manage users - -Title { - UserManager = Manage users - AddUser = Add new user - DelUser = Remove user - ChangePassword = Change password -} - -Button { - AddUser = Add new user - DelUser = Remove - ChangePassword = Change password -} - -Text { - NewUser = Name of the new user - DelUser = User to remove - ChangePasswordUser = Change user's password -} - -SuccessMessage { - UserAdded { - Title = User added - Text = The new user was added successfully. - } - - UserRemoved { - Title = User removed - Text = The user was removed successfully. - } - - PasswordChanged { - Title = Password changed - Text = The password was changed successfully. - } -} - - -WarningMessage { - InvalidUserName { - Title = Invalid username - Text = The choosen username is invalid: only letters and digits are allowed. - } - - UserAlreadyExists { - Title = User exists - Text = The choosen username does already exist. Please choose another one. - } -} diff --git a/pythonrewrite/plugins/user_manager/plugin_icon.png b/pythonrewrite/plugins/user_manager/plugin_icon.png deleted file mode 100644 index e035d2b1c3eb33e618d627fc86bd09afbb26562d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10613 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 diff --git a/pythonrewrite/plugins/user_manager/unittests.py b/pythonrewrite/plugins/user_manager/unittests.py deleted file mode 100644 index d2622f2..0000000 --- a/pythonrewrite/plugins/user_manager/unittests.py +++ /dev/null @@ -1,27 +0,0 @@ -import WebInterfaceTestClass - -## this user may not be removed -from user_manager import RESERVED_USERS - -class unittests(WebInterfaceTestClass.WebInterfaceTestClass): - - def test_read_users(self): - cur_users = self._getUsers() - # self.cmd.showforms() - - - def _addUser(self, user, password): - self._gotPage() - ## TODO: finish - - - def _gotoPage(self): - url = self.URL + "user_manager" - self.register_auth(url) - self.cmd.go(url) - - - def _getUsers(self): - self._gotoPage() - self.cmd.find("Data.Status.Plugins.user_manager=([\w/]+)") - return self.locals["__match__"].split("/") diff --git a/pythonrewrite/plugins/user_manager/user_list.cs b/pythonrewrite/plugins/user_manager/user_list.cs deleted file mode 100644 index 9938ecc..0000000 --- a/pythonrewrite/plugins/user_manager/user_list.cs +++ /dev/null @@ -1,82 +0,0 @@ - - - - - -

- - - - - -

-

- - - - - - - - - - - -
-
-
- - -
- -

- - -

-

- - - - - - - - - - - -
-
-
- - -
- -

- - - 1 ?> -

-

-
- - - - -
-

- - diff --git a/pythonrewrite/plugins/user_manager/user_manager.py b/pythonrewrite/plugins/user_manager/user_manager.py deleted file mode 100644 index 088060f..0000000 --- a/pythonrewrite/plugins/user_manager/user_manager.py +++ /dev/null @@ -1,81 +0,0 @@ -import CryptoBoxPlugin - -RESERVED_USERS = [ "admin" ] - -class user_manager(CryptoBoxPlugin.CryptoBoxPlugin): - - pluginCapabilities = [ "system" ] - requestAuth = True - rank = 45 - - def doAction(self, store=None, user=None, new_pw=None, new_pw2=None): - import re - adminDict = self.cbox.prefs.userDB["admins"] - self.__cleanHDF() - if store is None: - pass - elif store == "add_user": - if (user is None) or (re.search(u'\W', user)): - self.hdf["Data.Warning"] = "Plugins.user_manager.InvalidUserName" - elif not new_pw: - self.hdf["Data.Warning"] = "EmptyNewPassword" - elif new_pw != new_pw2: - self.hdf["Data.Warning"] = "DifferentPasswords" - elif user in adminDict.keys(): - self.hdf["Data.Warning"] = "Plugins.user_manager.UserAlreadyExists" - else: - adminDict[user] = self.cbox.prefs.userDB.getDigest(new_pw) - self.hdf["Data.Success"] = "Plugins.user_manager.UserAdded" - try: - self.cbox.prefs.userDB.write() - except IOError: - self.cbox.log.warn("failed to write user database") - elif store == "change_password": - if not new_pw: - self.hdf["Data.Warning"] = "EmptyNewPassword" - elif new_pw != new_pw2: - self.hdf["Data.Warning"] = "DifferentPasswords" - elif user in adminDict.keys(): - adminDict[user] = self.cbox.prefs.userDB.getDigest(new_pw) - self.hdf["Data.Success"] = "Plugins.user_manager.PasswordChanged" - try: - self.cbox.prefs.userDB.write() - except IOError: - self.cbox.log.warn("failed to write user database") - else: - self.cbox.log.info("user_manager: invalid user choosen (%s)" % str(user)) - elif store == "del_user": - if user in RESERVED_USERS: - self.cbox.log.info("user_manager: tried to remove reserved user (%s)" % user) - elif user in adminDict.keys(): - del adminDict[user] - self.hdf["Data.Success"] = "Plugins.user_manager.UserAdded" - try: - self.cbox.prefs.userDB.write() - except IOError: - self.cbox.log.warn("failed to write user database") - else: - self.cbox.log.info("user_manager: tried to remove non-existing user (%s)" % str(user)) - else: - self.cbox.log.info("user_manager: invalid value of 'store' (%s)" % store) - self.__prepareHDF(adminDict) - return "user_list" - - - def getStatus(self): - return "/".join(self.cbox.prefs.userDB["admins"].keys()) - - - def __cleanHDF(self): - for key in self.hdf.keys(): - del self.hdf[key] - - - def __prepareHDF(self, dict): - ## sort by name - users = dict.keys() - users.sort() - ## export all users - for name in users: - self.hdf[self.hdf_prefix + "Users." + name] = name - diff --git a/pythonrewrite/plugins/volume_details/lang/en.hdf b/pythonrewrite/plugins/volume_details/lang/en.hdf deleted file mode 100644 index 36a95ca..0000000 --- a/pythonrewrite/plugins/volume_details/lang/en.hdf +++ /dev/null @@ -1,20 +0,0 @@ -Name = Technical details of a volume -Link = Details - -Title.Details = Technical details - -Text { - DeviceName = Name of device - Status = Status - StatusActive = active - StatusPassive = passive - EncryptionStatus = Encryption - Yes = Yes - No = No - Size { - All = Space of volume - Avail = Available space of volume - Used = Used space of volume - } -} - diff --git a/pythonrewrite/plugins/volume_details/plugin_icon.png b/pythonrewrite/plugins/volume_details/plugin_icon.png deleted file mode 100644 index d15b3b3b0c8cedbf0dcdf195f4409420739b4acd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11235 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 - - - -

- - - -

    -
  • :
  • -
  • :
  • -
  • :
  • -
  • :
  • - -
  • :
  • -
  • :
  • -
  • : %
  • - -

- - diff --git a/pythonrewrite/plugins/volume_details/volume_details.py b/pythonrewrite/plugins/volume_details/volume_details.py deleted file mode 100644 index 40d82db..0000000 --- a/pythonrewrite/plugins/volume_details/volume_details.py +++ /dev/null @@ -1,18 +0,0 @@ -import CryptoBoxPlugin - - -class volume_details(CryptoBoxPlugin.CryptoBoxPlugin): - - pluginCapabilities = [ "volume" ] - requestAuth = False - rank = 100 - - - def doAction(self): - ## all variables are already set somewhere else - return "volume_details" - - - def getStatus(self): - return "no status" - diff --git a/pythonrewrite/plugins/volume_mount/lang/en.hdf b/pythonrewrite/plugins/volume_mount/lang/en.hdf deleted file mode 100644 index c2805b0..0000000 --- a/pythonrewrite/plugins/volume_mount/lang/en.hdf +++ /dev/null @@ -1,56 +0,0 @@ -Name = Mount and umount volumes -Link = Activation - - -Title { - Mount = Activate volume - Umount = Deactivate volume -} - - -Button { - Mount = Activate volume - Umount = Deactivate volume -} - - -SuccessMessage { - MountDone { - Title = Encrypted filesystem activated - Text = The encrypted filesystem is now available. - } - - UmountDone { - Title = Encrypted filesystem deactivated - Text = The encrypted filesystem is now secured from all forms of access. - } -} - - -WarningMessage { - MountFailed { - Title = Activation failed - Text = The encrypted filesystem could not be activated. Probably the given password was wrong. Please try again. - } - - MountCryptoFailed { - Title = Activation failed - Text = Maybe you entered the wrong password? - } - - UmountFailed { - Title = Deactivation failed - Text = The encrypted filesystem could not be deactivated. Probably some files are still in use. Close all unclean programs (for example that widely used word processor). In case of emergency just shut down the CryptoBox! - } - - IsAlreadyMounted { - Title = Already active - Text = The volume is already active. - } - - IsNotMounted { - Title = Inactive - Text = The volume is currently not active. - } - -} diff --git a/pythonrewrite/plugins/volume_mount/plugin_icon.png b/pythonrewrite/plugins/volume_mount/plugin_icon.png deleted file mode 100644 index 952890b56cc3b8f2f2fc8c88d7b9894200f67183..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4535 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 Yj~|IGcjuIYKUn}>O}#r+NSm<#0TiB&^Z)<= diff --git a/pythonrewrite/plugins/volume_mount/unittests.py b/pythonrewrite/plugins/volume_mount/unittests.py deleted file mode 100644 index 9a3e1ee..0000000 --- a/pythonrewrite/plugins/volume_mount/unittests.py +++ /dev/null @@ -1,10 +0,0 @@ -import WebInterfaceTestClass - -class unittests(WebInterfaceTestClass.WebInterfaceTestClass): - - def test_read_form(self): - url = self.URL + "volume_mount?weblang=en&device=%2Fdev%2Floop1" - self.register_auth(url) - self.cmd.go(url) - self.cmd.find('ctivate volume') - diff --git a/pythonrewrite/plugins/volume_mount/volume_mount.cs b/pythonrewrite/plugins/volume_mount/volume_mount.cs deleted file mode 100644 index 407eb21..0000000 --- a/pythonrewrite/plugins/volume_mount/volume_mount.cs +++ /dev/null @@ -1,18 +0,0 @@ -

- - - -

- - - - - - - - - - - -

- diff --git a/pythonrewrite/plugins/volume_mount/volume_mount.py b/pythonrewrite/plugins/volume_mount/volume_mount.py deleted file mode 100644 index 4fc3922..0000000 --- a/pythonrewrite/plugins/volume_mount/volume_mount.py +++ /dev/null @@ -1,103 +0,0 @@ -import CryptoBoxPlugin -from CryptoBoxExceptions import * - - -class volume_mount(CryptoBoxPlugin.CryptoBoxPlugin): - - pluginCapabilities = [ "volume" ] - requestAuth = False - rank = 0 - - - def doAction(self, action=None, pw=None): - self.container = self.cbox.getContainer(self.device) - if action == "mount_plain": - return self.__doMountPlain() - elif action == "mount_luks": - return self.__doMountLuks(pw) - elif action == "umount": - return self.__doUmount() - elif not action: - return "volume_status" - else: - self.cbox.log.info("plugin 'volume_mount' - unknown action: %s" % action) - return None - - - def getStatus(self): - container = self.cbox.getContainer(self.device) - if not self.container: - return "invalid device" - if container.isMounted(): - return "active" - else: - return "passive" - - - def __doMountPlain(self): - if self.container.isMounted(): - self.hdf["Data.Warning"] = "Plugins.volume_mount.IsAlreadyMounted" - self.cbox.log.info("the device (%s) is already mounted" % self.device) - return "volume_status" - if self.container.getType() != self.container.Types["plain"]: - ## not a plain container - fail silently - self.cbox.log.info("plugin 'volume_mount' - invalid container type") - return "volume_status" - try: - self.container.mount() - except CBMountError, errMsg: - self.hdf["Data.Warning"] = "Plugins.volume_mount.MountFailed" - self.cbox.log.warn("failed to mount the device (%s): %s" % (self.device, errMsg)) - return "volume_status" - except CBContainerError, errMsg: - self.hdf["Data.Warning"] = "Plugins.volume_mount.MountFailed" - self.cbox.log.warn("failed to mount the device (%s): %s" % (self.device, errMsg)) - return "volume_status" - self.cbox.log.info("successfully mounted the volume: %s" % self.device) - self.hdf["Data.Success"] = "Plugins.volume_mount.MountDone" - return "volume_status" - - - def __doMountLuks(self, pw): - if self.container.isMounted(): - self.hdf["Data.Warning"] = "Plugins.volume_mount.IsAlreadyMounted" - self.cbox.log.info("the device (%s) is already mounted" % self.device) - return "volume_status" - if not pw: - self.dataset["Data.Warning"] = "EmptyPassword" - self.log.info("no password was supplied for mounting of device: '%s'" % self.device) - return "volume_status" - if self.container.getType() != self.container.Types["luks"]: - ## not a luks container - fail silently - self.cbox.log.info("plugin 'volume_mount' - invalid container type") - return "volume_status" - try: - self.container.mount(pw) - except CBMountError, errMsg: - self.hdf["Data.Warning"] = "Plugins.volume_mount.MountCryptoFailed" - self.cbox.log.warn("failed to mount the device (%s): %s" % (self.device, errMsg)) - return "volume_status" - except CBContainerError, errMsg: - self.hdf["Data.Warning"] = "Plugins.volume_mount.MountCryptoFailed" - self.cbox.log.warn("failed to mount the device (%s): %s" % (self.device, errMsg)) - return "volume_status" - self.cbox.log.info("successfully mounted the volume: %s" % self.device) - self.hdf["Data.Success"] = "Plugins.volume_mount.MountDone" - return "volume_status" - - - def __doUmount(self): - if not self.container.isMounted(): - self.hdf["Data.Warning"] = "Plugins.volume_mount.IsNotMounted" - self.cbox.log.info("the device (%s) is currently not mounted" % self.device) - return "volume_status" - try: - self.container.umount() - except CBUmountError, errMsg: - self.hdf["Data.Warning"] = "InvalidType" - self.cbox.log.warn("could not umount the volume (%s): %s" % (self.device, errMsg)) - return "volume_status" - self.cbox.log.info("successfully unmounted the container: %s" % self.device) - self.hdf["Data.Success"] = "Plugins.volume_mount.UmountDone" - return "volume_status" - diff --git a/pythonrewrite/plugins/volume_mount/volume_status.cs b/pythonrewrite/plugins/volume_mount/volume_status.cs deleted file mode 100644 index 724af1a..0000000 --- a/pythonrewrite/plugins/volume_mount/volume_status.cs +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/pythonrewrite/plugins/volume_mount/volume_umount.cs b/pythonrewrite/plugins/volume_mount/volume_umount.cs deleted file mode 100644 index 6002510..0000000 --- a/pythonrewrite/plugins/volume_mount/volume_umount.cs +++ /dev/null @@ -1,10 +0,0 @@ -

- - - - -

- -

- - diff --git a/pythonrewrite/plugins/volume_props/lang/en.hdf b/pythonrewrite/plugins/volume_props/lang/en.hdf deleted file mode 100644 index 55bbfcc..0000000 --- a/pythonrewrite/plugins/volume_props/lang/en.hdf +++ /dev/null @@ -1,63 +0,0 @@ -Name = Volume properties -Link = Properties - -Title { - Properties = Properties - ChangeVolumeName = Change the name of this volume - ChangePassword = Change the password of this volume - Encryption = Encryption -} - - -Button { - ContainerNameSet = Change name - ChangePassword = Change password - FormatContainer = Format volume -} - - -Text.FormatForEncryptionSupport = This volume is not encrypted. If you want to turn on encryption, then you have to format the volume. Beware: this will destroy all data of this container. - - -AdviceMessage { - UmountBeforeProps { - Text = You must deactivate a volume, if you want to change its properties. - Link.Text = Deactive volume now - Link.Rel = volume_mount - Link.Attr1.name = action - Link.Attr1.value = umount - Link.Attr2.name = redirect - Link.Attr2.value = volume_props - } -} - - -SuccessMessage { - PasswordChange { - Title = Password changed - Text = The password of this volume was changed successfully. - } -} - - -WarningMessage { - InvalidVolumeName { - Title = Changing of container's name failed - Text = The supplied new name of the container was invalid. Please try again! - } - - SetVolumeNameFailed { - Title = Changing of container's name failed - Text = Could not change the name of the container. Take a look at the log files for details. - } - - VolumeNameIsInUse { - Title = Volume name is in use - Text = Another volume with the same name is active. - } - - PasswordChange { - Title = Could not change password - Text = The password of this volume could not be changed - sorry! - } -} diff --git a/pythonrewrite/plugins/volume_props/plugin_icon.png b/pythonrewrite/plugins/volume_props/plugin_icon.png deleted file mode 100644 index 20d6d5965679424327cfd1d114a510efc8034c09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15249 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 - - - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

-
- - - -
-

-
- - - -
-

-
- - -
- - - - diff --git a/pythonrewrite/plugins/volume_props/volume_props.py b/pythonrewrite/plugins/volume_props/volume_props.py deleted file mode 100644 index 605dc75..0000000 --- a/pythonrewrite/plugins/volume_props/volume_props.py +++ /dev/null @@ -1,81 +0,0 @@ -import CryptoBoxPlugin -from CryptoBoxExceptions import * - - -class volume_props(CryptoBoxPlugin.CryptoBoxPlugin): - - pluginCapabilities = [ "volume" ] - requestAuth = False - rank = 40 - - - def doAction(self, store=None, vol_name=None, old_pw=None, new_pw=None, new_pw2=None): - self.container = self.cbox.getContainer(self.device) - if not self.container: - return None - self.__prepareHDF() - if store == "set_name": - return self.__setVolumeName(vol_name) - elif store == "change_pw": - return self.__changePassword(old_pw, new_pw, new_pw2) - elif not store: - return "volume_properties" - else: - self.cbox.log.info("plugin 'volume_props' - unknown action: %s" % store) - return "volume_properties" - - - def getStatus(self): - self.container = self.cbox.getContainer(self.device) - if not self.container: - return "invalid device" - return "name=%s" % self.container.getName() - - - def __prepareHDF(self): - self.hdf[self.hdf_prefix + "vol_name"] = self.container.getName() - - - def __setVolumeName(self, vol_name): - if not vol_name: - self.hdf["Data.Warning"] = "Plugins.volume_props.InvalidVolumeName" - return "volume_properties" - if vol_name == self.container.getName(): - ## nothing has to be done - return "volume_properties" - try: - self.container.setName(vol_name) - except CBInvalidName: - self.hdf["Data.Warning"] = "Plugins.volume_props.InvalidVolumeName" - except CBNameActivelyUsed: - self.hdf["Data.Warning"] = "Plugins.volume_props.VolumeNameIsInUse" - except CBContainerError: - self.hdf["Data.Warning"] = "Plugins.volume_props.SetVolumeNameFailed" - ## reread the volume name - self.__prepareHDF() - return "volume_properties" - - - def __changePassword(self, old_pw, new_pw, new_pw2): - if not old_pw: - self.hdf["Data.Warning"] = "EmptyPassword" - elif not new_pw: - self.hdf["Data.Warning"] = "EmptyNewPassword" - elif new_pw != new_pw2: - self.hdf["Data.Warning"] = "DifferentPasswords" - elif old_pw == new_pw: - ## do nothing - pass - else: - try: - self.container.changePassword(old_pw, new_pw) - except CBInvalidType, errMsg: - self.cbox.log.info("plugin 'volume_props' - cannot change passphrase for non-encrypted container (%s): %s" % (self.device, errMsg)) - except CBVolumeIsActive: - self.hdf["Data.Warning"] = "VolumeMayNotBeMounted" - except CBChangePasswordError, errMsg: - self.cbox.log.warn("plugin 'volume_props' - cannot change password for device (%s): %s" % (self.device, errMsg)) - self.hdf["Data.Warning"] = "Plugins.volume_props.PasswordChange" - else: - self.hdf["Data.Success"] = "Plugins.volume_props.PasswordChange" - return "volume_properties" diff --git a/pythonrewrite/scripts/check_languages.py b/pythonrewrite/scripts/check_languages.py deleted file mode 100755 index 3004c13..0000000 --- a/pythonrewrite/scripts/check_languages.py +++ /dev/null @@ -1,106 +0,0 @@ -#!/usr/bin/env python2.4 -# -# $Id$ -# -# compare translated language files with the master (english) language files -# it is useful for finding incomplete translations -# -# Copyright (c) 02006 sense.lab -# -# License: This script is distributed under the terms of version 2 -# of the GNU GPL. See the LICENSE file included with the package. -# -# Parameter: LANGUAGE (e.g. "de") -# - -import os, sys -try: - import neo_cgi, neo_util -except ImportError, errMsg: - sys.stderr.write("Could not import the python clearsilver module: %s\n" % (errMsg,)) - sys.stderr.write("Maybe you should try 'apt-get install python-clearsilver'?\n") - sys.exit(1) - -SUFFIX = ".hdf" -DEFAULT_LANGUAGE = "en" - - -def getHDFkeys(hdf): - import types - if type(hdf.dump()) == types.NoneType: return [] - return [e.split(" = ",1)[0].strip() for e in hdf.dump().splitlines()] - - -def compareFiles(langFile1, langFile2): - ## check for existence of files - for filename in (langFile2, langFile1): - if not os.path.exists(filename): - sys.stderr.write("could not find language file: %s\n" % filename) - return - - ## check if the files are the same - if langFile1 == langFile2: - sys.stderr.write("cannot compare the language file with itself: %s\n" % langFile1) - return - - print "Comparing '%s' and '%s':" % (langFile1, langFile2) - - hdf1 = neo_util.HDF() - hdf1.readFile(langFile1) - hdf2 = neo_util.HDF() - hdf2.readFile(langFile2) - - hdfKeys1 = getHDFkeys(hdf1) - hdfKeys2 = getHDFkeys(hdf2) - - ## check for empty language data sets - for (keys, filename) in ((hdfKeys1, langFile1), (hdfKeys2, langFile2)): - if len(keys) == 0: - sys.stderr.write("\tthe language file is empty: %s\n" % filename) - return - - ## check for missing keys (only part of the first (master) file) - for key in hdfKeys1: - if not key in hdfKeys2: - print "\tmissing key: %s" % key - - ## check for superfluous keys (only part of the second file) - for key in hdfKeys2: - if not key in hdfKeys1: - print "\tsuperfluous key: %s" % key - - -def find_lang_file(arg, dirname, fnames): - lfile = os.path.join(dirname, arg["fname"]) - if os.path.isfile(lfile): - arg["list"].append(lfile) - - - -############ main ############# -if "__main__" != __name__: - sys.exit(0) - -args = sys.argv[1:] - -## check parameters -if len(args) != 1: - sys.stderr.write("invalid number of parameters: a language name is required\n") - sys.exit(1) - - -language = args[0] - -if language == DEFAULT_LANGUAGE: - sys.stderr.write("you must specify a language different from the default (%s)!\n" % DEFAULT_LANGUAGE) - sys.exit(1) - -obj = { "fname":"%s%s" % (DEFAULT_LANGUAGE, SUFFIX), - "list": [] } - -os.path.walk(os.getcwd(), find_lang_file, obj) - -for langFile in obj["list"]: - refLang = langFile.replace("/%s%s" % (DEFAULT_LANGUAGE, SUFFIX), "/%s%s" % (language, SUFFIX)) - compareFiles(refLang, langFile) - diff --git a/pythonrewrite/scripts/debian b/pythonrewrite/scripts/debian deleted file mode 100755 index 95498a8..0000000 --- a/pythonrewrite/scripts/debian +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 02005 sense.lab -# -# License: This script is distributed under the terms of version 2 -# of the GNU GPL. See the LICENSE file included with the package. -# -# $Id: cbox-build.sh 336 2005-11-29 22:28:28Z lars $ -# -# build a debian package -# - -set -ue - -# include common functions and settings -source $(dirname $0)/common.sh.inc - -######### some settings ########### -DEB_BUILD_DIR=/tmp/cryptobox-debian-$$ -[ -e "$DEB_BUILD_DIR" ] && rm -rf "$DEB_BUILD_DIR" - -DEB_CONTROL_DIR=$ROOT_DIR/DEBIAN -DEB_PACKAGE_DIR=$ROOT_DIR/packages - -############# do it ############### - -ACTION=build -[ $# -gt 0 ] && ACTION=$1 && shift - -case "$ACTION" in - build ) - svn export "$CBOX_DEVEL_DIR" "$DEB_BUILD_DIR" >/dev/null - svn export "$DEB_CONTROL_DIR" "$DEB_BUILD_DIR/DEBIAN" >/dev/null - fakeroot dpkg-deb --build "$DEB_BUILD_DIR" "$DEB_PACKAGE_DIR" - rm -rf "$DEB_BUILD_DIR" - ;; - check ) - PACKAGE_FILE=$(find "$DEB_PACKAGE_DIR" -type f -name "cryptobox*" | grep "\.deb$" | sort -n | tail -1) - if [ -z "$PACKAGE_FILE" ] - then echo "no debian package found in $DEB_PACKAGE_DIR" - else lintian "$PACKAGE_FILE" - fi - ;; - * ) - echo "Syntax: $(basename $0) [ build | check help ]" - echo - ;; - esac - diff --git a/pythonrewrite/scripts/show_TODO.sh b/pythonrewrite/scripts/show_TODO.sh deleted file mode 100755 index a2904ec..0000000 --- a/pythonrewrite/scripts/show_TODO.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 02005 sense.lab -# -# License: This script is distributed under the terms of version 2 -# of the GNU GPL. See the LICENSE file included with the package. -# - -grep "TODO" $(find "$(dirname $0)/.." -type f | grep -v "\.svn" | grep -v "$(basename $0)") diff --git a/pythonrewrite/scripts/userdocexport.sh b/pythonrewrite/scripts/userdocexport.sh deleted file mode 100755 index 299df52..0000000 --- a/pythonrewrite/scripts/userdocexport.sh +++ /dev/null @@ -1,135 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 02005 sense.lab -# -# License: This script is distributed under the terms of version 2 -# of the GNU GPL. See the LICENSE file included with the package. -# -# $Id$ -# -# export wiki pages to the cryptobox development tree -# this creates static and integrated pages -# - -set -ue - -# root directory of the cryptobox development environment -ROOT_DIR="$(dirname $0)/.." - -# retrieve these pages from the wiki -PAGES="CryptoBox CryptoBoxUser CryptoBoxUserGettingStarted - CryptoBoxUserConfiguration CryptoBoxUserDailyUse CryptoBoxDev - CryptoBoxDevPreparation CryptoBoxDevCustomBuild CryptoBoxDevWorkFlow - CryptoBoxDevValidation CryptoBoxDevCustomConfigure CryptoBoxDevBackground - CryptoBoxDevKnownProblems" -#PAGES="CryptoBox" - -# base URL -WIKI_HOST="https://systemausfall.org" -# the trailing slash is important -WIKI_URL=/trac/cryptobox/wiki/ - -CBOX_CGI="/doc?page=" - -LANGUAGES="de en" - -DEST_DIR="$ROOT_DIR/doc/html" -OFFLINE_DIR="$ROOT_DIR/../live-cd/live-cd-tree.d/_offline/doc" -IMAGE_DIR="$ROOT_DIR/cbox-tree.d/var/www/cryptobox-misc" -TMP_DIR=/tmp/$(basename $0)-$$.d - -HEADER_FILE=doc_header.inc -FOOTER_FILE=doc_footer.inc - -WGET_OPTS="--quiet --no-check-certificate" - -[ ! -e "$DEST_DIR" ] && echo "$DEST_DIR does not exist" && exit 1 - -for LANG in $LANGUAGES; do - for PAGE in $PAGES; do - PAGE_SRC="$WIKI_HOST$WIKI_URL$PAGE/$LANG" - echo "Importing $PAGE/$LANG:" - - # replace sub-page-style '/' like moin does it (by '_2f') - TMP_FILE=$TMP_DIR/${PAGE}.html - mkdir -p "$TMP_DIR" - - echo " downloading the page ..." - wget $WGET_OPTS --output-document="$TMP_FILE" "$PAGE_SRC" || { echo "Downloading ($PAGE_SRC) failed!"; exit 1; } - - # check if this page exists - if grep -q "^describe $PAGE/$LANG here$" "$TMP_FILE" - then rm "$TMP_FILE" - PAGE_SRC=$(dirname $PAGE_SRC) - echo " trying to download default language page instead" - wget $WGET_OPTS --output-document="$TMP_FILE" "$PAGE_SRC" || { echo "Downloading ($PAGE_SRC) failed!" >&2; exit 1; } - # check, if there is even no default page - grep -q "^describe $PAGE/$LANG here$" "$TMP_FILE" && echo "This page ($PAGE_SRC) was not found!" >&2 && exit 1 - fi - - echo " removing header and footer ..." - # break lines before start of content - sed -i 's#
#_END_OF_HEADER_\n#' "$TMP_FILE" - # the 'edit' buttons mark the end of the page - sed -i 's#
#\n_START_OF_FOOTER_#' "$TMP_FILE" - # cut off a possible comment - section - sed -i "s#
]*\#commentpreview#\n_START_OF_FOOTER_#" "$TMP_FILE" - # remove all lines before and after "body" - sed -i '1,/_END_OF_HEADER_/d; /_START_OF_FOOTER_/,$d' "$TMP_FILE" - - # close open divs - while [ "$(grep '' "$TMP_FILE" | wc -l)" ] - do echo "
" >>"$TMP_FILE" - done - - #echo " removing link images (moin specific) ..." - # remove inter-wiki images - #sed -i 's#<[^<]*moin-inter.png[^>]*>##g' "$TMP_FILE" - # remove moin-www images - #sed -i 's#<[^<]*moin-www.png[^>]*> ##g' "$TMP_FILE" - - # not necessary, because everything is a part of the repository - #echo " downloading requisites ..." - #wget --quiet --ignore-tags=a --no-clobber --page-requisites --convert-links --no-directories --base="$WIKI_HOST$WIKI_URL" --directory-prefix="$TMP_DIR" --html-extension --force-html --input-file="$TMP_FILE" || { echo "Downloading requisites for ($PAGE_SRC) failed!"; exit 1; } - - echo " adjusting links for images ..." - sed -i "s#='[^']*/cryptobox-misc/\([^']*\)'#='/cryptobox-misc/\1'#g" "$TMP_FILE" - - echo " adjusting wiki links ..." - # redirect wiki links to cryptobox cgi - sed -i "s#=\"$WIKI_URL\([^\.]*\)\"#=\"$CBOX_CGI\1\"#g" "$TMP_FILE" - # do it twice - somehow, the "g" flag does not work (it should replace multiple occurrences on a line) - sed -i "s#=\"$WIKI_URL\([^\.]*\)\"#=\"$CBOX_CGI\1\"#g" "$TMP_FILE" - # remove language specific part of moin link - for TLANG in $LANGUAGES - do sed -i "s#=\"$CBOX_CGI\([^\"]*\)/$TLANG#=\"$CBOX_CGI\1#g" "$TMP_FILE" - done - - - # build the static pages - echo " building static doc page" - offline_file=$OFFLINE_DIR/$LANG/$(basename $TMP_FILE) - mkdir -p "$OFFLINE_DIR/$LANG" - cat "$OFFLINE_DIR/$HEADER_FILE" "$OFFLINE_DIR/$LANG/$HEADER_FILE" "$TMP_FILE" "$OFFLINE_DIR/$LANG/$FOOTER_FILE" "$OFFLINE_DIR/$FOOTER_FILE" >"$offline_file" - sed -i "s%=\"$CBOX_CGI\([^\"#]*\)%=\"\1.html%g" "$offline_file" - # do it twice - this should not be necessary - sed -i "s%=\"$CBOX_CGI\([^#\"]*\)%=\"\1.html%g" "$offline_file" - sed -i "s#='/cryptobox-misc#='../../../var/www/cryptobox-misc#g" "$offline_file" - - # split language specific part of moin link and replace it by current language - for TLANG in $LANGUAGES - do sed -i "s#=\"\([^/]*\)/${TLANG}.html\"#=\"\1.html\"#g" "$offline_file" - done - - # some last changes to the dynamic pages (must be done _after_ the static pages) - # add weblang for current language to query string - sed -i "s;=\"$CBOX_CGI\([^#\"]*\)\([#\"]\);=\"$CBOX_CGI\1\&weblang=$LANG\2;g" "$TMP_FILE" - # move cgi-doc - mv "$TMP_FILE" "$DEST_DIR/$LANG" - - echo " finished!" - done - done - -[ -n "$(find "$TMP_DIR" -type f)" ] && mv "$TMP_DIR"/* "$IMAGE_DIR" -rmdir "$TMP_DIR" diff --git a/pythonrewrite/stuff/cron-cryptobox b/pythonrewrite/stuff/cron-cryptobox deleted file mode 100644 index 67d9661..0000000 --- a/pythonrewrite/stuff/cron-cryptobox +++ /dev/null @@ -1 +0,0 @@ -* * * * * root [ -e /usr/lib/cryptobox/cbox-manage.sh ] && /usr/lib/cryptobox/check_smb_idle.sh diff --git a/pythonrewrite/templates/access_denied.cs b/pythonrewrite/templates/access_denied.cs deleted file mode 100644 index cfe44fe..0000000 --- a/pythonrewrite/templates/access_denied.cs +++ /dev/null @@ -1,6 +0,0 @@ -

- - - - - diff --git a/pythonrewrite/templates/empty.cs b/pythonrewrite/templates/empty.cs deleted file mode 100644 index 0447a4d..0000000 --- a/pythonrewrite/templates/empty.cs +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/pythonrewrite/templates/footer.cs b/pythonrewrite/templates/footer.cs deleted file mode 100644 index 6ae1777..0000000 --- a/pythonrewrite/templates/footer.cs +++ /dev/null @@ -1,33 +0,0 @@ - - - -

- - -
- - - - - - - - - - - -MESSAGES WERE NOT HANDLED PROPERLY - PLEASE FIX THIS! - - - - diff --git a/pythonrewrite/templates/header.cs b/pythonrewrite/templates/header.cs deleted file mode 100644 index 425fe4b..0000000 --- a/pythonrewrite/templates/header.cs +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - CryptoBox - - - - - - - - - - - - - - -
- -
- - - -
- diff --git a/pythonrewrite/templates/macros.cs b/pythonrewrite/templates/macros.cs deleted file mode 100644 index dacd199..0000000 --- a/pythonrewrite/templates/macros.cs +++ /dev/null @@ -1,174 +0,0 @@ - 0 - ?>?&=

0 - ?>" title="">
0 ?> 0 ?> -
icon: info

unknown message

- could not find message: ''
" method="post" enctype="application/x-www-form-urlencoded" accept-charset="utf-8"> -
- - <?cs var:html_escape('icon: ' + plugin) ?>
- - icon: volume - - HANDLE_MESSAGE CALLED TWICE - PLEASE FIX THIS - - - diff --git a/pythonrewrite/templates/main.cs b/pythonrewrite/templates/main.cs deleted file mode 100644 index 0290e75..0000000 --- a/pythonrewrite/templates/main.cs +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/pythonrewrite/templates/show_volume.cs b/pythonrewrite/templates/show_volume.cs deleted file mode 100644 index 2e1c94e..0000000 --- a/pythonrewrite/templates/show_volume.cs +++ /dev/null @@ -1,10 +0,0 @@ - - - - -
- -

just a placeholder - any suggestions are welcome!

-
- - diff --git a/pythonrewrite/templates/show_volume_footer.cs b/pythonrewrite/templates/show_volume_footer.cs deleted file mode 100644 index 301725b..0000000 --- a/pythonrewrite/templates/show_volume_footer.cs +++ /dev/null @@ -1,3 +0,0 @@ - -
- diff --git a/pythonrewrite/templates/show_volume_header.cs b/pythonrewrite/templates/show_volume_header.cs deleted file mode 100644 index 0a4f47a..0000000 --- a/pythonrewrite/templates/show_volume_header.cs +++ /dev/null @@ -1,21 +0,0 @@ - - - - -
-
-

-
- -
-
- - - - - - -
 
- -
- diff --git a/pythonrewrite/templates/volume_plugins.cs b/pythonrewrite/templates/volume_plugins.cs deleted file mode 100644 index b23b2e2..0000000 --- a/pythonrewrite/templates/volume_plugins.cs +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - -0 ?> - - - class="volume_plugin_active"class="volume_plugin_passive">" alt="icon: " />  - - diff --git a/pythonrewrite/www-data/antlogo100px.png b/pythonrewrite/www-data/antlogo100px.png deleted file mode 100644 index 454709d24449e98d592fca0a2f5881fdad5fc054..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7318 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 Ifq?M-4?;aU1poj5 diff --git a/pythonrewrite/www-data/background_frame_corner.png b/pythonrewrite/www-data/background_frame_corner.png deleted file mode 100644 index 2d0da076b9aaf7764c0f7f71d0d3177dc1edce64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2355 zcmeAS@N?(olHy`uVBq!ia0y~yU2n7*a9k?OnsXDd8dw7k}6FD&1fR&Em4^3R$_SFNL`zQT0M9bE0U(DW;$eoMwp= zW{6yiV6kK|n*Xt)$j|iHqpArGHC6dv?r**SK0WQ(qeqXH&#bgF_D_HId*{KZ*URGn zX+1YtJgeBxc$FoXp#@|tHv)=)7-=0f15-9UrT%T z_ROA{GsUyl+NY&mtJ^=nySrQ5`15P~zw3hkcGpfX_Dgj$eIAk)QhY8G$e06TfJ9zN zE|(CxpY<*F&!5|K%DLm#ZJoFN`uh0)Hpctw|IGcxJLi#o-|l%}C#BsvH>bE-|DVlv z^W#0|&;MBeKXZOkNX@%1&+ObTUEjCQb^n{RXEz_NcJG%v`}lbO^MlRo_aC)0Gu(-8 z?+>nhax*Wj&Z6e)larHgzAd}|#g~!cj(hf6|HrS|bJO-&*93KC$r zA@Vq|L&YUlW+X_aa6Wl%@2d=)2G+(mfG{uI3oVH6vKo12ixC1Jlwwi zT9khJx}+D6C;Ym!;@9%~>4{S;$DvPL<_eA8#oM}u6{1-oD!M$FjA1pb zfNYG#AwE~YY%W`(6R^|C?5ML#knw7r2~jK+y0SJiVw=2ZJ88!DQdqDXAkGZH5hg4~Ct~mJA@mck&6kuUpie`>z83U9 zQC;|+7U2)!FQ<0Zkvw$Bt=(B#`%aC#mZ;EF0YMO(l&WfNWrezGQ;kOP<$cjgfF(ak z3U-v#8E2fE_jf8^(Yt7w>gd+Av~j&|T>o*4bRca-cFTEbYq{&SA9}9kZ`|lB`TWBw z!;ThhhA$x6liy@%$mLl~=_$=5Ss%FXbd&Yl`Nay)2qk(I^uluo9E0LRLs@*fLVm|i z*-Q%i_G{Gp0)fCmnS01CMJNZR+7qNfmyI&two|8Hx&;2wrnMp8&qh)l;M0FR6m)fU z(SDb8&}=rgwYAY7A=aUbXb1hlAfbRe{OIeiH{!DZl!sS{y6BkFc%PWKtKCu(En>VxCG$4fgA8|z`DAp>X@zQdOLv*OAVc9X8&23 zxu>m*13j-f0~QwTNk=VdFqO;MXSM)zM3IbY)|v`1og?BbFxrRpb7LyUD!xG)MkyP` ziPrxNqx~__{|kpQ-O?#Yjojf+tFOdTg6VEndk|&X z#CbPSmyV5M+qLM~`^w6giwvFDj=jCX8WSC%QS3W`4a-`GtMieTcG+dfwoB&VD>AHb-ejqgT2|mlnHBTHQH-(zLLXk3}(r?65 zQIAtM zyy2GtE>_maJr8ukk!`$`&lH}&DN#3>!KbGhCedrea&MGsI8FxmTGIi?FiBeAiy|p^ TZz!lnbwIMSsNigV`Qd*66>Yk? diff --git a/pythonrewrite/www-data/cryptobox.css b/pythonrewrite/www-data/cryptobox.css deleted file mode 100644 index 1a9807f..0000000 --- a/pythonrewrite/www-data/cryptobox.css +++ /dev/null @@ -1,558 +0,0 @@ -body { - text-align: center; - margin: 0; - padding: 0; - font-family: verdana, lucida, arial, helvetica, sans-serif; - } - -a { - text-decoration: none; - } - - -div#main_menu { - width: 130px; - } - -div#main { - background: none; - padding: 20px; - margin-left: 140px; - /* RFC: 'auto' is not a valid value, or? [l] */ - margin-right: auto; - /* RFC: should we restrict the width? [l] */ - max-width: 700px; - } - -#main h1, h2, h3 { - font-family: sans-serif, arial; - font-weight: normal; - letter-spacing: 0.05em; - color: #acacac; - font-variant: small-caps; - padding: 0 1em; - text-align: left; - } - -#main h1 { - font-size: 2em; - } - -#main h2 { - font-size: 1.5em; - } - -#main h3 { - font-size: 1.2em; - } - -div#head { - height: 130px; - } - -div#head table { - width:100%; - } - -div#head img { - vertical-align: middle; - } - -#menu { - text-align: center; - border-top: 1px solid #5e5e5e; - border-bottom: 1px solid #5e5e5e; - background-color: #ACE149; - } - -#menu a:link, #menu a:visited { - color: #5e5e5e; - margin: 5px; - text-decoration: none; - border: none; - padding: 4px; - font-size: 0.8em; - } - -#menu a:hover { - color: #8e8e8e; - } - -#words { - background-image: url(background_frame_top.png); - background-position: top left; - background-repeat: no-repeat; - min-height: 300px; - padding: 1.1em 0em 1.1em 1.1em; - margin-top: 0; - } - -#words h1{ - font-size: 1.8em; - } - -#words h2{ - font-size: 1.4em; - } - -#words ol, #words ul { - font-size: 0.9em; - } - -#words ol li { - padding: 0 1em; - line-height: 1.7em; - } - -#words ul li { - padding: 0 1em; - line-height: 1.7em; - list-style-image: url(list.gif); - } - -div#footer { - clear: both; - text-align: center; - /* border-top: 1px solid #5e5e5e; - border-bottom: 1px solid #5e5e5e; - background-color: #ACE149; */ - background-image: url(footer_line.png); - background-repeat: no-repeat; - background-position: top center; - font-size: 0.8em; - color: #5e5e5e; - } - -div#footer a:link, #footer a:visited { - color: #5e5e5e; - margin: 5px; - text-decoration: none; - border: none; - padding: 4px; - } - -div#footer a:hover { - text-decoration: underline; - } - - -#volume_pane table, #volume_pane td { - padding: 0px; - margin: 0px; - } - -#volume_pane td.pane_top_left, #volume_pane td.pane_top_right { - height: 39px; - width: 10px; - } - -#volume_pane td.pane_bottom_left, #volume_pane td.pane_bottom_right { - height: 10px; - width: 10px; - } - -#volume_pane td.pane_top_left { - background-image: url(pane_top_left.png); - } - -#volume_pane td.pane_top_right { - background-image: url(pane_top_right.png); - } - -#volume_pane td.pane_bottom_left { - background-image: url(pane_bottom_left.png); - } - -#volume_pane td.pane_bottom_right { - background-image: url(pane_bottom_right.png); - } - -#volume_pane td.pane_left { - background-image: url(pane_side_left.png); - } - -#volume_pane td.pane_bottom { - background-image: url(pane_side_bottom.png); - } - -#volume_pane td.pane_right { - background-image: url(pane_side_right.png); - } - -#volume_pane td.pane_top { - background-image: url(pane_side_top.png); - } - -#volume_pane .volume_plugin_active { - background-image: url(register_active.png); - text-align: center; - vertical-align: middle; - width: 120px; - } - -#volume_pane .volume_plugin_passive { - background-image: url(register_passive.png); - text-align: center; - vertical-align: middle; - width: 120px; - } - -#words div.unavailable_action { - border: 1px dashed #808080; - text-align: center; - background-color: #f0f0f0; - padding: 10px; - margin: 20px; - font-size: 1.1em; - } - -/* -------=-=-=- operational messages -=-=-=-------- */ - -#words div.message { - text-align: left; - margin: 20px; - padding: 0 10px 0 0; - border: 1px solid #bbb; - color: #5e5e5e; - font-size: 0.9em; - } - -#words div.message table { - width: 100%; -} - -#words div.message td.text h1 { - font-size: 1.5em; - padding: 0px; - } - -#words div.message td.message_symbol img { - width: 32px; - height: 32px; - padding: 5px 20px 5px 10px; - border: none; - vertical-align: middle; - } - -#words div.message td.link { - text-align: right; -} - -#words div.message td.link a { - color: blue; - font-style: italic; - text-decoration: none; -} - -#words div.message td.link a:hover { - text-decoration: underline; -} - -/* -------=-=-=- environmental messages -=-=-=-------- */ - -#EnvironmentWarning div.message { - text-align: left; - margin: 2px; - padding: 0 5px 0 0; - border: 1px solid #bbb; - color: #5e5e5e; - font-size: 0.9em; - background-color: #eea; - } - -#EnvironmentWarning div.message table { - width: 100%; -} - -#EnvironmentWarning div.message td.message_symbol img { - width: 16px; - height: 16px; - padding: 2px; - border: none; - vertical-align: middle; - } - -#EnvironmentWarning div.message td.link { - text-align: right; -} - -#EnvironmentWarning div.message td.link a { - color: #55b; - font-style: italic; - text-decoration: none; -} - -#EnvironmentWarning div.message td.link a:hover { - text-decoration: underline; -} - -/* ----------------------=-=-=- Forms -=-=-=--------------------- */ -/* pretty forms and buttons */ -input { - border: 1px solid #BFBFBF; - color: #949494; - background-color: white; - padding: 2px 5px 1px 5px; - font-size: 1em; - } - -input:hover { - border: 1px solid #ACE149; - color: #7DA721; - background-color: white; - font-size: 1em; - } - -textarea { - font-family: arial, verdana, helvetica, sans-serif; - font-size: 1.1em; - border: 1px solid #BFBFBF; - color: #949494; - padding: 2px 5px 1px 5px; - width: 450px; - } - -textarea:hover { - color: #7DA721; - background-color: white; - border: 1px solid #ACE149; - } - -button { - color: #5e5e5e; - background-color: #ACE149; - border: 1px solid #5e5e5e; - font-size: 0.8em; - font-weight: bold; - cursor: pointer; - margin: 2px 10px 2px 10px; - } - -button:hover { - color: #5e5e5e; - background-color: #D0F0A0; - border: 1px solid #ACE149; - font-size: 0.8em; - font-weight: bold; - cursor: pointer; - } - -#words form label { - min-width: 20em; - } - -#words form p { - text-align: center; - } - -/* -------------=-=-=- main menu -=-=-=-------------- */ - -#main_menu { - position: absolute; - float: left; - right: 5px; - left: 5px; - width: 140px; - } - - -/* ------------=-=-=- language selection -=-=-=------------- */ - -div#lang { - /* position: fixed; - float: left; - left: 30px; - bottom: 10px; */ - text-align: center; - padding: 5px; - margin: 10px; -} - -div#lang button { - margin-top: 5px; -} - - -/* ------------=-=-=- documentation -=-=-=------------- */ - -#doc ol,ul li { - text-align: left; - margin-left: 20px; - } - -#doc dl dt { - text-align: left; - margin-left: 20px; - font-style: italic; - } - -#doc h1 { - padding-top: 25px; -} - -#doc h2 { - padding-top: 20px; -} - -#doc h3 { - padding-top: 10px; - } - - -/* -------------=-=-=- plugin icons -=-=-=--------------- */ - - -div.plugin_menu, div.plugin_system, div.plugin_volume, div.volume { - text-align: center; - margin: 10px 15px 10px 15px; - vertical-align: center; - padding: none; -} - -div.plugin_menu a, div.plugin_system a, div.plugin_volume a, div.volume a { - text-decoration: none; -} - -/* remove underline decoration for '#content a:hover' */ -div.plugin_menu a:hover, div.plugin_system a:hover, div.plugin_volume a:hover, div.volume a:hover { - text-decoration: none; -} - -div.plugin_menu img, div.plugin_system img, div.plugin_volume img, div.volume img { - border: none; - padding: none; - margin-top: 10px; -} - -div.plugin_menu { - width: 100px; - height: 110px; - background-position: center; -} - -div.plugin_menu_passive { - background-image: url(icon_background_passive_100.png); -} - -div.plugin_menu_active { - background-image: url(icon_background_active_100.png); -} - -div.plugin_menu img { - width: 64px; - height: 64px; -} - -div.plugin_system { - float: left; - width: 64px; -} - -div.plugin_system img { - width: 48px; - height: 48px; -} - -div.plugin_volume { - width: 48px; -} - -div.plugin_volume img { - width: 32px; - height: 32px; -} - -div.volume { - /* FIXME: float-left breaks the background image in firefox */ - float: left; - width: 64px; -} - -div.volume img { - width: 48px; - height: 48px; -} - -/* -------------=-=-=- help -=-=-=------------------ */ - -div.help_link { - text-align: right; - margin: 20px 10px 10px 10px; - } - -div.help_link a { - text-decoration: none; - color: #555; - font-size: 0.9em; -} - -div.help_link img { - width: 24px; - height: 24px; - vertical-align: middle; - border: none; -} - - -/* --------------=-=-=- new volume pane -=-=-=----------- */ - -div#volume_area_inner { - width: 620px; - /* margin: 13px; */ - padding: 20px; - border: 1px solid #ccc; - border-right: 1px solid #ccc; - border-bottom: 1px solid #ccc; - background-image: url(volume_property_frame.png); - background-repeat: no-repeat; - background-position: top left; -} - -table#volume_area { - clear: both; - margin: 0; - padding: 0; - border: 0; -} - -table#volume_area td.volume_plugin_active, table#volume_area td.volume_plugin_passive { - width: 120px; - height: 40px; - text-align: left; - padding: 4px 0 0 10px; - background-repeat: no-repeat; - background-position: top left; -} - -table#volume_area td.volume_plugin_active { - background-image: url(register_active2.png); -} - -table#volume_area td.volume_plugin_passive { - background-image: url(register_passive2.png); -} - -table#volume_area td.volume_plugin_active img, table#volume_area td.volume_plugin_passive img { - width: 32px; - height: 32px; - vertical-align: middle; - border: 0; -} - -div.volume_spacer { - width: 30px; - float: left; -} - -div#volume_name table { - width: 100%; - border: 0px; - padding: 0px; - margin: 0px; -} - -div#volume_name td img { - width: 64px; - height: 64px; - padding-right: 30px; -} diff --git a/pythonrewrite/www-data/dialog-error_tango.png b/pythonrewrite/www-data/dialog-error_tango.png deleted file mode 100644 index 31c4475377bacf3e61d048e6972afcb1bf9dc2a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8750 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 Yf1x5B3Pmw9(EtDd07*qoM6N<$f>BVL^Z)<= diff --git a/pythonrewrite/www-data/dialog-information_tango.png b/pythonrewrite/www-data/dialog-information_tango.png deleted file mode 100644 index 3a4f370ca1cdf70c0eb1c31d03d1f07263882fbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14120 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 diff --git a/pythonrewrite/www-data/dialog-warning_tango.png b/pythonrewrite/www-data/dialog-warning_tango.png deleted file mode 100644 index c1afbe3890c64fcc6e5317fe57706bab33b20857..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7611 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 KMNUMnLSTZ@^O|q~ diff --git a/pythonrewrite/www-data/disc_green.png b/pythonrewrite/www-data/disc_green.png deleted file mode 100644 index 0d0c48315d5c6b6782ac84ab76e2c9d33bc82b19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4936 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 E0N6)d+W-In diff --git a/pythonrewrite/www-data/icon_background_active.png b/pythonrewrite/www-data/icon_background_active.png deleted file mode 100644 index a930c0db1e4b2749ae97c0b3ec471aca60fc9f01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14372 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 diff --git a/pythonrewrite/www-data/icon_background_active_100.png b/pythonrewrite/www-data/icon_background_active_100.png deleted file mode 100644 index 1c1eced923cc2b56f5a689c8eb79c72cdec6c232..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4101 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 DN-%dK diff --git a/pythonrewrite/www-data/icon_background_active_256.png b/pythonrewrite/www-data/icon_background_active_256.png deleted file mode 100644 index a930c0db1e4b2749ae97c0b3ec471aca60fc9f01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14372 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 diff --git a/pythonrewrite/www-data/pane_side_bottom.png b/pythonrewrite/www-data/pane_side_bottom.png deleted file mode 100644 index 90699c803c9feb59dfa5d9472e74705c55149242..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrA!3HEtFPV4&DYhhUcNd2LAh=-f^2tCE&H|6f zVg?3oVGw3ym^DWND9B#o>FdgVjf;iXP&VO_QVdW?z|+MsgyVX0f&yzxTiZW&1{OWW U|5d!pK!!7Ty85}Sb4q9e0OIEz=Kufz diff --git a/pythonrewrite/www-data/pane_side_left.png b/pythonrewrite/www-data/pane_side_left.png deleted file mode 100644 index 798db00a89a30af9bf21398c958efcc037ecf1ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131 zcmeAS@N?(olHy`uVBq!ia0vp^AT}ch8<2ed)xHi$u_bxCyDx`7I;J! zGca%qgD@k*tT_@uLG}_)Usv{PTr9i>0_-073xGlbo-U3d9M_XMczOSxcVJ;)@V?9V Uzy6n?C{T{U)78&qol`;+049R diff --git a/pythonrewrite/www-data/pane_side_right.png b/pythonrewrite/www-data/pane_side_right.png deleted file mode 100644 index 8dbd61709aa614b299b5e3806f7b70443b4a4acf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131 zcmeAS@N?(olHy`uVBq!ia0vp^AT}ch8<2ed)xHi$u_bxCyDx`7I;J! zGca%qgD@k*tT_@uLG}_)Usv{PTr9i>IvVQ2>Odg@PZ!4!j_b(@3QR3+ZU5LASX3GR U$0x_60Oc4wUHx3vIVCg!00>SU)c^nh diff --git a/pythonrewrite/www-data/pane_side_top.png b/pythonrewrite/www-data/pane_side_top.png deleted file mode 100644 index eb33bafaa1ed23866ffbb4e43405dbfec9a8ffef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^j6kf;!3HGHJy2Q%q}Y|gW!U_%O?XxI14-? ziy0WWg+Z8+Vb&Z8pdfpRr>`sfH7*uj3ubTqC1pS%Ax{^_5RU7~2@*L9CMI9(J*61p XQW^iBZCG;wD9hmK>gTe~DWM4fceNmc diff --git a/pythonrewrite/www-data/pane_top_left.png b/pythonrewrite/www-data/pane_top_left.png deleted file mode 100644 index 69f67bf563e412a288d7de48dd3a29fd46b1fd8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^AhtRO8;~?(xETth*pj^6T^Rm@;DWu&Cj&(|3p^r= z85p>QL70(Y)*K0-AbW|YuPggCE*3sPb}lE!yFj5fPZ!4!i_>o}X!9Kk5O90AerdEu zSE@)q`)$voe548JF2gw6dC4QN54hwVc~!jiypM zf|~_1yAQ~^m)r>LG;r^iTHUc@8S|6BmpR_mdKI;Vst0EwJe*#H0l diff --git a/pythonrewrite/www-data/pane_top_right.png b/pythonrewrite/www-data/pane_top_right.png deleted file mode 100644 index f53f33daa0872bba2ecd8ebe2ed3caaf1349194c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 273 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 FV1h07?(hHr diff --git a/pythonrewrite/www-data/screenshots/de_config.png b/pythonrewrite/www-data/screenshots/de_config.png deleted file mode 100644 index 3dc322843e4b935ea8c69715599d8aa1b4c4995e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80374 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ΜsRXIC1#n&pprc<09P}Zpz9)OZ(&PsnQNZ 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 diff --git a/pythonrewrite/www-data/screenshots/de_mount.png b/pythonrewrite/www-data/screenshots/de_mount.png deleted file mode 100644 index 37920b2a84c3e58f2e3e6f5daa71ddee7c96f403..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59615 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≷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 XaV-V*&95nVfceSGD8DO{GX3;FA-Y=@ diff --git a/pythonrewrite/www-data/screenshots/de_w98_login.png b/pythonrewrite/www-data/screenshots/de_w98_login.png deleted file mode 100644 index f7cef41a9ae80ede89214576240a27c976593058..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3650 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 X9V5$V4_wF*+XW2uP4qB#oTC2&4=6S3 diff --git a/pythonrewrite/www-data/screenshots/de_w98_network_drive.png b/pythonrewrite/www-data/screenshots/de_w98_network_drive.png deleted file mode 100644 index da72c6f775a04e7464021358e94b4a0cba7b0704..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3345 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 diff --git a/pythonrewrite/www-data/screenshots/en_config.png b/pythonrewrite/www-data/screenshots/en_config.png deleted file mode 100644 index e74b416611de7dd79374aef35e0ca0c66166b6a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85007 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

f5@mVO``-y~LWzi`r>8G3FLAN3eos$_ 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 IZusf{0AAebWdHyG diff --git a/pythonrewrite/www-data/screenshots/en_w98_login.png b/pythonrewrite/www-data/screenshots/en_w98_login.png deleted file mode 100644 index 9ff45fb6404b7138b8056994cf65c2f3a3d8a740..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3504 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 V=9Tk1rR~3)mgcr*wSRiW{ttxk2L}KE diff --git a/pythonrewrite/www-data/screenshots/en_w98_network_drive.png b/pythonrewrite/www-data/screenshots/en_w98_network_drive.png deleted file mode 100644 index d1e89d7e4a90c89a870745b9511960bfb5113aff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3013 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 diff --git a/pythonrewrite/www-data/smile.png b/pythonrewrite/www-data/smile.png deleted file mode 100644 index b51b3ff49e87feff120fd5fa5e49c72cf4473fff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^{2#5 zSb3lMhMSn-?7xMIi=w!#a<0xS{JfAY+^}B3J?DheoQONecK*p&dvf}8wMU;;eHTyi zR-HQaI@2tmtpz2n5hcm_xw)x%B@CI#`FZAg>6vK?Y57G8rNyZVnRyDKPENdByj&X2 znhJ)NmX-h*L oCFzN|sRfBSiOH#YnZ?QZ`8gm(LXu6nK)V?{UHx3vIVCg!03)PF!$sD}AA|gDzya^n-=z3mlnX_5IyDzKaZP2Taq? z-HQw6NYP1naOc2Qg9gV>-}-h+TWsev@VLMC_q%Iv<~kgEyZe3K`v}GqomG~*Pp@!l zaQrjlR8P{=lT18~tLILcq9fdRYxDHwJI|P~%+k4JTAa2?&OX&B(L3vX76CzrVk+wy;o8P{_>3$IHjR z#J|15y~WAJ(bUk(&dScx&bz?7y1%*1&&$BYz_Yos%FfELwXeLvywKCn%+Slr&&s~S zy}ZG@#mU6L#lOnU$-%|I$IHgh)X=`ey}rY~&(qJz&B@Qt&&0{ZudlDNxUtC0$ic?J zy1%-=#J#<4bjxm8XFq9zPU9vHBL`Xw7Rp> z)zK&@D5|Zh#mK~UcXg4IkZEgazr(&LC?~?j!9qhqTwYvucXdxtPPn?awz;)-cXon= zf`f&FH8nM7X=hGQPIPv3TwPqYxwdF(Xo7@+wYao|g@ZvuL0w*4A^8LV00000EC2ui z09XJY000O7fC2!6goTEOh>41ejE#wc00EMdlmP>mmj(t290v*rCJqe@4;eZ~K_VR_ zL?uEoHC7)ZBOg39F+xr(Bpo6)M>-h~79b8L2nsnI37Q6&mz9%*(v{Eynh^<}DF~tr z7BoLbS*j!~B{)1I8Zs2`6fznkxJkUeK}J6`77Psz2qq{vkRXC4XqKu47^G0rHEaeV zbovwugoRQrT0B|BB1sP`8u)zCLWqkUI21H|=pkf9FA-5(3@dgl*#Qm)pIuYPu%RVP z&N$`hc4JhyA4hC#0Me?*2N`t+Ngz;xfP_JMkjNO(BMFfg8-@hq=kErB6axz$L|Cn- z!fV<8wkep<~kQy590KgDJuxkhl0F*(Zfk#UqVfFDdhHN0twU{t#-Yn4*f}-G{ z=s+`MRf!lQ)R0u-y1EhoTCPwSp}5zRC_11NYk(}p&1O1-x6M2})20JMkB=%<1@Dqp zsP_P-CoAb+Hsw9|U+0Tq!a6L>RU20mml z1rRJy!GjEb06-lEegROxRT4-50SW-HQ3M4%P{9HaQv~6{43Pa3P+Gu6gJFh2ap)oc zDIf;1!3!(k@Bsx_03ZO3{QU<26G{Xq2pup`@Bt1hfE9!fKr&#=kd*YRQ!O5PSo7w3A2&Ck> zCv<*75JHR<06@TMDgXch1OTj&Xbet(WrGoE3OQ+!a~}B?G@L1ESDsEnDJ2DE000;Y zDi9E80R#}hga9W15J#9}mbrlqXa*^1T9#c{Nt~Fv_ugE0X5c~)BbIn#9sn%RT6Kbj z5ZfC?$dKcXQ)Ka2WM?VB46eC;d#N?V!AI1G^@(s_5~%Hf2LLL-D_E+3Y_VYf4J8oq zU<*}9*nn9nROpPilz>aHhMXMGjR_4{q+Aruk?>rfSEOO8p@Kocq8Mb{$ek0t3;`Y# zLH2eYuEJ#qQE_usWI-3>46)P-Lhzsg5?6>Zhzcj5P(Z2xctHjXwACO43$p4~3>YR% zY9U*e`t(q*bJfM^T?*?J!&5uJ&;}QVaM4E?Ff3>V4o)xzVaM7|#x2si%1I|g@5P5) zIHyQmS_w|cfJ6~nj4{UWu-tJ$bfQa-p#VKtl$Ca9JTJKnr8&!x*k6Fc@H<{Qx5X zz^G4x>E2z+wXX)4%kkQ2<#ypaA-Jfhnf1iiD5=1~71e0oibltKtt2 zDOiC5UC@CVB%&bp*vAC!?*d9>q#qsG#rZ+N14_hW0_&&6B%Uvbf)jk<4>fp5MK;id zNCYAUISGkW0-!bMqhKrtu>dY!vNbD|APSW5!}Ey}lw2gEDQ$T|PX?xzf$`%fT_lJd z?(dj_8B`t%85<82072vPfCm;Zs4`A)d=hvOIIp=)OmeebgOUI>X*nniRDhcVT7Wvo Zr>uCkvs6?;r#<8Oy?*-hpN$9v06Vt#9ijjL diff --git a/pythonrewrite/www-data/volume_active_crypto.png b/pythonrewrite/www-data/volume_active_crypto.png deleted file mode 100644 index faa165607fa363022d28953624f715af0e839f37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6590 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 CL1i5P diff --git a/pythonrewrite/www-data/volume_active_plain.png b/pythonrewrite/www-data/volume_active_plain.png deleted file mode 100644 index 61b0d92bac32fc89539541b2d957afe838cc08a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5903 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 YqSwrL9j}=iEM5bes(LC_O13Zm51+r}2mk;8 diff --git a/pythonrewrite/www-data/volume_passive_crypto.png b/pythonrewrite/www-data/volume_passive_crypto.png deleted file mode 100644 index de0da42c2aff6376c54a752b0013f709253b60e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8140 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 diff --git a/pythonrewrite/www-data/volume_passive_plain.png b/pythonrewrite/www-data/volume_passive_plain.png deleted file mode 100644 index 02f2ce60711fd7023e5410e5551aab0510004049..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7661 zcmai3g;y2r*PR=5cQ*ne4bt5pA&7Kbx*J6L(jciwh;#}{h#(CYcqvgrx>3L@-Cf`K z2mIDIYhq2TXXcz|pV|AIlkikWjR2Px7XSbP4RvLG@QD1kVPk^(URmp5@BsH!)G)vX zmk?~bc<>y@OWnj50NB$1ZIJykFD~#Rjh~9K-!o4KzW{3=dmtbnfX~^()z{YA%bw5E z$MOB1G%WxyxM(OV7`)8gwb=eb-{*gSDt#8XKZU!gsmLE~iDVyxu`xp7#zbtx$ldPQ zgwGF3N{=4aXmW4dz$!Im;YOEAbqO|9mub!PeH5@1Sl9vfsE|rLJtrbwkQs;FyDYdd zV87F${Mh=>$?op%yS%x!V3pb1=i0kkqgnx@xmE?fSAOR_Yq_@Z-7(&u9|`=|*Ovys zQdl6E^h!{C@mM&u7e0=_Dm5trCCH9K+NvWV1OMv*Yl}~j3A@vz+24+=KfR90buml z>(BRhl)r@gS%nLIJDfH;T$Vb%yZZT&_t}uJv9Zl|h08Gp?+60otKuVN11Su_UA$3@ zMf*C1YvKh!oy20CHC#nUTl)d2tnH_b+@M9g6Ui=*r+ir$4?WrsRW-i?^jnTC$K!b7 zT2f+*UN9tTv(oS*gQr$8Nvp<_$jeS5wWe*4lt>NE z>|3Zr%JQR$`PwAkIp-jhsb(7r)O23CWS47Hq@H|S3?l;_F#9$6QEfXZFy$-CYre5(Uz)h$& z$GF7NJygamJ`XZ^%~Z3_`tVQEfj9`_@@T`j-VO(e8a@rRGM7IassA)cMWX^G&9yff zv=dSst3t#(X`Daw%zN>4C}YSjZO9I>@RduBfQ8x?ypKp~^h+4R7wE4GzYo(~rhQQv z{Hl`}wDmpUhJW7oqzH@6YvflTBeiXh@?ZI$B1#SZ-1u}ul-{O+>Z0n*VBpYtox2&a z(8vG;Dy3UhKno+j(C}+_Ul46+&v%Uob4DsPd$(f5aDiba0%o(!I>w>ut7fJ+_?UcPxz?=Gb;++6dh=NI=N6&Gb<^WD|eiISNK$+5UHSW5YfcMgsZ1e3tn-)g10We4n4U^1hOGv9KE~ z*POz2DM?e<%=KLi+OB>pjk$_9PuHp}CxSwg7?5KT(i100LK~iQ_{A5~f8v4+&zI13 z4^&=?A3e}E(x!Iz1_5*$!~oPe{GjDA=L(9Dc?`Q{MzH|YG&J2CSy;!iTc?uJqlqCJ zNrFYc{rROe(>nK?Dqo&jK4x&D3Nz2i$ud1}U`sz~_aS1#T^D{=o*)x^_VkEvz`G`? z{o#WkP0$)Xm=_kX7<#_+`&W5IiKE!iNG`6)1-sj&afeO^r}jr(TlA*6L6Cm^U#F}=zwoPTle`{VK38;SvMH}~>~|9b9Nk{MtyYLb%>8E8 zS2FY5KL?_|ytUCjDLomq`E81YAYt(G`AWj#%NP60+HGsV-cN^o(vC@>32KZ7-zq4q z3YR!~pyasVFDk9M#OZvxG#l7>Q@W{c zvi3A_c|@r!D4K}r$N7R^Q!XmLz%;OB|PlN#sTNpCPXwr#96pOjwb z$)6?(NXv6prVhNRs4&;5-X;-8&cd4@^^_ZVRFNb6As+rG5zts6u`R#{Q zY8)%xf`)&e%_+-LjuY1Hojd*?1%V(HlpYf~%-=8*-1#4Bo|aKa=cS*QXeEVcn>X<#eA8Vhs0jYOHA<~i^c1kw5)a+-Khc@_ zWD=#4NI70PDH!4L7(@nQbGq6L0$0q$3bT8e9|yv>SKuiZ+?RH3GQ>1an}JJ{^`hC= z+kQyBcuVTFMcnJxB-F7HswE^Ez!oWOEXycO`-pe0>%2$2f(ukU#g_GEGEsW-na6Ew zmYOTnZGn;~Tl7`Mytlt*c1S4azHCj!SaL6AfNpM{Q7s(}4M~c{q89gze@x(PXJ}h) zI5+QDGUhB1LIT)XqKhsHU6~oVG)mp1WrfK6HJ=Loc_Q)|!cc7LW&TcsL9tgrKvI&M z?1|v6 zay7gAy)?IIVdnVIpMd%Wjs0;8PZP@i{(j|xF2j#1Bc*Rxq@u)@{Ky{g!w*_g#NyOd z{{4j?pW5wK#6VVIocAb*o-b+LYBd{+7>`t>MUC6`%SKrO2#Ctl~YXpO6s;Lm>+ zwV6sI%d@lD%@z8Ut35Gz2_eKIEeCC)ZnMmahw9dtKV6V3ur&Lmgan)|lx_vCFC$M_ zyVtKs^(J?^J{vur4E@@fx%&@(mz^JuN>c3EN!oP^HI`w-C-ItPq&_XV%}wTf1M{I4 zog!LpCX^nXmkyepy!2(e@eQEqfZ10!600lyN4cff%9cBmlW&bVMyQoU-}em;#tYy% zPlfWsiN616+h2bViXHvRXq(Sm^wuL19Gsjn^SbkS@JLMc91l>@6>F+f(`add9;m_e z;srvso)wT%B%2_#$Md7M#q}8yMiQ)c3-w&w8Vhh z+Rg2gy_chd1E%9>ezG|$WtLc(%6Cdh^0Qf+*QziuE^I!>|05WA#OPY*VU_`%0XKz~ zmR8}M+p8>1<$uCiRaKSMh-jeks+mNU#u?6!XC+h7Q_qu>lJfh_6F!B{#^gGTw)i#M zHa0ejPTkERk_wjQ+!9e)Q1QaH&axB@Trc_o#fz9%OKkyc?|(qE8O}1=q(nmI+(a=X ziY;^SL797Z6KMCvggmh?vvRFLa`rq_aKd;Gi_`zFpE_AnYOCe$=GZHTEtVlhndB_? z!=sHGf?j!!^a$r1FN-GoVy+F>91g=;%j6JQU0WeFK$LekH4Lb3Gw`S<@f5rhtBx@>)DQAF;H79haCTi%99m&_x4}Du{HJav)`tE z^=?)SzY#bot_&)dvC)VYy?@-D}+(;{F! zr+0K>9`G?qB?@fDI@9W}4a!xh=7dDKh%SW__7~y*^gDBtCy2#6v#)b7h%ri8O3JB1giT3r@%(b?}VoOrt!MTKm(y;ejG9rpZr6o5yf zJ|E42o%&8c<%(l+T8B4(sE3o)mvH46rN}BU9J$>(h(10D4L=+&Q3IVO@$>gTj#cMEksMg|)YkNH)G@Y1siwtI@Mn|lM%FPntbQ9ywoIA!a;qrbe z?G$K?Q_L9_K#`F43Pd{~Vo9=#f*4e(6Vt{x_6@?R$K6E11TQK?mOs3~X_fgswGdn9 zHs)3qoc`{c;*1Ndyg*I8a9XFwQxK*p|SJh*$c^#N1;ok+I z)vMPLIM`Tok}MRE_|N(1U+Y8Z47I!HyO6ge&+}7wFwqf|Pql$Qn$k@Ebom$fjpT2m ze~^RuvO_SP^)Q(In#o}kpB{M6u!pwzR;uwIYnw3=$0C#nJQ! zh1vTuPj=cs2WjkLNyJNU#{dNx+uTgq#{Se-hU1N4{nXj$h~WIc_aDKxdGNKu&t6dg zXs3KhjQ#I(#=Iy3*t_SCta-c0?@mN=DrAvzj~{=;aq3i##`)WV`SXdEz+IrAtD zmy!c1Duls8k~FTjF6v2o{toYn6Q6iOfB1cBJ`fwR__ex@(t?zp5?6qVx97VrKT=Ox zNeH4SMUDAAnyp0Uc18YFrLAUx()n4NOufk_yU0?9_r|uvwx8JxwP-kU@u*BzE`(|N zw~Bky+#@5TH`D3by$S|qS9!utqg3<(&UX=Oej2so4ze$_$kymsmK%aO_{k@_Y*pB# z%VT=EFmwE$AMWQ_?#-}5A3VFoN^L%oZAi?D)S*G~<)bzrX2&us_vm=@n}C0gu{THT4Qk&XN$$dkZ6Sr?@*gnl9Mi64$D9hUc647ul{W@2WtE@z zK-Auo)tQ|xGk)x^sXyN@CgI8NtWb^XIPcu-Lxczn?nsjH*O(NPju zV)*2Qi#Won7XYHx3d^##ZnVL%K=S0FiW|nz}3-&_D7~Nh`iSx-_N3YbJp6< zetzyREk6!uQMA)j3u&**g#y!683{+DZp(15l=;zc1q{r2qzIB6wpvOOG>(Tzde^y+ zr$e%# zZ{IV23@&+JyLDEb*JjFO{X$SKIz#J1R>Y<-ax_rXWQn3&r0RMdQikrd6lk4->L;#Rtx zJIxIXll)yqo_v*Uqp7>CG95(mml@y|4S!mz7Yx($z6QV7w3?FU4=-gRBB^NHsZhTX z;owlt?~A`ShDW9lCD=ZPZ<@c3t?xvgk7ax6GV97W@#mMWw)IupN>uosbo+5S_2sv$ zM)tZUca__+tY3L@Oz`kQ2>yLoeoR+dzcn_eZhix`ZPF8>Nk!oK1;8`X;&kWS7NHCT zY3Mzxccu`y#A)a+w5)Bq@y{VVme{KJvv3qyHqB2jpTk6)KWy2e_r5~zam;3y3~u;u z^Ry|?@Wjo1naJ0@R_<&NTm0!O{{zdAhhu=xFi}_UV6OrTh2u!>XTUf~FiXAA1rXLM zS)qjfwN#u;6vZ#uuqE<7#@tY#@fV1zaTTGBq&|6qXYlhxAV?C*g?^GR_F7&DW`|4b zdB-pGg~=OxOI9M`sHqEf-#c9vyl3WFbkh_bH!k#l(Lbc3qP!3bF=)zE{m4^PtNDgbK>qt z0(DvqSgrWMrv*xVXklWng2SwkE+M<*(T`D&`K{f?xnAWk^k;Cd7g(B=nc@4ZuoFCHY@LD+mI zuN03v0~gHt@)pnreb(~-sCI5NfLq6SdfSj_NkJTtMaR^Z@93eq)`sSSJ zYY^xjrEHHWV#5c3ZIb`wMs3&K)uH`xW(JLIiQLtAYMpg2=HX||tx?WE=R8ZlrWv)R zl|ew#-6z{vQISzrJ_ZqI0-hfr%G(tRO?9Wje;*?W z4KM0)1^auCOuzb~N1m5gR4_3zFx*ZYqes`ev6%h?i^QM7Y9To;Mm7tX6wcH0h0Pot zJ9S^rpRI#tleb3_<0VhsWS{*|5VvmN6<2=tpRE>Bdci0g7;(gk=?OOB5((7I#_ts{ zwHuZ|*JG{%AxmdFUq%_1nmkvuzq+r83kpW4F$R|M9xFuJo6LT3)OBUW$%S@856If;MlLcu3{RkUgn+o?Ckr7=8d>iv{ zr+;&zf>WnJ_Li&xGwFks2K!%KxdXQ7;Jp@ft7ch!gE3F>oEz&G4+f$4qD6P}u3v0{ zH?Tnip~0L;cx{!t^OBrmQF<4udGfTxmE;rMpvQ93_p8%YY}Wb=O^jIU+@L@29JhcR zb6Ov_Z49pwi-*WU$r#xlby5eIst>~YDR$b!tl=)%z@zmyKi-Q8)9!Q0902V^a>}=j zGbp;`%(CA$4g%HGP*ZwTvj=nfV})!!dPUJ|Yiv8ALH89x+r!_hFW}+Qr_*Mhhc1m* z1%MBbgFPijEJ#oPMxH_%X9Zt4o>UgE_O>|(MkfE~5?yfLJv%#F?K)G_h#Lc~n&K8m z3xK(R_x|!%j7NEAINodIdL6Gn+=8TJS{<8Z6*d=qI%UM9AP-~-{_!4pFaJHMaEyL1 zlC$Wei`4_v0D}auOcZ|6YvnmtzhT7~eskDH$S9pnLqp?yZCa^Q*TB@Mud&RjP_@RI z2Q??JsWtp~ahMvu`11bt{Qk0S<#vw_`_4f$3enJn1861pY%=Q-D{Q}n;8=o#&*86= z+^8(5%N8(QU(Ixd*)6sD7l6H)w$DBrnznv^4cg6l(RrAXftBoBS;OLiN2T{$A8W5X zyKc|qLXY3CgfyF0>p-&!n}pEqP zRF(h^=Xy5G3APxqqG<)93L9T5Rnt7o2}nygBf;((k(ilw1v`#vRz_GvhvWaV@%aCC fCjULKb`Pw)5lxsk(^COkvw((*j&hA6BJ%$L#g;~y diff --git a/pythonrewrite/www-data/volume_property_frame.png b/pythonrewrite/www-data/volume_property_frame.png deleted file mode 100644 index 11155688ff900db11e7345ad54daf28be582b5ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6389 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