redirect to https if http was used

chroot environment improved
make_stunnel_cert fixed (typo)
"config" action now preserves links
This commit is contained in:
lars 2005-07-21 23:10:15 +00:00
parent d5b4c1a6f1
commit c621a89f3f
11 changed files with 72 additions and 32 deletions

View File

@ -106,9 +106,9 @@ function configure_cb()
echo "Copying files into the box ..."
[ -e "$TMPDIR" ] && rm -rf "$TMPDIR"
cp -r "$TEMPLATEDIR/." "$TMPDIR"
cp -dr "$TEMPLATEDIR/." "$TMPDIR"
rm -rf `find "$TMPDIR" -type d -name ".svn"`
cp -r "$TMPDIR/." "$IMAGEDIR"
cp -dr "$TMPDIR/." "$IMAGEDIR"
rm -rf "$TMPDIR"
echo "Configuring the cryptobox ..."

View File

@ -10,13 +10,14 @@
set -eu
TMPDIRS="var/run tmp root dev var/log"
TMPROOT="/opt/dfsruntime/runtimemnt"
MNT_SRC=/opt/dfsruntime/runtimerd
MNT_DST=/opt/dfsruntime/runtimemnt
# the directory /tmp/ can not be used, as it is still a broken link, too
TMP_DIR="/tmp-`basename $0`-$$"
for a in $TMPDIRS
do mkdir -p "$TMPROOT/$a"
done
cp -a "$MNT_SRC/." "$TMP_DIR"
mount --bind "$TMP_DIR" "$MNT_DST"
[ ! -e /dev/null ] && mknod "/dev/null" c 1 3 && chmod 666 "/dev/null"
[ ! -e /dev/urandom ] && mknod "/dev/urandom" c 1 9 && chmod 444 "/dev/urandom"
@ -26,6 +27,6 @@ for a in $TMPDIRS
bash
umount "$MNT_DST"
umount proc
rm -r "$TMPROOT"
mkdir "$TMPROOT"
rm -r "$TMP_DIR"

View File

@ -18,7 +18,7 @@ set -eu
CERTFILE="$1"
TMP_FILE=/tmp/cryptobox-cert.tmp
[ ! -f "$CONF_FILE" ] && echo "`basename $0`: $CONF_FILE not found" && exit 2
[ ! -f "$OPENSSL_CONF_FILE" ] && echo "`basename $0`: $OPENSSL_CONF_FILE not found" && exit 2
# this command creates the certificate
# this is required, because the certbuilding asks for 5 returns
echo -ne "\n\n\n\n\n" | openssl req -new -x509 -nodes -days 3650 -config "$OPENSSL_CONF_FILE" -out "$CERTFILE" -keyout "$CERTFILE"

View File

