Mon, 04 Jan 2016 17:09:20 +0000
main: Move loading of clients+geoip to after logging initialization
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 | 5 | if not city_db_path then |
6 | log("debug", "GEOIP_CITY_DB not set"); | |
7 | return; | |
8 | end | |
16
d35376a53644
main, geoip: Add GeoIP lookup support for watcher info
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
9 | |
20 | 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 | 12 | log("debug", "Loaded geoip database successfully"); |
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) |
23
aeaef24372ef
geoip: Use IP from X-Forwarded-For if it exists
Matthew Wild <mwild1@gmail.com>
parents:
22
diff
changeset
|
15 | local ip = info.request.headers.x_forwarded_for or info.conn:ip(); |
21 | 16 | log("debug", "GeoIP query for %s", tostring(ip)); |
17 | 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
|
18 | if location then |
d35376a53644
main, geoip: Add GeoIP lookup support for watcher info
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
19 | local l = {}; |
d35376a53644
main, geoip: Add GeoIP lookup support for watcher info
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
20 | if location.city_name then |
d35376a53644
main, geoip: Add GeoIP lookup support for watcher info
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
21 | table.insert(l, location.city_name); |
d35376a53644
main, geoip: Add GeoIP lookup support for watcher info
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
22 | end |
d35376a53644
main, geoip: Add GeoIP lookup support for watcher info
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
23 | if location.region then |
d35376a53644
main, geoip: Add GeoIP lookup support for watcher info
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
24 | table.insert(l, location.region); |
d35376a53644
main, geoip: Add GeoIP lookup support for watcher info
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
25 | end |
d35376a53644
main, geoip: Add GeoIP lookup support for watcher info
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
26 | if location.country_name then |
d35376a53644
main, geoip: Add GeoIP lookup support for watcher info
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
27 | table.insert(l, location.country_name); |
d35376a53644
main, geoip: Add GeoIP lookup support for watcher info
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
28 | end |
22
67c2b47a00c7
geoip: Correctly set location
Matthew Wild <mwild1@gmail.com>
parents:
21
diff
changeset
|
29 | info.conn.location = table.concat(l, ", "); |
20 | 30 | else |
31 | 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
|
32 | end |
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) |
19
fd7b581560d5
Add error logging when loading geoip
Matthew Wild <mwild1@gmail.com>
parents:
16
diff
changeset
|
35 | |
fd7b581560d5
Add error logging when loading geoip
Matthew Wild <mwild1@gmail.com>
parents:
16
diff
changeset
|
36 | if not ok then |
fd7b581560d5
Add error logging when loading geoip
Matthew Wild <mwild1@gmail.com>
parents:
16
diff
changeset
|
37 | log("warn", "GeoIP loading failed: %s", tostring(err)); |
fd7b581560d5
Add error logging when loading geoip
Matthew Wild <mwild1@gmail.com>
parents:
16
diff
changeset
|
38 | end |