X-Git-Url: http://git.ipfire.org/?p=people%2Fpmueller%2Fipfire-2.x.git;a=blobdiff_plain;f=html%2Fcgi-bin%2Fpakfire.cgi;h=8f20d57767293835e1a036e177784ef73c016ed5;hp=84662a84cf0f3850ebca24592d277c70233dbc63;hb=19b01b74f9b9e7cb01943f6c118b45d1eced9b4c;hpb=986e08d996eadd906ecbe6c9ac8ad48aa78bd854 diff --git a/html/cgi-bin/pakfire.cgi b/html/cgi-bin/pakfire.cgi index 84662a84cf..8f20d57767 100644 --- a/html/cgi-bin/pakfire.cgi +++ b/html/cgi-bin/pakfire.cgi @@ -1,15 +1,23 @@ #!/usr/bin/perl -# -# IPFire CGIs -# -# This file is part of the IPFire Project -# -# This code is distributed under the terms of the GPL -# -# (c) Eric Oberlander June 2002 -# -# (c) Darren Critchley June 2003 - added real time clock setting, etc -# +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# # +# 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 . # +# # +############################################################################### use strict; @@ -20,84 +28,285 @@ use strict; require '/var/ipfire/general-functions.pl'; require "${General::swroot}/lang.pl"; require "${General::swroot}/header.pl"; +require "/opt/pakfire/lib/functions.pl"; my %pakfiresettings=(); my $errormessage = ''; +my %color = (); +my %mainsettings = (); &Header::showhttpheaders(); $pakfiresettings{'ACTION'} = ''; $pakfiresettings{'VALID'} = ''; -$pakfiresettings{'INSTALLED'} = ''; -$pakfiresettings{'AVAIL'} = ''; -$pakfiresettings{'AUTOUPD'} = ''; +$pakfiresettings{'INSPAKS'} = ''; +$pakfiresettings{'DELPAKS'} = ''; +$pakfiresettings{'AUTOUPDATE'} = 'off'; +$pakfiresettings{'AUTOUPGRADE'} = 'off'; +$pakfiresettings{'HEALTHCHECK'} = 'on'; +$pakfiresettings{'UUID'} = 'on'; + +sub refreshpage{&Header::openbox( 'Waiting', 1, "" );print "

