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 @@
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 @@ +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 @@ -This ensures, that you do not mistype your 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