Software /
code /
prosody
Annotate
plugins/mod_scansion_record.lua @ 10446:5c2d1b13537c
util.stanza: Support the 'by' attribute on errors
This is to be used when the entity generating the error is not the same
as the one the stanza was directed to, e.g. an intermediate server.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Mon, 25 Nov 2019 20:59:36 +0100 |
parent | 9619:7172077c0a53 |
child | 10718:d229e4d31598 |
rev | line source |
---|---|
9344
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
1 local names = { "Romeo", "Juliet", "Mercutio", "Tybalt", "Benvolio" }; |
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
2 local devices = { "", "phone", "laptop", "tablet", "toaster", "fridge", "shoe" }; |
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
3 local users = {}; |
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
4 |
9355
a31e0d549b74
mod_scansion_record: Import util.filters
Kim Alvefur <zash@zash.se>
parents:
9354
diff
changeset
|
5 local filters = require "util.filters"; |
9344
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
6 local id = require "util.id"; |
9365
acb316319dc0
mod_scansion_record: Generate a header with hostname and timestamp
Kim Alvefur <zash@zash.se>
parents:
9364
diff
changeset
|
7 local dt = require "util.datetime"; |
9361
3620f7b3517b
mod_scansion_record: Split up construction of filename for reuse of parts later
Kim Alvefur <zash@zash.se>
parents:
9360
diff
changeset
|
8 local dm = require "util.datamanager"; |
9618
d6e6e1fb7ef0
mod_scansion_record: Discard from/to where these are implicitly the sessions full JID
Kim Alvefur <zash@zash.se>
parents:
9373
diff
changeset
|
9 local st = require "util.stanza"; |
9344
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
10 |
9361
3620f7b3517b
mod_scansion_record: Split up construction of filename for reuse of parts later
Kim Alvefur <zash@zash.se>
parents:
9360
diff
changeset
|
11 local record_id = id.medium():lower(); |
3620f7b3517b
mod_scansion_record: Split up construction of filename for reuse of parts later
Kim Alvefur <zash@zash.se>
parents:
9360
diff
changeset
|
12 local record_date = os.date("%Y%b%d"):lower(); |
9369
dd452f932b67
mod_scansion_record: Merge header and log into one file at shutdown
Kim Alvefur <zash@zash.se>
parents:
9368
diff
changeset
|
13 local header_file = dm.getpath(record_id, "scansion", record_date, "scs", true); |
dd452f932b67
mod_scansion_record: Merge header and log into one file at shutdown
Kim Alvefur <zash@zash.se>
parents:
9368
diff
changeset
|
14 local record_file = dm.getpath(record_id, "scansion", record_date, "log", true); |
9344
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
15 |
9364
62f9127ab493
mod_scansion_record: Open a related file for header entries
Kim Alvefur <zash@zash.se>
parents:
9363
diff
changeset
|
16 local head = io.open(header_file, "w"); |
9369
dd452f932b67
mod_scansion_record: Merge header and log into one file at shutdown
Kim Alvefur <zash@zash.se>
parents:
9368
diff
changeset
|
17 local scan = io.open(record_file, "w+"); |
9346
2946f2bd2bb5
mod_scansion_record: Open log file
Kim Alvefur <zash@zash.se>
parents:
9345
diff
changeset
|
18 |
9344
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
19 local function record(string) |
9357
0ae20fb3d4c6
mod_scansion_record: Rename main file handle
Kim Alvefur <zash@zash.se>
parents:
9356
diff
changeset
|
20 scan:write(string); |
9348
e1de3245c696
mod_scansion_record: Finish function for writing data
Kim Alvefur <zash@zash.se>
parents:
9347
diff
changeset
|
21 end |
9344
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
22 |
9364
62f9127ab493
mod_scansion_record: Open a related file for header entries
Kim Alvefur <zash@zash.se>
parents:
9363
diff
changeset
|
23 local function record_header(string) |
62f9127ab493
mod_scansion_record: Open a related file for header entries
Kim Alvefur <zash@zash.se>
parents:
9363
diff
changeset
|
24 head:write(string); |
62f9127ab493
mod_scansion_record: Open a related file for header entries
Kim Alvefur <zash@zash.se>
parents:
9363
diff
changeset
|
25 end |
62f9127ab493
mod_scansion_record: Open a related file for header entries
Kim Alvefur <zash@zash.se>
parents:
9363
diff
changeset
|
26 |
9368
0c5177738ffd
mod_scansion_record: Record connected clients as scansion Objects declarations
Kim Alvefur <zash@zash.se>
parents:
9367
diff
changeset
|
27 local function record_object(class, name, props) |
0c5177738ffd
mod_scansion_record: Record connected clients as scansion Objects declarations
Kim Alvefur <zash@zash.se>
parents:
9367
diff
changeset
|
28 head:write(("[%s] %s\n"):format(class, name)); |
0c5177738ffd
mod_scansion_record: Record connected clients as scansion Objects declarations
Kim Alvefur <zash@zash.se>
parents:
9367
diff
changeset
|
29 for k,v in pairs(props) do |
0c5177738ffd
mod_scansion_record: Record connected clients as scansion Objects declarations
Kim Alvefur <zash@zash.se>
parents:
9367
diff
changeset
|
30 head:write(("\t%s: %s\n"):format(k, v)); |
0c5177738ffd
mod_scansion_record: Record connected clients as scansion Objects declarations
Kim Alvefur <zash@zash.se>
parents:
9367
diff
changeset
|
31 end |
0c5177738ffd
mod_scansion_record: Record connected clients as scansion Objects declarations
Kim Alvefur <zash@zash.se>
parents:
9367
diff
changeset
|
32 head:write("\n"); |
0c5177738ffd
mod_scansion_record: Record connected clients as scansion Objects declarations
Kim Alvefur <zash@zash.se>
parents:
9367
diff
changeset
|
33 end |
0c5177738ffd
mod_scansion_record: Record connected clients as scansion Objects declarations
Kim Alvefur <zash@zash.se>
parents:
9367
diff
changeset
|
34 |
9344
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
35 local function record_event(session, event) |
9351
b37f131d68c2
mod_scansion_record: Complete stanza recording functions
Kim Alvefur <zash@zash.se>
parents:
9350
diff
changeset
|
36 record(session.scansion_id.." "..event.."\n\n"); |
9344
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
37 end |
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
38 |
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
39 local function record_stanza(stanza, session, verb) |
9619
7172077c0a53
mod_scansion_record: Split stanzas into multiple lines
Kim Alvefur <zash@zash.se>
parents:
9618
diff
changeset
|
40 local flattened = tostring(stanza):gsub("><", ">\n\t<"); |
7172077c0a53
mod_scansion_record: Split stanzas into multiple lines
Kim Alvefur <zash@zash.se>
parents:
9618
diff
changeset
|
41 -- TODO Proper prettyprinting with indentation |
7172077c0a53
mod_scansion_record: Split stanzas into multiple lines
Kim Alvefur <zash@zash.se>
parents:
9618
diff
changeset
|
42 record(session.scansion_id.." "..verb..":\n\t"..flattened.."\n\n"); |
9344
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
43 end |
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
44 |
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
45 local function record_stanza_in(stanza, session) |
9358
bbc24fc734da
mod_scansion_record: Only record stanzas in the default namespace
Kim Alvefur <zash@zash.se>
parents:
9357
diff
changeset
|
46 if stanza.attr.xmlns == nil then |
9618
d6e6e1fb7ef0
mod_scansion_record: Discard from/to where these are implicitly the sessions full JID
Kim Alvefur <zash@zash.se>
parents:
9373
diff
changeset
|
47 local copy = st.clone(stanza); |
d6e6e1fb7ef0
mod_scansion_record: Discard from/to where these are implicitly the sessions full JID
Kim Alvefur <zash@zash.se>
parents:
9373
diff
changeset
|
48 copy.attr.from = nil; |
d6e6e1fb7ef0
mod_scansion_record: Discard from/to where these are implicitly the sessions full JID
Kim Alvefur <zash@zash.se>
parents:
9373
diff
changeset
|
49 record_stanza(copy, session, "sends") |
9358
bbc24fc734da
mod_scansion_record: Only record stanzas in the default namespace
Kim Alvefur <zash@zash.se>
parents:
9357
diff
changeset
|
50 end |
9351
b37f131d68c2
mod_scansion_record: Complete stanza recording functions
Kim Alvefur <zash@zash.se>
parents:
9350
diff
changeset
|
51 return stanza; |
9344
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
52 end |
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
53 |
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
54 local function record_stanza_out(stanza, session) |
9358
bbc24fc734da
mod_scansion_record: Only record stanzas in the default namespace
Kim Alvefur <zash@zash.se>
parents:
9357
diff
changeset
|
55 if stanza.attr.xmlns == nil then |
9359
dc55d7d2798b
mod_scansion_record: Avoid recording the resource binding stanza
Kim Alvefur <zash@zash.se>
parents:
9358
diff
changeset
|
56 if not (stanza.name == "iq" and stanza:get_child("bind", "urn:ietf:params:xml:ns:xmpp-bind")) then |
9618
d6e6e1fb7ef0
mod_scansion_record: Discard from/to where these are implicitly the sessions full JID
Kim Alvefur <zash@zash.se>
parents:
9373
diff
changeset
|
57 local copy = st.clone(stanza); |
d6e6e1fb7ef0
mod_scansion_record: Discard from/to where these are implicitly the sessions full JID
Kim Alvefur <zash@zash.se>
parents:
9373
diff
changeset
|
58 if copy.attr.to == session.full_jid then |
d6e6e1fb7ef0
mod_scansion_record: Discard from/to where these are implicitly the sessions full JID
Kim Alvefur <zash@zash.se>
parents:
9373
diff
changeset
|
59 copy.attr.to = nil; |
d6e6e1fb7ef0
mod_scansion_record: Discard from/to where these are implicitly the sessions full JID
Kim Alvefur <zash@zash.se>
parents:
9373
diff
changeset
|
60 end |
d6e6e1fb7ef0
mod_scansion_record: Discard from/to where these are implicitly the sessions full JID
Kim Alvefur <zash@zash.se>
parents:
9373
diff
changeset
|
61 record_stanza(copy, session, "receives"); |
9359
dc55d7d2798b
mod_scansion_record: Avoid recording the resource binding stanza
Kim Alvefur <zash@zash.se>
parents:
9358
diff
changeset
|
62 end |
9358
bbc24fc734da
mod_scansion_record: Only record stanzas in the default namespace
Kim Alvefur <zash@zash.se>
parents:
9357
diff
changeset
|
63 end |
9351
b37f131d68c2
mod_scansion_record: Complete stanza recording functions
Kim Alvefur <zash@zash.se>
parents:
9350
diff
changeset
|
64 return stanza; |
9344
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
65 end |
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
66 |
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
67 module:hook("resource-bind", function (event) |
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
68 local session = event.session; |
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
69 if not users[session.username] then |
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
70 users[session.username] = { |
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
71 character = table.remove(names, 1) or id.short(); |
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
72 devices = {}; |
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
73 n_devices = 0; |
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
74 }; |
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
75 end |
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
76 local user = users[session.username]; |
9354
b042aa047d80
mod_scansion_record: Correctly retrieve resource
Kim Alvefur <zash@zash.se>
parents:
9353
diff
changeset
|
77 local device = user.devices[session.resource]; |
9344
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
78 if not device then |
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
79 user.n_devices = user.n_devices + 1; |
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
80 device = devices[user.n_devices] or ("device"..id.short()); |
9354
b042aa047d80
mod_scansion_record: Correctly retrieve resource
Kim Alvefur <zash@zash.se>
parents:
9353
diff
changeset
|
81 user.devices[session.resource] = device; |
9344
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
82 end |
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
83 session.scansion_character = user.character; |
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
84 session.scansion_device = device; |
9350
07fd880905a3
mod_scansion_record: Remove extra "
Kim Alvefur <zash@zash.se>
parents:
9349
diff
changeset
|
85 session.scansion_id = user.character..(device ~= "" and "'s "..device or device); |
9344
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
86 |
9370
7872abb9fc1f
mod_scansion_record: Record the full identity including device name
Kim Alvefur <zash@zash.se>
parents:
9369
diff
changeset
|
87 record_object("Client", session.scansion_id, { |
9368
0c5177738ffd
mod_scansion_record: Record connected clients as scansion Objects declarations
Kim Alvefur <zash@zash.se>
parents:
9367
diff
changeset
|
88 jid = session.full_jid, |
0c5177738ffd
mod_scansion_record: Record connected clients as scansion Objects declarations
Kim Alvefur <zash@zash.se>
parents:
9367
diff
changeset
|
89 password = "password", |
0c5177738ffd
mod_scansion_record: Record connected clients as scansion Objects declarations
Kim Alvefur <zash@zash.se>
parents:
9367
diff
changeset
|
90 }); |
0c5177738ffd
mod_scansion_record: Record connected clients as scansion Objects declarations
Kim Alvefur <zash@zash.se>
parents:
9367
diff
changeset
|
91 |
9372
0e685b7ec039
mod_scansion_record: Lower log message to 'info' level
Kim Alvefur <zash@zash.se>
parents:
9371
diff
changeset
|
92 module:log("info", "Connected: %s", session.scansion_id); |
9352
0fdb70ad9fcc
mod_scansion_record: Record session connecting
Kim Alvefur <zash@zash.se>
parents:
9351
diff
changeset
|
93 record_event(session, "connects"); |
9344
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
94 |
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
95 filters.add_filter(session, "stanzas/in", record_stanza_in); |
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
96 filters.add_filter(session, "stanzas/out", record_stanza_out); |
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
97 end); |
d36fa7d164c0
mod_scansion_record: Unfinished code dump from Matthew
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
98 |
9373
1a69803d5d5d
mod_scansion_record: Record disconnection
Kim Alvefur <zash@zash.se>
parents:
9372
diff
changeset
|
99 module:hook("resource-unbind", function (event) |
1a69803d5d5d
mod_scansion_record: Record disconnection
Kim Alvefur <zash@zash.se>
parents:
9372
diff
changeset
|
100 local session = event.session; |
1a69803d5d5d
mod_scansion_record: Record disconnection
Kim Alvefur <zash@zash.se>
parents:
9372
diff
changeset
|
101 if session.scansion_id then |
1a69803d5d5d
mod_scansion_record: Record disconnection
Kim Alvefur <zash@zash.se>
parents:
9372
diff
changeset
|
102 record_event(session, "disconnects"); |
1a69803d5d5d
mod_scansion_record: Record disconnection
Kim Alvefur <zash@zash.se>
parents:
9372
diff
changeset
|
103 end |
1a69803d5d5d
mod_scansion_record: Record disconnection
Kim Alvefur <zash@zash.se>
parents:
9372
diff
changeset
|
104 end) |
1a69803d5d5d
mod_scansion_record: Record disconnection
Kim Alvefur <zash@zash.se>
parents:
9372
diff
changeset
|
105 |
9365
acb316319dc0
mod_scansion_record: Generate a header with hostname and timestamp
Kim Alvefur <zash@zash.se>
parents:
9364
diff
changeset
|
106 record_header("# mod_scansion_record on host '"..module.host.."' recording started "..dt.datetime().."\n\n"); |
acb316319dc0
mod_scansion_record: Generate a header with hostname and timestamp
Kim Alvefur <zash@zash.se>
parents:
9364
diff
changeset
|
107 |
acb316319dc0
mod_scansion_record: Generate a header with hostname and timestamp
Kim Alvefur <zash@zash.se>
parents:
9364
diff
changeset
|
108 record[[ |
acb316319dc0
mod_scansion_record: Generate a header with hostname and timestamp
Kim Alvefur <zash@zash.se>
parents:
9364
diff
changeset
|
109 ----- |
acb316319dc0
mod_scansion_record: Generate a header with hostname and timestamp
Kim Alvefur <zash@zash.se>
parents:
9364
diff
changeset
|
110 |
acb316319dc0
mod_scansion_record: Generate a header with hostname and timestamp
Kim Alvefur <zash@zash.se>
parents:
9364
diff
changeset
|
111 ]] |
acb316319dc0
mod_scansion_record: Generate a header with hostname and timestamp
Kim Alvefur <zash@zash.se>
parents:
9364
diff
changeset
|
112 |
9360
0444e321b757
mod_scansion_record: Hook correct shutdown event
Kim Alvefur <zash@zash.se>
parents:
9359
diff
changeset
|
113 module:hook_global("server-stopping", function () |
9365
acb316319dc0
mod_scansion_record: Generate a header with hostname and timestamp
Kim Alvefur <zash@zash.se>
parents:
9364
diff
changeset
|
114 record("# recording ended on "..dt.datetime().."\n"); |
9369
dd452f932b67
mod_scansion_record: Merge header and log into one file at shutdown
Kim Alvefur <zash@zash.se>
parents:
9368
diff
changeset
|
115 module:log("info", "Scansion recording available in %s", header_file); |
9366
9472b4044fc6
mod_scansion_record: Close files in the cleanup stage of shutdown (fixes use after close)
Kim Alvefur <zash@zash.se>
parents:
9365
diff
changeset
|
116 end); |
9472b4044fc6
mod_scansion_record: Close files in the cleanup stage of shutdown (fixes use after close)
Kim Alvefur <zash@zash.se>
parents:
9365
diff
changeset
|
117 |
9472b4044fc6
mod_scansion_record: Close files in the cleanup stage of shutdown (fixes use after close)
Kim Alvefur <zash@zash.se>
parents:
9365
diff
changeset
|
118 prosody.events.add_handler("server-cleanup", function () |
9369
dd452f932b67
mod_scansion_record: Merge header and log into one file at shutdown
Kim Alvefur <zash@zash.se>
parents:
9368
diff
changeset
|
119 scan:seek("set", 0); |
dd452f932b67
mod_scansion_record: Merge header and log into one file at shutdown
Kim Alvefur <zash@zash.se>
parents:
9368
diff
changeset
|
120 for line in scan:lines() do |
dd452f932b67
mod_scansion_record: Merge header and log into one file at shutdown
Kim Alvefur <zash@zash.se>
parents:
9368
diff
changeset
|
121 head:write(line, "\n"); |
dd452f932b67
mod_scansion_record: Merge header and log into one file at shutdown
Kim Alvefur <zash@zash.se>
parents:
9368
diff
changeset
|
122 end |
9362
31317e8edbbc
mod_scansion_record: Fix missed rename of file handle
Kim Alvefur <zash@zash.se>
parents:
9361
diff
changeset
|
123 scan:close(); |
9369
dd452f932b67
mod_scansion_record: Merge header and log into one file at shutdown
Kim Alvefur <zash@zash.se>
parents:
9368
diff
changeset
|
124 os.remove(record_file); |
9364
62f9127ab493
mod_scansion_record: Open a related file for header entries
Kim Alvefur <zash@zash.se>
parents:
9363
diff
changeset
|
125 head:close() |
9347
9479523e209a
mod_scansion_record: and close it on shutdown
Kim Alvefur <zash@zash.se>
parents:
9346
diff
changeset
|
126 end); |