From: Leo-Andres Hofmann <hofmann@leo-andres.de>
To: development@lists.ipfire.org
Subject: [PATCH 1/2] shutdown.cgi: Add "reboot with filesystem check" button
Date: Tue, 13 Jul 2021 21:06:28 +0200 [thread overview]
Message-ID: <20210713190629.91-1-hofmann@leo-andres.de> (raw)
[-- Attachment #1: Type: text/plain, Size: 6255 bytes --]
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(a)leo-andres.de>
---
html/cgi-bin/shutdown.cgi | 79 +++++++++++++++++++++++++++++----------
langs/de/cgi-bin/de.pl | 2 +
langs/en/cgi-bin/en.pl | 2 +
3 files changed, 63 insertions(+), 20 deletions(-)
diff --git a/html/cgi-bin/shutdown.cgi b/html/cgi-bin/shutdown.cgi
index e0a2c9da0..1321e158b 100644
--- a/html/cgi-bin/shutdown.cgi
+++ b/html/cgi-bin/shutdown.cgi
@@ -1,11 +1,23 @@
#!/usr/bin/perl
-#
-# SmoothWall CGIs
-#
-# This code is distributed under the terms of the GPL
-#
-# (c) The SmoothWall Team
-#
+###############################################################################
+# #
+# IPFire.org - A linux based firewall #
+# Copyright (C) 2021 IPFire Development 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;
@@ -17,6 +29,27 @@ require '/var/ipfire/general-functions.pl';
require "${General::swroot}/lang.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 $death = 0;
my $rebirth = 0;
@@ -26,33 +59,39 @@ my $rebirth = 0;
$cgiparams{'ACTION'} = '';
&Header::getcgihash(\%cgiparams);
-if ($cgiparams{'ACTION'} eq $Lang::tr{'shutdown'}) {
+if ($cgiparams{'ACTION'} eq "SHUTDOWN") {
$death = 1;
&General::log($Lang::tr{'shutting down ipfire'});
&General::system('/usr/local/bin/ipfirereboot', 'down');
-} elsif ($cgiparams{'ACTION'} eq $Lang::tr{'reboot'}) {
+} elsif ($cgiparams{'ACTION'} eq "REBOOT") {
$rebirth = 1;
&General::log($Lang::tr{'rebooting ipfire'});
&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) {
- &Header::openpage($Lang::tr{'shutdown control'}, 1, '');
+ &Header::openpage($Lang::tr{'shutdown control'}, 1, $extraHead);
&Header::openbigbox('100%', 'left');
+ &Header::openbox('100%', 'left');
- print "<form method='post' action='$ENV{'SCRIPT_NAME'}'>\n";
-
- &Header::openbox('100%', 'left', );
print <<END
-<table width='100%'>
-<tr>
- <td width='50%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'reboot'}' /></td>
- <td width='50%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'shutdown'}' /></td>
-</tr>
-</table>
+<form method="post" action="$ENV{'SCRIPT_NAME'}">
+ <table id="controls">
+ <tr>
+ <td><button type="submit" name="ACTION" value="SHUTDOWN">$Lang::tr{'shutdown'}</button></td>
+ <td><button type="submit" name="ACTION" value="REBOOT">$Lang::tr{'reboot'}</button></td>
+ <td><button type="submit" name="ACTION" value="REBOOT_FSCK">$Lang::tr{'reboot fsck'}</button></td>
+ </tr>
+ </table>
+</form>
END
- ;
+;
&Header::closebox();
} else {
diff --git a/langs/de/cgi-bin/de.pl b/langs/de/cgi-bin/de.pl
index 0d2228ede..76bf0469d 100644
--- a/langs/de/cgi-bin/de.pl
+++ b/langs/de/cgi-bin/de.pl
@@ -2085,11 +2085,13 @@
'real address' => 'Reale Addresse',
'reboot' => 'Neustart',
'reboot ask' => 'Neustart?',
+'reboot fsck' => 'Neustart & Dateisystem-Test',
'reboot question' => 'Extra Abfrage bei neustart und herunterfahren einschalten',
'reboot schedule' => 'Zeitsteuerung für IPFire Neustarts',
'reboot sure' => 'Sind Sie sicher, dass Sie neustarten wollen?',
'rebooting' => 'Starte neu ...',
'rebooting ipfire' => 'Starte IPFire neu',
+'rebooting ipfire fsck' => 'Starte IPFire neu, Dateisystem-Test erzwingen',
'received' => 'Empfangen',
'reconnect' => 'Neu Verbinden',
'reconnection' => 'Wiederverbindung',
diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl
index 2ba6961f3..181dc80b0 100644
--- a/langs/en/cgi-bin/en.pl
+++ b/langs/en/cgi-bin/en.pl
@@ -2120,11 +2120,13 @@
'real address' => 'Real Address',
'reboot' => 'Reboot',
'reboot ask' => 'Reboot?',
+'reboot fsck' => 'Reboot & check filesystem',
'reboot question' => 'Extra query for restart and shutdown',
'reboot schedule' => 'Schedule IPFire reboots',
'reboot sure' => 'Are you sure that you want to reboot?',
'rebooting' => 'Rebooting',
'rebooting ipfire' => 'Rebooting IPFire',
+'rebooting ipfire fsck' => 'Rebooting IPFire, forcing filesystem check',
'received' => 'Received',
'reconnect' => 'Reconnect',
'reconnection' => 'Reconnection',
--
2.27.0.windows.1
next reply other threads:[~2021-07-13 19:06 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-13 19:06 Leo-Andres Hofmann [this message]
2021-07-13 19:06 ` [PATCH 2/2] Run "./make.sh lang" Leo-Andres Hofmann
2021-07-14 16:12 ` [PATCH 1/2] shutdown.cgi: Add "reboot with filesystem check" button Michael Tremer
2021-07-14 17:41 ` Tapani Tarvainen
2021-07-14 20:55 ` Leo Hofmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210713190629.91-1-hofmann@leo-andres.de \
--to=hofmann@leo-andres.de \
--cc=development@lists.ipfire.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox