File: example.lua

package info (click to toggle)
lua-mmdb 0.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 112 kB
  • sloc: makefile: 6
file content (30 lines) | stat: -rw-r--r-- 832 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
-- Simple pretty printer
local function pp(ob, indent, stream)
	stream = stream or io.stderr
	if type(ob) == "table" then
		indent = indent or 0
		stream:write("{\n")
		do
			for k,v in pairs(ob) do
				stream:write(("\t"):rep(indent+1), k, " = ")
				pp(v, indent+1)
			end
		end
		assert(stream:write(("\t"):rep(indent), "}\n"))
	elseif type(ob) == "string" then
		assert(stream:write(string.format("%q\n", ob)))
	else
		assert(stream:write(tostring(ob), "\n"))
	end
end

-- Download from http://dev.maxmind.com/geoip/geoip2/geolite2/
local mmdb = require "mmdb"
local geodb = assert(mmdb.read("GeoLite2-City.mmdb"))

if arg[1] then
	pp(geodb:search_ipv4(arg[1]))
else
	pp(geodb:search_ipv4 "213.215.63.11") -- french hotel near lua workshop 2013
	pp(geodb:search_ipv6 "2607:f8b0:4004:801::100e") -- google.com for me one day
end