#!/bin/bash
geoip_dir='/home/username/geoip2';
dat_file_url='https://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz';
# Se rend dans le dossier renseigné par la variable "geoip_dir"
cd $geoip_dir;
# Télécharge l'archive de la base zippée
/usr/bin/wget $dat_file_url;
# Sauvegarde la base actuelle et la renomme en ".bak"
mv -f GeoLite2-City.mmdb GeoLite2-City.mmdb.bak
# Décompresse l'archive nouvellement téléchargée
tar xvzf GeoLite2-City.tar.gz
# Déplace la base depuis le nouveau répertoire "GeoLite2-City_XXXXX" vers la racine du projet (geoip2)
mv ./GeoLite2-City*/GeoLite2-City.mmdb ./GeoLite2-City.mmdb
# Grand nettoyage: répertoire décompressé et archive
rm -rf ./GeoLite2-City*/
rm -f GeoLite2-City.tar.gz
chmod +x geoip2.sh
crontab -e
# Dans crontab taper la commande suivante:
5 8 * * 3 [ `date +\%d` -le 7 ] && /home/username/geoip2.sh >> /var/log/GeoIP2.log 2>&1
# Ctrl + 'x' pour quitter crontab et 'O' ou 'Y' pour sauvegarder et installer l'instruction
# Se placer dans le répertoire racine du projet
cd geoip2
#Télécharger Composer et l'exécuter dans votre nouveau répertoire (ici geoip2)
curl -sS https://getcomposer.org/installer | php
# vous devriez trouver un fichier "composer.phar" dans votre répertoire
# Installation des dépendances
php composer.phar require geoip2/geoip2:~2.0
# Vous devriez maintenant trouver les fichiers "composer.json" et "composer.lock" ainsi que le répertoire "vendor"
<?phprequire_once __DIR__ .'/vendor/autoload.php';
use GeoIp2\Database\Reader;
// Crée une instance du reader que nous pourrons utiliser
$reader = new Reader(__DIR__ .'/GeoLite2-City.mmdb');
// Remplacer "city" par la méthode de votre base de données (ex: "country").
$record = $reader->city($_SERVER['REMOTE_ADDR']);
?>
$record->country->isoCode =><?=$record->country->isoCode?><br />
$record->country->name =><?=$record->country->name?><br />
$record->country->names['zh-CN'] =><?=$record->country->names['zh-CN']?><br />
$record->mostSpecificSubdivision->name =><?=$record->mostSpecificSubdivision->name?><br />
$record->mostSpecificSubdivision->isoCode =><?=$record->mostSpecificSubdivision->isoCode?><br />
$record->city->name =><?=$record->city->name?><br />
$record->postal->code =><?=$record->postal->code?><br />
$record->location->latitude =><?=$record->location->latitude?><br />
$record->location->longitude =><?=$record->location->longitude?><br />
Si tout c'est bien déroulé, vous devriez obtenir un résultat tel que celui-ci dans votre navigateur.
<?php
require_once __DIR__ .'/vendor/autoload.php';
use GeoIp2\Database\Reader;
// Crée une instance du reader qui va générer les noms en français avec un fallback en anglais
$reader = new Reader(__DIR__ .'/GeoLite2-City.mmdb',array('fr','en'));
// Crée une instance du reader qui va générer les noms en espagnol avec un fallback en portugais
$reader = new Reader(__DIR__ .'/GeoLite2-City.mmdb',array('es','pt'));