From b91e2da4d1ffd0c0d1565e13fa3b19ce47007d77 Mon Sep 17 00:00:00 2001 From: lars Date: Wed, 7 Sep 2005 20:02:41 +0000 Subject: [PATCH] fixed a lot of indentions added a administration password to initialization --- cbox-tree.d/usr/lib/cryptobox/cbox-manage.sh | 6 +- cbox-tree.d/usr/share/cryptobox/lang/de.hdf | 363 ++++++++-------- .../share/cryptobox/templates/init_form.cs | 32 +- .../doc/cryptobox/html/en/hints/admin_pw.html | 5 + .../html/en/hints/admin_pw_repeat.html | 3 + .../html/en/hints/crypto_pw_repeat.html | 4 +- cbox-tree.d/var/www/cgi-bin/cryptobox.pl | 386 +++++++++--------- etc-defaults.d/dfs-cbox.conf | 42 +- 8 files changed, 435 insertions(+), 406 deletions(-) create mode 100644 cbox-tree.d/usr/share/doc/cryptobox/html/en/hints/admin_pw.html create mode 100644 cbox-tree.d/usr/share/doc/cryptobox/html/en/hints/admin_pw_repeat.html diff --git a/cbox-tree.d/usr/lib/cryptobox/cbox-manage.sh b/cbox-tree.d/usr/lib/cryptobox/cbox-manage.sh index feb292e..a5c694b 100755 --- a/cbox-tree.d/usr/lib/cryptobox/cbox-manage.sh +++ b/cbox-tree.d/usr/lib/cryptobox/cbox-manage.sh @@ -283,6 +283,10 @@ function init_cryptobox_part1() create_partitions "$device" create_config "$device" ) >>"$LOG_FILE" 2>&1 + # read the admin-pw from the first line of input + local admin_pw + read admin_pw + config_set_value admin_pw "$admin_pw" # the output of create_crypto may NOT be redirected - this would prevent cryptsetup from # reading the passphrase from stdin log_msg "Creating the crypto partition ..." @@ -359,7 +363,7 @@ case "$ACTION" in ifconfig $NET_IFACE down ;; services-up ) - /etc/init.d/thttpd start + # is something special necessary? ;; services-down ) /etc/init.d/samba stop diff --git a/cbox-tree.d/usr/share/cryptobox/lang/de.hdf b/cbox-tree.d/usr/share/cryptobox/lang/de.hdf index e2e14d5..b3d32bc 100644 --- a/cbox-tree.d/usr/share/cryptobox/lang/de.hdf +++ b/cbox-tree.d/usr/share/cryptobox/lang/de.hdf @@ -1,194 +1,201 @@ Lang { - Name = Deutsch + Name = Deutsch - Title { - Top = Die CryptoBox - Slogan = Privatspähre für alle! - Init = Initialisierung der CryptoBox - Mount = Aktivierung der Crypto-Daten - Umount = Deaktivierung der Crypto-Daten - Config = Konfiguration der CryptoBox - Log = Protokoll der CryptoBox - ShutDown = System - } - - - Text { - EnterNewPassword = Das neue Passwort eingeben: - EnterSamePassword = Das neue Passwort wiederholen: - InitWarning = Bei der Initialisierung werden ALLE DATEN auf der Festplatte GELÖSCHT! - InitDescription = Dieser Schritt ist nur einmalig vor der ersten Nutzung notwendig.
Für den täglichen Gebrauch muessen sie das verschlüsselte Dateisystem lediglich aktivieren und deaktivieren - ConfirmInitHint = Um zu bestätigen, dass sie wissen, was sie tun, tippen sie hier bitte exakt Folgendes ein: - ConfirmInit = ja, loesche alle Daten! - PartitionInfo = Derzeitige Partitionierung der Festplatte: - IPAddress = Netwerk-Adresse (IP) der CryptoBox: - TimeOut = Zeitabschaltung des Crypto-Dateisystems (in Minuten): - EmptyLog = Das Logbuch der CryptoBox ist leer. - SelectLanguage = Spracheinstellung: - RedirectNote = Klicken sie hier, falls ihr 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 - } - - - Button { - DoInit = CryptoBox initialisieren - SaveConfig = Speichere Konfiguration - Update = Aktualisieren - Mount = CryptoDaten aktivieren - Umount = CryptoDaten deaktivieren - PowerOff = ausschalten - ReBoot = neu starten - Protocol = Protokoll - Documentation = Handbuch - } - - - WarningMessage { - InitNotConfirmed { - Title = Bestätigung schlug fehl - Text = Der Bestätigungssatz muss exakt eingegeben werden! - } - - EmptyPassword { - Title = Ungültige Eingabe - Text = Das Passwort darf nicht leer sein! - } - - DifferentPasswords { - Title = Ungleiche Passworte - Text = Die beiden Passworte müssen identisch sein, um sicherzustellen, dass dies das gewünschte Passwort ist. - } - - MountFailed { - Title = Aktivierung schlug fehl - Text = Das verschlüsselte Dateisystem konnte nicht aktiviert werden. Wahrscheinlich war das Passwort falsch. - } - - UmountFailed { - Title = Deaktivierung schlug fehl - Text = Das verschlüsselte Dateisystem konnte nicht abgeschaltet werden. Wahrscheinlich sind noch Dateien geöffnet. Also schließen sie alle potentiell unsauberen Programme (beispielsweise die weitverbreitete Textverarbeitung). Notfalls einfach die CryptoBox herunterfahren! + Title { + Top = Die CryptoBox + Slogan = Privatspähre für alle! + Init = Initialisierung der CryptoBox + Mount = Aktivierung der Crypto-Daten + Umount = Deaktivierung der Crypto-Daten + Config = Konfiguration der CryptoBox + Log = Protokoll der CryptoBox + ShutDown = System } - NotConfigured { - Title = Keine Konfiguration gefunden - Text = Die CryptoBox wurde noch nicht eingerichtet. + + Text { + EnterNewCryptoPassword = Das neue Crypto-Passwort eingeben: + EnterSameCryptoPassword = Das Crypto-Passwort wiederholen: + EnterNewAdminPassword = Das neue Admin-Passwort eingeben: + EnterSameAdminPassword = Das Admin-Passwort wiederholen: + InitWarning = Bei der Initialisierung werden ALLE DATEN auf der Festplatte GELÖSCHT! + InitDescription = Dieser Schritt ist nur einmalig vor der ersten Nutzung notwendig.
Für den täglichen Gebrauch muessen sie das verschlüsselte Dateisystem lediglich aktivieren und deaktivieren + ConfirmInitHint = Um zu bestätigen, dass sie wissen, was sie tun, tippen sie hier bitte exakt Folgendes ein: + ConfirmInit = ja, loesche alle Daten! + PartitionInfo = Derzeitige Partitionierung der Festplatte: + IPAddress = Netwerk-Adresse (IP) der CryptoBox: + TimeOut = Zeitabschaltung des Crypto-Dateisystems (in Minuten): + EmptyLog = Das Logbuch der CryptoBox ist leer. + SelectLanguage = Spracheinstellung: + RedirectNote = Klicken sie hier, falls ihr 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 } - InitNotFinished { - Title = Initalisierung noch nicht abgeschlossen - Text = Die Initialisierung wird in wenigen Minuten beendet sein. Erst danach ist diese Aktion möglich. + + Button { + DoInit = CryptoBox initialisieren + SaveConfig = Speichere Konfiguration + Update = Aktualisieren + Mount = CryptoDaten aktivieren + Umount = CryptoDaten deaktivieren + PowerOff = ausschalten + ReBoot = neu starten + Protocol = Protokoll + Documentation = Handbuch } - IsMounted { - Title = Bereits aktiv - Text = Das verschlüsselte Dateisystem ist bereits aktiv. + + WarningMessage { + InitNotConfirmed { + Title = Bestätigung schlug fehl + Text = Der Bestätigungssatz muss exakt eingegeben werden! + } + + EmptyCryptoPassword { + Title = Ungültiges Crypto-Passwort + Text = Das Crypto-Passwort darf nicht leer sein! + } + + DifferentCryptoPasswords { + Title = Ungleiche Crypto-Passworte + Text = Die beiden Passworte müssen identisch sein, um sicherzustellen, dass dies das gewünschte Passwort ist. + } + + DifferentAdminPasswords { + Title = Ungleiche Administratons-Passworte + Text = Die beiden Passworte müssen identisch sein, um sicherzustellen, dass dies das gewünschte Passwort ist. + } + + MountFailed { + Title = Aktivierung schlug fehl + Text = Das verschlüsselte Dateisystem konnte nicht aktiviert werden. Wahrscheinlich war das Passwort falsch. + } + + UmountFailed { + Title = Deaktivierung schlug fehl + Text = Das verschlüsselte Dateisystem konnte nicht abgeschaltet werden. Wahrscheinlich sind noch Dateien geöffnet. Also schließen sie alle potentiell unsauberen Programme (beispielsweise die weitverbreitete Textverarbeitung). Notfalls einfach die CryptoBox herunterfahren! + } + + NotConfigured { + 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! + } + + InvalidIP { + Title = Ungültige IP + Text = Die ausgewählte Netzwerkadresse ist nicht gültig! + } + + InvalidTimeOut { + Title = Ungültige Zeitabschaltung + Text = Der ausgewählte Wert der Zeitabschaltung ist nicht gültig! + } + + ConfigTimeOutFailed { + Title = Fehler beim Ändern der Zeitabschaltung + Text = Der Wert der Zeitabschaltung konnte nicht geändert werden! + } + + ConfigLanguageFailed { + Title = Fehler beim Ändern der Spracheinstellung + Text = Die Sprach-Einstellung konnte nicht geändert werden! + } + + ConfigIPFailed { + Title = Fehler beim Ändern der Netzwerkadresse + Text = Die Netzwerkadresse konnte nicht geändert werden! + } + + IPAddressChanged { + Title = Änderung der Netzwerk-Adresse + Text = Die Netzwerk-Adresse der CryptoBox wurde verändert. In wenigen Sekunden werden sie zu der neuen Adresse umgeleitet. + } } - NotMounted { - Title = Nicht aktiv - Text = Das verschlüsselte Dateisystem ist derzeit nicht aktiv. + + SuccessMessage { + InitRunning { + Title = Initialisierung läuft + Text = Die Initialisierung der CryptoBox wird im Hintergrund abgeschlossen. + } + + 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 können sie 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. + } } - AlreadyConfigured { - Title = Konfiguration gefunden - Text = Die CryptoBox wurde bereits eingerichtet. Bei einer erneuten Initialisierung werden alle Daten gelöscht! + + ErrorMessage { + + UnknownAction { + Title = Unbekannte Aktion + Text = Sie haben 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. + } + + InitFailed { + Title = Initialisierung fehlgeschlagen + Text = Senden sie bitte den Inhalt des Protokolls (siehe oben) an die Entwickler der CryptoBox. + } + + NoHardDisk { + Title = Keine Festplatte + Text = Es wurde kein Datenträger gefunden, der zur Speicherung der verschlüsselten Daten geeignet ist. Prüfen sie bitte, ob beim Anschalten des Computers eine Festplatte vom BIOS erkannt wurde. + } } - InvalidLanguage { - Title = Ungültige Sprache - Text = Die ausgewählte Sprache ist nicht verfügbar! - } - - InvalidIP { - Title = Ungültige IP - Text = Die ausgewählte Netzwerkadresse ist nicht gültig! - } - - InvalidTimeOut { - Title = Ungültige Zeitabschaltung - Text = Der ausgewählte Wert der Zeitabschaltung ist nicht gültig! - } - - ConfigTimeOutFailed { - Title = Fehler beim Ändern der Zeitabschaltung - Text = Der Wert der Zeitabschaltung konnte nicht geändert werden! - } - - ConfigLanguageFailed { - Title = Fehler beim Ändern der Spracheinstellung - Text = Die Sprach-Einstellung konnte nicht geändert werden! - } - - ConfigIPFailed { - Title = Fehler beim Ändern der Netzwerkadresse - Text = Die Netzwerkadresse konnte nicht geändert werden! - } - - IPAddressChanged { - Title = Änderung der Netzwerk-Adresse - Text = Die Netzwerk-Adresse der CryptoBox wurde verändert. In wenigen Sekunden werden sie zu der neuen Adresse umgeleitet. - } - } - - - SuccessMessage { - InitRunning { - Title = Initialisierung läuft - Text = Die Initialisierung der CryptoBox wird im Hintergrund abgeschlossen. - } - - 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 können sie 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. - } - } - - - ErrorMessage { - - UnknownAction { - Title = Unbekannte Aktion - Text = Sie haben 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. - } - - InitFailed { - Title = Initialisierung fehlgeschlagen - Text = Senden sie bitte den Inhalt des Protokolls (siehe oben) an die Entwickler der CryptoBox. - } - - NoHardDisk { - Title = Keine Festplatte - Text = Es wurde kein Datenträger gefunden, der zur Speicherung der verschlüsselten Daten geeignet ist. Prüfen sie bitte, ob beim Anschalten des Computers eine Festplatte vom BIOS erkannt wurde. - } - } - } diff --git a/cbox-tree.d/usr/share/cryptobox/templates/init_form.cs b/cbox-tree.d/usr/share/cryptobox/templates/init_form.cs index e99706a..4f24efe 100644 --- a/cbox-tree.d/usr/share/cryptobox/templates/init_form.cs +++ b/cbox-tree.d/usr/share/cryptobox/templates/init_form.cs @@ -1,23 +1,27 @@

-
+
-

-


-

-


-

-


-

- +

+


+

+


+

+


+

+


+

+


+

+
-
+
-
+
-
+

-
+
diff --git a/cbox-tree.d/usr/share/doc/cryptobox/html/en/hints/admin_pw.html b/cbox-tree.d/usr/share/doc/cryptobox/html/en/hints/admin_pw.html new file mode 100644 index 0000000..2684939 --- /dev/null +++ b/cbox-tree.d/usr/share/doc/cryptobox/html/en/hints/admin_pw.html @@ -0,0 +1,5 @@ +

Administration password of the CryptoBox

+

This password protects your CryptoBox against random re-initialization by unauthorized people. +Any dangerous administrative action requires this administration password.

+

You may leave this password blank, if your network is safe.

+

The administration password does NOT protect your sensible data in any way!

diff --git a/cbox-tree.d/usr/share/doc/cryptobox/html/en/hints/admin_pw_repeat.html b/cbox-tree.d/usr/share/doc/cryptobox/html/en/hints/admin_pw_repeat.html new file mode 100644 index 0000000..84534ca --- /dev/null +++ b/cbox-tree.d/usr/share/doc/cryptobox/html/en/hints/admin_pw_repeat.html @@ -0,0 +1,3 @@ +

Repeat the administration password

+

This ensures, that you do not mistype your administration password.

+

Leave it blank, if you do not need an administration password.

diff --git a/cbox-tree.d/usr/share/doc/cryptobox/html/en/hints/crypto_pw_repeat.html b/cbox-tree.d/usr/share/doc/cryptobox/html/en/hints/crypto_pw_repeat.html index 7ddbd02..9312eea 100644 --- a/cbox-tree.d/usr/share/doc/cryptobox/html/en/hints/crypto_pw_repeat.html +++ b/cbox-tree.d/usr/share/doc/cryptobox/html/en/hints/crypto_pw_repeat.html @@ -1,2 +1,2 @@ -

Repeat the crypto password

-

This ensures, that you do not mistype your password.

+

Repeat the encryption password

+

This ensures, that you do not mistype your encryption password.

diff --git a/cbox-tree.d/var/www/cgi-bin/cryptobox.pl b/cbox-tree.d/var/www/cgi-bin/cryptobox.pl index 1ef45cc..0b07d39 100755 --- a/cbox-tree.d/var/www/cgi-bin/cryptobox.pl +++ b/cbox-tree.d/var/www/cgi-bin/cryptobox.pl @@ -176,11 +176,13 @@ sub umount_vol sub box_init { - my $pw = shift; + my $admin_pw = shift; + my $crypto_pw = shift; # partitioning, config and initial cryptsetup open(PW_INPUT, "|$CB_SCRIPT box-init-fg"); - print PW_INPUT $pw; + print PW_INPUT "$admin_pw"; + print PW_INPUT "$crypto_pw"; close(PW_INPUT); # wipe and mkfs takes some time - it will be done in the background @@ -286,207 +288,211 @@ if ($query->param('weblang') && &validate_doc_language($query->param('weblang')) # first: check for ssl! if ( ! &check_ssl()) { - $pagedata->setValue('Data.Error', 'NoSSL'); - $pagedata->setValue('Data.Redirect.URL', "https://" . $ENV{'HTTP_HOST'} . $ENV{'SCRIPT_NAME'}); - $pagedata->setValue('Data.Redirect.Delay', "3"); + $pagedata->setValue('Data.Error', 'NoSSL'); + $pagedata->setValue('Data.Redirect.URL', "https://" . $ENV{'HTTP_HOST'} . $ENV{'SCRIPT_NAME'}); + $pagedata->setValue('Data.Redirect.Delay', "3"); } elsif ( ! &is_harddisk_available()) { - $pagedata->setValue('Data.Error', 'NoHardDisk'); + $pagedata->setValue('Data.Error', 'NoHardDisk'); } elsif ($query->param('action')) { - my $action = $query->param('action'); - ################ umount_do ####################### - if ($action eq 'umount_do') { - if ( ! &check_config()) { - $pagedata->setValue('Data.Warning', 'NotConfigured'); - $pagedata->setValue('Data.Action', 'init_form'); - } elsif (&check_init_running()) { - $pagedata->setValue('Data.Warning', 'InitNotFinished'); - $pagedata->setValue('Data.Action', 'mount_form'); - } elsif ( ! &check_mounted()) { - $pagedata->setValue('Data.Warning', 'NotMounted'); - $pagedata->setValue('Data.Action', 'mount_form'); - } else { - # unmounten - &umount_vol(); - if (&check_mounted()) { - $pagedata->setValue('Data.Warning', 'UmountFailed'); - $pagedata->setValue('Data.Action', 'umount_form'); - } else { - $pagedata->setValue('Data.Success', 'UmountDone'); - $pagedata->setValue('Data.Action', 'mount_form'); - } - } - ################ mount_do ######################## - } elsif ($action eq 'mount_do') { - # mount requested - if ( ! &check_config()) { - $pagedata->setValue('Data.Warning', 'NotConfigured'); - $pagedata->setValue('Data.Action', 'init_form'); - } elsif (&check_init_running()) { - $pagedata->setValue('Data.Warning', 'InitNotFinished'); - $pagedata->setValue('Data.Action', 'mount_form'); - } elsif (&check_mounted()) { - $pagedata->setValue('Data.Warning', 'IsMounted'); - $pagedata->setValue('Data.Action', 'umount_form'); - } elsif ($query->param('password') eq '') { - # leeres Passwort - $pagedata->setValue('Data.Warning', 'EmptyPassword'); - $pagedata->setValue('Data.Action', 'mount_form'); - } else { - # mounten - &mount_vol($query->param('password')); - if (!&check_mounted()) { - $pagedata->setValue('Data.Warning', 'MountFailed'); - $pagedata->setValue('Data.Action', 'mount_form'); - } else { - $pagedata->setValue('Data.Success', 'MountDone'); - $pagedata->setValue('Data.Action', 'umount_form'); - } - } - ################## mount_ask ####################### - } elsif ($action eq 'mount_ask') { - if ( ! &check_config()) { - $pagedata->setValue('Data.Warning', 'NotConfigured'); - $pagedata->setValue('Data.Action', 'init_form'); - } elsif (&check_init_running()) { - $pagedata->setValue('Data.Warning', 'InitNotFinished'); - $pagedata->setValue('Data.Action', 'mount_form'); - } elsif (&check_mounted()) { - $pagedata->setValue('Data.Warning', 'IsMounted'); - $pagedata->setValue('Data.Action', 'intro'); - } else { - $pagedata->setValue('Data.Action', 'mount_form'); - } - ################# umount_ask ######################## - } elsif ($action eq 'umount_ask') { - if ( ! &check_config()) { - $pagedata->setValue('Data.Warning', 'NotConfigured'); - $pagedata->setValue('Data.Action', 'init_form'); - } elsif ( ! &check_mounted()) { - $pagedata->setValue('Data.Warning', 'NotMounted'); - $pagedata->setValue('Data.Action', 'mount_form'); - } else { - $pagedata->setValue('Data.Action', 'umount_form'); - } - ################## init_ask ######################### - } elsif ($action eq 'init_ask') { - if (&check_init_running()) { - $pagedata->setValue('Data.Warning', 'InitNotFinished'); - $pagedata->setValue('Data.Action', 'intro'); - } elsif (&check_config()) { - $pagedata->setValue('Data.Warning', 'AlreadyConfigured'); - $pagedata->setValue('Data.Action', 'init_form'); - } else { - $pagedata->setValue('Data.Action', 'init_form'); - } - #################### init_do ######################## - } elsif ($action eq 'init_do') { - if ($query->param('password') ne $query->param('password2')) { - # different passwords - $pagedata->setValue('Data.Warning', 'DifferentPasswords'); - $pagedata->setValue('Data.Action', 'init_form'); - } elsif ($query->param('password') eq '') { - # empty password - $pagedata->setValue('Data.Warning', 'EmptyPassword'); - $pagedata->setValue('Data.Action', 'init_form'); - } elsif ($query->param('confirm') ne $pagedata->getValue('Lang.Text.ConfirmInit','')) { - # wrong confirm string - $pagedata->setValue('Data.Warning', 'InitNotConfirmed'); - $pagedata->setValue('Data.Action', 'init_form'); - } else { - # do init - &box_init($query->param('password')); - if (!&check_init_running()) { - $pagedata->setValue('Data.Error', 'InitFailed'); + my $action = $query->param('action'); + ################ umount_do ####################### + if ($action eq 'umount_do') { + if ( ! &check_config()) { + $pagedata->setValue('Data.Warning', 'NotConfigured'); + $pagedata->setValue('Data.Action', 'init_form'); + } elsif (&check_init_running()) { + $pagedata->setValue('Data.Warning', 'InitNotFinished'); + $pagedata->setValue('Data.Action', 'mount_form'); + } elsif ( ! &check_mounted()) { + $pagedata->setValue('Data.Warning', 'NotMounted'); + $pagedata->setValue('Data.Action', 'mount_form'); } else { - $pagedata->setValue('Data.Success', 'InitRunning'); - $pagedata->setValue('Data.Action', 'config_form'); + # unmounten + &umount_vol(); + if (&check_mounted()) { + $pagedata->setValue('Data.Warning', 'UmountFailed'); + $pagedata->setValue('Data.Action', 'umount_form'); + } else { + $pagedata->setValue('Data.Success', 'UmountDone'); + $pagedata->setValue('Data.Action', 'mount_form'); + } } - } - #################### config_ask ###################### - } elsif ($action eq 'config_ask') { - if ( ! &check_config()) { - $pagedata->setValue('Data.Warning', 'NotConfigured'); - $pagedata->setValue('Data.Action', 'init_form'); - } else { - $pagedata->setValue('Data.Action', 'config_form'); - } - #################### config_do ####################### - } elsif ($action eq 'config_do') { - if ( ! &check_config()) { - $pagedata->setValue('Data.Warning', 'NotConfigured'); - $pagedata->setValue('Data.Action', 'init_form'); - } else { - if ( ! &validate_language($query->param('language'))) { - $pagedata->setValue('Data.Warning', 'InvalidLanguage'); - $pagedata->setValue('Data.Action', 'config_form'); - } elsif ( ! &validate_ip($query->param('ip'))) { - $pagedata->setValue('Data.Warning', 'InvalidIP'); - $pagedata->setValue('Data.Action', 'config_form'); - } elsif ( ! &validate_timeout($query->param('timeout'))) { - $pagedata->setValue('Data.Warning', 'InvalidTimeOut'); - $pagedata->setValue('Data.Action', 'config_form'); - } else { - system("$CB_SCRIPT", "set_config", "language", $query->param('language')); - system("$CB_SCRIPT", "set_config", "timeout", $query->param('timeout')); - # check, if the ip was reconfigured - if ($query->param('ip') ne `$CB_SCRIPT get_config ip`) - { - # set the new value - system("$CB_SCRIPT", "set_config", "ip", $query->param('ip')); - # reconfigure the network interface - system("$CB_SCRIPT", "update_ip_address"); - # redirect to the new address - $pagedata->setValue('Data.Redirect.URL', "https://" . $query->param('ip') . $ENV{'SCRIPT_NAME'}); - $pagedata->setValue('Data.Redirect.Delay', "5"); - # display a warning for the redirection - $pagedata->setValue('Data.Warning', 'IPAddressChanged'); + ################ mount_do ######################## + } elsif ($action eq 'mount_do') { + # mount requested + if ( ! &check_config()) { + $pagedata->setValue('Data.Warning', 'NotConfigured'); + $pagedata->setValue('Data.Action', 'init_form'); + } elsif (&check_init_running()) { + $pagedata->setValue('Data.Warning', 'InitNotFinished'); + $pagedata->setValue('Data.Action', 'mount_form'); + } elsif (&check_mounted()) { + $pagedata->setValue('Data.Warning', 'IsMounted'); + $pagedata->setValue('Data.Action', 'umount_form'); + } elsif ($query->param('password') eq '') { + # leeres Passwort + $pagedata->setValue('Data.Warning', 'EmptyPassword'); + $pagedata->setValue('Data.Action', 'mount_form'); + } else { + # mounten + &mount_vol($query->param('password')); + if (!&check_mounted()) { + $pagedata->setValue('Data.Warning', 'MountFailed'); + $pagedata->setValue('Data.Action', 'mount_form'); + } else { + $pagedata->setValue('Data.Success', 'MountDone'); + $pagedata->setValue('Data.Action', 'umount_form'); + } } + ################## mount_ask ####################### + } elsif ($action eq 'mount_ask') { + if ( ! &check_config()) { + $pagedata->setValue('Data.Warning', 'NotConfigured'); + $pagedata->setValue('Data.Action', 'init_form'); + } elsif (&check_init_running()) { + $pagedata->setValue('Data.Warning', 'InitNotFinished'); + $pagedata->setValue('Data.Action', 'mount_form'); + } elsif (&check_mounted()) { + $pagedata->setValue('Data.Warning', 'IsMounted'); + $pagedata->setValue('Data.Action', 'intro'); + } else { + $pagedata->setValue('Data.Action', 'mount_form'); + } + ################# umount_ask ######################## + } elsif ($action eq 'umount_ask') { + if ( ! &check_config()) { + $pagedata->setValue('Data.Warning', 'NotConfigured'); + $pagedata->setValue('Data.Action', 'init_form'); + } elsif ( ! &check_mounted()) { + $pagedata->setValue('Data.Warning', 'NotMounted'); + $pagedata->setValue('Data.Action', 'mount_form'); + } else { + $pagedata->setValue('Data.Action', 'umount_form'); + } + ################## init_ask ######################### + } elsif ($action eq 'init_ask') { + if (&check_init_running()) { + $pagedata->setValue('Data.Warning', 'InitNotFinished'); + $pagedata->setValue('Data.Action', 'intro'); + } elsif (&check_config()) { + $pagedata->setValue('Data.Warning', 'AlreadyConfigured'); + $pagedata->setValue('Data.Action', 'init_form'); + } else { + $pagedata->setValue('Data.Action', 'init_form'); + } + #################### init_do ######################## + } elsif ($action eq 'init_do') { + if ($query->param('admin_password') ne $query->param('admin_password2')) { + # different admin-passwords + $pagedata->setValue('Data.Warning', 'DifferentAdminPasswords'); + $pagedata->setValue('Data.Action', 'init_form'); + } elsif ($query->param('crypto_password') ne $query->param('crypto_password2')) { + # different crypto-passwords + $pagedata->setValue('Data.Warning', 'DifferentCryptoPasswords'); + $pagedata->setValue('Data.Action', 'init_form'); + } elsif ($query->param('crypto_password') eq '') { + # empty password + $pagedata->setValue('Data.Warning', 'EmptyCryptoPassword'); + $pagedata->setValue('Data.Action', 'init_form'); + } elsif ($query->param('confirm') ne $pagedata->getValue('Lang.Text.ConfirmInit','')) { + # wrong confirm string + $pagedata->setValue('Data.Warning', 'InitNotConfirmed'); + $pagedata->setValue('Data.Action', 'init_form'); + } else { + # do init + &box_init($query->param('admin_password'),$query->param('crypto_password')); + if (!&check_init_running()) { + $pagedata->setValue('Data.Error', 'InitFailed'); + } else { + $pagedata->setValue('Data.Success', 'InitRunning'); + $pagedata->setValue('Data.Action', 'config_form'); + } + } + #################### config_ask ###################### + } elsif ($action eq 'config_ask') { + if ( ! &check_config()) { + $pagedata->setValue('Data.Warning', 'NotConfigured'); + $pagedata->setValue('Data.Action', 'init_form'); + } else { + $pagedata->setValue('Data.Action', 'config_form'); + } + #################### config_do ####################### + } elsif ($action eq 'config_do') { + if ( ! &check_config()) { + $pagedata->setValue('Data.Warning', 'NotConfigured'); + $pagedata->setValue('Data.Action', 'init_form'); + } else { + if ( ! &validate_language($query->param('language'))) { + $pagedata->setValue('Data.Warning', 'InvalidLanguage'); + $pagedata->setValue('Data.Action', 'config_form'); + } elsif ( ! &validate_ip($query->param('ip'))) { + $pagedata->setValue('Data.Warning', 'InvalidIP'); + $pagedata->setValue('Data.Action', 'config_form'); + } elsif ( ! &validate_timeout($query->param('timeout'))) { + $pagedata->setValue('Data.Warning', 'InvalidTimeOut'); + $pagedata->setValue('Data.Action', 'config_form'); + } else { + system("$CB_SCRIPT", "set_config", "language", $query->param('language')); + system("$CB_SCRIPT", "set_config", "timeout", $query->param('timeout')); + # check, if the ip was reconfigured + if ($query->param('ip') ne `$CB_SCRIPT get_config ip`) + { + # set the new value + system("$CB_SCRIPT", "set_config", "ip", $query->param('ip')); + # reconfigure the network interface + system("$CB_SCRIPT", "update_ip_address"); + # redirect to the new address + $pagedata->setValue('Data.Redirect.URL', "https://" . $query->param('ip') . $ENV{'SCRIPT_NAME'}); + $pagedata->setValue('Data.Redirect.Delay', "5"); + # display a warning for the redirection + $pagedata->setValue('Data.Warning', 'IPAddressChanged'); + } - # check for success - if (`$CB_SCRIPT get_config timeout` ne $query->param('timeout')) { - $pagedata->setValue('Data.Warning', 'ConfigTimeOutFailed'); - } elsif (`$CB_SCRIPT get_config ip` ne $query->param('ip')) { - $pagedata->setValue('Data.Warning', 'ConfigIPFailed'); - } elsif (`$CB_SCRIPT get_config language` ne $query->param('language')) { - $pagedata->setValue('Data.Warning', 'ConfigLanguageFailed'); + # check for success + if (`$CB_SCRIPT get_config timeout` ne $query->param('timeout')) { + $pagedata->setValue('Data.Warning', 'ConfigTimeOutFailed'); + } elsif (`$CB_SCRIPT get_config ip` ne $query->param('ip')) { + $pagedata->setValue('Data.Warning', 'ConfigIPFailed'); + } elsif (`$CB_SCRIPT get_config language` ne $query->param('language')) { + $pagedata->setValue('Data.Warning', 'ConfigLanguageFailed'); + } else { + $pagedata->setValue('Data.Success', 'ConfigSaved'); + } + $pagedata->setValue('Data.Action', 'intro'); + } + } + #################### show_log ####################### + } elsif ($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', 'doc'); } else { - $pagedata->setValue('Data.Success', 'ConfigSaved'); + $pagedata->setValue('Data.Doc.Page', 'CryptoBox'); + $pagedata->setValue('Data.Action', 'doc'); + } + ##################### poweroff ###################### + } elsif ($action eq 'shutdown_ask') { + $pagedata->setValue('Data.Action', 'shutdown_form'); + ##################### reboot ######################## + } elsif ($action eq 'shutdown_do') { + if ($query->param('type') eq 'reboot') { + &system_reboot(); + $pagedata->setValue('Data.Success', 'ReBoot'); + } else { + &system_poweroff(); + $pagedata->setValue('Data.Success', 'PowerOff'); } $pagedata->setValue('Data.Action', 'intro'); - } - } - #################### show_log ####################### - } elsif ($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', 'doc'); + ################### unknown ######################### } else { - $pagedata->setValue('Data.Doc.Page', 'CryptoBox'); - $pagedata->setValue('Data.Action', 'doc'); + $pagedata->setValue('Data.Error', 'UnknownAction'); } - ##################### poweroff ###################### - } elsif ($action eq 'shutdown_ask') { - $pagedata->setValue('Data.Action', 'shutdown_form'); - ##################### reboot ######################## - } elsif ($action eq 'shutdown_do') { - if ($query->param('type') eq 'reboot') { - &system_reboot(); - $pagedata->setValue('Data.Success', 'ReBoot'); - } else { - &system_poweroff(); - $pagedata->setValue('Data.Success', 'PowerOff'); - } - $pagedata->setValue('Data.Action', 'intro'); - ################### unknown ######################### - } else { - $pagedata->setValue('Data.Error', 'UnknownAction'); - } ###################### default ########################## } else { - $pagedata->setValue('Data.Action', 'intro'); + $pagedata->setValue('Data.Action', 'intro'); } # check state of the cryptobox diff --git a/etc-defaults.d/dfs-cbox.conf b/etc-defaults.d/dfs-cbox.conf index 33fda07..f2f4e04 100644 --- a/etc-defaults.d/dfs-cbox.conf +++ b/etc-defaults.d/dfs-cbox.conf @@ -14,7 +14,7 @@ name = CryptoBox version = 0.0.1 # Person that built it -builder = s.l. +builder = sense.lab # Repositories to mirror. Details about each one are configured below. dlrepos = sarge @@ -28,8 +28,8 @@ compress = no # Files to never compress if the above is yes # If a dir is given, that dir and everything below is not compressed dontcompress = /boot - /etc/*boot* - /opt/dfsruntime/initrd.dfs + /etc/*boot* + /opt/dfsruntime/initrd.dfs # Location of dfsbuild support files libdir = /usr/lib/dfsbuild @@ -127,24 +127,24 @@ devices = scd0 scd1 scd2 scd3 scd4 hda hdb hdc hdd hde hdf hdg # Files to place on the ramdisk ramdisk_files = /etc/resolv.conf - /etc/lvm* - /tmp - /var/tmp - /dev - /etc/fstab + /etc/lvm* + /tmp + /var/tmp + /dev + /etc/fstab /var/lib/dhcp /var/lib/samba /var/log /var/cache/samba - /var/lock - /var/run - /var/state + /var/lock + /var/run + /var/state /etc/mtab - /root - /etc/network - /var/lib/misc - /var/lib/urandom - /etc/hotplug + /root + /etc/network + /var/lib/misc + /var/lib/urandom + /etc/hotplug/.run /var/spool/cron # Directories to create on live fs @@ -152,8 +152,8 @@ makedirs = /root/.elinks # Files to delete from live fs deletefiles = /etc/rcS.d/*discover - /etc/rcS.d/*hotplug - /etc/rcS.d/*lvm + /etc/rcS.d/*hotplug + /etc/rcS.d/*lvm ###################################################################### # Arch settings: i386 @@ -211,7 +211,7 @@ arch = amd64 /etc/fstab = /dev/mapper/staub /mnt/crypto auto noauto,defaults 0 0 /etc/network/interfaces = auto lo - iface lo inet loopback + iface lo inet loopback # /etc/modules = @@ -226,8 +226,8 @@ arch = amd64 [createfiles] /etc/hostname = CryptoBox -/etc/syslog.conf = *.* /dev/tty8 - *.info /dev/tty7 +/etc/syslog.conf = *.* /dev/tty8 + *.info /dev/tty7 /etc/hosts = 127.0.0.1 localhost