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 (($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);
sleep(1);
} else {
&Header::openbox("100%", "center", $Lang::tr{'request'});
my @output = &General::system_output("/usr/local/bin/pakfire", "resolvedeps", "--no-colors", @pkgs);
print <$Lang::tr{'pakfire uninstall package'} @pkgs $Lang::tr{'pakfire possible dependency'}
END
foreach (@output) {
$_ =~ s/\\[[0-1]\;[0-9]+m//g;
print "$_\n";
}
print <
$Lang::tr{'pakfire uninstall all'}
END
&Header::closebox();
&Header::closebigbox();
&Header::closepage();
exit;
}
} elsif (($cgiparams{'ACTION'} eq 'update') && (! &_is_pakfire_busy())) {
&General::system_background("/usr/local/bin/pakfire", "update", "--force", "--no-colors");
sleep(1);
} elsif (($cgiparams{'ACTION'} eq 'upgrade') && (! &_is_pakfire_busy())) {
&General::system_background("/usr/local/bin/pakfire", "upgrade", "-y", "--no-colors");
sleep(1);
} 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");
sleep(1);
}
}
&General::readhash("${General::swroot}/pakfire/settings", \%pakfiresettings);
my %selected=();
my %checked=();
$selected{"TREE"} = ();
$selected{"TREE"}{"stable"} = "";
$selected{"TREE"}{"testing"} = "";
$selected{"TREE"}{"unstable"} = "";
$selected{"TREE"}{$pakfiresettings{"TREE"}} = "selected";
# 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();
}
# Show log output while Pakfire is running
if(&_is_pakfire_busy()) {
&Header::openbox("100%", "center", "Pakfire");
print <
$Lang::tr{'pakfire working'}
END
;
&Header::closebox();
&Header::closebigbox();
&Header::closepage();
exit;
}
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");
&Header::openbox("100%", "center", "Pakfire");
print <
END
if ( -e "/var/run/need_reboot") {
print "$Lang::tr{'needreboot'}! ";
print " "
}
print <$Lang::tr{'pakfire system state'}:
$Lang::tr{'available updates'}:
$Lang::tr{'pakfire core update level'}: $core_release
$Lang::tr{'pakfire last update'} $core_update_age $Lang::tr{'pakfire ago'}
$Lang::tr{'pakfire last serverlist update'} $server_update_age $Lang::tr{'pakfire ago'}
$Lang::tr{'pakfire last core list update'} $corelist_update_age $Lang::tr{'pakfire ago'}
$Lang::tr{'pakfire last package update'} $packages_update_age $Lang::tr{'pakfire ago'}
$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 <
$Lang::tr{'pakfire tree'}
END
&Header::closebox();
&Header::closebigbox();
&Header::closepage();
###--- Internal functions ---###
# Check if pakfire is already running (extend test here if necessary)
sub _is_pakfire_busy {
# Get PID of a running pakfire instance
# (The system backpipe command is safe, because no user input is computed.)
my $pakfire_pid = `pidof -s /usr/local/bin/pakfire`;
chomp($pakfire_pid);
# Test presence of PID or lockfile
return (($pakfire_pid) || (-e "$Pakfire::lockfile"));
}
# Send HTTP headers
sub _start_json_output {
print "Cache-Control: no-cache, no-store\n";
print "Content-Type: application/json\n";
print "\n"; # End of HTTP headers
}