0
|
1 #! @PERL@ -wT |
|
2 |
|
3 # List the messages in a user's log directory |
|
4 |
|
5 # Copyright (c) 2008 by Rhyolite Software, LLC |
|
6 # |
|
7 # This agreement is not applicable to any entity which sells anti-spam |
|
8 # solutions to others or provides an anti-spam solution as part of a |
|
9 # security solution sold to other entities, or to a private network |
|
10 # which employs the DCC or uses data provided by operation of the DCC |
|
11 # but does not provide corresponding data to other users. |
|
12 # |
|
13 # Permission to use, copy, modify, and distribute this software without |
|
14 # changes for any purpose with or without fee is hereby granted, provided |
|
15 # that the above copyright notice and this permission notice appear in all |
|
16 # copies and any distributed versions or copies are either unchanged |
|
17 # or not called anything similar to "DCC" or "Distributed Checksum |
|
18 # Clearinghouse". |
|
19 # |
|
20 # Parties not eligible to receive a license under this agreement can |
|
21 # obtain a commercial license to use DCC by contacting Rhyolite Software |
|
22 # at sales@rhyolite.com. |
|
23 # |
|
24 # A commercial license would be for Distributed Checksum and Reputation |
|
25 # Clearinghouse software. That software includes additional features. This |
|
26 # free license for Distributed ChecksumClearinghouse Software does not in any |
|
27 # way grant permision to use Distributed Checksum and Reputation Clearinghouse |
|
28 # software |
|
29 # |
|
30 # THE SOFTWARE IS PROVIDED "AS IS" AND RHYOLITE SOFTWARE, LLC DISCLAIMS ALL |
|
31 # WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES |
|
32 # OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL RHYOLITE SOFTWARE, LLC |
|
33 # BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES |
|
34 # OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, |
|
35 # WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, |
|
36 # ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS |
|
37 # SOFTWARE. |
|
38 # Rhyolite Software DCC 1.3.103-1.25 $Revision$ |
|
39 # @configure_input@ |
|
40 |
|
41 # This file must protected with an equivalent to httpd.conf lines |
|
42 # in the README file. |
|
43 |
|
44 |
|
45 use strict 'subs'; |
|
46 |
|
47 use POSIX qw(strftime); |
|
48 |
|
49 |
|
50 # get DCC parameters |
|
51 local($user_dir, |
|
52 $list_msg_link, |
|
53 $msg_day_first, $msg_day_last, |
|
54 $msg_first, $msg_last, $msg_newer, |
|
55 $msg_part_num, @msgs_num, |
|
56 %msgs_date, %msgs_from, |
|
57 %msgs_result, %msgs_subject); |
|
58 do('@cgibin@/common') || die("could not get DCC configuration: $!\n"); |
|
59 |
|
60 get_log_msgs($query{msg} ? $query{msg} : undef, 20, 1); |
|
61 |
|
62 html_head("Messages Logged for $user at $hostname"); |
|
63 |
|
64 print "<H3>"; |
|
65 print $#msgs_num >= 0 ? ($#msgs_num+1) : "No"; |
|
66 print " messages logged for <EM>$user</EM> at $hostname at "; |
|
67 print strftime "%x %X", localtime; |
|
68 print "</H3>\n<P>\n<P class=warn><STRONG>\n"; |
|
69 print $query{result} ? html_str_encode($query{result}) : " "; |
|
70 print "</STRONG>\n<P>\n"; |
|
71 common_buttons(); |
|
72 |
|
73 print "</TABLE>\n"; |
|
74 |
|
75 if ($#msgs_num >= 0) { |
|
76 my($msg_num, $msg, $next_date, $last_date); |
|
77 |
|
78 print <<EOF; |
|
79 <P> |
|
80 <TABLE border=1 cellpadding="2%" frame=void rules=rows |
|
81 summary="messages logged for $user at $hostname"> |
|
82 EOF |
|
83 |
|
84 print_links(); |
|
85 |
|
86 for ($msg_num = $msg_first; $msg_num <= $msg_last; ++$msg_num) { |
|
87 my($msg) = $msgs_num[$msg_num]; |
|
88 |
|
89 next if (!$msg); |
|
90 $next_date = $msgs_date{$msg}; |
|
91 if ($next_date =~ s/(.*) .*/$1/) { |
|
92 if (! $last_date) { |
|
93 print "<TR><TH>\n"; |
|
94 print " <TH>$next_date"; |
|
95 if ($msg_part_num) { |
|
96 print " part $msg_part_num"; |
|
97 $msg_part_num= 0; |
|
98 } |
|
99 print "\n <TH>From\n <TH> \n <TH>Subject\n"; |
|
100 } elsif ($last_date ne $next_date) { |
|
101 print "<TR><TH> \n"; |
|
102 print " <TH>$next_date"; |
|
103 print "\n <TH> \n <TH> \n <TH> \n"; |
|
104 } |
|
105 $last_date = $next_date; |
|
106 } |
|
107 |
|
108 print "<TR><TD class=\"mono small\">$list_msg_link${url_ques}msg=$msg\">"; |
|
109 print $msg_num+1; |
|
110 print <<EOF; |
|
111 </A> |
|
112 <TD class=mono>$msgs_date{$msg} |
|
113 <TD>$msgs_from{$msg} |
|
114 <TD class=small>$msgs_result{$msg} |
|
115 <TD>$msgs_subject{$msg} |
|
116 EOF |
|
117 } |
|
118 |
|
119 if ($msg_num > $#msgs_num) { |
|
120 print <<EOF; |
|
121 <TR><TH> |
|
122 <TH>Next Day |
|
123 <TH> |
|
124 <TH> |
|
125 <TH> |
|
126 EOF |
|
127 } |
|
128 |
|
129 print_links(); |
|
130 |
|
131 |
|
132 print <<EOF; |
|
133 </TABLE> |
|
134 |
|
135 <P> |
|
136 <TABLE class=small border=0 cellspacing=0 cellpadding=0> |
|
137 <TR><TD class=strong>Grey |
|
138 <TD>greylist embargo |
|
139 <TD class=strong>OK-Grey |
|
140 <TD>greylist embargo ended |
|
141 <TR><TD class=strong>DCC |
|
142 <TD>bulk according to DCC network |
|
143 <TD class=strong>OK-DCC |
|
144 <TD>not bulk according to DCC network |
|
145 <TR><TD class=strong>Rep |
|
146 <TD>bad DCC Reputation |
|
147 <TR><TD class=strong>MTA |
|
148 <TD>blacklisted by mail system |
|
149 <TD class=strong>MTA-OK |
|
150 <TD>whitelisted by mail system |
|
151 <TR><TD class=strong>BL |
|
152 <TD>blacklisted in whiteclnt files |
|
153 <TD class=strong>WL |
|
154 <TD>whitelisted in whiteclnt files |
|
155 <TR><TD class=strong>DNSBL |
|
156 <TD>DNS blacklisted URL |
|
157 <TR><TD><I>italic</I> |
|
158 <TD>checks off |
|
159 </TABLE> |
|
160 |
|
161 EOF |
|
162 } |
|
163 |
|
164 html_footer(); |
|
165 print "</BODY>\n</HTML>\n"; |
|
166 |
|
167 # re-enable mail notifications |
|
168 unlink("$user_dir/notify.marker", "$user_dir/notify.pending", |
|
169 "$user_dir/notify.block"); |
|
170 close(MARK) |
|
171 if (open(MARK, "> $user_dir/notify.marker")); |
|
172 |
|
173 |
|
174 |
|
175 sub print_links { |
|
176 my($msg_num); |
|
177 |
|
178 print "<TR><TD colspan=4>\n"; |
|
179 print " $list_log_link\">Newest</A>\n"; |
|
180 print_bounded_link($msg_day_last+1, "Next Day"); |
|
181 print_bounded_link($msg_newer, "Newer"); |
|
182 print_bounded_link($msg_first-1, "Older"); |
|
183 print_bounded_link($msg_day_first-1, "Previous Day"); |
|
184 print_bounded_link(0, "Oldest"); |
|
185 } |
|
186 |
|
187 |
|
188 |
|
189 sub print_bounded_link { |
|
190 my($msg_num, $name) = @_; |
|
191 my($val); |
|
192 |
|
193 if ($msg_num > $#msgs_num) { |
|
194 $val = ""; |
|
195 } elsif ($msg_num < 0) { |
|
196 $val = "${url_ques}msg=$msgs_num[0]"; |
|
197 } else { |
|
198 $val = "${url_ques}msg=$msgs_num[$msg_num]"; |
|
199 } |
|
200 print " $list_log_link$val\">$name</A>\n"; |
|
201 } |