Changeset 53
- Timestamp:
- 02/22/05 18:06:42
- Files:
-
- trunk/plugins/spamlookup/mt-spamlookup.cgi (modified) (1 diff)
- trunk/plugins/spamlookup/spamlookup.pl (modified) (9 diffs)
- trunk/plugins/spamlookup/tmpl/config.tmpl (modified) (4 diffs)
- trunk/plugins/spamlookup/tmpl/pings.tmpl (modified) (3 diffs)
- trunk/plugins/spamlookup/tmpl/slheader.tmpl (modified) (2 diffs)
- trunk/plugins/spamlookup/tmpl/test.tmpl (added)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/plugins/spamlookup/mt-spamlookup.cgi
r52 r53 535 535 my (%param) = @_; 536 536 537 my $ip = $app->{query}->param('ip'); 538 my $orig_ip = $ip; 539 537 $app->add_breadcrumb('Test Filters'); 538 $param{nav_test} = 1; 539 540 my $query = $app->{query}; 540 541 my $data = MT::Plugin::SpamLookup->instance->get_config_hash(); 541 $param{nav_test} = 1; 542 543 my $domain; 544 if ($ip !~ m/^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/) { 545 $domain = $ip; 546 $ip = undef; 547 } 548 549 my @log; 550 if ($ip && $data->{ipbl_enabled}) { 551 my ($a, $b, $c, $d) = split /\./, $ip; 552 my @ipbl_service = split /\s+/, $data->{ipbl_service}; 553 foreach my $service (@ipbl_service) { 554 $service =~ s/^\.//; 555 if (MT::Plugin::SpamLookup::checkdns("$d.$c.$b.$a.$service.")) { 556 push @log, { message => "Found IP $ip on service $service" }; 557 } 558 } 559 } 560 if ($domain && $data->{domainbl_enabled}) { 561 my @domainbl_service = split /\s+/, $data->{domainbl_service}; 562 my @domains = MT::Plugin::SpamLookup::extract_urls($domain); 563 @domains = MT::Plugin::SpamLookup::extract_urls('http://' . $domain) 564 if !@domains; 565 foreach $domain (@domains) { 566 if ($domain =~ m/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/) { 567 $domain = "$4.$3.$2.$1"; 568 } 569 foreach my $service (@domainbl_service) { 570 $service =~ s/^\.//; 571 if (MT::Plugin::SpamLookup::checkdns("$domain.$service.")) { 572 push @log, { message => "Found domain $domain on service $service" }; 573 } 574 } 575 } 576 } 577 578 $app->add_breadcrumb('Test Results'); 579 $param{test_ip} = $orig_ip; 580 $param{test_results} = \@log; 581 $app->show_form(%param); 542 543 foreach (qw(commentpass_enabled commentpass_fieldname tbpass_enabled)) { 544 $param{$_} = $data->{$_}; 545 } 546 547 my $method = $app->request_method; 548 549 if ($method eq 'POST') { 550 my $type = $query->param('_type'); 551 552 my $obj; 553 my $ip; 554 555 if ($type eq 'comment') { 556 require MT::Comment; 557 $obj = new MT::Comment; 558 $ip = $query->param('comment_ip'); 559 $obj->email($query->param('comment_email')); 560 $obj->author($query->param('comment_name')); 561 $obj->text($query->param('comment_message')); 562 $obj->url($query->param('comment_url')); 563 $obj->entry_id(1); 564 $obj->visible(1); 565 $param{test_comment} = 1; 566 $param{comment_ip} = $ip; 567 $param{comment_email} = $query->param('comment_email'); 568 $param{comment_name} = $query->param('comment_name'); 569 $param{comment_message} = $query->param('comment_message'); 570 $param{comment_url} = $query->param('comment_url'); 571 } else { 572 require MT::TBPing; 573 $obj = new MT::TBPing; 574 $ip = $query->param('tb_ip'); 575 $obj->title($query->param('tb_title')); 576 $obj->blog_name($query->param('tb_name')); 577 $obj->source_url($query->param('tb_url')); 578 $obj->excerpt($query->param('tb_message')); 579 $obj->tb_id(1); 580 $param{test_trackback} = 1; 581 $param{tb_ip} = $ip; 582 $param{tb_title} = $query->param('tb_title'); 583 $param{tb_name} = $query->param('tb_name'); 584 $param{tb_url} = $query->param('tb_url'); 585 $param{tb_message} = $query->param('tb_message'); 586 } 587 588 $ip ||= $app->remote_ip; 589 $obj->ip($ip); 590 591 my $blog_iter = MT::Blog->load_iter(); 592 my $blog = $blog_iter->(); 593 die "You have no blogs defined, so we cannot properly test" unless $blog; 594 $obj->blog_id($blog->id); 595 596 require MT::Callback; 597 my $cb = new MT::Callback('method' => 'Test'); 598 $cb->error(''); 599 my $result = MT::Plugin::SpamLookup::filter($cb, $app, $obj); 600 my $action; 601 602 if ($type eq 'comment') { 603 if ($result) { 604 $action = 'Approved' if $obj->visible; 605 } 606 } else { 607 if ($result) { 608 $action = 'Approved' unless $obj->created_by; 609 } 610 $result = 1 if $obj->created_by; 611 } 612 $action ||= $result ? 'Moderated' : 'Blocked'; 613 $param{result} = $action; 614 $param{"action_$action"} = 1; 615 $param{reason} = $cb->errstr; 616 } 617 618 $app->build_page('test.tmpl', \%param); 582 619 } 583 620 trunk/plugins/spamlookup/spamlookup.pl
r49 r53 229 229 230 230 my @tests; 231 push @tests, [\&commentpass_check, ' commentpass_check']231 push @tests, [\&commentpass_check, 'Comment Passphrase'] 232 232 if $data->{commentpass_enabled} && ($data->{__type} eq 'comment') 233 233 && ($method ne 'Despam'); 234 push @tests, [\&tbpass_check, ' tbpass_check']234 push @tests, [\&tbpass_check, 'TrackBack Passphrase'] 235 235 if $data->{tbpass_enabled} && ($data->{__type} ne 'comment') 236 236 && ($method ne 'Despam'); 237 push @tests, [\&wordlist_check, ' wordlist_check']237 push @tests, [\&wordlist_check, 'Wordlist filter'] 238 238 if ($data->{wordlist_moderate} || $data->{wordlist_block}); 239 push @tests, [\&priorurl_check, ' priorurl_check']239 push @tests, [\&priorurl_check, 'Prior URL test'] 240 240 if $data->{allow_priorurls} && $data->{source_url} 241 241 && ($method ne 'Despam'); 242 push @tests, [\&pingip_check, ' pingip_check']242 push @tests, [\&pingip_check, 'TrackBack Ping IP filter'] 243 243 if $data->{pingip_enabled} && ($data->{__type} ne 'comment'); 244 push @tests, [\&cache_check, ' cache_check']244 push @tests, [\&cache_check, 'Proxy cache'] 245 245 if $data->{caching_enabled} && $data->{cache_limit}; 246 push @tests, [\&headers_check, ' headers_check']246 push @tests, [\&headers_check, 'HTTP header test'] 247 247 if $data->{headers_enabled} 248 && ($method ne 'Despam'); 249 push @tests, [\&ipbl_check, 'ipbl_check'] 248 && ($method ne 'Despam') 249 && ($method ne 'Test'); 250 push @tests, [\&ipbl_check, 'IP blacklist lookup'] 250 251 if $data->{ipbl_enabled}; 251 push @tests, [\&domainbl_check, ' domainbl_check']252 push @tests, [\&domainbl_check, 'Domain blacklist lookup'] 252 253 if $data->{domainbl_enabled}; 253 push @tests, [\&urlcount_check, ' urlcount_check']254 push @tests, [\&urlcount_check, 'URL count test'] 254 255 if $data->{urlcount_enabled}; 255 push @tests, [\&proxy_check, ' proxy_check']256 push @tests, [\&proxy_check, 'Dynamic Proxy test'] 256 257 if $data->{proxycheck_enabled} 257 258 && ($method ne 'Despam'); # this test should not be done during despamming, should it? … … 261 262 $result = $_->[0]->($eh, $app, $obj, $data); 262 263 if ((defined $eh->errstr) && ($eh->errstr =~ m/\w/)) { 263 push @errors, $eh->errstr ;264 push @errors, $eh->errstr . ' ('.$_->[1].')'; 264 265 $eh->error(undef); 265 266 } 267 if (defined $result && ($result == ACCEPT)) { 268 if ($method eq 'Test') { 269 push @errors, "Accepted ".$data->{__type}." based on test ".$_->[1]; 270 } 271 } 266 272 last if defined $result; 267 273 } … … 269 275 270 276 # default to allow if $result is still undef 277 if (!$result) { 278 $eh->error("Accepted ".$data->{__type}." since it passed all tests") if $method eq 'Test'; 279 } 271 280 $result = ACCEPT unless defined $result; 272 281 … … 290 299 } 291 300 292 if ( $method ne 'Despam') {301 if (($method ne 'Despam') && ($method ne 'Test')) { 293 302 if ($data->{is_proxy} && $data->{proxycheck_autoban}) { 294 303 require MT::IPBanList; … … 404 413 sub tbpass_check { 405 414 my ($eh, $app, $obj, $data) = @_; 406 407 408 415 return IGNORE; 409 416 } … … 416 423 my $text = $data->{commentpass_text}; 417 424 418 return IGNORE unless $ formfield;425 return IGNORE unless $data->{commentpass_enabled}; 419 426 420 427 my $inpass = $app->{query}->param($formfield); … … 441 448 return ACCEPT if lc($text) eq lc($inpass); 442 449 450 $eh->error(($data->{commentpass_moderate} ? "Moderating" : "Blocking") . 451 " comment for blog " . $obj->blog_id . " due to passphrase not matching."); 443 452 return $data->{commentpass_moderate} ? MODERATE : BLOCK; 444 453 } … … 474 483 $result = BLOCK if $distance >= $data->{pingip_block}; 475 484 $result ||= MODERATE if $distance >= $data->{pingip_moderate}; 485 return $result unless defined $result; 476 486 477 487 my $action = ($result == MODERATE ? "Moderating" : "Blocking"); … … 734 744 } 735 745 return $domain if $mode == 1; 746 $$total++ if(defined($total)); 736 747 next if $seen{$domain}; 737 $$total++ if(defined($total));738 748 if ($mode == 0) { # default mode, replicate for all subdomains 739 749 my $last = $#parts; trunk/plugins/spamlookup/tmpl/config.tmpl
r49 r53 14 14 // --> 15 15 </script> 16 17 <TMPL_UNLESS TEST_IP>18 16 19 17 <h2>SpamLookup Configuration</h2> … … 320 318 </p> 321 319 322 </div>323 324 <hr />325 326 320 <input onclick="toggle(this, 'caching_prefs')" value="1" type="checkbox" name="caching_enabled" id="caching_enabled" <TMPL_IF NAME=CACHING_ENABLED>checked="checked"</TMPL_IF> /> <label for="caching_enabled">Enable caching of IP proxy tests</label> 327 321 <div id="caching_prefs" class="sub-field" <TMPL_IF NAME=CACHING_ENABLED>style="display: block"</TMPL_IF>> … … 340 334 <em>Provides more information about an IP address in the cache; %ip% will be replaced by the IP address of the current entry.</em> 341 335 </p> 336 </div> 337 342 338 </div> 343 339 … … 376 372 </form> 377 373 378 </TMPL_UNLESS>379 380 <form method="post" action="<TMPL_VAR NAME=SCRIPT_URL>">381 <input type="hidden" name="__mode" value="test" />382 383 <h3>Test Lookup</h3>384 385 <TMPL_IF NAME=TEST_IP>386 <TMPL_IF NAME=TEST_RESULTS>387 <p class="message">388 Test results for <TMPL_VAR NAME=TEST_IP ESCAPE=HTML>:389 <TMPL_LOOP NAME=TEST_RESULTS>390 <br /> · <TMPL_VAR NAME=MESSAGE ESCAPE=HTML><br />391 </TMPL_LOOP>392 </p>393 <TMPL_ELSE>394 <p class="message">395 No matches were found for <TMPL_VAR NAME=TEST_IP>396 </p>397 </TMPL_IF>398 </TMPL_IF>399 400 <p>401 Enter an IP address, domain name or URL to test:<br />402 <input name="ip" type="text" value="" size="50" />403 </p>404 405 <input type="submit" value="Lookup" />406 </form>407 408 374 </div> 409 375 trunk/plugins/spamlookup/tmpl/pings.tmpl
r49 r53 9 9 flds[i].checked = !flds[i].checked; 10 10 } 11 function checkAll(field, v) { 12 var flds = document.getElementsByName(field); 13 if (!flds) return; 14 for (i = 0; i < flds.length; i++) 15 flds[i].checked = v; 16 } 17 function selectPrefs(sel) { 18 for (i = 0; i < sel.options.length; i++) { 19 id = sel.options[i].value; 20 el = getByID(sel.name+"_"+id+"_prefs"); 21 if (el) el.style.display = 'none'; 22 } 23 id = sel.options[sel.selectedIndex].value; 24 el = getByID(sel.name+"_"+id+"_prefs"); 25 if (el) el.style.display = ''; 26 } 11 27 // --> 12 28 </script> … … 17 33 </p> 18 34 </TMPL_IF> 35 36 <h2>View All TrackBackPings</h2> 37 38 <TMPL_IF NAME=SAVED> 39 <div class="message"><MT_TRANS phrase="Your changes have been saved."> <TMPL_INCLUDE NAME="rebuild-stub.tmpl"></div> 40 </TMPL_IF> 41 42 <TMPL_IF NAME=SAVED_DELETED> 43 <div class="message"><MT_TRANS phrase="The selected comment(s) has been deleted from the database."> </div> 44 </TMPL_IF> 45 46 <h5><MT_TRANS phrase="Filter Options"></h5> 47 48 <div id="filters"> 49 <form method="get" action="<TMPL_VAR NAME=SCRIPT_URL>" id="filterform"> 50 <input type="hidden" name="__mode" value="list_comments" /> 51 <input type="hidden" name="blog_id" value="<TMPL_VAR NAME=BLOG_ID>" /> 52 53 <MT_TRANS phrase="Show pings where"> 54 <select name="filter" onchange="selectPrefs(this)"> 55 <option value="message"><MT_TRANS phrase="Message"></option> 56 <option value="status"><MT_TRANS phrase="Status"></option> 57 </select> 58 <span id="filter_message_prefs"> 59 <MT_TRANS phrase="contains"> 60 <input name="filter_val" value="" /> 61 </span> 62 <span id="filter_status_prefs" style="display: none"> 63 <MT_TRANS phrase="is"> 64 <select name="filter_val"> 65 <option value="approved">Approved</option> 66 <option value="moderated">Moderated</option> 67 </select> 68 </span> 69 <input type="submit" value="<MT_TRANS phrase="Filter">" /> 70 71 <TMPL_IF NAME=FILTER> 72 <hr /> 73 <MT_TRANS phrase="Currently showing comments where"> 74 '<MT_TRANS phrase="<TMPL_VAR NAME=FILTER>">' 75 <MT_TRANS phrase="is"> 76 '<TMPL_VAR NAME=FILTER_VAL ESCAPE=HTML>'. 77 <input type="button" name="reset_filter" value="<MT_TRANS phrase="Reset Filter">" onclick="window.location='<TMPL_VAR NAME=SCRIPT_URL>?__mode=list_comments&blog_id=<TMPL_VAR NAME=BLOG_ID>'" /> 78 </TMPL_IF> 79 80 </form> 81 </div> 82 19 83 20 84 <form method="post" action="<TMPL_VAR NAME=SCRIPT_URL>"> … … 58 122 </div> 59 123 60 <div align=" center">124 <div align="right"> 61 125 <input type="hidden" name="__mode" value="despam" /> 62 126 <input type="hidden" name="_type" value="<TMPL_VAR NAME=TYPE>" /> 63 127 <input type="hidden" name="limit" value="<TMPL_VAR NAME=LIMIT>" /> 64 128 <input type="hidden" name="offset" value="<TMPL_VAR NAME=OFFSET>" /> 65 <input type="submit" name="action" value="Delete Checked" /> 66 <input type="submit" name="action" value="Approve Checked" /> 67 <input type="submit" name="action" value="Un-Approve Checked" /> 129 <input type="button" onclick="checkAll('is_spam',true)" name="check_all" value="<MT_TRANS phrase="Check All">" /> 130 <input type="button" onclick="checkAll('is_spam',false)" name="uncheck_all" value="<MT_TRANS phrase="Uncheck All">" /> 131 <input type="button" onclick="doRemoveItems('is_spam', 'ping', 'pings')" name="delete_pings" value="<MT_TRANS phrase="Delete">" /> 132 <input type="submit" name="action" value="Approve" /> 133 <input type="submit" name="action" value="Moderate" /> 68 134 </div> 69 135 70 136 </form> 71 137 138 <hr /> 139 140 <div align="right"> 141 <form action="<TMPL_VAR NAME=SCRIPT_URL>" onsubmit="return false;"> 142 <TMPL_IF NAME=PREV_OFFSET> 143 <input type="button" onclick="window.location='<TMPL_VAR NAME=SCRIPT_URL>?__mode=view&_type=pings&limit=' + this.form.limit.options[this.form.limit.selectedIndex].value + '&offset=<TMPL_VAR NAME=PREV_OFFSET_VAL><TMPL_VAR NAME=FILTER_ARGS>'" value="<MT_TRANS phrase="Previous [_1]" params="<TMPL_VAR NAME=LIMIT>">" /> 144 </TMPL_IF> 145 <select name="limit" onchange="window.location='<TMPL_VAR NAME=SCRIPT_URL>?__mode=view&_type=pings&offset=<TMPL_VAR NAME=OFFSET>&limit=' + this.options[this.selectedIndex].value + '<TMPL_VAR NAME=FILTER_ARGS>'"><option value="5"<TMPL_IF NAME=LIMIT_5> selected="selected"</TMPL_IF>><MT_TRANS phrase="[quant,_1,ping,pings]" params="5"></option> 146 <option value="20"<TMPL_IF NAME=LIMIT_20> selected="selected"</TMPL_IF>><MT_TRANS phrase="[quant,_1,ping,pings]" params="20"></option><option value="75"<TMPL_IF NAME=LIMIT_75> selected="selected"</TMPL_IF>><MT_TRANS phrase="[quant,_1,ping,pings]" params="75"></option> 147 <option value="125"<TMPL_IF NAME=LIMIT_125> selected="selected"</TMPL_IF>><MT_TRANS phrase="[quant,_1,ping,pings]" params="125"></option> 148 <option value="none"<TMPL_IF NAME=LIMIT_NONE> selected="selected"</TMPL_IF>><MT_TRANS phrase="all pings"></option></select> 149 <TMPL_IF NAME=NEXT_OFFSET> 150 <input type="button" onclick="window.location='<TMPL_VAR NAME=SCRIPT_URL>?__mode=view&_type=pings&limit=' + this.form.limit.options[this.form.limit.selectedIndex].value + '&offset=<TMPL_VAR NAME=NEXT_OFFSET_VAL><TMPL_VAR NAME=FILTER_ARGS>'" value="<MT_TRANS phrase="Next [_1]" params="<TMPL_VAR NAME=LIMIT>">" /> 151 </TMPL_IF> 152 </form> 153 </div> 154 155 72 156 <TMPL_INCLUDE NAME="slfooter.tmpl"> trunk/plugins/spamlookup/tmpl/slheader.tmpl
r52 r53 15 15 .sub a#nav-despam-comments { background-image: url(<TMPL_VAR NAME=STATIC_URI>images/nav-search.gif); } 16 16 .sub a#nav-despam-pings { background-image: url(<TMPL_VAR NAME=STATIC_URI>images/nav-search.gif); } 17 .sub a#nav-test { background-image: url(<TMPL_VAR NAME=STATIC_URI>images/nav-view-site.gif); } 17 18 </style> 18 19 </head> … … 81 82 <li><a<TMPL_IF NAME=NAV_DESPAM_COMMENTS> class="here"</TMPL_IF> id="nav-despam-comments" title="<MT_TRANS phrase="Despam comments">" href="<TMPL_VAR NAME=SCRIPT_URL>?__mode=despam&_type=comments"><MT_TRANS phrase="Despam Comments"></a></li> 82 83 <li><a<TMPL_IF NAME=NAV_DESPAM_PINGS> class="here"</TMPL_IF> id="nav-despam-pings" title="<MT_TRANS phrase="Despam TrackBacks">" href="<TMPL_VAR NAME=SCRIPT_URL>?__mode=despam&_type=pings"><MT_TRANS phrase="Despam TrackBacks"></a></li> 84 <li><a<TMPL_IF NAME=NAV_TEST> class="here"</TMPL_IF> id="nav-test" title="<MT_TRANS phrase="Test Filters">" href="<TMPL_VAR NAME=SCRIPT_URL>?__mode=test"><MT_TRANS phrase="Test"></a></li> 83 85 </ul> 84 86 </li>
