Handle hostnames with upper-case letters
[webmin.git] / spam / save_report.cgi
1 #!/usr/local/bin/perl
2 # save_report.cgi
3 # Save report generation options
4
5 require './spam-lib.pl';
6 &error_setup($text{'report_err'});
7 &ReadParse();
8 &set_config_file_in(\%in);
9 &can_use_check("report");
10 &execute_before("report");
11 &lock_spam_files();
12 $conf = &get_config();
13
14 &save_directives($conf, 'clear_report_template',
15                 $in{'clear_report'} ? [ "" ] : [ ], 1);
16 $in{'report'} =~ s/\r//g;
17 @report = split(/\n/, $in{'report'});
18 &save_directives($conf, 'report', \@report, 1);
19
20 &save_directives($conf, 'clear_terse_report_template',
21                 $in{'clear_terse'} ? [ "" ] : [ ], 1);
22 $in{'terse'} =~ s/\r//g;
23 @terse = split(/\n/, $in{'terse'});
24 &save_directives($conf, 'terse_report', \@terse, 1);
25
26 if (&version_atleast(3.0)) {
27         foreach $h ("subject", "from", "to") {
28                 if (!$in{"rewrite_header_${h}_def"}) {
29                         push(@rheader, { 'name' => 'rewrite_header',
30                             'value' => $h." ".$in{"rewrite_header_${h}"} });
31                         }
32                 }
33         &save_directives($conf, "rewrite_header", \@rheader);
34         }
35 else {
36         &parse_yes_no($conf, "rewrite_subject");
37         &parse_opt($conf, "subject_tag", undef);
38         }
39 &parse_yes_no($conf, "report_header");
40 &parse_yes_no($conf, "use_terse_report");
41 &parse_yes_no($conf, "fold_headers");
42 &parse_yes_no($conf, "detailed_phrase_score");
43 if (!&version_atleast(3.0)) {
44         &parse_yes_no($conf, "spam_level_stars");
45         }
46 &parse_opt($conf, "spam_level_char", \&char_check);
47 &parse_yes_no($conf, "defang_mime");
48 &parse_option($conf, "report_safe") if (defined($in{'report_safe'}));
49
50 if (&version_atleast(3)) {
51         for($i=0; defined($addfor = $in{"addfor_$i"}); $i++) {
52                 next if (!$addfor);
53                 $addheader = $in{"addheader_$i"};
54                 $addtext = $in{"addtext_$i"};
55                 $addheader =~ /^\S+$/ ||
56                         &error(&text('report_eaddheader', $i+1));
57                 push(@adds, "$addfor $addheader $addtext");
58                 }
59         &save_directives($conf, "add_header", \@adds, 1);
60         }
61
62 &flush_file_lines();
63 &unlock_spam_files();
64 &webmin_log("report");
65 &execute_after("report");
66 &redirect($redirect_url);
67
68 sub char_check
69 {
70 $_[0] =~ /^\S$/ || &error($text{'report_echar'});
71 }
72