Added "exclude urls" to ip validation functionality in spam block plugin. identi.ca is sending pingbacks but fails the ip validation!
This commit is contained in:
parent
b52d2ddce9
commit
d2e89fcdd9
docs
plugins/serendipity_event_spamblock
@ -3,6 +3,10 @@
|
||||
Version 1.5 ()
|
||||
------------------------------------------------------------------------
|
||||
|
||||
* Added "exclude urls" to ip validation functionality in spam block
|
||||
plugin. identi.ca is sending pingbacks but fails the ip validation!
|
||||
(brockhaus)
|
||||
|
||||
* no longer use htmlspecialchars() on the blog's title and sub-
|
||||
title, to allow for custom HTML code to appear and unify
|
||||
only letting Smarty do the escaping (garvinhicking,falk)
|
||||
|
@ -67,9 +67,9 @@
|
||||
@define('PLUGIN_EVENT_SPAMBLOCK_FILTER_ACTIVATE_DESC', 'Durchsucht Kommentare nach speziellen Zeichenketten und markiert diese als Spam.');
|
||||
|
||||
@define('PLUGIN_EVENT_SPAMBLOCK_FILTER_URLS', 'Wortfilter für URLs');
|
||||
@define('PLUGIN_EVENT_SPAMBLOCK_FILTER_URLS_DESC', 'Reguläre Ausdrücke erlaubt, Zeichenkennten durch Semikolon (;) trennen. Das @-Zeichen muss mit \\@ angegeben werden.');
|
||||
@define('PLUGIN_EVENT_SPAMBLOCK_FILTER_URLS_DESC', 'Reguläre Ausdrücke erlaubt, Zeichenketten durch Semikolon (;) trennen. Das @-Zeichen muss mit \\@, der Punkt als \\. angegeben werden.');
|
||||
@define('PLUGIN_EVENT_SPAMBLOCK_FILTER_AUTHORS', 'Wortfilter für Autorennamen');
|
||||
@define('PLUGIN_EVENT_SPAMBLOCK_FILTER_AUTHORS_DESC', 'Reguläre Ausdrücke erlaubt, Zeichenkennten durch Semikolon (;) trennen. Das @-Zeichen muss mit \\@ angegeben werden.');
|
||||
@define('PLUGIN_EVENT_SPAMBLOCK_FILTER_AUTHORS_DESC', PLUGIN_EVENT_SPAMBLOCK_FILTER_URLS_DESC);
|
||||
|
||||
@define('PLUGIN_EVENT_SPAMBLOCK_REASON_CHECKMAIL', 'Ungültige E-Mail-Adresse!');
|
||||
@define('PLUGIN_EVENT_SPAMBLOCK_CHECKMAIL', 'Auf ungültige E-Mail-Adressen prüfen?');
|
||||
@ -136,3 +136,6 @@
|
||||
|
||||
// Next lines were translated on 2009/06/03
|
||||
@define('PLUGIN_EVENT_SPAMBLOCK_REASON_BLOGG_SPAMLIST', 'durch blogg.de Blacklist gefiltert');
|
||||
|
||||
@define('PLUGIN_EVENT_SPAMBLOCK_TRACKBACKIPVALIDATION_URL_EXCLUDE', 'URLs von IP Validatierung ausnehmen');
|
||||
@define('PLUGIN_EVENT_SPAMBLOCK_TRACKBACKIPVALIDATION_URL_EXCLUDE_DESC', 'URLs, die von der IP Validatierung ausgeschlossen werden sollen. ' . PLUGIN_EVENT_SPAMBLOCK_FILTER_URLS_DESC);
|
||||
|
@ -67,9 +67,9 @@
|
||||
@define('PLUGIN_EVENT_SPAMBLOCK_FILTER_ACTIVATE_DESC', 'Durchsucht Kommentare nach speziellen Zeichenketten und markiert diese als Spam.');
|
||||
|
||||
@define('PLUGIN_EVENT_SPAMBLOCK_FILTER_URLS', 'Wortfilter für URLs');
|
||||
@define('PLUGIN_EVENT_SPAMBLOCK_FILTER_URLS_DESC', 'Reguläre Ausdrücke erlaubt, Zeichenkennten durch Semikolon (;) trennen. Das @-Zeichen muss mit \\@ angegeben werden.');
|
||||
@define('PLUGIN_EVENT_SPAMBLOCK_FILTER_URLS_DESC', 'Reguläre Ausdrücke erlaubt, Zeichenketten durch Semikolon (;) trennen. Das @-Zeichen muss mit \\@, der Punkt als \\. angegeben werden.');
|
||||
@define('PLUGIN_EVENT_SPAMBLOCK_FILTER_AUTHORS', 'Wortfilter für Autorennamen');
|
||||
@define('PLUGIN_EVENT_SPAMBLOCK_FILTER_AUTHORS_DESC', 'Reguläre Ausdrücke erlaubt, Zeichenkennten durch Semikolon (;) trennen. Das @-Zeichen muss mit \\@ angegeben werden.');
|
||||
@define('PLUGIN_EVENT_SPAMBLOCK_FILTER_AUTHORS_DESC', PLUGIN_EVENT_SPAMBLOCK_FILTER_URLS_DESC);
|
||||
|
||||
@define('PLUGIN_EVENT_SPAMBLOCK_REASON_CHECKMAIL', 'Ungültige E-Mail-Adresse!');
|
||||
@define('PLUGIN_EVENT_SPAMBLOCK_CHECKMAIL', 'Auf ungültige E-Mail-Adressen prüfen?');
|
||||
@ -136,3 +136,6 @@
|
||||
|
||||
// Next lines were translated on 2009/06/03
|
||||
@define('PLUGIN_EVENT_SPAMBLOCK_REASON_BLOGG_SPAMLIST', 'durch blogg.de Blacklist gefiltert');
|
||||
|
||||
@define('PLUGIN_EVENT_SPAMBLOCK_TRACKBACKIPVALIDATION_URL_EXCLUDE', 'URLs von IP Validatierung ausnehmen');
|
||||
@define('PLUGIN_EVENT_SPAMBLOCK_TRACKBACKIPVALIDATION_URL_EXCLUDE_DESC', 'URLs, die von der IP Validatierung ausgeschlossen werden sollen. ' . PLUGIN_EVENT_SPAMBLOCK_FILTER_URLS_DESC);
|
||||
|
@ -140,3 +140,6 @@
|
||||
@define('PLUGIN_EVENT_SPAMBLOCK_SERVER_AKISMET', 'Original Akismet');
|
||||
@define('PLUGIN_EVENT_SPAMBLOCK_SERVER_TPAS_ANON', 'TypePad Antispam (anonymized)');
|
||||
@define('PLUGIN_EVENT_SPAMBLOCK_SERVER_AKISMET_ANON', 'Original Akismet (anonymized)');
|
||||
|
||||
@define('PLUGIN_EVENT_SPAMBLOCK_TRACKBACKIPVALIDATION_URL_EXCLUDE', 'Exclude URLs from IP Validation');
|
||||
@define('PLUGIN_EVENT_SPAMBLOCK_TRACKBACKIPVALIDATION_URL_EXCLUDE_DESC', 'URLs to be excluded from IP Validation. ' . PLUGIN_EVENT_SPAMBLOCK_FILTER_URLS_DESC);
|
||||
|
@ -39,7 +39,7 @@ var $filter_defaults;
|
||||
'smarty' => '2.6.7',
|
||||
'php' => '4.1.0'
|
||||
));
|
||||
$propbag->add('version', '1.76');
|
||||
$propbag->add('version', '1.77');
|
||||
$propbag->add('event_hooks', array(
|
||||
'frontend_saveComment' => true,
|
||||
'external_plugin' => true,
|
||||
@ -61,6 +61,7 @@ var $filter_defaults;
|
||||
'forcemoderation',
|
||||
'forcemoderation_treat',
|
||||
'trackback_ipvalidation' ,
|
||||
'trackback_ipvalidation_url_exclude' ,
|
||||
'forcemoderationt',
|
||||
'forcemoderationt_treat',
|
||||
'disable_api_comments',
|
||||
@ -122,6 +123,13 @@ var $filter_defaults;
|
||||
$propbag->add('radio_per_row', '1');
|
||||
break;
|
||||
|
||||
case 'trackback_ipvalidation_url_exclude':
|
||||
$propbag->add('type', 'string');
|
||||
$propbag->add('name', PLUGIN_EVENT_SPAMBLOCK_TRACKBACKIPVALIDATION_URL_EXCLUDE);
|
||||
$propbag->add('description', PLUGIN_EVENT_SPAMBLOCK_TRACKBACKIPVALIDATION_URL_EXCLUDE_DESC);
|
||||
$propbag->add('default', $this->get_default_exclude_urls());
|
||||
break;
|
||||
|
||||
case 'trackback_check_url':
|
||||
$propbag->add('type', 'boolean');
|
||||
$propbag->add('name', PLUGIN_EVENT_SPAMBLOCK_TRACKBACKURL);
|
||||
@ -416,6 +424,10 @@ var $filter_defaults;
|
||||
return true;
|
||||
}
|
||||
|
||||
function get_default_exclude_urls() {
|
||||
return '^http://identi\.ca/notice/\d+$';
|
||||
|
||||
}
|
||||
function htaccess_update($new_ip) {
|
||||
global $serendipity;
|
||||
|
||||
@ -890,35 +902,45 @@ var $filter_defaults;
|
||||
$trackback_ipvalidation_option = $this->get_config('trackback_ipvalidation','moderate');
|
||||
if (($addData['type'] == 'TRACKBACK' || $addData['type'] == 'PINGBACK') && $trackback_ipvalidation_option != 'no') {
|
||||
$this->IsHardcoreSpammer();
|
||||
$parts = @parse_url($addData['url']);
|
||||
$tipval_method = ($trackback_ipvalidation_option == 'reject'?'REJECTED':'MODERATE');
|
||||
// Getting host from url successfully?
|
||||
if (!is_array($parts)) { // not a valid URL
|
||||
$this->log($logfile, $eventData['id'], $tipval_method, sprintf(PLUGIN_EVENT_SPAMBLOCK_REASON_IPVALIDATION, $addData['url'], '', ''));
|
||||
if ($trackback_ipvalidation_option == 'reject') {
|
||||
$eventData = array('allow_comments' => false);
|
||||
$serendipity['messagestack']['comments'][] = sprintf(PLUGIN_EVENT_SPAMBLOCK_REASON_IPVALIDATION, $addData['url']);
|
||||
return false;
|
||||
} else {
|
||||
$eventData['moderate_comments'] = true;
|
||||
$serendipity['csuccess'] = 'moderate';
|
||||
$serendipity['moderate_reason'] = sprintf(PLUGIN_EVENT_SPAMBLOCK_REASON_IPVALIDATION, $addData['url']);
|
||||
}
|
||||
$exclude_urls = explode(';',$this->get_config('trackback_ipvalidation_url_exclude'), $this->get_default_exclude_urls());
|
||||
$found_exclude_url = false;
|
||||
foreach ($exclude_urls as $exclude_url) {
|
||||
$exclude_url = trim($exclude_url);
|
||||
if (empty($exclude_url)) continue;
|
||||
$found_exclude_url = preg_match('@' . $exclude_url . '@',$addData['url']);
|
||||
if ($found_exclude_url) break;
|
||||
}
|
||||
$trackback_ip = preg_replace('/[^0-9.]/', '', gethostbyname($parts['host']) );
|
||||
$sender_ip = preg_replace('/[^0-9.]/', '', $_SERVER['REMOTE_ADDR'] );
|
||||
$sender_ua = ($debug ? ', ua="' . $_SERVER['HTTP_USER_AGENT'] . '"' : '') ;
|
||||
// Is host ip and sender ip matching?
|
||||
if ($trackback_ip != $sender_ip) {
|
||||
$this->log($logfile, $eventData['id'], $tipval_method, sprintf(PLUGIN_EVENT_SPAMBLOCK_REASON_IPVALIDATION, $parts['host'], $trackback_ip, $sender_ip . $sender_ua), $addData);
|
||||
if ($trackback_ipvalidation_option == 'reject') {
|
||||
$eventData = array('allow_comments' => false);
|
||||
$serendipity['messagestack']['comments'][] = sprintf(PLUGIN_EVENT_SPAMBLOCK_REASON_IPVALIDATION, $parts['host'], $trackback_ip, $sender_ip . $sender_ua);
|
||||
return false;
|
||||
} else {
|
||||
$eventData['moderate_comments'] = true;
|
||||
$serendipity['csuccess'] = 'moderate';
|
||||
$serendipity['moderate_reason'] = sprintf(PLUGIN_EVENT_SPAMBLOCK_REASON_IPVALIDATION, $parts['host'], $trackback_ip, $sender_ip . $sender_ua);
|
||||
if (!$found_exclude_url) {
|
||||
$parts = @parse_url($addData['url']);
|
||||
$tipval_method = ($trackback_ipvalidation_option == 'reject'?'REJECTED':'MODERATE');
|
||||
// Getting host from url successfully?
|
||||
if (!is_array($parts)) { // not a valid URL
|
||||
$this->log($logfile, $eventData['id'], $tipval_method, sprintf(PLUGIN_EVENT_SPAMBLOCK_REASON_IPVALIDATION, $addData['url'], '', ''));
|
||||
if ($trackback_ipvalidation_option == 'reject') {
|
||||
$eventData = array('allow_comments' => false);
|
||||
$serendipity['messagestack']['comments'][] = sprintf(PLUGIN_EVENT_SPAMBLOCK_REASON_IPVALIDATION, $addData['url']);
|
||||
return false;
|
||||
} else {
|
||||
$eventData['moderate_comments'] = true;
|
||||
$serendipity['csuccess'] = 'moderate';
|
||||
$serendipity['moderate_reason'] = sprintf(PLUGIN_EVENT_SPAMBLOCK_REASON_IPVALIDATION, $addData['url']);
|
||||
}
|
||||
}
|
||||
$trackback_ip = preg_replace('/[^0-9.]/', '', gethostbyname($parts['host']) );
|
||||
$sender_ip = preg_replace('/[^0-9.]/', '', $_SERVER['REMOTE_ADDR'] );
|
||||
$sender_ua = ($debug ? ', ua="' . $_SERVER['HTTP_USER_AGENT'] . '"' : '') ;
|
||||
// Is host ip and sender ip matching?
|
||||
if ($trackback_ip != $sender_ip) {
|
||||
$this->log($logfile, $eventData['id'], $tipval_method, sprintf(PLUGIN_EVENT_SPAMBLOCK_REASON_IPVALIDATION, $parts['host'], $trackback_ip, $sender_ip . $sender_ua), $addData);
|
||||
if ($trackback_ipvalidation_option == 'reject') {
|
||||
$eventData = array('allow_comments' => false);
|
||||
$serendipity['messagestack']['comments'][] = sprintf(PLUGIN_EVENT_SPAMBLOCK_REASON_IPVALIDATION, $parts['host'], $trackback_ip, $sender_ip . $sender_ua);
|
||||
return false;
|
||||
} else {
|
||||
$eventData['moderate_comments'] = true;
|
||||
$serendipity['csuccess'] = 'moderate';
|
||||
$serendipity['moderate_reason'] = sprintf(PLUGIN_EVENT_SPAMBLOCK_REASON_IPVALIDATION, $parts['host'], $trackback_ip, $sender_ip . $sender_ua);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user