X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Flibs%2Fblacklist_functions.php;h=9097b417720d9411e4070dc855403ba0d2ed20e5;hb=e5848e7e22dffe36ea207111a3a4ed1f7d5a8639;hp=92e0b2b4d134d0bf1d2d35128943d1de1edfff10;hpb=5ab0d021f3e96722af5d96d2b9036430200c06cb;p=mailer.git diff --git a/inc/libs/blacklist_functions.php b/inc/libs/blacklist_functions.php index 92e0b2b4d1..9097b41772 100644 --- a/inc/libs/blacklist_functions.php +++ b/inc/libs/blacklist_functions.php @@ -16,7 +16,7 @@ * $Author:: $ * * -------------------------------------------------------------------- * * Copyright (c) 2003 - 2009 by Roland Haeder * - * Copyright (c) 2009 - 2012 by Mailer Developer Team * + * Copyright (c) 2009 - 2013 by Mailer Developer Team * * For more information visit: http://mxchange.org * * * * This program is free software; you can redistribute it and/or modify * @@ -40,47 +40,64 @@ if (!defined('__SECURITY')) { die(); } // END - if -// Inserts a given email (pattern) in blacklist if not found -function insertEmailInBlacklist ($email, $id) { - // Is this feature turned on and is the URL not there? - if (!isEmailBlacklistEnabled()) { - // Not enabled, then please don't call this function - reportBug(__FUNCTION__, __LINE__, 'URL blacklisting is disabled, email=' . $email . ',id=' . $id); - } elseif (!isEmailBlacklisted($email)) { - // Did not find a record so we can add it... :) - SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_blacklist` (`data`, `pool_id`, `type`) VALUES ('%s', %s, 'EMAIL')", - array( - $email, - $id - ), __FUNCTION__, __LINE__); - } // END - if -} - // Checks whether given email is blacklisted function isEmailBlacklisted ($email) { + // Call inner function + return isGenericBlacklisted('email', $email); +} + +// Checks whether given IP is blacklisted +function isIpBlacklisted ($ip) { + // Call inner function + return isGenericBlacklisted('ip', $ip); +} + +// Checks whether given URL is blacklisted +function isUrlBlacklisted ($url) { + // Call inner function + return isGenericBlacklisted('url', $email); +} + +// Checks whether given data is blacklisted +function isGenericBlacklisted ($type, $data) { // Mark it as not listed by default $listed = FALSE; // Is black-listing enbaled? - if (!isEmailBlacklistEnabled()) { + if (!isGenericBlacklistEnabled($type)) { // No, then all emails are not in this list return FALSE; - } elseif (!isset($GLOBALS['blacklist_data']['email'][$email])) { + } elseif (!isset($GLOBALS['blacklist_data'][$type][$data])) { // Check black-list for given email - $result = SQL_QUERY_ESC("SELECT UNIX_TIMESTAMP(`added`) AS `added` FROM `{?_MYSQL_PREFIX?}_blacklist` WHERE '%s' REGEXP `data` AND `type`='EMAIL' LIMIT 1", - array($email), __FUNCTION__, __LINE__); + $result = sqlQueryEscaped("SELECT + `id`, + `data`, + `pool_id`, + `provider`, + `type`, + UNIX_TIMESTAMP(`added`) AS `added` +FROM + `{?_MYSQL_PREFIX?}_blacklist` +WHERE + '%s' REGEXP `data` AND + `type`='%s' +LIMIT 1", + array( + $data, + strtoupper($type) + ), __FUNCTION__, __LINE__); // Is there an entry? - if (SQL_NUMROWS($result) == 1) { + if (sqlNumRows($result) == 1) { // Jupp, we got one listed - $GLOBALS['blacklist_data']['email'][$email] = SQL_FETCHARRAY($result); + $GLOBALS['blacklist_data'][$type][$data] = sqlFetchArray($result); // Mark it as listed $listed = TRUE; } // END - if // Free result - SQL_FREERESULT($result); + sqlFreeResult($result); } else { // Is found in cache -> black-listed $listed = TRUE; @@ -90,66 +107,103 @@ function isEmailBlacklisted ($email) { return $listed; } +// Inserts a given email (pattern) in blacklist if not found +function insertEmailInBlacklist ($email, $provider = 'BLACKLIST') { + // Call inner function + return insertGenericInBlacklist ('email', $email, NULL, $provider); +} + +// Inserts a given IP (pattern) in blacklist if not found +function insertIpInBlacklist ($ip, $provider = 'BLACKLIST') { + // Call inner function + return insertGenericInBlacklist ('ip', $ip, NULL, $provider); +} + +// Inserts a given URL (pattern) in blacklist if not found +function insertUrlInBlacklist ($url, $poolId, $provider = 'BLACKLIST') { + // Call inner function + return insertGenericInBlacklist ('url', $url, $poolId, $provider); +} + // Inserts a given URL in blacklist if not found -function insertUrlInBlacklist ($url, $id) { +function insertGenericInBlacklist ($type, $data, $poolId = NULL, $provider = 'BLACKLIST') { // Is this feature turned on and is the URL not there? - if (!isUrlBlacklistEnabled()) { + if (!isGenericBlacklistEnabled($type)) { // Not enabled, then please don't call this function - reportBug(__FUNCTION__, __LINE__, 'URL blacklisting is disabled, url=' . $url . ',id=' . $id); - } elseif (!isUrlBlacklisted($url)) { + reportBug(__FUNCTION__, __LINE__, 'Blacklisting of type ' . $type . ' is disabled, data=' . $data . ',poolId=' . convertZeroToNull($poolId)); + } elseif (!isUrlBlacklisted($data)) { // Did not find a record so we can add it... :) - SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_blacklist` (`data`, `pool_id`, `type`) VALUES ('%s', %s, 'URL')", - array( - $url, - $id - ), __FUNCTION__, __LINE__); + sqlQueryEscaped("INSERT INTO + `{?_MYSQL_PREFIX?}_blacklist` +( + `data`, + `pool_id`, + `provider`, + `type` +) VALUES ( + '%s', + %s, + '%s', + '%s' +)", + array( + $data, + convertZeroToNull($poolId), + $provider, + strtoupper($type) + ), __FUNCTION__, __LINE__); } // END - if -} -// Checks whether given URL is blacklisted -function isUrlBlacklisted ($url) { - // Mark it as not listed by default - $listed = FALSE; + // Return insert id for debugging/reporting pursposes + return getSqlInsertId(); +} - // Is black-listing enbaled? - if (!isUrlBlacklistEnabled()) { - // No, then all URLs are not in this list - return FALSE; - } elseif (!isset($GLOBALS['blacklist_data']['url'][$url])) { - // Check black-list for given URL - $result = SQL_QUERY_ESC("SELECT UNIX_TIMESTAMP(`added`) AS `added`, `pool_id` FROM `{?_MYSQL_PREFIX?}_blacklist` WHERE `data`='%s' AND `type`='URL' LIMIT 1", - array($url), __FUNCTION__, __LINE__); +// ---------------------------------------------------------------------------- +// Configuration wrapper functions +// ---------------------------------------------------------------------------- - // Is there an entry? - if (SQL_NUMROWS($result) == 1) { - // Jupp, we got one listed - $GLOBALS['blacklist_data']['url'][$url] = SQL_FETCHARRAY($result); +// Generic wrapper +function isGenericBlacklistEnabled ($type) { + // Is there cache? + if (!isset($GLOBALS[__FUNCTION__])) { + // Determine it + $GLOBALS[__FUNCTION__] = (getConfig($type . '_blacklist') == 'Y'); + } // END - if - // Mark it as listed - $listed = TRUE; - } // END - if + // Return cache + return $GLOBALS[__FUNCTION__]; +} - // Free result - SQL_FREERESULT($result); - } else { - // Is found in cache -> black-listed - $listed = TRUE; - } +// Getter for url_blacklist +function getUrlBlacklist () { + // Is there cache? + if (!isset($GLOBALS[__FUNCTION__])) { + // Determine it + $GLOBALS[__FUNCTION__] = getConfig('url_blacklist'); + } // END - if - // Return result - return $listed; + // Return cache + return $GLOBALS[__FUNCTION__]; } -// ---------------------------------------------------------------------------- -// Configuration wrapper functions -// ---------------------------------------------------------------------------- - // Wrapper to check if url_blacklist is enabled function isUrlBlacklistEnabled () { // Is there cache? if (!isset($GLOBALS[__FUNCTION__])) { // Determine it - $GLOBALS[__FUNCTION__] = (getConfig('url_blacklist') == 'Y'); + $GLOBALS[__FUNCTION__] = (getUrlBlacklist() == 'Y'); + } // END - if + + // Return cache + return $GLOBALS[__FUNCTION__]; +} + +// Getter for email_blacklist +function getEmailBlacklist () { + // Is there cache? + if (!isset($GLOBALS[__FUNCTION__])) { + // Determine it + $GLOBALS[__FUNCTION__] = getConfig('email_blacklist'); } // END - if // Return cache @@ -161,7 +215,31 @@ function isEmailBlacklistEnabled () { // Is there cache? if (!isset($GLOBALS[__FUNCTION__])) { // Determine it - $GLOBALS[__FUNCTION__] = (getConfig('email_blacklist') == 'Y'); + $GLOBALS[__FUNCTION__] = (getEmailBlacklist() == 'Y'); + } // END - if + + // Return cache + return $GLOBALS[__FUNCTION__]; +} + +// Getter for ip_blacklist +function getIpBlacklist () { + // Is there cache? + if (!isset($GLOBALS[__FUNCTION__])) { + // Determine it + $GLOBALS[__FUNCTION__] = getConfig('ip_blacklist'); + } // END - if + + // Return cache + return $GLOBALS[__FUNCTION__]; +} + +// Wrapper to check if ip_blacklist is enabled +function isIpBlacklistEnabled () { + // Is there cache? + if (!isset($GLOBALS[__FUNCTION__])) { + // Determine it + $GLOBALS[__FUNCTION__] = (getIpBlacklist() == 'Y'); } // END - if // Return cache