Handle hostnames with upper-case letters
[webmin.git] / spam / edit_report.cgi
1 #!/usr/local/bin/perl
2 # edit_report.cgi
3 # Display a form for editing the spam report text
4
5 require './spam-lib.pl';
6 &ReadParse();
7 &set_config_file_in(\%in);
8 &can_use_check("report");
9 &ui_print_header($header_subtext, $text{'report_title'}, "");
10 $conf = &get_config();
11
12 print "$text{'report_desc'}<p>\n";
13 &start_form("save_report.cgi", $text{'report_header'});
14
15 if (&version_atleast(3.0)) {
16         # New version can replace subject, from and to headers
17         @rheader = &find("rewrite_header", $conf);
18         foreach $h ("subject", "from", "to") {
19                 ($hn) = grep { lc($_->{'words'}->[0]) eq $h } @rheader;
20                 print &ui_table_row($text{'report_r'.$h},
21                         &opt_field("rewrite_header_${h}",
22                                    $hn ? join(" ", @{$hn->{'words'}}[1..@{$hn->{'words'}}-1]) : undef, 15));
23                 }
24         }
25 else {
26         # Older versions can only replace subject header
27         $rewrite = &find("rewrite_subject", $conf);
28         print &ui_table_row($text{'report_rewrite'},
29                 &yes_no_field("rewrite_subject", $rewrite, 1));
30
31         $subject = &find("subject_tag", $conf);
32         print &ui_table_row($text{'report_subject'},
33                 &opt_field("subject_tag", $subject, 15, "*****SPAM*****"));
34         }
35
36 # Include report in headers
37 $header = &find("report_header", $conf);
38 print &ui_table_row($text{'report_rheader'},
39         &yes_no_field("report_header", $header, 0));
40
41 # Terse report mode
42 $terse = &find("use_terse_report", $conf);
43 print &ui_table_row($text{'report_useterse'},
44         &yes_no_field("use_terse_report", $terse, 0));
45
46 # Split status header?
47 $fold = &find("fold_headers", $conf);
48 print &ui_table_row($text{'report_fold'},
49         &yes_no_field("fold_headers", $fold, 1));
50
51 # Include details of spam phrases
52 $detail = &find("detailed_phrase_score", $conf);
53 print &ui_table_row($text{'report_detail'},
54         &yes_no_field("detailed_phrase_score", $detail, 0));
55
56 if (!&version_atleast(3.0)) {
57         # Include stars header
58         $stars = &find("spam_level_stars", $conf);
59         print &ui_table_row($text{'report_stars'},
60                 &yes_no_field("spam_level_stars", $stars, 1));
61         }
62
63 # Character for stars
64 $char = &find("spam_level_char", $conf);
65 print &ui_table_row($text{'report_char'},
66         &opt_field("spam_level_char", $char, 2, "*"));
67
68 # Remove MIME blocks
69 $defang = &find("defang_mime", $conf);
70 print &ui_table_row($text{'report_defang'},
71         &yes_no_field("defang_mime", $defang, 1));
72
73 if (&version_atleast(2.6)) {
74         $safe = &find("report_safe", $conf);
75         print &ui_table_row($text{'report_safe'},
76                 &option_field("report_safe", $safe, 1,
77                               [ [ 0, $text{'no'} ],
78                                 [ 1, $text{'yes'} ],
79                                 [ 2, $text{'report_safe2'} ] ]));
80         }
81
82 print &ui_table_hr();
83
84 # Extra report to attach to spam messages
85 @report = &find_value("report", $conf);
86 $clear = &find("clear_report_template", $conf);
87 print &ui_table_row($text{'report_report'},
88         &ui_radio("clear_report", $clear ? 1 : 0,
89                   [ [ 0, $text{'report_noclear'} ],
90                     [ 1, $text{'report_clear'} ] ])."<br>\n".
91         &ui_textarea("report", join("\n", @report), 5, 80));
92
93 # Extra report to attach to spam messages, for terse mode
94 @report = &find_value("terse_report", $conf);
95 $clear = &find("clear_terse_report_template", $conf);
96 print &ui_table_row($text{'report_terse'},
97         &ui_radio("clear_terse", $clear ? 1 : 0,
98                   [ [ 0, $text{'report_noclear'} ],
99                     [ 1, $text{'report_clear'} ] ])."<br>\n".
100         &ui_textarea("terse", join("\n", @report), 5, 80));
101
102 # Additional headers to add
103 if (&version_atleast(3)) {
104         print &ui_table_hr();
105         $table = &ui_columns_start([ $text{'report_addfor'},
106                                   $text{'report_addheader'},
107                                   $text{'report_addtext'} ]);
108         $i = 0;
109         foreach $a (&find_value("add_header", $conf), undef) {
110                 local ($for, $header, $text) = split(/\s+/, $a, 3);
111                 $table .= &ui_columns_row([
112                         &ui_select("addfor_$i", $for,
113                                    [ [ "", "&nbsp;" ],
114                                      map { [ $_, $text{'report_add'.$_} ] }
115                                          ( "spam", "ham", "all" ) ]),
116                         &ui_textbox("addheader_$i", $header, 30),
117                         &ui_textbox("addtext_$i", $text, 30)
118                                 ]);
119                 $i++;
120                 }
121         $table .= &ui_columns_end();
122         print &ui_table_row($text{'report_adds'}, $table);
123         }
124
125
126 &end_form(undef, $text{'save'});
127 &ui_print_footer($redirect_url, $text{'index_return'});
128