Mercurial > prosody-modules
annotate mod_http_logging/mod_http_logging.lua @ 2670:6e01878103c0
mod_smacks: Ignore user when writing or reading session_cache on prosody 0.9
At least under some circumstances it seems that session.username is nil when
a user tries to resume his session in prosody 0.9.
The username is not relevant when no limiting is done (limiting the number of
entries in the session cache is only possible in prosody 0.10), so this
commit removes the usage of the username when accessing the prosody 0.9 session
cache.
author | tmolitor <thilo@eightysoft.de> |
---|---|
date | Thu, 06 Apr 2017 02:12:14 +0200 |
parents | 88fec2b2bd58 |
children | 557c976735e1 |
rev | line source |
---|---|
1882
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
1 -- mod_http_logging |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
2 -- |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
3 -- Copyright (C) 2015 Kim Alvefur |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
4 -- |
1883 | 5 -- This project is MIT/X11 licensed. Please see the |
6 -- COPYING file in the source package for more information. | |
7 -- | |
1882
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
8 -- Produces HTTP logs in the style of Apache |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
9 -- |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
10 -- TODO |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
11 -- * Configurable format? |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
12 |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
13 module:set_global(); |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
14 |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
15 local server = require "net.http.server"; |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
16 |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
17 local send_response = server.send_response; |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
18 local function log_and_send_response(response, body) |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
19 if not response.finished then |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
20 body = body or response.body; |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
21 local len = body and #body or "-"; |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
22 local request = response.request; |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
23 local ip = request.conn:ip(); |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
24 local req = string.format("%s %s HTTP/%s", request.method, request.path, request.httpversion); |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
25 local date = os.date("%d/%m/%Y:%H:%M:%S %z"); |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
26 module:log("info", "%s - - [%s] \"%s\" %d %s", ip, date, req, response.status_code, tostring(len)); |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
27 end |
2163
88fec2b2bd58
mod_http_logging: Fix endless loop on 0.9.x (Thanks Mint)
Kim Alvefur <zash@zash.se>
parents:
1883
diff
changeset
|
28 return send_response(response, body); |
1882
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
29 end |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
30 |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
31 if module.wrap_object_event then |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
32 -- Use object event wrapping, allows clean unloading of the module |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
33 module:wrap_object_event(server._events, false, function (handlers, event_name, event_data) |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
34 if event_data.response then |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
35 event_data.response.send = log_and_send_response; |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
36 end |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
37 return handlers(event_name, event_data); |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
38 end); |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
39 else |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
40 -- Fall back to monkeypatching, unlikely to behave nicely in the |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
41 -- presence of other modules also doing this |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
42 server.send_response = log_and_send_response; |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
43 function module.unload() |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
44 server.send_response = send_response; |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
45 end |
99863a6a7b8c
mod_http_logging: Produce HTTP logs in the style of Apache
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
46 end |