Move most of the command execution away from the HTML output.
This makes it easier to modify or extend individual commands.
Also load Pakfire settings earlier to ensure that they are
available during command execution.
Signed-off-by: Leo-Andres Hofmann <hofmann(a)leo-andres.de>
---
html/cgi-bin/pakfire.cgi | 61 +++++++++++++++++++++-------------------
1 file changed, 32 insertions(+), 29 deletions(-)
diff --git a/html/cgi-bin/pakfire.cgi b/html/cgi-bin/pakfire.cgi
index 65c67fb90..b908ec6a0 100644
--- a/html/cgi-bin/pakfire.cgi
+++ b/html/cgi-bin/pakfire.cgi
@@ -39,11 +39,12 @@ my %mainsettings = ();
# Load general settings
&General::readhash("${General::swroot}/main/settings", \%mainsettings);
+&General::readhash("${General::swroot}/pakfire/settings", \%pakfiresettings);
&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
# Get CGI request data
$cgiparams{'ACTION'} = '';
-$cgiparams{'VALID'} = '';
+$cgiparams{'FORCE'} = '';
$cgiparams{'INSPAKS'} = '';
$cgiparams{'DELPAKS'} = '';
@@ -94,6 +95,35 @@ if($cgiparams{'ACTION'} eq 'json-getstatus') {
exit;
}
+### Process Pakfire install/update commands ###
+if(($cgiparams{'ACTION'} ne '') && (! &_is_pakfire_busy())) {
+ if(($cgiparams{'ACTION'} eq 'install') && ($cgiparams{'FORCE'} eq 'on')) {
+ my @pkgs = split(/\|/, $cgiparams{'INSPAKS'});
+ &General::system_background("/usr/local/bin/pakfire", "install", "--non-interactive", "--no-colors", @pkgs);
+ } elsif(($cgiparams{'ACTION'} eq 'remove') && ($cgiparams{'FORCE'} eq 'on')) {
+ my @pkgs = split(/\|/, $cgiparams{'DELPAKS'});
+ &General::system_background("/usr/local/bin/pakfire", "remove", "--non-interactive", "--no-colors", @pkgs);
+ } elsif($cgiparams{'ACTION'} eq 'update') {
+ &General::system_background("/usr/local/bin/pakfire", "update", "--force", "--no-colors");
+ } elsif($cgiparams{'ACTION'} eq 'upgrade') {
+ &General::system_background("/usr/local/bin/pakfire", "upgrade", "-y", "--no-colors");
+ } elsif($cgiparams{'ACTION'} eq $Lang::tr{'save'}) {
+ $pakfiresettings{"TREE"} = $cgiparams{"TREE"};
+
+ # Check for valid input
+ if ($pakfiresettings{"TREE"} !~ m/^(stable|testing|unstable)$/) {
+ $errormessage .= $Lang::tr{'pakfire invalid tree'};
+ }
+
+ unless ($errormessage) {
+ &General::writehash("${General::swroot}/pakfire/settings", \%pakfiresettings);
+
+ # Update lists
+ &General::system_background("/usr/local/bin/pakfire", "update", "--force", "--no-colors");
+ }
+ }
+}
+
### Start pakfire page ###
&Header::showhttpheaders();
@@ -185,9 +215,6 @@ END
# Process Pakfire commands
if (($cgiparams{'ACTION'} eq 'install') && (! &_is_pakfire_busy())) {
my @pkgs = split(/\|/, $cgiparams{'INSPAKS'});
- if ("$cgiparams{'FORCE'}" eq "on") {
- &General::system_background("/usr/local/bin/pakfire", "install", "--non-interactive", "--no-colors", @pkgs);
- } else {
&Header::openbox("100%", "center", $Lang::tr{'request'});
my @output = &General::system_output("/usr/local/bin/pakfire", "resolvedeps", "--no-colors", @pkgs);
print <<END;
@@ -222,12 +249,9 @@ END
&Header::closebigbox();
&Header::closepage();
exit;
- }
+
} elsif (($cgiparams{'ACTION'} eq 'remove') && (! &_is_pakfire_busy())) {
my @pkgs = split(/\|/, $cgiparams{'DELPAKS'});
- if ("$cgiparams{'FORCE'}" eq "on") {
- &General::system_background("/usr/local/bin/pakfire", "remove", "--non-interactive", "--no-colors", @pkgs);
- } else {
&Header::openbox("100%", "center", $Lang::tr{'request'});
my @output = &General::system_output("/usr/local/bin/pakfire", "resolvedeps", "--no-colors", @pkgs);
print <<END;
@@ -262,30 +286,9 @@ END
&Header::closebigbox();
&Header::closepage();
exit;
- }
-
-} elsif (($cgiparams{'ACTION'} eq 'update') && (! &_is_pakfire_busy())) {
- &General::system_background("/usr/local/bin/pakfire", "update", "--force", "--no-colors");
-} elsif (($cgiparams{'ACTION'} eq 'upgrade') && (! &_is_pakfire_busy())) {
- &General::system_background("/usr/local/bin/pakfire", "upgrade", "-y", "--no-colors");
-} elsif ($cgiparams{'ACTION'} eq "$Lang::tr{'save'}") {
- $pakfiresettings{"TREE"} = $cgiparams{"TREE"};
-
- # Check for valid input
- if ($pakfiresettings{"TREE"} !~ m/^(stable|testing|unstable)$/) {
- $errormessage .= $Lang::tr{'pakfire invalid tree'};
- }
-
- unless ($errormessage) {
- &General::writehash("${General::swroot}/pakfire/settings", \%pakfiresettings);
- # Update lists
- &General::system_background("/usr/local/bin/pakfire", "update", "--force", "--no-colors");
- }
}
-&General::readhash("${General::swroot}/pakfire/settings", \%pakfiresettings);
-
my %selected=();
my %checked=();
--
2.27.0.windows.1