klkvsk / maxmind-geoip-bundle
Bundle integrating MaxMind GeoIP2 database into symfony application
Installs: 4
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 18
Type:symfony-bundle
Requires
- php: >=7.4
- geoip2/geoip2: ^2.0|^3.0
- symfony/console: ^5.4|^6.0|^7.0
- symfony/dependency-injection: ^5.4|^6.0|^7.0
- symfony/framework-bundle: ^5.4|^6.0|^7.0
This package is auto-updated.
Last update: 2024-11-07 22:10:47 UTC
README
NOTE: this is a fork of https://github.com/cravler/CravlerMaxMindGeoIpBundle Added:
- support for Symfony 7
- support for geoip2/geoip2 v3.x
Installation
Step 1: Download the Bundle
composer require klkvsk/maxmind-geoip-bundle
This command requires you to have Composer installed globally, as explained in the installation chapter of the Composer documentation.
Step 2: Enable the Bundle
This bundle should be automatically enabled by Flex.
In case you don't use Flex, you'll need to manually enable the bundle by
adding the following line in the config/bundles.php
file of your project:
<?php // config/bundles.php return [ // ... Cravler\MaxMindGeoIpBundle\CravlerMaxMindGeoIpBundle::class => ['all' => true], ];
Configuration
The default configuration for the bundle looks like this:
cravler_max_mind_geo_ip: client: user_id: ~ license_key: ~ options: {} path: '%kernel.project_dir%/resources/MaxMind' db: country: 'GeoIP2-Country.mmdb' city: 'GeoIP2-City.mmdb' asn: 'GeoIP2-ASN.mmdb' connection_type: 'GeoIP2-Connection-Type.mmdb' anonymous_ip: 'GeoIP2-Anonymous-IP.mmdb' enterprise: 'GeoIP2-Enterprise.mmdb' domain: 'GeoIP2-Domain.mmdb' isp: 'GeoIP2-ISP.mmdb' source: country: ~ city: ~ asn: ~ connection_type: ~ anonymous_ip: ~ enterprise: ~ domain: ~ isp: ~ md5_check: country: ~ city: ~ asn: ~ connection_type: ~ anonymous_ip: ~ enterprise: ~ domain: ~ isp: ~
If you need a GeoLite2
license:
- Sign up for a MaxMind account (no purchase required)
- Set your password and create a license key
Will this key be used for GeoIP Update? > No
# config/packages/cravler_max_mind_geo_ip.yaml parameters: max_mind.license_key: '<YOUR_LICENSE_KEY>' cravler_max_mind_geo_ip: source: country: 'https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country&suffix=tar.gz&license_key=%max_mind.license_key%' city: 'https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City&suffix=tar.gz&license_key=%max_mind.license_key%' asn: 'https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-ASN&suffix=tar.gz&license_key=%max_mind.license_key%' md5_check: country: 'https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country&suffix=tar.gz.md5&license_key=%max_mind.license_key%' city: 'https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City&suffix=tar.gz.md5&license_key=%max_mind.license_key%' asn: 'https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-ASN&suffix=tar.gz.md5&license_key=%max_mind.license_key%'
If you have bought a license:
# config/packages/cravler_max_mind_geo_ip.yaml parameters: max_mind.user_id: '<YOUR_USER_ID>' max_mind.license_key: '<YOUR_LICENSE_KEY>' cravler_max_mind_geo_ip: client: user_id: '%max_mind.user_id%' license_key: '%max_mind.license_key%' ... source: country: 'https://download.maxmind.com/app/geoip_download?edition_id=GeoIP2-Country&suffix=tar.gz&license_key=%max_mind.license_key%' ... md5_check: country: ~ ...
NB! Do not forget to change your license data.
Download and update the MaxMind GeoIp2 database
php bin/console cravler:maxmind:geoip-update
You can use the --no-md5-check option if you want to skip MD5 check.
php bin/console cravler:maxmind:geoip-update --no-md5-check
How to use
Database Reader
$geoIpService = $container->get('cravler_max_mind_geo_ip.service.geo_ip_service'); // Replace "city" with the appropriate method for your database, e.g., "country". $record = $geoIpService->getRecord('128.101.101.101', 'city'); print($record->country->isoCode . "\n"); // 'US' print($record->country->name . "\n"); // 'United States' print($record->city->name . "\n"); // 'Minneapolis'
Web Service Client
$geoIpService = $container->get('cravler_max_mind_geo_ip.service.geo_ip_service'); $client = $geoIpService->getClient(); $record = $client->city('128.101.101.101');
License
This bundle is under the MIT license. See the complete license in the bundle:
LICENSE