add encoding instructions, documentation refreshed, IPv6 support added
Dieser Commit ist enthalten in:
Ursprung
5106a4ec0b
Commit
3a656aa284
|
@ -1,5 +1,6 @@
|
|||
* text=auto !eol
|
||||
/Doxyfile -text
|
||||
copy_this/.noencode -text
|
||||
copy_this/modules/d3/d3geoip/controllers/admin/d3_cfg_geoipset.php -text
|
||||
copy_this/modules/d3/d3geoip/controllers/admin/d3_cfg_geoipset_licence.php -text
|
||||
copy_this/modules/d3/d3geoip/controllers/admin/d3_cfg_geoipset_list.php -text
|
||||
|
@ -17,18 +18,23 @@ copy_this/modules/d3/d3geoip/views/admin/tpl/d3_cfg_geoipset_main.tpl -text
|
|||
copy_this/modules/d3/d3geoip/views/admin/tpl/d3_country_geoip.tpl -text
|
||||
setup+doku/Installation.pdf -text
|
||||
setup+doku/d3precheck.php -text
|
||||
setup+doku/geoip-Data_2011-10-13.sql -text
|
||||
setup+doku/geoip-Data_IPv4_2013-04-18.sql -text
|
||||
setup+doku/geoip-Data_IPv6_2013-04-18.sql -text
|
||||
setup+doku/geoip-Struktur.sql -text
|
||||
setup+doku/geoip_data_parts/1.sql -text
|
||||
setup+doku/geoip_data_parts/2.sql -text
|
||||
setup+doku/geoip_data_parts/3.sql -text
|
||||
setup+doku/geoip_data_parts/4.sql -text
|
||||
setup+doku/geoip_data_parts/5.sql -text
|
||||
setup+doku/geoip_data_parts/6.sql -text
|
||||
setup+doku/geoip_data_parts/7.sql -text
|
||||
setup+doku/geoip_data_parts/8.sql -text
|
||||
setup+doku/geoip_data_parts/IPv4_1.sql -text
|
||||
setup+doku/geoip_data_parts/IPv4_2.sql -text
|
||||
setup+doku/geoip_data_parts/IPv4_3.sql -text
|
||||
setup+doku/geoip_data_parts/IPv4_4.sql -text
|
||||
setup+doku/geoip_data_parts/IPv4_5.sql -text
|
||||
setup+doku/geoip_data_parts/IPv4_6.sql -text
|
||||
setup+doku/geoip_data_parts/IPv4_7.sql -text
|
||||
setup+doku/geoip_data_parts/IPv4_8.sql -text
|
||||
setup+doku/geoip_data_parts/IPv6_1.sql -text
|
||||
setup+doku/geoip_data_parts/IPv6_2.sql -text
|
||||
setup+doku/licence.txt -text
|
||||
sources/CSVtoSQLconvert_perl.zip -text
|
||||
sources/CSVtoSQLconvert_perl/geoip_V6.csv -text
|
||||
sources/CSVtoSQLconvert_perl/geoip_v4.csv -text
|
||||
sources/CSVtoSQLconvert_perl/test.pl -text
|
||||
sources/DevReferences/html/annotated.html -text
|
||||
sources/DevReferences/html/bc_s.png -text
|
||||
sources/DevReferences/html/classd3__cfg__geoipset.html -text
|
||||
|
@ -103,7 +109,5 @@ sources/Doku/Drucken[!!-~]-[!!-~]MaxMind[!!-~]Forum[!!-~]•[!!-~]View[!!-~]topi
|
|||
sources/Doku/Drucken[!!-~]-[!!-~]On[!!-~]efficiently[!!-~]geo-referencing[!!-~]IPs[!!-~]with[!!-~]MaxMind[!!-~]GeoIP[!!-~]and[!!-~]MySQL[!!-~]GIS[!!-~]«[!!-~]Jeremy[!!-~]Cole.pdf -text svneol=unset#unset
|
||||
sources/Doku/Drucken[!!-~]-[!!-~]Vincent[!!-~]de[!!-~]Lau_[!!-~]HOW-TO[!!-~]Import[!!-~]the[!!-~]MaxMind[!!-~]GeoIP[!!-~]Free[!!-~]Country[!!-~]CSV[!!-~]file[!!-~]into[!!-~]MySQL[!!-~]and[!!-~]save[!!-~]diskspace.pdf -text svneol=unset#unset
|
||||
sources/GeoIP-Installation.docx -text
|
||||
sources/GeoIPCountryCSV.zip -text
|
||||
sources/GeoIPv6.csv/GeoIPv6-20120304.csv -text
|
||||
sources/IPNum-Berechnung.xls -text
|
||||
sources/ToDo.txt -text
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
copyAsIsFiles = modules/d3/d3geoip/controllers, modules/d3/d3geoip/models/d3geoip_update.php, modules/d3/d3geoip/modules/components, modules/d3/d3geoip/views, modules/d3/d3geoip/d3_geoip_stub.php, modules/d3/d3geoip/metadata.php
|
|
@ -1,26 +1,28 @@
|
|||
<?php
|
||||
|
||||
// @copyright © D³ Data Development
|
||||
//
|
||||
// This Software is the property of Data Development and is protected
|
||||
// by copyright law - it is NOT Freeware.
|
||||
//
|
||||
// Any unauthorized use of this software without a valid license key
|
||||
// is a violation of the license agreement and will be prosecuted by
|
||||
// civil and criminal law.
|
||||
//
|
||||
// http://www.shopmodule.com
|
||||
|
||||
// AUTOR Daniel Seifert <ds@shopmodule.com>
|
||||
|
||||
/**
|
||||
* This Software is the property of Data Development and is protected
|
||||
* by copyright law - it is NOT Freeware.
|
||||
*
|
||||
* Any unauthorized use of this software without a valid license
|
||||
* is a violation of the license agreement and will be prosecuted by
|
||||
* civil and criminal law.
|
||||
*
|
||||
* http://www.shopmodule.com
|
||||
*
|
||||
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
||||
* @author D3 Data Development - Daniel Seifert <ds@shopmodule.com>
|
||||
* @link http://www.oxidmodule.com
|
||||
*/
|
||||
class d3_cfg_geoipset extends d3_cfg_mod_
|
||||
{
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function render()
|
||||
{
|
||||
$this->_aViewData['sListClass'] = 'd3_cfg_geoipset_list';
|
||||
|
||||
$this->_aViewData['sMainClass'] = 'd3_cfg_geoipset_main';
|
||||
$this->addTplParam('sListClass', 'd3_cfg_geoipset_list');
|
||||
$this->addTplParam('sMainClass', 'd3_cfg_geoipset_main');
|
||||
|
||||
$this->_hasListItems = false;
|
||||
|
||||
|
|
|
@ -1,27 +1,24 @@
|
|||
<?php
|
||||
|
||||
// @copyright © D³ Data Development
|
||||
//
|
||||
// This Software is the property of Data Development and is protected
|
||||
// by copyright law - it is NOT Freeware.
|
||||
//
|
||||
// Any unauthorized use of this software without a valid license key
|
||||
// is a violation of the license agreement and will be prosecuted by
|
||||
// civil and criminal law.
|
||||
//
|
||||
// http://www.shopmodule.com
|
||||
|
||||
// AUTOR Daniel Seifert <ds@shopmodule.com>
|
||||
/**
|
||||
* This Software is the property of Data Development and is protected
|
||||
* by copyright law - it is NOT Freeware.
|
||||
*
|
||||
* Any unauthorized use of this software without a valid license
|
||||
* is a violation of the license agreement and will be prosecuted by
|
||||
* civil and criminal law.
|
||||
*
|
||||
* http://www.shopmodule.com
|
||||
*
|
||||
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
||||
* @author D3 Data Development - Daniel Seifert <ds@shopmodule.com>
|
||||
* @link http://www.oxidmodule.com
|
||||
*/
|
||||
|
||||
class d3_cfg_geoipset_licence extends d3_cfg_mod_licence
|
||||
{
|
||||
protected $_sModId = 'd3_geoip';
|
||||
|
||||
protected $_hasLicence = false;
|
||||
|
||||
protected $_hasNewsletterForm = false;
|
||||
|
||||
protected $_sMenuItemTitle = 'd3mxgeoip';
|
||||
|
||||
protected $_sMenuSubItemTitle = 'd3mxgeoip_settings';
|
||||
}
|
|
@ -1,17 +1,19 @@
|
|||
<?php
|
||||
|
||||
// @copyright © D³ Data Development
|
||||
//
|
||||
// This Software is the property of Data Development and is protected
|
||||
// by copyright law - it is NOT Freeware.
|
||||
//
|
||||
// Any unauthorized use of this software without a valid license key
|
||||
// is a violation of the license agreement and will be prosecuted by
|
||||
// civil and criminal law.
|
||||
//
|
||||
// http://www.shopmodule.com
|
||||
|
||||
// AUTOR Daniel Seifert <ds@shopmodule.com>
|
||||
/**
|
||||
* This Software is the property of Data Development and is protected
|
||||
* by copyright law - it is NOT Freeware.
|
||||
*
|
||||
* Any unauthorized use of this software without a valid license
|
||||
* is a violation of the license agreement and will be prosecuted by
|
||||
* civil and criminal law.
|
||||
*
|
||||
* http://www.shopmodule.com
|
||||
*
|
||||
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
||||
* @author D3 Data Development - Daniel Seifert <ds@shopmodule.com>
|
||||
* @link http://www.oxidmodule.com
|
||||
*/
|
||||
|
||||
class d3_cfg_geoipset_list extends d3_cfg_mod_list
|
||||
{
|
||||
|
@ -22,14 +24,17 @@ class d3_cfg_geoipset_list extends d3_cfg_mod_list
|
|||
|
||||
protected $_sMenuSubItemTitle = 'd3mxgeoip_settings';
|
||||
|
||||
/**
|
||||
* @return null
|
||||
*/
|
||||
public function render()
|
||||
{
|
||||
$sRet = parent::render();
|
||||
|
||||
// default page number 1
|
||||
$this->_aViewData['oxid'] = 1;
|
||||
$this->_aViewData["default_edit"] = "d3_cfg_geoipset_main";
|
||||
$this->_aViewData["updatemain"] = $this->_blUpdateMain;
|
||||
$this->addTplParam('oxid', 1);
|
||||
$this->addTplParam("default_edit", "d3_cfg_geoipset_main");
|
||||
$this->addTplParam("updatemain", $this->_blUpdateMain);
|
||||
|
||||
return $sRet;
|
||||
}
|
||||
|
|
|
@ -191,12 +191,15 @@ class d3_country_geoip extends oxAdminView
|
|||
|
||||
$sCurs = oxDb::getDb(oxDb::FETCH_MODE_ASSOC)->getOne($sQ);
|
||||
|
||||
foreach (unserialize($sCurs) as $sKey => $sValue)
|
||||
if ($sCurs)
|
||||
{
|
||||
$aFields = explode('@', $sValue);
|
||||
$aCurrencies[$sKey]->id = $sKey;
|
||||
$aCurrencies[$sKey]->name = $aFields[0];
|
||||
$aCurrencies[$sKey]->sign = $aFields[4];
|
||||
foreach (unserialize($sCurs) as $sKey => $sValue)
|
||||
{
|
||||
$aFields = explode('@', $sValue);
|
||||
$aCurrencies[$sKey]->id = $sKey;
|
||||
$aCurrencies[$sKey]->name = $aFields[0];
|
||||
$aCurrencies[$sKey]->sign = $aFields[4];
|
||||
}
|
||||
}
|
||||
|
||||
return $aCurrencies;
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
* @link http://www.oxidmodule.com
|
||||
*/
|
||||
|
||||
class d3GeoIP extends oxI18n
|
||||
class d3GeoIP extends oxbase
|
||||
{
|
||||
protected $_sClassName = 'd3geoip';
|
||||
private $_sModId = 'd3_geoip';
|
||||
|
@ -41,6 +41,8 @@ class d3GeoIP extends oxI18n
|
|||
{
|
||||
if (!$this->oCountry)
|
||||
{
|
||||
startProfile(__METHOD__);
|
||||
|
||||
if (!$sIP)
|
||||
{
|
||||
$sIP = $this->getIP();
|
||||
|
@ -59,6 +61,8 @@ class d3GeoIP extends oxI18n
|
|||
$this->_getLog()->log('info', __CLASS__, __FUNCTION__, __LINE__, 'get ISO by IP', $sIP." => ".$sISOAlpha);
|
||||
$this->oCountry = $this->getCountryObject($sISOAlpha);
|
||||
}
|
||||
|
||||
stopProfile(__METHOD__);
|
||||
}
|
||||
|
||||
return $this->oCountry;
|
||||
|
@ -71,31 +75,71 @@ class d3GeoIP extends oxI18n
|
|||
*/
|
||||
public function getIP()
|
||||
{
|
||||
startProfile(__METHOD__);
|
||||
|
||||
if ($this->_getModConfig()->getValue('blUseTestIp') && $this->_getModConfig()->getValue('sTestIp'))
|
||||
{
|
||||
return $this->_getModConfig()->getValue('sTestIp');
|
||||
$sIP = $this->_getModConfig()->getValue('sTestIp');
|
||||
}
|
||||
elseif ($this->_getModConfig()->getValue('blUseTestCountry') && $this->_getModConfig()->getValue('sTestCountryIp'))
|
||||
{
|
||||
return $this->_getModConfig()->getValue('sTestCountryIp');
|
||||
$sIP = $this->_getModConfig()->getValue('sTestCountryIp');
|
||||
}
|
||||
else
|
||||
{
|
||||
return $_SERVER['REMOTE_ADDR'];
|
||||
// ToDo: use $_SERVER['X-Forwared-For'] && Client-IP in case of proxy
|
||||
$sIP = $_SERVER['REMOTE_ADDR'];
|
||||
}
|
||||
|
||||
stopProfile(__METHOD__);
|
||||
|
||||
return $sIP;
|
||||
}
|
||||
|
||||
/**
|
||||
* get IP number by IP address
|
||||
*
|
||||
* @param string $sIP IP address
|
||||
* @return int IP number
|
||||
* @param $sIP
|
||||
* @return bool
|
||||
* @throws Exception|int
|
||||
*/
|
||||
protected function _getNumIp($sIP)
|
||||
{
|
||||
$aIP = explode('.',$sIP);
|
||||
$iIP = ($aIP[0] * 16777216) + ($aIP[1] * 65536) + ($aIP[2] * 256) + ($aIP[3] * 1);
|
||||
return $iIP;
|
||||
// make sure it is an ip
|
||||
if (filter_var($sIP, FILTER_VALIDATE_IP) === FALSE)
|
||||
return FALSE;
|
||||
|
||||
startProfile(__METHOD__);
|
||||
|
||||
$parts = unpack('N*', inet_pton($sIP));
|
||||
|
||||
if (strpos($sIP, '.') !== FALSE)
|
||||
{
|
||||
$parts = array(1=>0, 2=>0, 3=>0, 4=>$parts[1]);
|
||||
}
|
||||
|
||||
foreach ($parts as &$part)
|
||||
{
|
||||
if ($part < 0)
|
||||
$part += 4294967296;
|
||||
}
|
||||
|
||||
if (function_exists('bcadd'))
|
||||
{
|
||||
$dIP = $parts[4];
|
||||
$dIP = bcadd($dIP, bcmul($parts[3], '4294967296'));
|
||||
$dIP = bcadd($dIP, bcmul($parts[2], '18446744073709551616'));
|
||||
$dIP = bcadd($dIP, bcmul($parts[1], '79228162514264337593543950336'));
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Exception('extension BCMath is required');
|
||||
}
|
||||
|
||||
$aIP = explode('.', $dIP);
|
||||
|
||||
stopProfile(__METHOD__);
|
||||
|
||||
return $aIP[0];
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -106,8 +150,14 @@ class d3GeoIP extends oxI18n
|
|||
*/
|
||||
public function LoadByIPNum($iIPNum)
|
||||
{
|
||||
startProfile(__METHOD__);
|
||||
|
||||
$sSelect = "SELECT d3iso FROM ".$this->_sClassName." WHERE d3startipnum <= '$iIPNum' AND d3endipnum >= '$iIPNum'";
|
||||
return oxDb::getDb()->getOne($sSelect);
|
||||
$sISO = oxDb::getDb()->getOne($sSelect);
|
||||
|
||||
stopProfile(__METHOD__);
|
||||
|
||||
return $sISO;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -118,21 +168,27 @@ class d3GeoIP extends oxI18n
|
|||
*/
|
||||
public function getCountryObject($sISOAlpha)
|
||||
{
|
||||
startProfile(__METHOD__);
|
||||
|
||||
$oCountry = oxNew('oxcountry');
|
||||
$sSelect = "SELECT oxid FROM ".$oCountry->getViewName()." WHERE OXISOALPHA2 = '".$sISOAlpha."' AND OXACTIVE = '1'";
|
||||
|
||||
$oCountry->load(oxDb::getDb()->getOne($sSelect));
|
||||
|
||||
stopProfile(__METHOD__);
|
||||
|
||||
return $oCountry;
|
||||
}
|
||||
|
||||
/**
|
||||
* get oxcountry object for fallback, if set
|
||||
*
|
||||
* @return object
|
||||
* @return oxcountry
|
||||
*/
|
||||
public function getCountryFallBackObject()
|
||||
{
|
||||
startProfile(__METHOD__);
|
||||
|
||||
$oCountry = oxNew('oxcountry');
|
||||
|
||||
if ($this->_getModConfig()->getValue('blUseFallback') && $this->_getModConfig()->getValue('sFallbackCountryId'))
|
||||
|
@ -140,6 +196,8 @@ class d3GeoIP extends oxI18n
|
|||
$oCountry->Load($this->_getModConfig()->getValue('sFallbackCountryId'));
|
||||
}
|
||||
|
||||
stopProfile(__METHOD__);
|
||||
|
||||
return $oCountry;
|
||||
}
|
||||
|
||||
|
@ -149,11 +207,16 @@ class d3GeoIP extends oxI18n
|
|||
*/
|
||||
public function setCountryLanguage()
|
||||
{
|
||||
startProfile(__METHOD__);
|
||||
|
||||
$this->performURLSwitch();
|
||||
$this->performShopSwitch();
|
||||
|
||||
if (!$this->_getModConfig()->isActive() || !$this->_getModConfig()->getValue('blChangeLang'))
|
||||
{
|
||||
stopProfile(__METHOD__);
|
||||
return;
|
||||
}
|
||||
|
||||
$oCountry = $this->getUserLocationCountryObject();
|
||||
|
||||
|
@ -164,6 +227,8 @@ class d3GeoIP extends oxI18n
|
|||
oxRegistry::getLang()->setBaseLanguage((int) $oCountry->getFieldData('d3geoiplang'));
|
||||
oxRegistry::getSession()->setVariable('d3isSetLang', true);
|
||||
}
|
||||
|
||||
stopProfile(__METHOD__);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -175,6 +240,8 @@ class d3GeoIP extends oxI18n
|
|||
if (!$this->_getModConfig()->isActive() || !$this->_getModConfig()->getValue('blChangeCurr'))
|
||||
return;
|
||||
|
||||
startProfile(__METHOD__);
|
||||
|
||||
$oCountry = $this->getUserLocationCountryObject();
|
||||
|
||||
if (!$this->isAdmin() && oxRegistry::getUtils()->isSearchEngine() === false && !oxRegistry::getSession()->getVariable('d3isSetCurr') && $oCountry->getId() && $oCountry->getFieldData('d3geoipcur') > -1)
|
||||
|
@ -183,6 +250,8 @@ class d3GeoIP extends oxI18n
|
|||
oxRegistry::getConfig()->setActShopCurrency((int) $oCountry->getFieldData('d3geoipcur'));
|
||||
oxRegistry::getSession()->setVariable('d3isSetCurr', true);
|
||||
}
|
||||
|
||||
stopProfile(__METHOD__);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -194,11 +263,22 @@ class d3GeoIP extends oxI18n
|
|||
if (!$this->_getModConfig()->isActive() || !$this->_getModConfig()->getValue('blChangeShop'))
|
||||
return;
|
||||
|
||||
$oCountry = $this->getUserLocationCountryObject();
|
||||
startProfile(__METHOD__);
|
||||
|
||||
$oCountry = $this->getUserLocationCountryObject();
|
||||
$iNewShop = $oCountry->getFieldData('d3geoipshop');
|
||||
|
||||
if (!$this->isAdmin() && oxRegistry::getUtils()->isSearchEngine() === false && $oCountry->getId() && $this->getConfig()->isMall() && $iNewShop > -1 && $iNewShop != $this->getConfig()->getShopId())
|
||||
if (oxRegistry::getConfig()->getRequestParameter('d3redirect') != 1 &&
|
||||
!$this->isAdmin() &&
|
||||
oxRegistry::getUtils()->isSearchEngine() === false &&
|
||||
$oCountry->getId() &&
|
||||
$this->getConfig()->isMall() &&
|
||||
$iNewShop > -1 &&
|
||||
(
|
||||
$iNewShop != $this->getConfig()->getShopId() ||
|
||||
strtolower($this->getConfig()->getActiveView()->getClassName()) == 'mallstart'
|
||||
)
|
||||
)
|
||||
{
|
||||
$oNewConf = new oxConfig();
|
||||
$oNewConf->setShopId($iNewShop);
|
||||
|
@ -206,7 +286,9 @@ class d3GeoIP extends oxI18n
|
|||
|
||||
$this->getConfig()->onShopChange();
|
||||
|
||||
if (!oxRegistry::getSession()->getVariable('d3isSetLang') && $oCountry->getFieldData('d3geoiplang') > -1)
|
||||
if (!oxRegistry::getSession()->getVariable('d3isSetLang') &&
|
||||
$this->_getModConfig()->getValue('blChangeLang') &&
|
||||
$oCountry->getFieldData('d3geoiplang') > -1)
|
||||
{
|
||||
$sLangId = $oCountry->getFieldData('d3geoiplang');
|
||||
}
|
||||
|
@ -215,11 +297,22 @@ class d3GeoIP extends oxI18n
|
|||
$sLangId = '';
|
||||
}
|
||||
|
||||
$this->_getLog()->log('info', __CLASS__, __FUNCTION__, __LINE__, 'change shop', $this->getIP().' => '.$oNewConf->getShopHomeUrl($sLangId));
|
||||
/** @var $oStr d3str */
|
||||
$oStr = oxRegistry::get('d3str');
|
||||
$aParams = array(
|
||||
'd3redirect' => '1',
|
||||
'fnc' => oxRegistry::getConfig()->getRequestParameter('fnc'),
|
||||
'shp' => $iNewShop
|
||||
);
|
||||
$sUrl = str_replace('&', '&', $oStr->generateParameterUrl($oNewConf->getShopHomeUrl($sLangId), $aParams));
|
||||
|
||||
header("Location: ".$oNewConf->getShopHomeUrl($sLangId));
|
||||
$this->_getLog()->log('info', __CLASS__, __FUNCTION__, __LINE__, 'change shop', $this->getIP().' => '.$sUrl);
|
||||
|
||||
header("Location: ".$sUrl);
|
||||
exit();
|
||||
}
|
||||
|
||||
stopProfile(__METHOD__);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -233,9 +326,16 @@ class d3GeoIP extends oxI18n
|
|||
return;
|
||||
}
|
||||
|
||||
startProfile(__METHOD__);
|
||||
|
||||
$oCountry = $this->getUserLocationCountryObject();
|
||||
|
||||
if (!$this->isAdmin() && oxRegistry::getUtils()->isSearchEngine() === false && $oCountry->getId() && $oCountry->getFieldData('d3geoipurl') && strlen(trim($oCountry->getFieldData('d3geoipurl'))) > 0)
|
||||
if (!$this->isAdmin() &&
|
||||
oxRegistry::getUtils()->isSearchEngine() === false &&
|
||||
$oCountry->getId() &&
|
||||
$oCountry->getFieldData('d3geoipurl') &&
|
||||
strlen(trim($oCountry->getFieldData('d3geoipurl'))) > 0
|
||||
)
|
||||
{
|
||||
$sNewUrl = $oCountry->getFieldData('d3geoipurl');
|
||||
|
||||
|
@ -244,6 +344,8 @@ class d3GeoIP extends oxI18n
|
|||
header("Location: ".$sNewUrl);
|
||||
exit();
|
||||
}
|
||||
|
||||
stopProfile(__METHOD__);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -253,6 +355,8 @@ class d3GeoIP extends oxI18n
|
|||
*/
|
||||
public function getShopUrls()
|
||||
{
|
||||
startProfile(__METHOD__);
|
||||
|
||||
$oShoplist = oxNew( 'oxshoplist' );
|
||||
$oShoplist->getList();
|
||||
$aShopUrls = array();
|
||||
|
@ -261,6 +365,8 @@ class d3GeoIP extends oxI18n
|
|||
$aShopUrls[$sId] = $this->getConfig()->getShopConfVar( 'sMallShopURL', $sId );
|
||||
}
|
||||
|
||||
stopProfile(__METHOD__);
|
||||
|
||||
return $aShopUrls;
|
||||
}
|
||||
|
||||
|
|
|
@ -36,8 +36,8 @@ nc9';
|
|||
'do' => 'updateGeoIpItems'),
|
||||
array('check' => 'checkModCfgItemExist',
|
||||
'do' => 'updateModCfgItemExist'),
|
||||
array('check' => 'checkFields',
|
||||
'do' => 'fixFields'),
|
||||
array('check' => 'checkGeoIpFields',
|
||||
'do' => 'fixGeoIpFields'),
|
||||
array('check' => 'checkIndizes',
|
||||
'do' => 'fixIndizes'),
|
||||
array('check' => 'checkModCfgSameRevision',
|
||||
|
@ -91,7 +91,7 @@ nc9';
|
|||
'D3STARTIP' => array(
|
||||
'sTableName' => 'd3geoip',
|
||||
'sFieldName' => 'D3STARTIP',
|
||||
'sType' => 'CHAR(15)',
|
||||
'sType' => 'VARCHAR(39)',
|
||||
'blNull' => FALSE,
|
||||
'sDefault' => FALSE,
|
||||
'sComment' => '',
|
||||
|
@ -101,7 +101,7 @@ nc9';
|
|||
'D3ENDIP' => array(
|
||||
'sTableName' => 'd3geoip',
|
||||
'sFieldName' => 'D3ENDIP',
|
||||
'sType' => 'CHAR(15)',
|
||||
'sType' => 'VARCHAR(39)',
|
||||
'blNull' => FALSE,
|
||||
'sDefault' => FALSE,
|
||||
'sComment' => '',
|
||||
|
@ -111,7 +111,7 @@ nc9';
|
|||
'D3STARTIPNUM' => array(
|
||||
'sTableName' => 'd3geoip',
|
||||
'sFieldName' => 'D3STARTIPNUM',
|
||||
'sType' => 'INT(10) unsigned',
|
||||
'sType' => 'DECIMAL(38,0)',
|
||||
'blNull' => FALSE,
|
||||
'sDefault' => FALSE,
|
||||
'sComment' => '',
|
||||
|
@ -121,7 +121,7 @@ nc9';
|
|||
'D3ENDIPNUM' => array(
|
||||
'sTableName' => 'd3geoip',
|
||||
'sFieldName' => 'D3ENDIPNUM',
|
||||
'sType' => 'INT(10) unsigned',
|
||||
'sType' => 'DECIMAL(38,0)',
|
||||
'blNull' => FALSE,
|
||||
'sDefault' => FALSE,
|
||||
'sComment' => '',
|
||||
|
@ -260,111 +260,141 @@ nc9';
|
|||
'oxmodid' => $this->sModKey,
|
||||
'oxshopid' => $oShop->getId(),
|
||||
);
|
||||
$aInsertFields = array(
|
||||
array (
|
||||
'fieldname' => 'OXID',
|
||||
'content' => "md5('" . $this->sModKey . " " . $oShop->getId() . " de')",
|
||||
'force_update' => TRUE,
|
||||
'use_quote' => FALSE,
|
||||
'use_multilang' => FALSE,
|
||||
),
|
||||
array (
|
||||
'fieldname' => 'OXSHOPID',
|
||||
'content' => $oShop->getId(),
|
||||
'force_update' => TRUE,
|
||||
'use_quote' => TRUE,
|
||||
'use_multilang' => FALSE,
|
||||
),
|
||||
array (
|
||||
'fieldname' => 'OXMODID',
|
||||
'content' => $this->sModKey,
|
||||
'force_update' => TRUE,
|
||||
'use_quote' => TRUE,
|
||||
'use_multilang' => FALSE,
|
||||
),
|
||||
array (
|
||||
'fieldname' => 'OXNAME',
|
||||
'content' => $this->sModName,
|
||||
'force_update' => TRUE,
|
||||
'use_quote' => TRUE,
|
||||
'use_multilang' => FALSE,
|
||||
),
|
||||
array (
|
||||
'fieldname' => 'OXACTIVE',
|
||||
'content' => "0",
|
||||
'force_update' => FALSE,
|
||||
'use_quote' => FALSE,
|
||||
'use_multilang' => FALSE,
|
||||
),
|
||||
array (
|
||||
'fieldname' => 'OXBASECONFIG',
|
||||
'content' => $this->sBaseConf,
|
||||
'force_update' => TRUE,
|
||||
'use_quote' => TRUE,
|
||||
'use_multilang' => FALSE,
|
||||
),
|
||||
array (
|
||||
'fieldname' => 'OXSERIAL',
|
||||
'content' => "",
|
||||
'force_update' => FALSE,
|
||||
'use_quote' => TRUE,
|
||||
'use_multilang' => FALSE,
|
||||
),
|
||||
array (
|
||||
'fieldname' => 'OXINSTALLDATE',
|
||||
'content' => "NOW()",
|
||||
'force_update' => TRUE,
|
||||
'use_quote' => FALSE,
|
||||
'use_multilang' => FALSE,
|
||||
),
|
||||
array (
|
||||
'fieldname' => 'OXVERSION',
|
||||
'content' => $this->sModVersion,
|
||||
'force_update' => TRUE,
|
||||
'use_quote' => TRUE,
|
||||
'use_multilang' => FALSE,
|
||||
),
|
||||
array (
|
||||
'fieldname' => 'OXSHOPVERSION',
|
||||
'content' => oxRegistry::getConfig()->getEdition(),
|
||||
'force_update' => TRUE,
|
||||
'use_quote' => TRUE,
|
||||
'use_multilang' => FALSE,
|
||||
),
|
||||
array (
|
||||
'fieldname' => 'OXREQUIREMENTS',
|
||||
'content' => $this->sRequirements,
|
||||
'force_update' => TRUE,
|
||||
'use_quote' => TRUE,
|
||||
'use_multilang' => FALSE,
|
||||
),
|
||||
array(
|
||||
'fieldname' => 'OXVALUE',
|
||||
'content' => $this->sBaseValue,
|
||||
'force_update' => FALSE,
|
||||
'use_quote' => TRUE,
|
||||
'use_multilang' => FALSE,
|
||||
),
|
||||
array(
|
||||
'fieldname' => 'OXNEWREVISION',
|
||||
'content' => $this->sModRevision,
|
||||
'force_update' => TRUE,
|
||||
'use_quote' => TRUE,
|
||||
'use_multilang' => FALSE,
|
||||
)
|
||||
);
|
||||
$aRet = $this->_updateTableItem('d3_cfg_mod', $aInsertFields, $aWhere);
|
||||
$blRet = $aRet['blRet'];
|
||||
|
||||
$this->_setActionLog('SQL', $aRet['sql'], __METHOD__);
|
||||
$this->_setUpdateBreak(FALSE);
|
||||
|
||||
if ($this->getStepByStepMode())
|
||||
if ($this->_checkTableItemNotExist('d3_cfg_mod', $aWhere))
|
||||
{
|
||||
break;
|
||||
$aInsertFields = array(
|
||||
array (
|
||||
'fieldname' => 'OXID',
|
||||
'content' => "md5('" . $this->sModKey . " " . $oShop->getId() . " de')",
|
||||
'force_update' => TRUE,
|
||||
'use_quote' => FALSE,
|
||||
'use_multilang' => FALSE,
|
||||
),
|
||||
array (
|
||||
'fieldname' => 'OXSHOPID',
|
||||
'content' => $oShop->getId(),
|
||||
'force_update' => TRUE,
|
||||
'use_quote' => TRUE,
|
||||
'use_multilang' => FALSE,
|
||||
),
|
||||
array (
|
||||
'fieldname' => 'OXMODID',
|
||||
'content' => $this->sModKey,
|
||||
'force_update' => TRUE,
|
||||
'use_quote' => TRUE,
|
||||
'use_multilang' => FALSE,
|
||||
),
|
||||
array (
|
||||
'fieldname' => 'OXNAME',
|
||||
'content' => $this->sModName,
|
||||
'force_update' => TRUE,
|
||||
'use_quote' => TRUE,
|
||||
'use_multilang' => FALSE,
|
||||
),
|
||||
array (
|
||||
'fieldname' => 'OXACTIVE',
|
||||
'content' => "0",
|
||||
'force_update' => FALSE,
|
||||
'use_quote' => FALSE,
|
||||
'use_multilang' => FALSE,
|
||||
),
|
||||
array (
|
||||
'fieldname' => 'OXBASECONFIG',
|
||||
'content' => $this->sBaseConf,
|
||||
'force_update' => TRUE,
|
||||
'use_quote' => TRUE,
|
||||
'use_multilang' => FALSE,
|
||||
),
|
||||
array (
|
||||
'fieldname' => 'OXSERIAL',
|
||||
'content' => "",
|
||||
'force_update' => FALSE,
|
||||
'use_quote' => TRUE,
|
||||
'use_multilang' => FALSE,
|
||||
),
|
||||
array (
|
||||
'fieldname' => 'OXINSTALLDATE',
|
||||
'content' => "NOW()",
|
||||
'force_update' => TRUE,
|
||||
'use_quote' => FALSE,
|
||||
'use_multilang' => FALSE,
|
||||
),
|
||||
array (
|
||||
'fieldname' => 'OXVERSION',
|
||||
'content' => $this->sModVersion,
|
||||
'force_update' => TRUE,
|
||||
'use_quote' => TRUE,
|
||||
'use_multilang' => FALSE,
|
||||
),
|
||||
array (
|
||||
'fieldname' => 'OXSHOPVERSION',
|
||||
'content' => oxRegistry::getConfig()->getEdition(),
|
||||
'force_update' => TRUE,
|
||||
'use_quote' => TRUE,
|
||||
'use_multilang' => FALSE,
|
||||
),
|
||||
array (
|
||||
'fieldname' => 'OXREQUIREMENTS',
|
||||
'content' => $this->sRequirements,
|
||||
'force_update' => TRUE,
|
||||
'use_quote' => TRUE,
|
||||
'use_multilang' => FALSE,
|
||||
),
|
||||
array(
|
||||
'fieldname' => 'OXVALUE',
|
||||
'content' => $this->sBaseValue,
|
||||
'force_update' => FALSE,
|
||||
'use_quote' => TRUE,
|
||||
'use_multilang' => FALSE,
|
||||
),
|
||||
array(
|
||||
'fieldname' => 'OXNEWREVISION',
|
||||
'content' => $this->sModRevision,
|
||||
'force_update' => TRUE,
|
||||
'use_quote' => TRUE,
|
||||
'use_multilang' => FALSE,
|
||||
)
|
||||
);
|
||||
$aRet = $this->_updateTableItem('d3_cfg_mod', $aInsertFields, $aWhere);
|
||||
$blRet = $aRet['blRet'];
|
||||
|
||||
$this->_setActionLog('SQL', $aRet['sql'], __METHOD__);
|
||||
$this->_setUpdateBreak(FALSE);
|
||||
|
||||
if ($this->getStepByStepMode())
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return $blRet;
|
||||
}
|
||||
|
||||
/**
|
||||
* change default value for shop id in EE
|
||||
* @return bool
|
||||
*/
|
||||
public function checkGeoIpFields()
|
||||
{
|
||||
/** @var $oShop oxshop */
|
||||
$oShop = $this->_getShopList()->current();
|
||||
$this->aFields['D3GEOIPSHOP']['sDefault'] = $oShop->getId();
|
||||
|
||||
return $this->checkFields();
|
||||
}
|
||||
|
||||
/**
|
||||
* change default value for shop id in EE
|
||||
* @return bool
|
||||
*/
|
||||
public function fixGeoIpFields()
|
||||
{
|
||||
/** @var $oShop oxshop */
|
||||
$oShop = $this->_getShopList()->current();
|
||||
$this->aFields['D3GEOIPSHOP']['sDefault'] = $oShop->getId();
|
||||
|
||||
return $this->fixFields();
|
||||
}
|
||||
}
|
|
@ -1,17 +1,17 @@
|
|||
<?php
|
||||
/**
|
||||
* This Software is the property of OXID eSales and is protected
|
||||
* This Software is the property of Data Development and is protected
|
||||
* by copyright law - it is NOT Freeware.
|
||||
*
|
||||
* Any unauthorized use of this software without a valid license key
|
||||
* Any unauthorized use of this software without a valid license
|
||||
* is a violation of the license agreement and will be prosecuted by
|
||||
* civil and criminal law.
|
||||
*
|
||||
* @link http://www.oxid-esales.com
|
||||
* @package lang
|
||||
* @copyright (C) OXID eSales AG 2003-2009
|
||||
* @version OXID eShop EE
|
||||
* $Id: lang.php 23594 2009-10-26 13:19:30Z alfonsas $
|
||||
* http://www.shopmodule.com
|
||||
*
|
||||
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
||||
* @author D3 Data Development - Daniel Seifert <ds@shopmodule.com>
|
||||
* @link http://www.oxidmodule.com
|
||||
*/
|
||||
|
||||
$sLangName = 'Deutsch';
|
||||
|
@ -58,7 +58,7 @@ $aLang = array(
|
|||
'D3_GEOIP_METADATA_TITLE' => 'D³ GeoIP Vorauswahl',
|
||||
'D3_GEOIP_METADATA_DESC' => 'Begrüßen Sie Ihre Kunden in seiner Landessprache.',
|
||||
|
||||
'D3_GEOIP_UPDATE_ITEMINSTALL' => 'Die umfangreiche IP-Liste kann leider nicht über die automatische Installation eingebunden werden. Bitte installieren Sie diese manuell. '.PHP_EOL.PHP_EOL.'Die erforderlichen Daten finden Sie im Installationspaket des Moduls unter "setup+doku/geoip-Data_*.sql" oder als handlichere SQL-Dateien unter "setup+doku/geoip_data_parts/". '.PHP_EOL.PHP_EOL.'Sie benötigen entweder die Komplettdatei oder die Sammlung kleinerer Daten. Führen Sie die SQL-Datei(en) bitte in Ihrer Datenbank aus.',
|
||||
'D3_GEOIP_UPDATE_ITEMINSTALL' => 'Die umfangreiche IP-Liste kann leider nicht über die automatische Installation eingebunden werden. Bitte installieren Sie diese manuell. '.PHP_EOL.PHP_EOL.'Die erforderlichen Daten finden Sie im Installationspaket des Moduls unter "setup+doku/geoip-Data_IPv4_*.sql" ("setup+doku/geoip-Data_IPv6_*.sql" für IPv6-Adressen) oder als handlichere SQL-Dateien unter "setup+doku/geoip_data_parts/". '.PHP_EOL.PHP_EOL.'Sie benötigen entweder die Komplettdateien oder die Sammlung kleinerer Daten. Führen Sie die SQL-Datei(en) bitte in Ihrer Datenbank aus.',
|
||||
|
||||
);
|
||||
|
||||
|
|
|
@ -221,7 +221,7 @@ td.edittext {
|
|||
<input class="edittext ext_edittext" type="checkbox" name="value[blUseTestIp]" value='1' [{if $edit->getValue('blUseTestIp') == 1}]checked[{/if}]>
|
||||
</dt>
|
||||
<dd>
|
||||
<input type="text" maxlength="15" size="17" name="value[sTestIp]" value="[{$edit->getValue('sTestIp')}]">
|
||||
<input type="text" maxlength="39" size="17" name="value[sTestIp]" value="[{$edit->getValue('sTestIp')}]">
|
||||
[{ oxinputhelp ident="D3_GEOIP_SET_IP_TESTIP_DESC" }]
|
||||
</dd>
|
||||
<div class="spacer"></div>
|
||||
|
@ -247,7 +247,7 @@ td.edittext {
|
|||
[{oxmultilang ident="D3_GEOIP_SET_IP_CHECKIP"}]
|
||||
</dt>
|
||||
<dd>
|
||||
<input type="text" maxlength="15" size="17" name="value[sCheckIp]" value="[{$edit->getValue('sCheckIp')}]">
|
||||
<input type="text" maxlength="39" size="17" name="value[sCheckIp]" value="[{$edit->getValue('sCheckIp')}]">
|
||||
[{ oxinputhelp ident="D3_GEOIP_SET_IP_CHECKIP_DESC" }]
|
||||
|
||||
[{if $edit->getValue('sCheckIp')}]
|
||||
|
@ -285,4 +285,4 @@ td.edittext {
|
|||
parent.parent.sWorkArea = "[{$_act}]";
|
||||
parent.parent.setTitle();
|
||||
}
|
||||
</script>
|
||||
</script>
|
Binäre Datei nicht angezeigt.
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
|
@ -1,5 +1,8 @@
|
|||
GeoIP Country light
|
||||
|
||||
This product includes GeoLite data created by MaxMind, available from
|
||||
<a href="http://www.maxmind.com">http://www.maxmind.com</a>.
|
||||
|
||||
GeoIp-Data based on GeoIp Country Light by Maxmind (July 2009).
|
||||
These database will be published under GPL3 by Maxmind. Please see www.maxmind.com for updates.
|
||||
|
||||
|
|
Binäre Datei nicht angezeigt.
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
|
@ -0,0 +1,61 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
print "*** GEO-IP Datenrotator Alexander Fehler ***\n\n\n";
|
||||
@Zeilen = ("");
|
||||
open(GEODATA, "<geoip.csv") || die " ******************************************** \n Datei konnte nicht gefuden werden:\n Bitte Ueberpruefen Sie den Pfad. \n\n Die .csv Datei muss im selben Ordner liegen und geoip.csv heissen\n ********************************************\n\n\n";
|
||||
while(<GEODATA>)
|
||||
{
|
||||
$index=0;
|
||||
@string=split(/,/,$_);
|
||||
for(@string)
|
||||
{
|
||||
if($index==0)
|
||||
{
|
||||
$str = "@string[$index]";
|
||||
$index++;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
$str = "$str,@string[$index]";
|
||||
$index++;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
chomp($str);
|
||||
push(@Zeilen_neu,$str);
|
||||
}
|
||||
|
||||
close(GEODATA);
|
||||
print "*** Datei wurde eingelesen und geschlossen *** \n ";
|
||||
print "\n\n";
|
||||
|
||||
print "*** Datei wird zum Schreiben geoeffnet ***\n";
|
||||
open(GEODATASQL, ">geoip.sql"); # SQL-Datei zum Schreiben öffnen
|
||||
$schreib_zaehler=0;
|
||||
for(@Zeilen_neu) # solange Daten in der GEOIP-Liste sind
|
||||
{
|
||||
# print @Zeilen_neu[$schreib_zaehler];
|
||||
#print "\n\n\n\ntest ".$_."\n\n\n\n";
|
||||
print GEODATASQL "INSERT INTO d3geoip VALUES(@Zeilen_neu[$schreib_zaehler]);\n"; # Aktuellen Datensatz schreiben
|
||||
$schreib_zaehler++;
|
||||
}
|
||||
# print GEODATASQL "INSERT INTO d3geoip VALUES(@Zeilen_neu[$schreib_zaehler]);\n"; # Aktuellen Datensatz schreiben
|
||||
close(GEODATASQL);
|
||||
print "\n Es wurden d",$schreib_zaehler," Datensaetze geschrieben\n"; # Nur zur Kontrolle: auf Standardausgabe*/
|
||||
|
||||
|
||||
|
||||
#@string=split(/,/,$string);
|
||||
#$index=0;
|
||||
#for(@string)
|
||||
#{
|
||||
#$str = "$str,@string[$index]";
|
||||
|
||||
#}
|
||||
|
||||
#print $str."\n";
|
||||
#push(@zeile,$str);
|
||||
#print @zeile."\n";
|
||||
|
Binäre Datei nicht angezeigt.
Binäre Datei nicht angezeigt.
|
@ -1,7 +1,4 @@
|
|||
blForceSessionStart nur bei Anwendung von GeoIP
|
||||
statt session auch Fallback auf cookie
|
||||
auch nicht aktive Länder konfigurierbar (um auch nicht erlaubte Zugriffe abzufangen)
|
||||
IP-Syntaxcheck bei Eingabe im Admin
|
||||
MaxMind-CSV-Import
|
||||
|
||||
IPV6-Pflege
|
Laden…
In neuem Issue referenzieren