Handle hostnames with upper-case letters
[webmin.git] / postfix / delete_queues.cgi
1 #!/usr/local/bin/perl
2 # delete_queues.cgi
3 # Delete multiple messages from the postfix queue
4
5 require './postfix-lib.pl';
6 $access{'mailq'} || &error($text{'mailq_ecannot'});
7 &ReadParse();
8
9 if ($in{'move'}) {
10         # Re-queuing messages
11         foreach $f (split(/\0/, $in{'file'})) {
12                 &system_logged("$config{'postfix_super_command'} -r ".
13                                 quotemeta($f));
14                 }
15         }
16 elsif ($in{'hold'}) {
17         # Holding messages
18         foreach $f (split(/\0/, $in{'file'})) {
19                 &system_logged("$config{'postfix_super_command'} -h ".
20                                 quotemeta($f));
21                 }
22         }
23 elsif ($in{'unhold'}) {
24         # Un-holding messages
25         foreach $f (split(/\0/, $in{'file'})) {
26                 &system_logged("$config{'postfix_super_command'} -H ".
27                                 quotemeta($f));
28                 }
29         }
30 else {
31         @files = split(/\0/, $in{'file'});
32         if ($in{'confirm'} || !$config{'delete_confirm'}) {
33                 # Deleting messages
34                 if ($postfix_version < 1.1) {
35                         @qfiles = &recurse_files($config{'mailq_dir'});
36                         }
37                 foreach $f (@files) {
38                         $f =~ /^[A-Za-z0-9]+$/ || next;
39                         if ($postfix_version >= 1.1) {
40                                 &system_logged("$config{'postfix_super_command'} -d ".quotemeta($f));
41                                 }
42                         else {
43                                 &unlink_file(grep { $_ =~ /\/$f$/ } @qfiles);
44                                 }
45                         }
46                 if ($postfix_version < 1.1) {
47                         &system_logged("$config{'postfix_super_command'} -p >/dev/null 2>&1");
48                         }
49                 &webmin_log("delqs", undef, scalar(@files));
50                 }
51         else {
52                 # Ask for confirmation
53                 &ui_print_header(undef, $text{'delq_titles'}, "");
54                 print &ui_confirmation_form("delete_queues.cgi",
55                         &text('delq_rusure', scalar(@files)),
56                         [ map { [ 'file', $_ ] } @files ],
57                         [ [ 'confirm', $text{'delq_confirm'} ] ],
58                         );
59                 &ui_print_footer("mailq.cgi", $text{'mailq_return'});
60                 exit;
61                 }
62         }
63 &redirect("mailq.cgi");
64