Difference between revisions of "GeoIP"
m |
m (→GeoIP install) |
||
(One intermediate revision by the same user not shown) | |||
Line 13: | Line 13: | ||
GeoIP City Edition, Rev 1: BE, 02, Ixelles, (null), 50.833302, 4.366700, 0, 0 |
GeoIP City Edition, Rev 1: BE, 02, Ixelles, (null), 50.833302, 4.366700, 0, 0 |
||
GeoIP City Edition, Rev 0: BE, 02, Ixelles, (null), 50.833302, 4.366700 |
GeoIP City Edition, Rev 0: BE, 02, Ixelles, (null), 50.833302, 4.366700 |
||
+ | For more precise localisation, you can try [http://www.maxmind.com/app/locate_ip the online demo] |
||
+ | |||
==Usage with AWFFull== |
==Usage with AWFFull== |
||
cf [[AWFFull]] page |
cf [[AWFFull]] page |
||
Line 37: | Line 39: | ||
==Usage with Zope== |
==Usage with Zope== |
||
− | cf [[Zope]] |
+ | cf [[Zope]] page |
First import the database on your MySQL db as <db_name>.csv [http://www.delau.net/php/geoip.html as descibed here] |
First import the database on your MySQL db as <db_name>.csv [http://www.delau.net/php/geoip.html as descibed here] |
||
− | Add a Python Script in zope (e.g. geoip): |
+ | <br>Add a Python Script in zope (e.g. geoip): |
from Products.PythonScripts.standard import html_quote |
from Products.PythonScripts.standard import html_quote |
||
request = container.REQUEST |
request = container.REQUEST |
Latest revision as of 16:49, 15 December 2006
GeoIP install
apt-get install geoip-bin
To get city level geolocalisation we can get the free city db:
mkdir /usr/local/share/GeoIP cd /usr/local/share/GeoIP wget http://www.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz gunzip GeoLiteCity.dat.gz ln -s /usr/local/share/GeoIP/GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat
geoiplookup 85.234.207.107 GeoIP Country Edition: BE, Belgium GeoIP City Edition, Rev 1: BE, 02, Ixelles, (null), 50.833302, 4.366700, 0, 0 GeoIP City Edition, Rev 0: BE, 02, Ixelles, (null), 50.833302, 4.366700
For more precise localisation, you can try the online demo
Usage with AWFFull
cf AWFFull page
in /etc/awffull/awffull.conf:
GeoIP yes
Actually awffull is not compiled with GeoIP support but we can rebuild the package
awffull -v (interrupt it, it's at the beginning) => GeoIP is not available in this binary. Ignoring request to use.
ok, don't be impressed ;-)
the building process of awffull is pretty well done, if it detects the headers of GeoIP it uses it, as simply as that.
apt-get build-dep awffull apt-get source awffull cd awffull-3.7.1/ apt-get install libgeoip1 libgeoip-dev dpkg-buildpackage -uc -b
Et voilà! You can install the new .deb freshly created.
Now you can run it, it will give e.g.
awffull -v => awffull 3.7.1 (Linux 2.6.17-2-vserver-amd64) English => Using GeoIP for IP Address Lookups: /usr/share/GeoIP/GeoIP.dat
One bad point: we didn't fix the dependancies of our new package, for a local use this is ok but for larger use we should have added the libgeoip1 package in the list of dependencies of awffull.
Usage with Zope
cf Zope page
First import the database on your MySQL db as <db_name>.csv as descibed here
Add a Python Script in zope (e.g. geoip):
from Products.PythonScripts.standard import html_quote request = container.REQUEST RESPONSE = request.RESPONSE ip = context.REQUEST.REMOTE_ADDR line = string.split(ip,'.') ip0 = line[0] ip1 = line[1] ip2 = line[2] ip3 = line[3] ipnum = int(ip0) * 16777216 + int(ip1) * 65536 + int(ip2) * 256 + int(ip3) * 1 print ipnum return printed
Add a Z Mysql Method (e.g. select_GeoIP) with as Arguments ipnum
SELECT cn from <db_name>.csv where start < <dtml-sqlvar ipnum type="string"> and end > <dtml-sqlvar ipnum type="string">
In a DTML Method, test :
<dtml-in expr="select_GeoIPs(ipnum=geoip())">Hoo, you are from <dtml-var cn>, Welcome !</dtml-in>
Same for latitude and longitude of the country Country Geolocalization