From 086911e1b8831c3c0359494f940fb9439b040050 Mon Sep 17 00:00:00 2001 From: lars Date: Thu, 20 Oct 2005 10:57:40 +0000 Subject: [PATCH] cgi: skip the harddisk check for some actions (doc, log, shutdown) --- cbox-tree.d/var/www/cgi-bin/cryptobox.pl | 80 +++++++++++++++--------- 1 file changed, 49 insertions(+), 31 deletions(-) diff --git a/cbox-tree.d/var/www/cgi-bin/cryptobox.pl b/cbox-tree.d/var/www/cgi-bin/cryptobox.pl index a7bc184..272b6a7 100755 --- a/cbox-tree.d/var/www/cgi-bin/cryptobox.pl +++ b/cbox-tree.d/var/www/cgi-bin/cryptobox.pl @@ -295,18 +295,59 @@ sub validate_doc_language $pagedata = load_hdf(); +# BEWARE: there are two kinds of actions: +# * some require a harddisk +# * some do not require a harddisk +# take care, that you put a new action into the appropriate block below # first: check for ssl! if ( ! &check_ssl()) { $pagedata->setValue('Data.Error', 'NoSSL'); $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'); } elsif ($query->param('action')) { my $action = $query->param('action'); + #--------------------------------------------------------------# + # here you may define all cases that do not require a harddisk # + # put all other cases below the harddisk check # + #--------------------------------------------------------------# + #################### show_log ####################### + if ($action eq 'show_log') { + $pagedata->setValue('Data.Action', 'show_log'); + ##################### doc ############################ + } elsif ($action eq 'doc') { + if ($query->param('page')) { + $pagedata->setValue('Data.Doc.Page', $query->param('page')); + $pagedata->setValue('Data.Action', 'doc'); + } else { + $pagedata->setValue('Data.Doc.Page', 'CryptoBoxUser'); + $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'); + $pagedata->setValue('Data.Redirect.Action', 'status'); + $pagedata->setValue('Data.Redirect.Delay', "180"); + } else { + &system_poweroff(); + $pagedata->setValue('Data.Success', 'PowerOff'); + } + $pagedata->setValue('Data.Action', 'empty'); + ##################### check for a harddisk ########################## + # catch this error, to prevent all following actions from execution # + ##################################################################### + } elsif ( ! &is_harddisk_available()) { + $pagedata->setValue('Data.Error', 'NoHardDisk'); + #-------------------------------------------------------# + # here you may define all cases that require a harddisk # + #-------------------------------------------------------# ################ umount_do ####################### - if ($action eq 'umount_do') { + } elsif ($action eq 'umount_do') { if ( ! &check_config()) { $pagedata->setValue('Data.Warning', 'NotInitialized'); $pagedata->setValue('Data.Action', 'init_form'); @@ -497,33 +538,6 @@ if ( ! &check_ssl()) { $pagedata->setValue('Data.Redirect.Delay', "30"); } } - #################### 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', 'CryptoBoxUser'); - $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'); - $pagedata->setValue('Data.Redirect.Action', 'status'); - $pagedata->setValue('Data.Redirect.Delay', "180"); - } else { - &system_poweroff(); - $pagedata->setValue('Data.Success', 'PowerOff'); - } - $pagedata->setValue('Data.Action', 'empty'); #################### status ######################### } elsif ($action eq 'status') { if ( ! &check_config()) { @@ -543,7 +557,11 @@ if ( ! &check_ssl()) { } else { $pagedata->setValue('Data.Error', 'UnknownAction'); } -###################### default ########################## +#################### default action ########################## +# check for a harddisk again, as this check was skipped +# because there was no action defined +} elsif ( ! &is_harddisk_available()) { + $pagedata->setValue('Data.Error', 'NoHardDisk'); } else { if (&check_init_running()) { $pagedata->setValue('Data.Warning', 'InitNotFinished');