$Lang::tr{'pagerefresh'}
";&Header::closebox();} &Header::getcgihash(\%pakfiresettings); -if ($pakfiresettings{'ACTION'} eq $Lang::tr{'save'}) -{ +&General::readhash("${General::swroot}/main/settings", \%mainsettings); +&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color); + +&Header::openpage($Lang::tr{'pakfire configuration'}, 1); +&Header::openbigbox('100%', 'left', '', $errormessage); + +if ($pakfiresettings{'ACTION'} eq 'install'){ + $pakfiresettings{'INSPAKS'} =~ s/\|/\ /g; + if ("$pakfiresettings{'FORCE'}" eq "on") { + my $command = "/usr/local/bin/pakfire install --non-interactive --no-colors $pakfiresettings{'INSPAKS'} &>/dev/null &"; + system("$command"); + } else { + &Header::openbox("100%", "center", "Abfrage"); + my @output = `/usr/local/bin/pakfire resolvedeps --no-colors $pakfiresettings{'INSPAKS'}`; + print <$Lang::tr{'pakfire install package'}.$pakfiresettings{'INSPAKS'}.$Lang::tr{'pakfire possible dependency'} +
+END
+		foreach (@output) {
+		  $_ =~ s/\\[[0-1]\;[0-9]+m//g;
+			print "$_\n";
+		}
+		print <
+		$Lang::tr{'pakfire accept all'}
+		 
+		
+ + + + +
+ +
+ + +
+ +END + &Header::closebox(); + &Header::closebigbox(); + &Header::closepage(); + exit; + } +} elsif ($pakfiresettings{'ACTION'} eq 'remove') { + + $pakfiresettings{'DELPAKS'} =~ s/\|/\ /g; + if ("$pakfiresettings{'FORCE'}" eq "on") { + my $command = "/usr/local/bin/pakfire remove --non-interactive --no-colors $pakfiresettings{'DELPAKS'} &>/dev/null &"; + system("$command"); + } else { + &Header::openbox("100%", "center", "Abfrage"); + my @output = `/usr/local/bin/pakfire resolvedeps --no-colors $pakfiresettings{'DELPAKS'}`; + print <$Lang::tr{'pakfire uninstall package'}.$pakfiresettings{'DELPAKS'}.$Lang::tr{'pakfire possible dependency'} +
+END
+		foreach (@output) {
+		  $_ =~ s/\\[[0-1]\;[0-9]+m//g;
+			print "$_\n";
+		}
+		print <
+		$Lang::tr{'pakfire accept all'}
+		 
+		
+ + + + +
+ +
+ + +
+ +END + &Header::closebox(); + &Header::closebigbox(); + &Header::closepage(); + exit; + } + +} elsif ($pakfiresettings{'ACTION'} eq 'update') { + + system("/usr/local/bin/pakfire update --force --no-colors &>/dev/null &"); + +} elsif ($pakfiresettings{'ACTION'} eq 'upgrade') { + my $command = "/usr/local/bin/pakfire upgrade -y --no-colors &>/dev/null &"; + system("$command"); +} elsif ($pakfiresettings{'ACTION'} eq "$Lang::tr{'save'}") { + + if ($pakfiresettings{'AUTOUPDATE'} eq 'on') { + system("/usr/local/bin/pakfire enable updates >/dev/null 2>&1"); + } else { + system("/usr/local/bin/pakfire disable updates >/dev/null 2>&1"); + } + if ($pakfiresettings{'AUTOUPGRADE'} eq 'on') { + system("/usr/local/bin/pakfire enable upgrades >/dev/null 2>&1"); + } else { + system("/usr/local/bin/pakfire disable upgrades >/dev/null 2>&1"); + } + + &General::writehash("${General::swroot}/pakfire/settings", \%pakfiresettings); } &General::readhash("${General::swroot}/pakfire/settings", \%pakfiresettings); - my %selected=(); my %checked=(); -$checked{'AUTOUPD'}{'off'} = ''; -$checked{'AUTOUPD'}{'on'} = ''; -$checked{'AUTOUPD'}{$pakfiresettings{'AUTOUPD'}} = "checked='checked'"; - -&Header::openpage($Lang::tr{'pakfire configuration'}, 1); - -&Header::openbigbox('100%', 'left', '', $errormessage); +$checked{'AUTOUPDATE'}{'off'} = ''; +$checked{'AUTOUPDATE'}{'on'} = ''; +$checked{'AUTOUPDATE'}{$pakfiresettings{'AUTOUPDATE'}} = "checked='checked'"; +$checked{'AUTOUPGRADE'}{'off'} = ''; +$checked{'AUTOUPGRADE'}{'on'} = ''; +$checked{'AUTOUPGRADE'}{$pakfiresettings{'AUTOUPGRADE'}} = "checked='checked'"; +$checked{'HEALTHCHECK'}{'off'} = ''; +$checked{'HEALTHCHECK'}{'on'} = ''; +$checked{'HEALTHCHECK'}{$pakfiresettings{'HEALTHCHECK'}} = "checked='checked'"; +$checked{'UUID'}{'off'} = ''; +$checked{'UUID'}{'on'} = ''; +$checked{'UUID'}{$pakfiresettings{'UUID'}} = "checked='checked'"; # DPC move error message to top so it is seen! if ($errormessage) { &Header::openbox('100%', 'left', $Lang::tr{'error messages'}); print "$errormessage \n"; &Header::closebox(); +} + +my $return = `pidof pakfire`; +chomp($return); +if ($return) { + &Header::openbox( 'Waiting', 1, "" ); + print < + + $Lang::tr{  + + $Lang::tr{'pakfire working'} + +
+ +
+
+END
+	my @output = `grep pakfire /var/log/messages | tail -20`;
+	foreach (@output) {
+		print "$_";
 	}
+	print <
+		
+END
+	&Header::closebox();
+	&Header::closebigbox();
+	&Header::closepage();
+	exit;
+	refreshpage();
+}
+
+my $core_release = `cat /opt/pakfire/db/core/mine 2>/dev/null`;
+chomp($core_release);
+my $core_update_age = &General::age("/opt/pakfire/db/core/mine");
+my $corelist_update_age = &General::age("/opt/pakfire/db/lists/core-list.db");
+my $server_update_age = &General::age("/opt/pakfire/db/lists/server-list.db");
+my $packages_update_age = &General::age("/opt/pakfire/db/lists/packages_list.db");
 
-print "
\n"; - -&Header::openbox('100%', 'left', $Lang::tr{'network pakfire'}); -print < - - - $Lang::tr{'network pakfire from'} - - -   - +&Header::openbox("100%", "center", "Pakfire"); + +print < + $Lang::tr{'pakfire system state'}: + + $Lang::tr{'pakfire core update level'}: $core_release
+ $Lang::tr{'pakfire last update'} $core_update_age ago
+ $Lang::tr{'pakfire last serverlist update'} $server_update_age ago
+ $Lang::tr{'pakfire last core list update'} $corelist_update_age ago
+ $Lang::tr{'pakfire last package update'} $packages_update_age ago + + +
+ + +
+ - - - - - + &Pakfire::dblist("upgrade", "forweb"); + print < +
+ + + + +   + $Lang::tr{'pakfire available addons'} + $Lang::tr{'pakfire installed addons'} + +

$Lang::tr{'pakfire install description'}

+
+ + +
+ + +

$Lang::tr{'pakfire uninstall description'}

+
+ + +
+ END -; &Header::closebox(); +&Header::openbox("100%", "center", "$Lang::tr{'settings'}"); -print "\n"; +print < + + + + + + + +
$Lang::tr{'basic options'}
$Lang::tr{'pakfire update daily'} + on | + off
$Lang::tr{'pakfire core update auto'} + on | + off
$Lang::tr{'pakfire health check'} + on | + off
$Lang::tr{'pakfire register'} + on | + off
+ +END +&Header::closebox(); &Header::closebigbox(); - &Header::closepage(); -