This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "IPFire 2.x development tree".
The branch, next has been updated via 20977f0a83e41d1128570f3d88d5c861200e4094 (commit) via a3c9708117a60e6e49ba4bd828d3f68d0746e54d (commit) via 7f7f546e4ae25d75738d6c326149476d7def615a (commit) from e850a61429b03cb77a9dc798e9f093500db09a87 (commit)
Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below.
- Log ----------------------------------------------------------------- commit 20977f0a83e41d1128570f3d88d5c861200e4094 Author: Arne Fitzenreiter arne_f@ipfire.org Date: Tue Oct 19 18:36:32 2021 +0000
core161: generate new qos.sh
Signed-off-by: Arne Fitzenreiter arne_f@ipfire.org
commit a3c9708117a60e6e49ba4bd828d3f68d0746e54d Author: Arne Fitzenreiter arne_f@ipfire.org Date: Tue Oct 19 18:35:01 2021 +0000
core161: add pakfire.cgi
Signed-off-by: Arne Fitzenreiter arne_f@ipfire.org
commit 7f7f546e4ae25d75738d6c326149476d7def615a Author: Stefan Schantl stefan.schantl@ipfire.org Date: Mon Oct 18 21:09:58 2021 +0200
pakfire.cgi: Implement logic to lock the page until pakfire has been fully launched.
When performing any action which requires pakfire, the page gets locked with an message informing the user that pakfire is working. The page will be reloaded when pakfire has been launched and is doing the requested operation - showing the well known log output. This also happens when pakfire has been launched via any kind of terminal or SSH session and the CGI gets accessed.
Internally before pakfire gets started a variable called page_lock will be set to lock the page. An while loop will keep the page locked until pakfire is launched fully and has written it's lock_file.
This approach will prevent us from any kind of required time intervall or race conditions.
Signed-off-by: Stefan Schantl stefan.schantl@ipfire.org Signed-off-by: Arne Fitzenreiter arne_f@ipfire.org
-----------------------------------------------------------------------
Summary of changes: config/rootfiles/core/161/filelists/files | 1 + config/rootfiles/core/161/update.sh | 5 ++++ html/cgi-bin/pakfire.cgi | 49 +++++++++++++++++++++++++++++-- 3 files changed, 53 insertions(+), 2 deletions(-)
Difference in files: diff --git a/config/rootfiles/core/161/filelists/files b/config/rootfiles/core/161/filelists/files index b6a7fff92..dd727ee2d 100644 --- a/config/rootfiles/core/161/filelists/files +++ b/config/rootfiles/core/161/filelists/files @@ -5,6 +5,7 @@ etc/suricata/suricata.yaml opt/pakfire/etc/pakfire.conf opt/pakfire/lib/functions.pl srv/web/ipfire/cgi-bin/index.cgi +srv/web/ipfire/cgi-bin/pakfire.cgi srv/web/ipfire/cgi-bin/proxy.cgi srv/web/ipfire/cgi-bin/qos.cgi usr/bin/2to3 diff --git a/config/rootfiles/core/161/update.sh b/config/rootfiles/core/161/update.sh index 94c3d30a3..8110070e7 100644 --- a/config/rootfiles/core/161/update.sh +++ b/config/rootfiles/core/161/update.sh @@ -120,6 +120,11 @@ ldconfig
# Start services
+# Generate new qos.sh +qosctrl stop +qosctrl generate +qosctrl start + # remove lm_sensor config after collectd was started # to reserch sensors at next boot with updated kernel rm -f /etc/sysconfig/lm_sensors diff --git a/html/cgi-bin/pakfire.cgi b/html/cgi-bin/pakfire.cgi index 0cf522ba1..f2381f031 100644 --- a/html/cgi-bin/pakfire.cgi +++ b/html/cgi-bin/pakfire.cgi @@ -44,6 +44,8 @@ $cgiparams{'VALID'} = ''; $cgiparams{'INSPAKS'} = ''; $cgiparams{'DELPAKS'} = '';
+my $page_lock; + sub refreshpage{&Header::openbox( 'Waiting', 1, "<meta http-equiv='refresh' content='1;'>" );print "<center><img src='/images/clock.gif' alt='' /><br/><font color='red'>$Lang::tr{'pagerefresh'}</font></center>";&Header::closebox();}
&Header::getcgihash(%cgiparams); @@ -57,8 +59,9 @@ sub refreshpage{&Header::openbox( 'Waiting', 1, "<meta http-equiv='refresh' cont if (($cgiparams{'ACTION'} eq 'install') && (! -e $Pakfire::lockfile)) { my @pkgs = split(/|/, $cgiparams{'INSPAKS'}); if ("$cgiparams{'FORCE'}" eq "on") { + # Lock the page. + $page_lock = "1"; &General::system_background("/usr/local/bin/pakfire", "install", "--non-interactive", "--no-colors", @pkgs); - sleep(2); } else { &Header::openbox("100%", "center", $Lang::tr{'request'}); my @output = &General::system_output("/usr/local/bin/pakfire", "resolvedeps", "--no-colors", @pkgs); @@ -95,8 +98,9 @@ END } elsif (($cgiparams{'ACTION'} eq 'remove') && (! -e $Pakfire::lockfile)) { my @pkgs = split(/|/, $cgiparams{'DELPAKS'}); if ("$cgiparams{'FORCE'}" eq "on") { + # Lock the page. + $page_lock = "1"; &General::system_background("/usr/local/bin/pakfire", "remove", "--non-interactive", "--no-colors", @pkgs); - sleep(2); } else { &Header::openbox("100%", "center", $Lang::tr{'request'}); my @output = &General::system_output("/usr/local/bin/pakfire", "resolvedeps", "--no-colors", @pkgs); @@ -132,8 +136,12 @@ END }
} elsif (($cgiparams{'ACTION'} eq 'update') && (! -e $Pakfire::lockfile)) { + # Set variable to lock the page. + $page_lock = "1"; &General::system_background("/usr/local/bin/pakfire", "update", "--force", "--no-colors"); } elsif (($cgiparams{'ACTION'} eq 'upgrade') && (!-e $Pakfire::lockfile)) { + # Lock the page. + $page_lock = "1"; &General::system_background("/usr/local/bin/pakfire", "upgrade", "-y", "--no-colors"); } elsif ($cgiparams{'ACTION'} eq "$Lang::tr{'save'}") { $pakfiresettings{"TREE"} = $cgiparams{"TREE"}; @@ -169,6 +177,43 @@ if ($errormessage) { &Header::closebox(); }
+# Check if a page lock is required. +if ($page_lock) { + &Header::openbox('Waiting', 1, ,); + print <<END; + <table> + <tr> + <td> + <img src='/images/indicator.gif' alt='$Lang::tr{'active'}' title='$Lang::tr{'active'}'> + </td> + + <td> + $Lang::tr{'pakfire working'} + </td> + </tr> + </table> +END + &Header::closebox(); + + # Infinite loop to lock the page until pakfire lockfile is present. + while($page_lock) { + unless (-e $Pakfire::lockfile) { + sleep(1); + } else { + # Release page lock. + undef($page_lock); + + # Break loop. + last; + } + } + + # Perform page reload. + print "<meta http-equiv='refresh' content='1;'>\n"; + exit; +} + +# Check if pakfire is already running. In this case a lockfile is present. if (-e $Pakfire::lockfile) { &Header::openbox( 'Waiting', 1, "<meta http-equiv='refresh' content='10;'>" ); print <<END;
hooks/post-receive -- IPFire 2.x development tree