* Copyright (C) 2011-2013 Juanjo Menent * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ /** * \file htdocs/admin/geoipmaxmind.php * \ingroup geoipmaxmind * \brief Setup page for geoipmaxmind module */ // Load Dolibarr environment require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/dolgeoip.class.php'; // Security check if (!$user->admin) { accessforbidden(); } // Load translation files required by the page $langs->loadLangs(array("admin", "errors")); $action = GETPOST('action', 'aZ09'); /* * Actions */ if ($action == 'set') { $error = 0; $gimcdf = GETPOST("GEOIPMAXMIND_COUNTRY_DATAFILE"); if (!$error && $gimcdf && !preg_match('/\.(dat|mmdb)$/', $gimcdf)) { setEventMessages($langs->trans("ErrorFileMustHaveFormat", '.dat|.mmdb'), null, 'errors'); $error++; } $res1 = dolibarr_set_const($db, "GEOIP_VERSION", GETPOST('geoipversion', 'aZ09'), 'chaine', 0, '', $conf->entity); if (!($res1 > 0)) { $error++; } $res2 = dolibarr_set_const($db, "GEOIPMAXMIND_COUNTRY_DATAFILE", $gimcdf, 'chaine', 0, '', $conf->entity); if (!($res2 > 0)) { $error++; } if (!$error) { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } else { //setEventMessages($langs->trans("Error"), null, 'errors'); } } if (!isset($conf->global->GEOIP_VERSION)) { $conf->global->GEOIP_VERSION = '2'; } /* * View */ $form = new Form($db); llxHeader('', '', '', '', 0, 0, '', '', '', 'mod-admin page-geoipmaxmind'); $linkback = ''.$langs->trans("BackToModuleList").''; print load_fiche_titre($langs->trans("GeoIPMaxmindSetup"), $linkback, 'title_setup'); print '
'; $version = ''; $geoip = ''; if (getDolGlobalString('GEOIPMAXMIND_COUNTRY_DATAFILE')) { $geoip = new DolGeoIP('country', $conf->global->GEOIPMAXMIND_COUNTRY_DATAFILE); } // Mode print '
'; print ''; print ''; print ''; print ''; print ''; print ''; print "\n"; // Lib version print ''; print ''; print ''; $gimcdf = getDolGlobalString('GEOIPMAXMIND_COUNTRY_DATAFILE'); // Path to database file print ''; print ''; print '
'.$langs->trans("Parameter").''.$langs->trans("Value").'
'.$langs->trans("GeoIPLibVersion").''; $arrayofvalues = array('php' => 'Native PHP functions', '1' => 'Embedded GeoIP v1', '2' => 'Embedded GeoIP v2'); print $form->selectarray('geoipversion', $arrayofvalues, (isset($conf->global->GEOIP_VERSION) ? $conf->global->GEOIP_VERSION : '2')); if (getDolGlobalString('GEOIP_VERSION') == 'php') { if ($geoip) { $version = $geoip->getVersion(); } if ($version) { print '
'.$langs->trans("Version").': '.$version; } } print '
'; print '
'.$langs->trans("PathToGeoIPMaxmindCountryDataFile").''; if (getDolGlobalString('GEOIP_VERSION') == 'php') { print 'Using geoip PHP internal functions. Value must be '.geoip_db_filename(GEOIP_COUNTRY_EDITION).' or '.geoip_db_filename(GEOIP_CITY_EDITION_REV1).' or /pathtodatafile/GeoLite2-Country.mmdb
'; } print ''; if (!file_exists($gimcdf)) { print '
'.$langs->trans("ErrorFileNotFound", $gimcdf).'
'; } print '
'; print ''; print $langs->trans("Example").'
'; print '/usr/local/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoLite2-Country.mmdb'; print '
'; print '
'; print "
\n"; print '
'; print $langs->trans("NoteOnPathLocation").'
'; $url1 = 'http://www.maxmind.com/en/city?rId=awstats'; $textoshow = $langs->trans("YouCanDownloadFreeDatFileTo", '{s1}'); $textoshow = str_replace('{s1}', ''.$url1.'', $textoshow); print $textoshow; print '
'; $url2 = 'http://www.maxmind.com/en/city?rId=awstats'; $textoshow = $langs->trans("YouCanDownloadAdvancedDatFileTo", '{s1}'); $textoshow = str_replace('{s1}', ''.$url2.'', $textoshow); print $textoshow; if ($geoip) { print '
'; print ''; print '

'; print '
'.$langs->trans("TestGeoIPResult", $ip).':'; $ip = '24.24.24.24'; print '
'.$ip.' -> '; $result = dol_print_ip($ip, 1); if ($result) { print $result; } else { print $langs->trans("Error"); } $ip = '2a01:e0a:7e:4a60:429a:23ff:f7b8:dc8a'; // should be France print '
'.$ip.' -> '; $result = dol_print_ip($ip, 1); if ($result) { print $result; } else { print $langs->trans("Error"); } /* We disable this test because dol_print_ip need an ip as input $ip='www.google.com'; print '
'.$ip.' -> '; $result=dol_print_ip($ip,1); if ($result) print $result; else print $langs->trans("Error"); */ //var_dump($_SERVER); $ip = getUserRemoteIP(); //$ip='91.161.249.43'; $isip = is_ip($ip); if ($isip == 1) { print '
'.$ip.' -> '; $result = dol_print_ip($ip, 1); if ($result) { print $result; } else { print $langs->trans("Error"); } } else { print '
'.$ip.' -> '; $result = dol_print_ip($ip, 1); if ($result) { print $result; } else { print $langs->trans("NotAPublicIp"); } } $ip = GETPOST("iptotest"); print '
'; print ''; if ($ip) { $result = dol_print_ip($ip, 1); if ($result) { print $result; } else { print $langs->trans("Error"); } } print '
'; $geoip->close(); } // End of page llxFooter(); $db->close();