geoip.lua

Mon, 04 Jan 2016 17:07:51 +0000

author
Matthew Wild <mwild1@gmail.com>
date
Mon, 04 Jan 2016 17:07:51 +0000
changeset 21
3a89f5722626
parent 20
fed4cf6b1f43
child 22
67c2b47a00c7
permissions
-rw-r--r--

geoip: Logging fix

19
fd7b581560d5 Add error logging when loading geoip
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
1 local log = require "util.logger".init("geoip");
fd7b581560d5 Add error logging when loading geoip
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
2
fd7b581560d5 Add error logging when loading geoip
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
3 local ok, err = pcall(function ()
16
d35376a53644 main, geoip: Add GeoIP lookup support for watcher info
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4 local city_db_path = os.getenv("GEOIP_CITY_DB");
20
fed4cf6b1f43 geoip: Improved logging
Matthew Wild <mwild1@gmail.com>
parents: 19
diff changeset
5 if not city_db_path then
fed4cf6b1f43 geoip: Improved logging
Matthew Wild <mwild1@gmail.com>
parents: 19
diff changeset
6 log("debug", "GEOIP_CITY_DB not set");
fed4cf6b1f43 geoip: Improved logging
Matthew Wild <mwild1@gmail.com>
parents: 19
diff changeset
7 return;
fed4cf6b1f43 geoip: Improved logging
Matthew Wild <mwild1@gmail.com>
parents: 19
diff changeset
8 end
16
d35376a53644 main, geoip: Add GeoIP lookup support for watcher info
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9
20
fed4cf6b1f43 geoip: Improved logging
Matthew Wild <mwild1@gmail.com>
parents: 19
diff changeset
10 log("debug", "Loading geoip database");
16
d35376a53644 main, geoip: Add GeoIP lookup support for watcher info
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11 local city_db = assert(require "geoip.city".open(city_db_path));
20
fed4cf6b1f43 geoip: Improved logging
Matthew Wild <mwild1@gmail.com>
parents: 19
diff changeset
12 log("debug", "Loaded geoip database successfully");
fed4cf6b1f43 geoip: Improved logging
Matthew Wild <mwild1@gmail.com>
parents: 19
diff changeset
13
16
d35376a53644 main, geoip: Add GeoIP lookup support for watcher info
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
14 events.add_handler("new-client", function (info)
d35376a53644 main, geoip: Add GeoIP lookup support for watcher info
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
15 local ip = info.conn:ip();
d35376a53644 main, geoip: Add GeoIP lookup support for watcher info
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
16 local location = city_db:query_by_addr(ip);
21
3a89f5722626 geoip: Logging fix
Matthew Wild <mwild1@gmail.com>
parents: 20
diff changeset
17 log("debug", "GeoIP query for %s", tostring(ip));
3a89f5722626 geoip: Logging fix
Matthew Wild <mwild1@gmail.com>
parents: 20
diff changeset
18 local location, err = city_db:query_by_addr(ip);
16
d35376a53644 main, geoip: Add GeoIP lookup support for watcher info
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
19 if location then
d35376a53644 main, geoip: Add GeoIP lookup support for watcher info
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
20 local l = {};
d35376a53644 main, geoip: Add GeoIP lookup support for watcher info
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
21 if location.city_name then
d35376a53644 main, geoip: Add GeoIP lookup support for watcher info
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
22 table.insert(l, location.city_name);
d35376a53644 main, geoip: Add GeoIP lookup support for watcher info
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
23 end
d35376a53644 main, geoip: Add GeoIP lookup support for watcher info
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
24 if location.region then
d35376a53644 main, geoip: Add GeoIP lookup support for watcher info
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
25 table.insert(l, location.region);
d35376a53644 main, geoip: Add GeoIP lookup support for watcher info
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
26 end
d35376a53644 main, geoip: Add GeoIP lookup support for watcher info
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
27 if location.country_name then
d35376a53644 main, geoip: Add GeoIP lookup support for watcher info
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
28 table.insert(l, location.country_name);
d35376a53644 main, geoip: Add GeoIP lookup support for watcher info
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
29 end
d35376a53644 main, geoip: Add GeoIP lookup support for watcher info
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
30 conn.location = table.concat(l, ", ");
20
fed4cf6b1f43 geoip: Improved logging
Matthew Wild <mwild1@gmail.com>
parents: 19
diff changeset
31 else
fed4cf6b1f43 geoip: Improved logging
Matthew Wild <mwild1@gmail.com>
parents: 19
diff changeset
32 log("debug", "Failed to find location for IP %q: %s", tostring(ip), tostring(err));
16
d35376a53644 main, geoip: Add GeoIP lookup support for watcher info
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
33 end
d35376a53644 main, geoip: Add GeoIP lookup support for watcher info
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
34 end);
d35376a53644 main, geoip: Add GeoIP lookup support for watcher info
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
35 end)
19
fd7b581560d5 Add error logging when loading geoip
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
36
fd7b581560d5 Add error logging when loading geoip
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
37 if not ok then
fd7b581560d5 Add error logging when loading geoip
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
38 log("warn", "GeoIP loading failed: %s", tostring(err));
fd7b581560d5 Add error logging when loading geoip
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
39 end

mercurial