Handle hostnames with upper-case letters
[webmin.git] / proftpd / mod_log.pl
1 # mod_log.pl
2
3 sub mod_log_directives
4 {
5 local $rv = [
6         [ 'SystemLog', 0, 1, 'root', 1.16 ],
7         [ 'ExtendedLog', 1, 1, 'virtual anon global', 1.16 ],
8         [ 'LogFormat', 1, 1, 'root', 1.16 ]
9         ];
10 return &make_directives($rv, $_[0], "mod_log");
11 }
12
13 sub edit_SystemLog
14 {
15 return (2, $text{'mod_log_syslog'},
16         &opt_input($_[0]->{'value'}, "SystemLog", $text{'mod_log_sysdef'}, 50,
17                    &file_chooser_button("TransferLog")));
18 }
19 sub save_SystemLog
20 {
21 return &parse_opt("SystemLog", '^\/\S+$', $text{'mod_log_esyslog'});
22 }
23
24 sub edit_ExtendedLog
25 {
26 local $rv = "<table border>\n".
27             "<tr $tb> <td><b>$text{'mod_log_file'}</b></td> ".
28             "<td><b>$text{'mod_log_cmd'}</b></td> ".
29             "<td><b>$text{'mod_log_nick'}</b></td> </tr>\n";
30 local $i = 0;
31 foreach $l (@{$_[0]}, { }) {
32         local @w = @{$l->{'words'}};
33         $rv .= "<tr $cb>\n";
34         $rv .= "<td><input name=ExtendedLog_t_$i size=20 value='$w[0]'></td>\n";
35         $rv .= sprintf "<td><input name=ExtendedLog_cd_$i type=radio value=1 %s> %s\n", $w[1] && $w[2] ? "" : "checked", $text{'mod_log_all'};
36         $rv .= sprintf "<input name=ExtendedLog_cd_$i type=radio value=0 %s>\n", $w[1] && $w[2] ? "checked" : "";
37         $rv .= sprintf "<input name=ExtendedLog_c_$i size=15 value='%s'></td>\n", $w[1] && $w[2] ? join(" ", split(/,/, $w[1])) : "";
38         $rv .= sprintf "<td><input name=ExtendedLog_fd_$i type=radio value=1 %s> %s\n", $w[2] || $w[1] ? "" : "checked", $text{'default'};
39         $rv .= sprintf "<input name=ExtendedLog_fd_$i type=radio value=0 %s>\n", $w[2] || $w[1] ? "checked" : "";
40         $rv .= sprintf "<input name=ExtendedLog_f_$i size=15 value='%s'></td>\n", $w[2] ? $w[2] : $w[1];
41         $rv .= "</tr>\n";
42         $i++;
43         }
44 $rv .= "</table>\n";
45 return (2, $text{'mod_log_extended'}, $rv);
46 }
47 sub save_ExtendedLog
48 {
49 local @rv;
50 for($i=0; defined($in{"ExtendedLog_t_$i"}); $i++) {
51         next if (!$in{"ExtendedLog_t_$i"});
52         local @w = ( $in{"ExtendedLog_t_$i"} );
53         if (!$in{"ExtendedLog_cd_$i"}) {
54                 $in{"ExtendedLog_fd_$i"} && &error($text{'mod_log_ecmdnick'});
55                 $in{"ExtendedLog_c_$i"} =~ /\S/ ||
56                         &error($text{'mod_log_ecmd'});
57                 push(@w, join(",", map { uc($_) }
58                           split(/\s+/, $in{"ExtendedLog_c_$i"})));
59                 }
60         if (!$in{"ExtendedLog_fd_$i"}) {
61                 $in{"ExtendedLog_f_$i"} =~ /^\S+$/ ||
62                         &error($text{'mod_log_enick'});
63                 push(@w, $in{"ExtendedLog_f_$i"});
64                 }
65         push(@rv, join(" ", @w));
66         }
67 return ( \@rv );
68 }
69
70 sub edit_LogFormat
71 {
72 local $rv = "<table border>\n".
73             "<tr $tb> <td><b>$text{'mod_log_nickname'}</b></td> ".
74             "<td><b>$text{'mod_log_fmt'}</b></td> </tr>\n";
75 local $i = 0;
76 foreach $f (@{$_[0]}, { }) {
77         local @w = @{$f->{'words'}};
78         $rv .= "<tr $cb>\n";
79         $rv .= "<td><input name=LogFormat_n_$i size=15 value='$w[0]'></td>\n";
80         $rv .= "<td><input name=LogFormat_f_$i size=35 value='$w[1]'></td>\n";
81         $rv .= "</tr>\n";
82         $i++;
83         }
84 $rv .= "</table>\n";
85 return (2, $text{'mod_log_format'}, $rv);
86 }
87 sub save_LogFormat
88 {
89 local @rv;
90 for($i=0; defined($in{"LogFormat_n_$i"}); $i++) {
91         next if (!$in{"LogFormat_n_$i"});
92         $in{"LogFormat_n_$i"} =~ /^\S+$/ || &error($text{'mod_log_enickname'});
93         $in{"LogFormat_f_$i"} =~ /\S/ || &error($text{'mod_log_efmt'});
94         $in{"LogFormat_f_$i"} =~ s/"/\\"/g;
95         push(@rv, sprintf "%s \"%s\"", $in{"LogFormat_n_$i"},
96                                        $in{"LogFormat_f_$i"});
97         }
98 return ( \@rv );
99 }
100