mirror of
https://github.com/webmin/webmin.git
synced 2026-03-20 16:50:24 +00:00
Work on support for removing packages
This commit is contained in:
45
phpini/delete_pkgs.cgi
Normal file
45
phpini/delete_pkgs.cgi
Normal file
@@ -0,0 +1,45 @@
|
||||
#!/usr/local/bin/perl
|
||||
# Remove some PHP versions
|
||||
|
||||
require './phpini-lib.pl';
|
||||
&error_setup($text{'dpkgs_err'});
|
||||
$access{'global'} || &error($text{'pkgs_ecannot'});
|
||||
&foreign_available("software") || &error($text{'pkgs_ecannot2'});
|
||||
&ReadParse();
|
||||
|
||||
my @d = split(/\0/, $in{'d'});
|
||||
@d || &error($text{'dpkgs_enone'});
|
||||
my $vmap = &get_virtualmin_php_map();
|
||||
|
||||
# Find all packages and check that they can be safely removed
|
||||
my @pkgs = &list_php_base_packages();
|
||||
my @delpkgs;
|
||||
foreach my $name (@d) {
|
||||
($pkg) = grep { $_->{'name'} eq $name } @pkgs;
|
||||
$pkg || &error($text{'dpkgs_eexists'});
|
||||
if ($vmap) {
|
||||
$ulist = $vmap->{$pkg->{'shortver'}};
|
||||
if ($ulist && @$ulist) {
|
||||
&error(&text('dpkg_eusers', $pkg->{'phpver'},
|
||||
scalar(@$ulist)));
|
||||
}
|
||||
}
|
||||
push(@delpkgs, $pkg);
|
||||
}
|
||||
|
||||
# Actually do the deletion
|
||||
&ui_print_unbuffered_header(undef, $text{'dpkgs_title'}, "");
|
||||
|
||||
foreach my $pkg (@delpkgs) {
|
||||
print &text('dpkgs_doing', "<tt>$pkg->{'name'}</tt>",
|
||||
$pkg->{'phpver'}),"<br>\n";
|
||||
$err = &delete_php_base_package($pkg);
|
||||
if ($err) {
|
||||
print &text('dpkgs_failed', $err),"<p>\n";
|
||||
}
|
||||
else {
|
||||
print $text{'dpkgs_done'},"<p>\n";
|
||||
}
|
||||
}
|
||||
|
||||
&ui_print_footer("list_pkgs.cgi", $text{'pkgs_return'});
|
||||
@@ -230,5 +230,15 @@ pkgs_nousers=No domains
|
||||
pkgs_ucount=$1 domains
|
||||
pkgs_newver=PHP package to install:
|
||||
pkgs_install=Install Now
|
||||
pkgs_return=PHP packages
|
||||
|
||||
dpkgs_err=Failed to delete PHP packages
|
||||
dpkgs_title=Deleting PHP Packages
|
||||
dpkgs_doing=Uninstalling package $1 for PHP version $2 ..
|
||||
dpkgs_failed=.. failed : $1
|
||||
dpkgs_done=.. uninstalled successfully
|
||||
dpkgs_enone=No packages selected
|
||||
dpkgs_eexists=Package does not exist!
|
||||
dpkg_eusers=Package for PHP version $1 cannot be uninstalled, as it is still being used by $2 domains
|
||||
|
||||
__norefs=1
|
||||
|
||||
@@ -54,7 +54,7 @@ if (&foreign_installed("package-updates")) {
|
||||
print "<b>$text{'pkgs_newver'}</b>\n";
|
||||
print &ui_select("u", undef,
|
||||
[ map { [ $_->{'name'},
|
||||
$_->{'name'}." (".$_->{'version'}.")" ] } @newpkgs ]);
|
||||
$_->{'name'}." (".$_->{'ver'}.")" ] } @newpkgs ]);
|
||||
print &ui_hidden(
|
||||
"redir", &get_webprefix()."/$module_name/list_pkgs.cgi");
|
||||
print &ui_hidden("redirdesc", $text{'pkgs_title'});
|
||||
|
||||
@@ -878,9 +878,10 @@ sub list_php_base_packages
|
||||
&foreign_require("software");
|
||||
my $n = &software::list_packages();
|
||||
my @rv;
|
||||
my %done;
|
||||
for(my $i=0; $i<$n; $i++) {
|
||||
my $name = $software::packages{$i,'name'};
|
||||
next if ($name !~ /^php(\d*)$/);
|
||||
next if ($name !~ /^php(\d*)(-php)?$/);
|
||||
my $suffix = $1;
|
||||
my $phpver = $software::packages{$i,'version'};
|
||||
$phpver =~ s/\-.*$//;
|
||||
@@ -901,6 +902,7 @@ for(my $i=0; $i<$n; $i++) {
|
||||
if ($shortver =~ /^5\./) {
|
||||
$shortver = "5";
|
||||
}
|
||||
next if ($done{$phpver}++);
|
||||
push(@rv, { 'name' => $software::packages{$i,'name'},
|
||||
'system' => $software::packages{$i,'system'},
|
||||
'ver' => $software::packages{$i,'version'},
|
||||
@@ -930,7 +932,7 @@ foreach my $pkg (&package_updates::list_available()) {
|
||||
$shortver = "5";
|
||||
}
|
||||
push(@rv, { 'name' => $pkg->{'name'},
|
||||
'version' => $pkg->{'version'},
|
||||
'ver' => $pkg->{'version'},
|
||||
'shortver' => $shortver,
|
||||
'phpver' => $phpver,
|
||||
});
|
||||
@@ -947,8 +949,8 @@ my %vmap;
|
||||
&foreign_check("virtual-server") || return undef;
|
||||
&foreign_require("virtual-server");
|
||||
foreach my $d (&virtual_server::list_domains()) {
|
||||
my $v = $d->{'php_fpm_version'} ||
|
||||
$d->{'php_version'};
|
||||
my $v = $d->{'php_mode'} eq 'fpm' ? $d->{'php_fpm_version'}
|
||||
: $d->{'php_version'};
|
||||
if ($v) {
|
||||
$vmap{$v} ||= [ ];
|
||||
push(@{$vmap{$v}}, $d);
|
||||
@@ -957,5 +959,18 @@ foreach my $d (&virtual_server::list_domains()) {
|
||||
return \%vmap;
|
||||
}
|
||||
|
||||
# delete_php_base_package(&package)
|
||||
# Delete a PHP package, and return undef on success or an error on failure
|
||||
sub delete_php_base_package
|
||||
{
|
||||
my ($pkg) = @_;
|
||||
&foreign_require("software");
|
||||
my $err = &software::delete_package($pkg->{'name'}, { }, $pkg->{'ver'});
|
||||
if ($err) {
|
||||
$err = &html_strip($err);
|
||||
}
|
||||
return $err;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user