shutdown.cgi: Add "reboot with filesystem check" button

ipfirereboot.c is able to force a file system check during reboot.
This patch makes this function available in the shutdown GUI.

Signed-off-by: Leo-Andres Hofmann <hofmann@leo-andres.de>
Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
This commit is contained in:
Leo-Andres Hofmann
2021-07-13 21:06:28 +02:00
committed by Arne Fitzenreiter
parent f8c7460446
commit e64a5b4f74
3 changed files with 63 additions and 20 deletions

View File

@@ -1,11 +1,23 @@
#!/usr/bin/perl #!/usr/bin/perl
# ###############################################################################
# SmoothWall CGIs # #
# # IPFire.org - A linux based firewall #
# This code is distributed under the terms of the GPL # Copyright (C) 2021 IPFire Development Team #
# # #
# (c) The SmoothWall Team # This program is free software: you can redistribute it and/or modify #
# # it under the terms of the GNU General Public License as published by #
# the Free Software Foundation, either version 3 of the License, or #
# (at your option) any later version. #
# #
# This program is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# #
# You should have received a copy of the GNU General Public License #
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
# #
###############################################################################
use strict; use strict;
@@ -17,6 +29,27 @@ require '/var/ipfire/general-functions.pl';
require "${General::swroot}/lang.pl"; require "${General::swroot}/lang.pl";
require "${General::swroot}/header.pl"; require "${General::swroot}/header.pl";
###--- HTML HEAD ---###
my $extraHead = <<END
<style>
table#controls {
width: 100%;
border: none;
table-layout: fixed;
}
#controls td {
text-align: center;
}
#controls button {
font-weight: bold;
padding: 0.7em;
min-width: 65%;
}
</style>
END
;
###--- END HTML HEAD ---###
my %cgiparams=(); my %cgiparams=();
my $death = 0; my $death = 0;
my $rebirth = 0; my $rebirth = 0;
@@ -26,33 +59,39 @@ my $rebirth = 0;
$cgiparams{'ACTION'} = ''; $cgiparams{'ACTION'} = '';
&Header::getcgihash(\%cgiparams); &Header::getcgihash(\%cgiparams);
if ($cgiparams{'ACTION'} eq $Lang::tr{'shutdown'}) { if ($cgiparams{'ACTION'} eq "SHUTDOWN") {
$death = 1; $death = 1;
&General::log($Lang::tr{'shutting down ipfire'}); &General::log($Lang::tr{'shutting down ipfire'});
&General::system('/usr/local/bin/ipfirereboot', 'down'); &General::system('/usr/local/bin/ipfirereboot', 'down');
} elsif ($cgiparams{'ACTION'} eq $Lang::tr{'reboot'}) { } elsif ($cgiparams{'ACTION'} eq "REBOOT") {
$rebirth = 1; $rebirth = 1;
&General::log($Lang::tr{'rebooting ipfire'}); &General::log($Lang::tr{'rebooting ipfire'});
&General::system('/usr/local/bin/ipfirereboot', 'boot'); &General::system('/usr/local/bin/ipfirereboot', 'boot');
} elsif ($cgiparams{'ACTION'} eq "REBOOT_FSCK") {
$rebirth = 1;
&General::log($Lang::tr{'rebooting ipfire fsck'});
&General::system('/usr/local/bin/ipfirereboot', 'bootfs');
} }
if ($death == 0 && $rebirth == 0) { if ($death == 0 && $rebirth == 0) {
&Header::openpage($Lang::tr{'shutdown control'}, 1, ''); &Header::openpage($Lang::tr{'shutdown control'}, 1, $extraHead);
&Header::openbigbox('100%', 'left'); &Header::openbigbox('100%', 'left');
&Header::openbox('100%', 'left');
print "<form method='post' action='$ENV{'SCRIPT_NAME'}'>\n";
&Header::openbox('100%', 'left', );
print <<END print <<END
<table width='100%'> <form method="post" action="$ENV{'SCRIPT_NAME'}">
<tr> <table id="controls">
<td width='50%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'reboot'}' /></td> <tr>
<td width='50%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'shutdown'}' /></td> <td><button type="submit" name="ACTION" value="SHUTDOWN">$Lang::tr{'shutdown'}</button></td>
</tr> <td><button type="submit" name="ACTION" value="REBOOT">$Lang::tr{'reboot'}</button></td>
</table> <td><button type="submit" name="ACTION" value="REBOOT_FSCK">$Lang::tr{'reboot fsck'}</button></td>
</tr>
</table>
</form>
END END
; ;
&Header::closebox(); &Header::closebox();
} else { } else {

View File

@@ -2085,11 +2085,13 @@
'real address' => 'Reale Addresse', 'real address' => 'Reale Addresse',
'reboot' => 'Neustart', 'reboot' => 'Neustart',
'reboot ask' => 'Neustart?', 'reboot ask' => 'Neustart?',
'reboot fsck' => 'Neustart & Dateisystem-Test',
'reboot question' => 'Extra Abfrage bei neustart und herunterfahren einschalten', 'reboot question' => 'Extra Abfrage bei neustart und herunterfahren einschalten',
'reboot schedule' => 'Zeitsteuerung für IPFire Neustarts', 'reboot schedule' => 'Zeitsteuerung für IPFire Neustarts',
'reboot sure' => 'Sind Sie sicher, dass Sie neustarten wollen?', 'reboot sure' => 'Sind Sie sicher, dass Sie neustarten wollen?',
'rebooting' => 'Starte neu ...', 'rebooting' => 'Starte neu ...',
'rebooting ipfire' => 'Starte IPFire neu', 'rebooting ipfire' => 'Starte IPFire neu',
'rebooting ipfire fsck' => 'Starte IPFire neu, Dateisystem-Test erzwingen',
'received' => 'Empfangen', 'received' => 'Empfangen',
'reconnect' => 'Neu Verbinden', 'reconnect' => 'Neu Verbinden',
'reconnection' => 'Wiederverbindung', 'reconnection' => 'Wiederverbindung',

View File

@@ -2120,11 +2120,13 @@
'real address' => 'Real Address', 'real address' => 'Real Address',
'reboot' => 'Reboot', 'reboot' => 'Reboot',
'reboot ask' => 'Reboot?', 'reboot ask' => 'Reboot?',
'reboot fsck' => 'Reboot & check filesystem',
'reboot question' => 'Extra query for restart and shutdown', 'reboot question' => 'Extra query for restart and shutdown',
'reboot schedule' => 'Schedule IPFire reboots', 'reboot schedule' => 'Schedule IPFire reboots',
'reboot sure' => 'Are you sure that you want to reboot?', 'reboot sure' => 'Are you sure that you want to reboot?',
'rebooting' => 'Rebooting', 'rebooting' => 'Rebooting',
'rebooting ipfire' => 'Rebooting IPFire', 'rebooting ipfire' => 'Rebooting IPFire',
'rebooting ipfire fsck' => 'Rebooting IPFire, forcing filesystem check',
'received' => 'Received', 'received' => 'Received',
'reconnect' => 'Reconnect', 'reconnect' => 'Reconnect',
'reconnection' => 'Reconnection', 'reconnection' => 'Reconnection',