Changeset 53

Show
Ignore:
Timestamp:
02/22/05 18:06:42
Author:
brad
Message:

Significant updates to test form.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/plugins/spamlookup/mt-spamlookup.cgi

    r52 r53  
    535535    my (%param) = @_; 
    536536 
    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}; 
    540541    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); 
    582619} 
    583620 
  • trunk/plugins/spamlookup/spamlookup.pl

    r49 r53  
    229229 
    230230    my @tests; 
    231     push @tests, [\&commentpass_check, 'commentpass_check'] 
     231    push @tests, [\&commentpass_check, 'Comment Passphrase'] 
    232232        if $data->{commentpass_enabled} && ($data->{__type} eq 'comment') 
    233233            && ($method ne 'Despam'); 
    234     push @tests, [\&tbpass_check, 'tbpass_check'] 
     234    push @tests, [\&tbpass_check, 'TrackBack Passphrase'] 
    235235        if $data->{tbpass_enabled} && ($data->{__type} ne 'comment') 
    236236            && ($method ne 'Despam'); 
    237     push @tests, [\&wordlist_check, 'wordlist_check'] 
     237    push @tests, [\&wordlist_check, 'Wordlist filter'] 
    238238        if ($data->{wordlist_moderate} || $data->{wordlist_block}); 
    239     push @tests, [\&priorurl_check, 'priorurl_check'] 
     239    push @tests, [\&priorurl_check, 'Prior URL test'] 
    240240        if $data->{allow_priorurls} && $data->{source_url} 
    241241            && ($method ne 'Despam'); 
    242     push @tests, [\&pingip_check, 'pingip_check'] 
     242    push @tests, [\&pingip_check, 'TrackBack Ping IP filter'] 
    243243        if $data->{pingip_enabled} && ($data->{__type} ne 'comment'); 
    244     push @tests, [\&cache_check, 'cache_check'] 
     244    push @tests, [\&cache_check, 'Proxy cache'] 
    245245        if $data->{caching_enabled} && $data->{cache_limit}; 
    246     push @tests, [\&headers_check, 'headers_check'] 
     246    push @tests, [\&headers_check, 'HTTP header test'] 
    247247        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'] 
    250251        if $data->{ipbl_enabled}; 
    251     push @tests, [\&domainbl_check, 'domainbl_check'] 
     252    push @tests, [\&domainbl_check, 'Domain blacklist lookup'] 
    252253        if $data->{domainbl_enabled}; 
    253     push @tests, [\&urlcount_check, 'urlcount_check'] 
     254    push @tests, [\&urlcount_check, 'URL count test'] 
    254255        if $data->{urlcount_enabled}; 
    255     push @tests, [\&proxy_check, 'proxy_check'] 
     256    push @tests, [\&proxy_check, 'Dynamic Proxy test'] 
    256257        if $data->{proxycheck_enabled} 
    257258            && ($method ne 'Despam');  # this test should not be done during despamming, should it? 
     
    261262        $result = $_->[0]->($eh, $app, $obj, $data); 
    262263        if ((defined $eh->errstr) && ($eh->errstr =~ m/\w/)) { 
    263             push @errors, $eh->errstr
     264            push @errors, $eh->errstr . ' ('.$_->[1].')'
    264265            $eh->error(undef); 
    265266        } 
     267        if (defined $result && ($result == ACCEPT)) { 
     268            if ($method eq 'Test') { 
     269                push @errors, "Accepted ".$data->{__type}." based on test ".$_->[1]; 
     270            } 
     271        } 
    266272        last if defined $result; 
    267273    } 
     
    269275 
    270276    # 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    } 
    271280    $result = ACCEPT unless defined $result; 
    272281 
     
    290299    } 
    291300 
    292     if ($method ne 'Despam') { 
     301    if (($method ne 'Despam') && ($method ne 'Test')) { 
    293302        if ($data->{is_proxy} && $data->{proxycheck_autoban}) { 
    294303            require MT::IPBanList; 
     
    404413sub tbpass_check { 
    405414    my ($eh, $app, $obj, $data) = @_; 
    406  
    407      
    408415    return IGNORE; 
    409416} 
     
    416423    my $text = $data->{commentpass_text}; 
    417424 
    418     return IGNORE unless $formfield
     425    return IGNORE unless $data->{commentpass_enabled}
    419426 
    420427    my $inpass = $app->{query}->param($formfield); 
     
    441448    return ACCEPT if lc($text) eq lc($inpass); 
    442449 
     450    $eh->error(($data->{commentpass_moderate} ? "Moderating" : "Blocking") . 
     451        " comment for blog " . $obj->blog_id . " due to passphrase not matching."); 
    443452    return $data->{commentpass_moderate} ? MODERATE : BLOCK; 
    444453} 
     
    474483    $result = BLOCK if $distance >= $data->{pingip_block}; 
    475484    $result ||= MODERATE if $distance >= $data->{pingip_moderate}; 
     485    return $result unless defined $result; 
    476486 
    477487    my $action = ($result == MODERATE ? "Moderating" : "Blocking"); 
     
    734744        } 
    735745        return $domain if $mode == 1; 
     746        $$total++ if(defined($total)); 
    736747        next if $seen{$domain}; 
    737         $$total++ if(defined($total)); 
    738748        if ($mode == 0) {  # default mode, replicate for all subdomains 
    739749            my $last = $#parts; 
  • trunk/plugins/spamlookup/tmpl/config.tmpl

    r49 r53  
    1414// --> 
    1515</script> 
    16  
    17 <TMPL_UNLESS TEST_IP> 
    1816 
    1917<h2>SpamLookup Configuration</h2> 
     
    320318        </p> 
    321319 
    322     </div> 
    323  
    324     <hr /> 
    325  
    326320    <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> 
    327321    <div id="caching_prefs" class="sub-field" <TMPL_IF NAME=CACHING_ENABLED>style="display: block"</TMPL_IF>> 
     
    340334        <em>Provides more information about an IP address in the cache; %ip% will be replaced by the IP address of the current entry.</em> 
    341335        </p> 
     336    </div> 
     337 
    342338    </div> 
    343339 
     
    376372</form> 
    377373 
    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 />&nbsp; &nbsp;&middot; <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  
    408374</div> 
    409375 
  • trunk/plugins/spamlookup/tmpl/pings.tmpl

    r49 r53  
    99        flds[i].checked = !flds[i].checked; 
    1010} 
     11function 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} 
     17function 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} 
    1127// --> 
    1228</script> 
     
    1733  </p> 
    1834</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">&nbsp; 
     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>&nbsp; 
     58<span id="filter_message_prefs"> 
     59<MT_TRANS phrase="contains">&nbsp; 
     60<input name="filter_val" value="" />&nbsp; 
     61</span> 
     62<span id="filter_status_prefs" style="display: none"> 
     63<MT_TRANS phrase="is">&nbsp; 
     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>'.&nbsp; 
     77<input type="button" name="reset_filter" value="<MT_TRANS phrase="Reset Filter">" onclick="window.location='<TMPL_VAR NAME=SCRIPT_URL>?__mode=list_comments&amp;blog_id=<TMPL_VAR NAME=BLOG_ID>'" /> 
     78</TMPL_IF> 
     79 
     80</form> 
     81</div> 
     82 
    1983 
    2084<form method="post" action="<TMPL_VAR NAME=SCRIPT_URL>"> 
     
    58122</div> 
    59123 
    60 <div align="center"> 
     124<div align="right"> 
    61125    <input type="hidden" name="__mode" value="despam" /> 
    62126    <input type="hidden" name="_type" value="<TMPL_VAR NAME=TYPE>" /> 
    63127    <input type="hidden" name="limit" value="<TMPL_VAR NAME=LIMIT>" /> 
    64128    <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" /> 
    68134</div> 
    69135 
    70136</form> 
    71137 
     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&amp;_type=pings&amp;limit=' + this.form.limit.options[this.form.limit.selectedIndex].value + '&amp;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&amp;_type=pings&amp;offset=<TMPL_VAR NAME=OFFSET>&amp;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&amp;_type=pings&amp;limit=' + this.form.limit.options[this.form.limit.selectedIndex].value + '&amp;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 
    72156<TMPL_INCLUDE NAME="slfooter.tmpl"> 
  • trunk/plugins/spamlookup/tmpl/slheader.tmpl

    r52 r53  
    1515.sub a#nav-despam-comments { background-image: url(<TMPL_VAR NAME=STATIC_URI>images/nav-search.gif); } 
    1616.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); } 
    1718</style> 
    1819</head> 
     
    8182<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&amp;_type=comments"><MT_TRANS phrase="Despam Comments"></a></li> 
    8283<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&amp;_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> 
    8385</ul> 
    8486</li>