-
-
Notifications
You must be signed in to change notification settings - Fork 9
/
example.lua
30 lines (28 loc) · 832 Bytes
/
example.lua
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