Mercurial > prosody-modules
annotate mod_stanza_counter/mod_stanza_counter_http.lua @ 5298:12f7d8b901e0
mod_audit: Support for adding location (GeoIP) to audit events
This can be more privacy-friendly than logging full IP addresses, and also
more informative to a user - IP addresses don't mean much to the average
person, however if they see activity from outside their expected country, they
can immediately identify suspicious activity.
As with IPs, this field is configurable for deployments that would like to
disable it. Location is also not logged when the geoip library is not
available.
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Sat, 01 Apr 2023 13:11:53 +0100 |
parents | 7dbde05b48a9 |
children |
rev | line source |
---|---|
436
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
1 -- (C) 2011, Marco Cirillo (LW.Org) |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
2 -- Exposes stats on HTTP for the stanza counter module. |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
3 |
650
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
4 module:depends("http") |
436
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
5 |
678
429be98872dc
mod_stanza_counter_http: change the skipped get_option_array to get_option_string it was supposed to.
Marco Cirillo <maranda@lightwitch.org>
parents:
659
diff
changeset
|
6 local base_path = module:get_option_string("stanza_counter_basepath", "/stanza-counter/") |
436
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
7 |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
8 -- http handlers |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
9 |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
10 local r_200 = "\n<html>\n<head>\n<title>Prosody's Stanza Counter</title>\n<meta name=\"robots\" content=\"noindex, nofollow\" />\n</head>\n\n<body>\n<h3>Incoming and Outgoing stanzas divided per type</h3>\n<p><strong>Incoming IQs</strong>: %d<br/>\n<strong>Outgoing IQs</strong>: %d<br/>\n<strong>Incoming Messages</strong>: %d<br/>\n<strong>Outgoing Messages</strong>: %d<br/>\n<strong>Incoming Presences</strong>: %d<br/>\n<strong>Outgoing Presences</strong>: %d<p>\n</body>\n\n</html>\n" |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
11 |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
12 local r_err = "\n<html>\n<head>\n<title>Prosody's Stanza Counter - Error %s</title>\n<meta name=\"robots\" content=\"noindex, nofollow\" />\n</head>\n\n<body>\n<h3>%s</h3>\n</body>\n\n</html>\n" |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
13 |
650
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
14 local function res(event, code, body, extras) |
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
15 local response = event.response |
1343
7dbde05b48a9
all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
678
diff
changeset
|
16 |
650
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
17 if extras then |
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
18 for header, data in pairs(extras) do response.headers[header] = data end |
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
19 end |
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
20 |
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
21 response.status_code = code |
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
22 response:send(body) |
436
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
23 end |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
24 |
650
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
25 local function req(event) |
436
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
26 if not prosody.stanza_counter then |
650
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
27 local err500 = r_err:format(event, 500, "Stats not found, is the counter module loaded?") |
437
78a2a6b2bea3
mod_stanza_counter: missing end.
Marco Cirillo <maranda@lightwitch.org>
parents:
436
diff
changeset
|
28 return res(500, err500) end |
436
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
29 if method == "GET" then |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
30 local forge_res = r_200:format(prosody.stanza_counter.iq["incoming"], |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
31 prosody.stanza_counter.iq["outgoing"], |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
32 prosody.stanza_counter.message["incoming"], |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
33 prosody.stanza_counter.message["outgoing"], |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
34 prosody.stanza_counter.presence["incoming"], |
535
39c7115be370
mod_stanza_counter_http: replaced prosody.events.add_handler with module:hook.
Marco Cirillo <maranda@lightwitch.org>
parents:
518
diff
changeset
|
35 prosody.stanza_counter.presence["outgoing"]) |
650
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
36 return res(event, 200, forge_res) |
436
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
37 else |
650
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
38 local err405 = r_err:format(405, "Only GET is supported") |
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
39 return res(event, 405, err405, {["Allow"] = "GET"}) |
436
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
40 end |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
41 end |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
42 |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
43 -- initialization. |
562
b3f8435e661c
mod_stanza_counter_http: added cleanup function (from mod_register_json)
Marco Cirillo <maranda@lightwitch.org>
parents:
535
diff
changeset
|
44 |
650
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
45 module:provides("http", { |
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
46 default_path = base_path, |
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
47 route = { |
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
48 ["GET /"] = req, |
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
49 ["POST /"] = req |
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
50 } |
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
51 }) |