Mercurial > prosody-modules
annotate mod_audit_status/mod_audit_status.lua @ 5320:c450dbf6c0fa
mod_audit_status: New module to log server status to audit log
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Fri, 07 Apr 2023 12:09:21 +0100 |
parents | |
children | 18fd615c2733 |
rev | line source |
---|---|
5320
c450dbf6c0fa
mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
1 module:depends("audit"); |
c450dbf6c0fa
mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
2 |
c450dbf6c0fa
mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
3 -- Suppress warnings about module:audit() |
c450dbf6c0fa
mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
4 -- luacheck: ignore 143/module |
c450dbf6c0fa
mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
5 |
c450dbf6c0fa
mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
6 local heartbeat_interval = module:get_option_number("audit_status_heartbeat_interval", 60); |
c450dbf6c0fa
mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
7 |
c450dbf6c0fa
mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
8 local store = module:open_store(nil, "keyval+"); |
c450dbf6c0fa
mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
9 |
c450dbf6c0fa
mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
10 module:hook_global("server-started", function () |
c450dbf6c0fa
mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
11 local recorded_status = store:get(); |
c450dbf6c0fa
mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
12 if recorded_status.status == "started" then |
c450dbf6c0fa
mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
13 module:audit(nil, "server-crashed", { timestamp = recorded_status.heartbeat }); |
c450dbf6c0fa
mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
14 end |
c450dbf6c0fa
mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
15 module:audit(nil, "server-started"); |
c450dbf6c0fa
mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
16 store:set_key(nil, "status", "started"); |
c450dbf6c0fa
mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
17 end); |
c450dbf6c0fa
mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
18 |
c450dbf6c0fa
mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
19 module:hook_global("server-stopped", function () |
c450dbf6c0fa
mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
20 module:audit(nil, "server-stopped"); |
c450dbf6c0fa
mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
21 store:set_key(nil, "status", "stopped"); |
c450dbf6c0fa
mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
22 end); |
c450dbf6c0fa
mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
23 |
c450dbf6c0fa
mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
24 if heartbeat_interval then |
c450dbf6c0fa
mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
25 module:add_timer(0, function () |
c450dbf6c0fa
mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
26 store:set_key(nil, "heartbeat", os.time()); |
c450dbf6c0fa
mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
27 return heartbeat_interval; |
c450dbf6c0fa
mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
28 end); |
c450dbf6c0fa
mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
29 end |