fixed a lot of indentions

added a administration password to initialization
This commit is contained in:
lars 2005-09-07 20:02:41 +00:00
parent 28380202b9
commit b91e2da4d1
8 changed files with 435 additions and 406 deletions

View File

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

View File

@ -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.<br>F&uuml;r den t&auml;glichen Gebrauch muessen sie das verschl&uuml;sselte Dateisystem lediglich aktivieren und deaktivieren
ConfirmInitHint = Um zu best&auml;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&uuml;tzt.
ProjectHomePage = Projekt-Seite
ProjectNote = Die CryptoBox ist ein Projekt von
DoUmount = Deaktivierung des verschl&uuml;sselten Dateisystems
DoMount = Aktivierung des verschl&uuml;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&auml;tigung schlug fehl
Text = Der Best&auml;tigungssatz muss exakt eingegeben werden!
}
EmptyPassword {
Title = Ung&uuml;ltige Eingabe
Text = Das Passwort darf nicht leer sein!
}
DifferentPasswords {
Title = Ungleiche Passworte
Text = Die beiden Passworte m&uuml;ssen identisch sein, um sicherzustellen, dass dies das gew&uuml;nschte Passwort ist.
}
MountFailed {
Title = Aktivierung schlug fehl
Text = Das verschl&uuml;sselte Dateisystem konnte nicht aktiviert werden. Wahrscheinlich war das Passwort falsch.
}
UmountFailed {
Title = Deaktivierung schlug fehl
Text = Das verschl&uuml;sselte Dateisystem konnte nicht abgeschaltet werden. Wahrscheinlich sind noch Dateien ge&ouml;ffnet. Also schlie&szlig;en sie alle potentiell unsauberen Programme (beispielsweise die weitverbreitete Textverarbeitung). Notfalls einfach die CryptoBox herunterfahren!
Title {
Top = Die CryptoBox
Slogan = Privatsp&auml;hre f&uuml;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&Ouml;SCHT!
InitDescription = Dieser Schritt ist nur einmalig vor der ersten Nutzung notwendig.<br>F&uuml;r den t&auml;glichen Gebrauch muessen sie das verschl&uuml;sselte Dateisystem lediglich aktivieren und deaktivieren
ConfirmInitHint = Um zu best&auml;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&uuml;tzt.
ProjectHomePage = Projekt-Seite
ProjectNote = Die CryptoBox ist ein Projekt von
DoUmount = Deaktivierung des verschl&uuml;sselten Dateisystems
DoMount = Aktivierung des verschl&uuml;sselten Dateisystems
}
InitNotFinished {
Title = Initalisierung noch nicht abgeschlossen
Text = Die Initialisierung wird in wenigen Minuten beendet sein. Erst danach ist diese Aktion m&ouml;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&uuml;sselte Dateisystem ist bereits aktiv.
WarningMessage {
InitNotConfirmed {
Title = Best&auml;tigung schlug fehl
Text = Der Best&auml;tigungssatz muss exakt eingegeben werden!
}
EmptyCryptoPassword {
Title = Ung&uuml;ltiges Crypto-Passwort
Text = Das Crypto-Passwort darf nicht leer sein!
}
DifferentCryptoPasswords {
Title = Ungleiche Crypto-Passworte
Text = Die beiden Passworte m&uuml;ssen identisch sein, um sicherzustellen, dass dies das gew&uuml;nschte Passwort ist.
}
DifferentAdminPasswords {
Title = Ungleiche Administratons-Passworte
Text = Die beiden Passworte m&uuml;ssen identisch sein, um sicherzustellen, dass dies das gew&uuml;nschte Passwort ist.
}
MountFailed {
Title = Aktivierung schlug fehl
Text = Das verschl&uuml;sselte Dateisystem konnte nicht aktiviert werden. Wahrscheinlich war das Passwort falsch.
}
UmountFailed {
Title = Deaktivierung schlug fehl
Text = Das verschl&uuml;sselte Dateisystem konnte nicht abgeschaltet werden. Wahrscheinlich sind noch Dateien ge&ouml;ffnet. Also schlie&szlig;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&ouml;glich.
}
IsMounted {
Title = Bereits aktiv
Text = Das verschl&uuml;sselte Dateisystem ist bereits aktiv.
}
NotMounted {
Title = Nicht aktiv
Text = Das verschl&uuml;sselte Dateisystem ist derzeit nicht aktiv.
}
AlreadyConfigured {
Title = Konfiguration gefunden
Text = Die CryptoBox wurde bereits eingerichtet. Bei einer erneuten Initialisierung werden alle Daten gel&ouml;scht!
}
InvalidLanguage {
Title = Ung&uuml;ltige Sprache
Text = Die ausgew&auml;hlte Sprache ist nicht verf&uuml;gbar!
}
InvalidIP {
Title = Ung&uuml;ltige IP
Text = Die ausgew&auml;hlte Netzwerkadresse ist nicht g&uuml;ltig!
}
InvalidTimeOut {
Title = Ung&uuml;ltige Zeitabschaltung
Text = Der ausgew&auml;hlte Wert der Zeitabschaltung ist nicht g&uuml;ltig!
}
ConfigTimeOutFailed {
Title = Fehler beim &Auml;ndern der Zeitabschaltung
Text = Der Wert der Zeitabschaltung konnte nicht ge&auml;ndert werden!
}
ConfigLanguageFailed {
Title = Fehler beim &Auml;ndern der Spracheinstellung
Text = Die Sprach-Einstellung konnte nicht ge&auml;ndert werden!
}
ConfigIPFailed {
Title = Fehler beim &Auml;ndern der Netzwerkadresse
Text = Die Netzwerkadresse konnte nicht ge&auml;ndert werden!
}
IPAddressChanged {
Title = &Auml;nderung der Netzwerk-Adresse
Text = Die Netzwerk-Adresse der CryptoBox wurde ver&auml;ndert. In wenigen Sekunden werden sie zu der neuen Adresse umgeleitet.
}
}
NotMounted {
Title = Nicht aktiv
Text = Das verschl&uuml;sselte Dateisystem ist derzeit nicht aktiv.
SuccessMessage {
InitRunning {
Title = Initialisierung l&auml;uft
Text = Die Initialisierung der CryptoBox wird im Hintergrund abgeschlossen.
}
ConfigSaved {
Title = Konfiguration gespeichert
Text = Die neuen Einstellungen der CryptoBox wurden &uuml;bernommem.
}
MountDone {
Title = Crypto-Daten aktiviert
Text = Das verschl&uuml;sselte Dateisystem ist nun verf&uuml;gbar.
}
UmountDone {
Title = Crypto-Daten deaktiviert
Text = Das verschl&uuml;sselte Dateisystem ist nun vor jedem Zugriff gesch&uuml;tzt.
}
PowerOff {
Title = Abschaltung
Text = Die CryptoBox wird gerade heruntergefahren. In wenigen Sekunden k&ouml;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&uuml;gbar.
}
}
AlreadyConfigured {
Title = Konfiguration gefunden
Text = Die CryptoBox wurde bereits eingerichtet. Bei einer erneuten Initialisierung werden alle Daten gel&ouml;scht!
ErrorMessage {
UnknownAction {
Title = Unbekannte Aktion
Text = Sie haben eine undefinierte Aktion angefordert.
}
NoSSL {
Title = Unverschl&uuml;sselte Verbindung
Text = Die CryptoBox akzeptiert nur verschl&uuml;sselte Verbindungen (https). So bleibt das Passwort vor neugierigen Augen gesch&uuml;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&auml;ger gefunden, der zur Speicherung der verschl&uuml;sselten Daten geeignet ist. Pr&uuml;fen sie bitte, ob beim Anschalten des Computers eine Festplatte vom BIOS erkannt wurde.
}
}
InvalidLanguage {
Title = Ung&uuml;ltige Sprache
Text = Die ausgew&auml;hlte Sprache ist nicht verf&uuml;gbar!
}
InvalidIP {
Title = Ung&uuml;ltige IP
Text = Die ausgew&auml;hlte Netzwerkadresse ist nicht g&uuml;ltig!
}
InvalidTimeOut {
Title = Ung&uuml;ltige Zeitabschaltung
Text = Der ausgew&auml;hlte Wert der Zeitabschaltung ist nicht g&uuml;ltig!
}
ConfigTimeOutFailed {
Title = Fehler beim &Auml;ndern der Zeitabschaltung
Text = Der Wert der Zeitabschaltung konnte nicht ge&auml;ndert werden!
}
ConfigLanguageFailed {
Title = Fehler beim &Auml;ndern der Spracheinstellung
Text = Die Sprach-Einstellung konnte nicht ge&auml;ndert werden!
}
ConfigIPFailed {
Title = Fehler beim &Auml;ndern der Netzwerkadresse
Text = Die Netzwerkadresse konnte nicht ge&auml;ndert werden!
}
IPAddressChanged {
Title = &Auml;nderung der Netzwerk-Adresse
Text = Die Netzwerk-Adresse der CryptoBox wurde ver&auml;ndert. In wenigen Sekunden werden sie zu der neuen Adresse umgeleitet.
}
}
SuccessMessage {
InitRunning {
Title = Initialisierung l&auml;uft
Text = Die Initialisierung der CryptoBox wird im Hintergrund abgeschlossen.
}
ConfigSaved {
Title = Konfiguration gespeichert
Text = Die neuen Einstellungen der CryptoBox wurden &uuml;bernommem.
}
MountDone {
Title = Crypto-Daten aktiviert
Text = Das verschl&uuml;sselte Dateisystem ist nun verf&uuml;gbar.
}
UmountDone {
Title = Crypto-Daten deaktiviert
Text = Das verschl&uuml;sselte Dateisystem ist nun vor jedem Zugriff gesch&uuml;tzt.
}
PowerOff {
Title = Abschaltung
Text = Die CryptoBox wird gerade heruntergefahren. In wenigen Sekunden k&ouml;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&uuml;gbar.
}
}
ErrorMessage {
UnknownAction {
Title = Unbekannte Aktion
Text = Sie haben eine undefinierte Aktion angefordert.
}
NoSSL {
Title = Unverschl&uuml;sselte Verbindung
Text = Die CryptoBox akzeptiert nur verschl&uuml;sselte Verbindungen (https). So bleibt das Passwort vor neugierigen Augen gesch&uuml;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&auml;ger gefunden, der zur Speicherung der verschl&uuml;sselten Daten geeignet ist. Pr&uuml;fen sie bitte, ob beim Anschalten des Computers eine Festplatte vom BIOS erkannt wurde.
}
}
}

View File

@ -1,23 +1,27 @@
<h1><?cs var:Lang.Title.Init ?></h1>
<div class="init">
<div class="init">
<form action="<?cs call:getSelfURL('','') ?>" method="post" enctype="application/x-www-form-urlencoded">
<p class="note"><?cs var:Lang.Text.InitWarning ?></p>
<p><label for="password"><?cs call:help_popUp(Lang.Text.EnterNewPassword,"crypto_pw") ?></label><br/>
<input type="password" id="password" name="password" size="20" tabindex="1" maxlength="40" /></p>
<p><label for="password2"><?cs call:help_popUp(Lang.Text.EnterSamePassword,'crypto_pw_repeat') ?></label><br/>
<input type="password" id="password2" name="password2" size="20" tabindex="2" maxlength="40" /></p>
<p><label for="confirm"><?cs call:help_popUp(Lang.Text.ConfirmInitHint,'confirm_text') ?><br/>
<span class="note" id="confirmtext"><?cs var:Lang.Text.ConfirmInit ?></span></label><br/>
<input type="text" id="confirm" name="confirm" size="30" tabindex="3" maxlength="50" /></p>
<button type="submit" name="action" value="init_do" tabindex="4"><?cs var:Lang.Button.DoInit ?></button>
<p class="note"><?cs var:Lang.Text.InitWarning ?></p>
<p><label for="admin_password"><?cs call:help_popUp(Lang.Text.EnterNewAdminPassword,"admin_pw") ?></label><br/>
<input type="password" id="admin_password" name="admin_password" size="20" tabindex="1" maxlength="40" /> </p>
<p><label for="admin_password2"><?cs call:help_popUp(Lang.Text.EnterSameAdminPassword,"admin_pw_repeat") ?></label><br/>
<input type="password" id="admin_password2" name="admin_password2" size="20" tabindex="1" maxlength="40" /></p>
<p><label for="crypto_password"><?cs call:help_popUp(Lang.Text.EnterNewCryptoPassword,"crypto_pw") ?></label><br/>
<input type="password" id="crypto_password" name="crypto_password" size="20" tabindex="1" maxlength="40" /></p>
<p><label for="crypto_password2"><?cs call:help_popUp(Lang.Text.EnterSameCryptoPassword,'crypto_pw_repeat') ?></label><br/>
<input type="password" id="crypto_password2" name="crypto_password2" size="20" tabindex="2" maxlength="40" /></p>
<p><label for="confirm"><?cs call:help_popUp(Lang.Text.ConfirmInitHint,'confirm_text') ?><br/>
<span class="note" id="confirmtext"><?cs var:Lang.Text.ConfirmInit ?></span></label><br/>
<input type="text" id="confirm" name="confirm" size="30" tabindex="3" maxlength="50" /></p>
<button type="submit" name="action" value="init_do" tabindex="4"><?cs var:Lang.Button.DoInit ?></button>
</form>
</div>
</div>
<hr/>
<hr/>
<div class="partition_info">
<div class="partition_info">
<h2><?cs var:Lang.Text.PartitionInfo ?></h2>
<p><?cs var:Data.PartitionInfo ?></p>
</div>
</div>

View File

@ -0,0 +1,5 @@
<h3>Administration password of the CryptoBox</h3>
<p>This password protects your CryptoBox against random re-initialization by unauthorized people.
Any dangerous administrative action requires this administration password.</p>
<p>You may leave this password blank, if your network is safe.</p>
<p>The administration password does NOT protect your sensible data in any way!</p>

View File

@ -0,0 +1,3 @@
<h3>Repeat the administration password</h3>
<p>This ensures, that you do not mistype your administration password.</p>
<p>Leave it blank, if you do not need an administration password.</p>

View File

@ -1,2 +1,2 @@
<h3>Repeat the crypto password</h3>
<p>This ensures, that you do not mistype your password.</p>
<h3>Repeat the encryption password</h3>
<p>This ensures, that you do not mistype your encryption password.</p>

View File

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

View File

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