Mon, 04 Jan 2016 16:27:00 +0000
main, geoip: Add GeoIP lookup support for watcher info
geoip.lua | file | annotate | diff | comparison | revisions | |
main.lua | file | annotate | diff | comparison | revisions |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/geoip.lua Mon Jan 04 16:27:00 2016 +0000 @@ -0,0 +1,24 @@ +pcall(function () + local city_db_path = os.getenv("GEOIP_CITY_DB"); + if not city_db_path then return; end + + local city_db = assert(require "geoip.city".open(city_db_path)); + + events.add_handler("new-client", function (info) + local ip = info.conn:ip(); + local location = city_db:query_by_addr(ip); + if location then + local l = {}; + if location.city_name then + table.insert(l, location.city_name); + end + if location.region then + table.insert(l, location.region); + end + if location.country_name then + table.insert(l, location.country_name); + end + conn.location = table.concat(l, ", "); + end + end); +end)
--- a/main.lua Mon Jan 04 16:23:57 2016 +0000 +++ b/main.lua Mon Jan 04 16:27:00 2016 +0000 @@ -9,6 +9,7 @@ events = require "util.events".new(); require "clients"; +require "geoip"; local function printf(source, level, fmt, ...) return print(source, level, fmt:format(...)); end for _, level in ipairs{"debug", "info", "warn", "error"} do