HEX
Server: Apache
System: Linux vps-cdc32557.vps.ovh.ca 5.15.0-156-generic #166-Ubuntu SMP Sat Aug 9 00:02:46 UTC 2025 x86_64
User: hanode (1017)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //usr/share/webmin/virtual-server/mass_uninstall.cgi
#!/usr/bin/perl
# Uninstall a bunch of scripts from some virtual server

require './virtual-server-lib.pl';
&ReadParse();
&licence_status();
$d = &get_domain($in{'dom'});
&can_edit_domain($d) && &can_edit_scripts() || &error($text{'edit_ecannot'});
if ($in{'upgrade'}) {
	# Just go to mass upgrade page
	&redirect("mass_upgrade.cgi?$in");
	exit;
	}

&error_setup($text{'massu_err'});
@d = split(/\0/, $in{'d'});
@d || &error($text{'masse_enone'});

# Get the scripts being removed
@got = &list_domain_scripts($d);
foreach $id (@d) {
	($sinfo) = grep { $_->{'id'} eq $id } @got;
	if ($sinfo) {
		push(@del, $sinfo);
		}
	}

if ($in{'confirm'}) {
	# Do it
	&ui_print_unbuffered_header(&domain_in($d), $text{'massu_title'}, "");

	# Get locks
	&obtain_lock_web($d);
	&obtain_lock_cron($d);

	foreach $sinfo (@del) {
		# Call the un-install function
		$script = &get_script($sinfo->{'name'});
		&$first_print(&text('scripts_uninstalling',
			$script->{'desc'}, $sinfo->{'version'}));
		($ok, $msg) = &{$script->{'uninstall_func'}}(
			$d, $sinfo->{'version'}, $sinfo->{'opts'});
		&$indent_print();
		print $msg,"<br>\n";
		&$outdent_print();
		if ($ok) {
			&$second_print($text{'setup_done'});

			# Remove any custom PHP directory
			&clear_php_version($d, $sinfo);

			# Remove custom proxy path
			&delete_noproxy_path($d, $script, $sinfo->{'version'},
					     $sinfo->{'opts'});

			# Record script un-install in domain
			&remove_domain_script($d, $sinfo);
			}
		else {
			&$second_print($text{'scripts_failed'});
			}
		&run_post_actions();
		}

	&release_lock_web($d);
	&release_lock_cron($d);
	&webmin_log("uninstall", "scripts", scalar(@d));
	}
else {
	# Ask first
	&ui_print_header(&domain_in($d), $text{'massu_title'}, "");

	print "<center>\n";
	print &ui_form_start("mass_uninstall.cgi", "post");
	print &ui_hidden("dom", $in{'dom'}),"\n";
	foreach $id (@d) {
		print &ui_hidden("d", $id),"\n";
		}
	$sz = $dbcount = 0;
	@descs = ( );
	foreach $sinfo (@del) {
		$script = &get_script($sinfo->{'name'});
		$opts = $sinfo->{'opts'};
		$sz += &disk_usage_kb($opts->{'dir'})*1024;
		if ($opts->{'db'}) {
			if (!$donedb{$opts->{'db'}}++) {
				$dbcount++;
				}
			}
		if ($opts->{'dir'} eq &public_html_dir($d)) {
			$delhtml = 1;
			}
		push(@descs, $script->{'desc'}." ".$sinfo->{'version'});
		}
	print &text('massu_rusure', scalar(@d), &nice_size($sz)),"\n";
	if ($dbcount) {
		print &text('massu_rusuredb', $dbcount),"\n";
		}
	print "<p>\n";
	if ($delhtml) {
		print &text('massu_rusurehome', &public_html_dir($d, 1)),
		      "<p>\n";
		}
	print &text('massu_sel', 
		"<tt>".ui_text_color(join(", ", @descs), 'danger')."</tt>"),"<br>\n";
	print "</p>\n";
	print &ui_submit($text{'scripts_uok2'}, "confirm"),"\n";
	print &ui_form_end(),"\n";
	print "</center>\n";
	}

&ui_print_footer("list_scripts.cgi?dom=$in{'dom'}", $text{'scripts_return'},
		 &domain_footer_link($d));