// Fix #PSCFV-4190

This commit is contained in:
rGaillard
2012-10-05 16:28:59 +00:00
parent f5d04e94a6
commit b2998d412e
+90 -9
View File
@@ -20,42 +20,84 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
/* PrestaShop
Test if functions and defines are already defined
END
*/
if (!defined('GEOIP_COUNTRY_BEGIN'))
define("GEOIP_COUNTRY_BEGIN", 16776960); define("GEOIP_COUNTRY_BEGIN", 16776960);
if (!defined('GEOIP_STATE_BEGIN_REV0'))
define("GEOIP_STATE_BEGIN_REV0", 16700000); define("GEOIP_STATE_BEGIN_REV0", 16700000);
if (!defined('GEOIP_STATE_BEGIN_REV1'))
define("GEOIP_STATE_BEGIN_REV1", 16000000); define("GEOIP_STATE_BEGIN_REV1", 16000000);
if (!defined('GEOIP_STANDARD'))
define("GEOIP_STANDARD", 0); define("GEOIP_STANDARD", 0);
if (!defined('GEOIP_MEMORY_CACHE'))
define("GEOIP_MEMORY_CACHE", 1); define("GEOIP_MEMORY_CACHE", 1);
if (!defined('GEOIP_SHARED_MEMORY'))
define("GEOIP_SHARED_MEMORY", 2); define("GEOIP_SHARED_MEMORY", 2);
if (!defined('STRUCTURE_INFO_MAX_SIZE'))
define("STRUCTURE_INFO_MAX_SIZE", 20); define("STRUCTURE_INFO_MAX_SIZE", 20);
if (!defined('DATABASE_INFO_MAX_SIZE'))
define("DATABASE_INFO_MAX_SIZE", 100); define("DATABASE_INFO_MAX_SIZE", 100);
if (!defined('GEOIP_COUNTRY_EDITION'))
define("GEOIP_COUNTRY_EDITION", 106); define("GEOIP_COUNTRY_EDITION", 106);
if (!defined('GEOIP_PROXY_EDITION'))
define("GEOIP_PROXY_EDITION", 8); define("GEOIP_PROXY_EDITION", 8);
if (!defined('GEOIP_ASNUM_EDITION'))
define("GEOIP_ASNUM_EDITION", 9); define("GEOIP_ASNUM_EDITION", 9);
if (!defined('GEOIP_NETSPEED_EDITION'))
define("GEOIP_NETSPEED_EDITION", 10); define("GEOIP_NETSPEED_EDITION", 10);
if (!defined('GEOIP_REGION_EDITION_REV0'))
define("GEOIP_REGION_EDITION_REV0", 112); define("GEOIP_REGION_EDITION_REV0", 112);
if (!defined('GEOIP_REGION_EDITION_REV1'))
define("GEOIP_REGION_EDITION_REV1", 3); define("GEOIP_REGION_EDITION_REV1", 3);
if (!defined('GEOIP_CITY_EDITION_REV0'))
define("GEOIP_CITY_EDITION_REV0", 111); define("GEOIP_CITY_EDITION_REV0", 111);
if (!defined('GEOIP_CITY_EDITION_REV1'))
define("GEOIP_CITY_EDITION_REV1", 2); define("GEOIP_CITY_EDITION_REV1", 2);
if (!defined('GEOIP_ORG_EDITION'))
define("GEOIP_ORG_EDITION", 110); define("GEOIP_ORG_EDITION", 110);
if (!defined('GEOIP_ISP_EDITION'))
define("GEOIP_ISP_EDITION", 4); define("GEOIP_ISP_EDITION", 4);
if (!defined('SEGMENT_RECORD_LENGTH'))
define("SEGMENT_RECORD_LENGTH", 3); define("SEGMENT_RECORD_LENGTH", 3);
if (!defined('STANDARD_RECORD_LENGTH'))
define("STANDARD_RECORD_LENGTH", 3); define("STANDARD_RECORD_LENGTH", 3);
if (!defined('ORG_RECORD_LENGTH'))
define("ORG_RECORD_LENGTH", 4); define("ORG_RECORD_LENGTH", 4);
if (!defined('MAX_RECORD_LENGTH'))
define("MAX_RECORD_LENGTH", 4); define("MAX_RECORD_LENGTH", 4);
if (!defined('MAX_ORG_RECORD_LENGTH'))
define("MAX_ORG_RECORD_LENGTH", 300); define("MAX_ORG_RECORD_LENGTH", 300);
if (!defined('GEOIP_SHM_KEY'))
define("GEOIP_SHM_KEY", 0x4f415401); define("GEOIP_SHM_KEY", 0x4f415401);
if (!defined('US_OFFSET'))
define("US_OFFSET", 1); define("US_OFFSET", 1);
if (!defined('CANADA_OFFSET'))
define("CANADA_OFFSET", 677); define("CANADA_OFFSET", 677);
if (!defined('WORLD_OFFSET'))
define("WORLD_OFFSET", 1353); define("WORLD_OFFSET", 1353);
if (!defined('FIPS_RANGE'))
define("FIPS_RANGE", 360); define("FIPS_RANGE", 360);
if (!defined('GEOIP_UNKNOWN_SPEED'))
define("GEOIP_UNKNOWN_SPEED", 0); define("GEOIP_UNKNOWN_SPEED", 0);
if (!defined('GEOIP_DIALUP_SPEED'))
define("GEOIP_DIALUP_SPEED", 1); define("GEOIP_DIALUP_SPEED", 1);
if (!defined('GEOIP_CABLEDSL_SPEED'))
define("GEOIP_CABLEDSL_SPEED", 2); define("GEOIP_CABLEDSL_SPEED", 2);
if (!defined('GEOIP_CORPORATE_SPEED'))
define("GEOIP_CORPORATE_SPEED", 3); define("GEOIP_CORPORATE_SPEED", 3);
if (!defined('GEOIP_DOMAIN_EDITION'))
define("GEOIP_DOMAIN_EDITION", 11); define("GEOIP_DOMAIN_EDITION", 11);
if (!defined('GEOIP_LOCATIONA_EDITION'))
define("GEOIP_LOCATIONA_EDITION", 13); define("GEOIP_LOCATIONA_EDITION", 13);
if (!defined('GEOIP_ACCURACYRADIUS_EDITION'))
define("GEOIP_ACCURACYRADIUS_EDITION", 14); define("GEOIP_ACCURACYRADIUS_EDITION", 14);
if (!defined('GEOIP_CITYCOMBINED_EDITION'))
define("GEOIP_CITYCOMBINED_EDITION", 15); define("GEOIP_CITYCOMBINED_EDITION", 15);
if (!defined('CITYCOMBINED_FIXED_RECORD'))
define("CITYCOMBINED_FIXED_RECORD", 7 ); define("CITYCOMBINED_FIXED_RECORD", 7 );
class GeoIP { class GeoIP {
@@ -239,6 +281,8 @@ class GeoIP {
); );
} }
if (!function_exists('geoip_load_shared_mem'))
{
function geoip_load_shared_mem ($file) { function geoip_load_shared_mem ($file) {
$fp = fopen($file, "rb"); $fp = fopen($file, "rb");
@@ -256,7 +300,9 @@ function geoip_load_shared_mem ($file) {
shmop_write ($shmid, fread($fp, $size), 0); shmop_write ($shmid, fread($fp, $size), 0);
shmop_close ($shmid); shmop_close ($shmid);
} }
}
if (!function_exists('_setup_segments'))
{
function _setup_segments($gi){ function _setup_segments($gi){
$gi->databaseType = GEOIP_COUNTRY_EDITION; $gi->databaseType = GEOIP_COUNTRY_EDITION;
$gi->record_length = STANDARD_RECORD_LENGTH; $gi->record_length = STANDARD_RECORD_LENGTH;
@@ -347,7 +393,10 @@ function _setup_segments($gi){
} }
return $gi; return $gi;
} }
}
if (!function_exists('geoip_open'))
{
function geoip_open($filename, $flags) { function geoip_open($filename, $flags) {
$gi = new GeoIP; $gi = new GeoIP;
$gi->flags = $flags; $gi->flags = $flags;
@@ -364,7 +413,9 @@ function geoip_open($filename, $flags) {
$gi = _setup_segments($gi); $gi = _setup_segments($gi);
return $gi; return $gi;
} }
}
if (!function_exists('geoip_close'))
{
function geoip_close($gi) { function geoip_close($gi) {
if ($gi->flags & GEOIP_SHARED_MEMORY) { if ($gi->flags & GEOIP_SHARED_MEMORY) {
return true; return true;
@@ -372,7 +423,9 @@ function geoip_close($gi) {
return fclose($gi->filehandle); return fclose($gi->filehandle);
} }
}
if (!function_exists('geoip_country_id_by_name'))
{
function geoip_country_id_by_name($gi, $name) { function geoip_country_id_by_name($gi, $name) {
$addr = gethostbyname($name); $addr = gethostbyname($name);
if (!$addr || $addr == $name) { if (!$addr || $addr == $name) {
@@ -380,7 +433,9 @@ function geoip_country_id_by_name($gi, $name) {
} }
return geoip_country_id_by_addr($gi, $addr); return geoip_country_id_by_addr($gi, $addr);
} }
}
if (!function_exists('geoip_country_code_by_name'))
{
function geoip_country_code_by_name($gi, $name) { function geoip_country_code_by_name($gi, $name) {
$country_id = geoip_country_id_by_name($gi,$name); $country_id = geoip_country_id_by_name($gi,$name);
if ($country_id !== false) { if ($country_id !== false) {
@@ -388,7 +443,10 @@ function geoip_country_code_by_name($gi, $name) {
} }
return false; return false;
} }
}
if (!function_exists('geoip_country_name_by_name'))
{
function geoip_country_name_by_name($gi, $name) { function geoip_country_name_by_name($gi, $name) {
$country_id = geoip_country_id_by_name($gi,$name); $country_id = geoip_country_id_by_name($gi,$name);
if ($country_id !== false) { if ($country_id !== false) {
@@ -396,12 +454,17 @@ function geoip_country_name_by_name($gi, $name) {
} }
return false; return false;
} }
}
if (!function_exists('geoip_country_id_by_addr'))
{
function geoip_country_id_by_addr($gi, $addr) { function geoip_country_id_by_addr($gi, $addr) {
$ipnum = ip2long($addr); $ipnum = ip2long($addr);
return _geoip_seek_country($gi, $ipnum) - GEOIP_COUNTRY_BEGIN; return _geoip_seek_country($gi, $ipnum) - GEOIP_COUNTRY_BEGIN;
} }
}
if (!function_exists('geoip_country_code_by_addr'))
{
function geoip_country_code_by_addr($gi, $addr) { function geoip_country_code_by_addr($gi, $addr) {
if ($gi->databaseType == GEOIP_CITY_EDITION_REV1) { if ($gi->databaseType == GEOIP_CITY_EDITION_REV1) {
$record = geoip_record_by_addr($gi,$addr); $record = geoip_record_by_addr($gi,$addr);
@@ -416,7 +479,9 @@ function geoip_country_code_by_addr($gi, $addr) {
} }
return false; return false;
} }
}
if (!function_exists('geoip_country_name_by_addr'))
{
function geoip_country_name_by_addr($gi, $addr) { function geoip_country_name_by_addr($gi, $addr) {
if ($gi->databaseType == GEOIP_CITY_EDITION_REV1) { if ($gi->databaseType == GEOIP_CITY_EDITION_REV1) {
$record = geoip_record_by_addr($gi,$addr); $record = geoip_record_by_addr($gi,$addr);
@@ -429,7 +494,9 @@ function geoip_country_name_by_addr($gi, $addr) {
} }
return false; return false;
} }
}
if (!function_exists('_geoip_seek_country'))
{
function _geoip_seek_country($gi, $ipnum) { function _geoip_seek_country($gi, $ipnum) {
$offset = 0; $offset = 0;
for ($depth = 31; $depth >= 0; --$depth) { for ($depth = 31; $depth >= 0; --$depth) {
@@ -474,7 +541,9 @@ function _geoip_seek_country($gi, $ipnum) {
trigger_error("error traversing database - perhaps it is corrupt?", E_USER_ERROR); trigger_error("error traversing database - perhaps it is corrupt?", E_USER_ERROR);
return false; return false;
} }
}
if (!function_exists('_get_org'))
{
function _get_org($gi,$ipnum){ function _get_org($gi,$ipnum){
$seek_org = _geoip_seek_country($gi,$ipnum); $seek_org = _geoip_seek_country($gi,$ipnum);
if ($seek_org == $gi->databaseSegments) { if ($seek_org == $gi->databaseSegments) {
@@ -495,7 +564,10 @@ function _get_org($gi,$ipnum){
mb_internal_encoding($enc); mb_internal_encoding($enc);
return $org_buf; return $org_buf;
} }
}
if (!function_exists('geoip_org_by_addr'))
{
function geoip_org_by_addr ($gi,$addr) { function geoip_org_by_addr ($gi,$addr) {
if ($addr == NULL) { if ($addr == NULL) {
return 0; return 0;
@@ -503,7 +575,10 @@ function geoip_org_by_addr ($gi,$addr) {
$ipnum = ip2long($addr); $ipnum = ip2long($addr);
return _get_org($gi, $ipnum); return _get_org($gi, $ipnum);
} }
}
if (!function_exists('_get_region'))
{
function _get_region($gi,$ipnum){ function _get_region($gi,$ipnum){
if ($gi->databaseType == GEOIP_REGION_EDITION_REV0){ if ($gi->databaseType == GEOIP_REGION_EDITION_REV0){
$seek_region = _geoip_seek_country($gi,$ipnum) - GEOIP_STATE_BEGIN_REV0; $seek_region = _geoip_seek_country($gi,$ipnum) - GEOIP_STATE_BEGIN_REV0;
@@ -534,7 +609,10 @@ function _get_region($gi,$ipnum){
return array ($country_code,$region); return array ($country_code,$region);
} }
} }
}
if (!function_exists('geoip_region_by_addr'))
{
function geoip_region_by_addr ($gi,$addr) { function geoip_region_by_addr ($gi,$addr) {
if ($addr == NULL) { if ($addr == NULL) {
return 0; return 0;
@@ -542,7 +620,10 @@ function geoip_region_by_addr ($gi,$addr) {
$ipnum = ip2long($addr); $ipnum = ip2long($addr);
return _get_region($gi, $ipnum); return _get_region($gi, $ipnum);
} }
}
if (!function_exists('getdnsattributes'))
{
function getdnsattributes ($l,$ip){ function getdnsattributes ($l,$ip){
$r = new Net_DNS_Resolver(); $r = new Net_DNS_Resolver();
$r->nameservers = array("ws1.maxmind.com"); $r->nameservers = array("ws1.maxmind.com");
@@ -552,5 +633,5 @@ function getdnsattributes ($l,$ip){
$str = $regs[1]; $str = $regs[1];
return $str; return $str;
} }
}
?> ?>