@ -26,6 +26,7 @@ Lang {
TimeOut = Zeitabschaltung des Crypto-Dateisystems (in Minuten):
EmptyLog = Das Logbuch der CryptoBox ist leer.
SelectLanguage = Spracheinstellung:
RedirectNote = Klicke hier, falls dein Browser die automatische Weiterleitung nicht unterstützt.
}
@ -41,52 +42,52 @@ Lang {
Warning {
InitNotConfirmed {
Title = Bestätigung schlug fehl
Text = Der Bestätigungssatz muss exakt eingegeben werden!
Text = Der Bestätigungssatz muss exakt eingegeben werden!
}
EmptyPassword {
Title = Ungültige Eingabe
Text = Das Passwort darf nicht leer sein!
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.
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.
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ße alle potentiell unsauberen Programme (beispielsweise die weitverbreitete Textverarbeitung). Notfalls ziehe einfach den Stromstecker!
Text = Das verschlüsselte Dateisystem konnte nicht abgeschaltet werden. Wahrscheinlich sind noch Dateien geöffnet. Also schließe alle potentiell unsauberen Programme (beispielsweise die weitverbreitete Textverarbeitung). Notfalls ziehe einfach den Stromstecker!
}
NotConfigured {
Title = Keine Konfiguration gefunden
Text = Die CryptoBox wurde noch nicht eingerichtet.
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.
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.
Text = Das verschlüsselte Dateisystem ist bereits aktiv.
}
NotMounted {
Title = Nicht aktiv
Text = Das verschlüsselte Dateisystem ist derzeit 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!
Text = Die CryptoBox wurde bereits eingerichtet. Bei einer erneuten Initialisierung werden alle Daten gelöscht!
}
}
@ -95,17 +96,12 @@ Lang {
UnknownAction {
Title = Unbekannte Aktion
Text = Du hast eine undefinierte Aktion angefordert. Falls du dies nicht bewusst getan hast, solltest du es deinem Administrator mitteilen, damit er das Problem an die Entwickler der CryptoBox weiterleiten kann.
Text = Du hast eine undefinierte Aktion angefordert. Falls du dies nicht bewusst getan hast, solltest du es deinem Administrator mitteilen, damit er das Problem an die Entwickler der CryptoBox weiterleiten kann.
}
MountUnavailableInitRunning {
Title = Die Initialisierung der CryptoBox läuft noch ...
Text = Solange die Einrichtung der Crypto-Partition nicht abgeschlossen ist, kannst du die CryptoBox nicht aktivieren. Versuche es in ein paar Minuten noch einmal</a>.
}
MountUnavailableNotInitialized {
Title = Die CryptoBox wurde noch nicht initialisiert
Text = Nach dem Abschluss der einmaligen <a href="/cgi-bin/init-cryptobox.pl" title="Initialisierung">Neueinrichtung</a> kannst du die Crypto-Partition nutzen.
NoSSL {
Title = Unverschl&uuml;sselte Verbindung
Text = Die CryptoBox akzeptiert nur verschl&uuml;sselte Verbindungen (https). So bleibt dein Passwort vor neugierigen Augen gesch&uuml;tzt.
}
}

View File

@ -1,3 +1,7 @@
<?cs if:Data.Redirect.URL ?>
<p class="warning"><a href="<?cs var:Data.Redirect.URL ?>"><?cs var:Lang.Text.RedirectNote ?></a></p>
<?cs /if ?>
</div><!-- end of 'words' -->
<div id="footer">

View File

@ -8,6 +8,7 @@
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<link rel="stylesheet" media="screen" href="/cryptobox.css" type="text/css" />
<?cs if:Data.Redirect.URL ?><meta http-equiv="refresh" content="<?cs var:Data.Redirect.Delay ?>;<?cs var:Data.Redirect.URL ?>"><?cs /if ?>
</head>
<body>

View File

@ -0,0 +1 @@
displays the warning for a non-ssl connection

View File

@ -0,0 +1,2 @@
url http://192.168.0.23/cryptobox
data action=init_ask

View File

@ -0,0 +1,7 @@
Data.Config.IP=192.168.0.23
Data.Config.Language=de
Data.Config.TimeOut=30
Data.Status.Config=0
Data.Status.InitRunning=0
Data.Status.IP=192.168.0.23
Data.Status.Mounted=0

View File

@ -59,6 +59,16 @@ sub load_hdf()
return $hdf;
}
sub check_ssl
{
# BEWARE: dirty trick - is there a better way?
# stunnel is not in transparent mode -> that means, it replaces REMOTE_ADDR with
# its own IP (localhost, of course)
return ($ENV{'REMOTE_ADDR'} eq '127.0.0.1');
}
sub check_mounted
{
return (system("$CB_SCRIPT","is_crypto_mounted") == 0);
@ -165,9 +175,15 @@ $pagedata = load_hdf();
#TODO: check result of actions and set Data.Error for failures
if ($query->param) {
# first: check for ssl!
if ( ! &check_ssl()) {
$pagedata->setValue('Data.Error', 'NoSSL');
$pagedata->setValue('Data.Redirect.URL', "https://" . $ENV{'HTTP_HOST'} . $ENV{'SCRIPT_NAME'});
$pagedata->setValue('Data.Redirect.Delay', "3");
} elsif ($query->param) {
my $action = $query->param('action');
################ umount_do #######################
if ($action eq 'umount_do') {
if ( ! &check_config()) {
$pagedata->setValue('Data.Warning', 'NotConfigured');
@ -183,6 +199,7 @@ if ($query->param) {
&umount_vol();
$pagedata->setValue('Data.Action', 'mount_form');
}
################ mount_do ########################
} elsif ($action eq 'mount_do') {
# mount requested
if ( ! &check_config()) {
@ -203,6 +220,7 @@ if ($query->param) {
&mount_vol($query->param('password'));
$pagedata->setValue('Data.Action', 'umount_form');
}
################## mount_ask #######################
} elsif ($action eq 'mount_ask') {
if ( ! &check_config()) {
$pagedata->setValue('Data.Warning', 'NotConfigured');
@ -216,6 +234,7 @@ if ($query->param) {
} else {
$pagedata->setValue('Data.Action', 'mount_form');
}
################# umount_ask ########################
} elsif ($action eq 'umount_ask') {
if ( ! &check_config()) {
$pagedata->setValue('Data.Warning', 'NotConfigured');
@ -226,6 +245,7 @@ if ($query->param) {
} else {
$pagedata->setValue('Data.Action', 'umount_form');
}
################## init_ask #########################
} elsif ($action eq 'init_ask') {
if (&check_init_running()) {
$pagedata->setValue('Data.Warning', 'InitNotFinished');
@ -236,6 +256,7 @@ if ($query->param) {
} else {
$pagedata->setValue('Data.Action', 'init_form');
}
#################### init_do ########################
} elsif ($action eq 'init_do') {
if ($query->param('password') ne $query->param('password2')) {
# different passwords
@ -254,6 +275,7 @@ if ($query->param) {
&box_init($query->param('password'));
$pagedata->setValue('Data.Action', 'config_form');
}
#################### config_ask ######################
} elsif ($action eq 'config_ask') {
if ( ! &check_config()) {
$pagedata->setValue('Data.Warning', 'NotConfigured');
@ -261,24 +283,30 @@ if ($query->param) {
} else {
$pagedata->setValue('Data.Action', 'config_form');
}
#################### config_do #######################
} elsif ($action eq 'config_do') {
# TODO: not implemented yet!
system("$CB_SCRIPT", "set_config", "language", $query->param('language'));
system("$CB_SCRIPT", "set_config", "timeout", $query->param('timeout'));
system("$CB_SCRIPT", "set_config", "ip", $query->param('ip'));
$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.Doc.Page', 'CryptoBox.html');
$pagedata->setValue('Data.Action', 'doc');
}
$pagedata->setValue('Data.Action', 'doc');
################### unknown #########################
} else {
$pagedata->setValue('Data.Error', 'UnknownAction');
}
###################### default ##########################
} else {
$pagedata->setValue('Data.Action', 'intro');
}

View File

@ -143,7 +143,7 @@ body {
font-weight: bold;
}
div.warning {
.warning {
background-color: #FF6060;
text-align: center;
padding: 10px;