Current File : //proc/thread-self/root/usr/share/webmin/postfix/delete_queues.cgi |
#!/usr/bin/perl
# delete_queues.cgi
# Delete multiple messages from the postfix queue
require './postfix-lib.pl';
$access{'mailq'} || &error($text{'mailq_ecannot'});
&ReadParse();
if ($in{'move'}) {
# Re-queuing messages
foreach $f (split(/\0/, $in{'file'})) {
&system_logged("$config{'postfix_super_command'} -r ".
quotemeta($f)." >/dev/null 2>&1 </dev/null");
}
}
elsif ($in{'hold'}) {
# Holding messages
foreach $f (split(/\0/, $in{'file'})) {
&system_logged("$config{'postfix_super_command'} -h ".
quotemeta($f)." >/dev/null 2>&1 </dev/null");
}
}
elsif ($in{'unhold'}) {
# Un-holding messages
foreach $f (split(/\0/, $in{'file'})) {
&system_logged("$config{'postfix_super_command'} -H ".
quotemeta($f)." >/dev/null 2>&1 </dev/null");
}
}
else {
if ($in{'all'}) {
# All the files
@files = map { $_->{'id'} } &list_queue(1);
}
else {
# Selected files
@files = split(/\0/, $in{'file'});
}
if ($in{'confirm'} || !$config{'delete_confirm'}) {
# Deleting messages
if (&compare_version_numbers($postfix_version, 1.1) < 0) {
@qfiles = &recurse_files($config{'mailq_dir'});
}
foreach $f (@files) {
$f =~ /^[A-Za-z0-9]+$/ || next;
if (&compare_version_numbers($postfix_version, 1.1) >= 0) {
&system_logged("$config{'postfix_super_command'} -d ".quotemeta($f)." >/dev/null 2>&1 </dev/null");
}
else {
&unlink_file(grep { $_ =~ /\/$f$/ } @qfiles);
}
}
if (&compare_version_numbers($postfix_version, 1.1) < 0) {
&system_logged("$config{'postfix_super_command'} -p >/dev/null 2>&1 </dev/null");
}
&webmin_log("delqs", undef, scalar(@files));
}
else {
# Ask for confirmation
&ui_print_header(undef, $text{'delq_titles'}, "");
print &ui_confirmation_form("delete_queues.cgi",
&text('delq_rusure', scalar(@files)),
[ map { [ 'file', $_ ] } @files ],
[ [ 'confirm', $text{'delq_confirm'} ] ],
);
&ui_print_footer("mailq.cgi", $text{'mailq_return'});
exit;
}
}
&redirect("mailq.cgi");