annotate mod_audit_status/mod_audit_status.lua @ 5418:f2c7bb3af600

mod_http_oauth2: Add role selector to consent page List includes all roles available to the user, if more than one. Defaults to either the first role in the scope string or the users primary role. Earlier draft listed all roles, but having options that can't be selected is bad UX and the entire list of all roles on the server could be long, and perhaps even sensitive. Allows e.g. picking a role with fewer permissions than what might otherwise have been selected. UX wise, doing this with more checkboxes or possibly radio buttons would have been confusion and/or looked messier. Fixes the previous situation where unselecting a role would default to the primary role, which could be more permissions than requested.
author Kim Alvefur <zash@zash.se>
date Fri, 05 May 2023 01:23:13 +0200
parents 14b6397cd6de
children 9944c6c3e914
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
5324
18fd615c2733 mod_audit_status: Include shutdown reason in log entry
Matthew Wild <mwild1@gmail.com>
parents: 5320
diff changeset
3 local st = require "util.stanza";
18fd615c2733 mod_audit_status: Include shutdown reason in log entry
Matthew Wild <mwild1@gmail.com>
parents: 5320
diff changeset
4
5320
c450dbf6c0fa mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5 -- 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
6 -- 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
7
c450dbf6c0fa mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8 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
9
c450dbf6c0fa mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10 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
11
c450dbf6c0fa mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
12 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
13 local recorded_status = store:get();
5353
14b6397cd6de mod_audit_status: Fix error on first start
Kim Alvefur <zash@zash.se>
parents: 5324
diff changeset
14 if recorded_status and recorded_status.status == "started" then
5320
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-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
16 end
c450dbf6c0fa mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
17 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
18 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
19 end);
c450dbf6c0fa mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
20
c450dbf6c0fa mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
21 module:hook_global("server-stopped", function ()
5324
18fd615c2733 mod_audit_status: Include shutdown reason in log entry
Matthew Wild <mwild1@gmail.com>
parents: 5320
diff changeset
22 module:audit(nil, "server-stopped", {
18fd615c2733 mod_audit_status: Include shutdown reason in log entry
Matthew Wild <mwild1@gmail.com>
parents: 5320
diff changeset
23 custom = {
18fd615c2733 mod_audit_status: Include shutdown reason in log entry
Matthew Wild <mwild1@gmail.com>
parents: 5320
diff changeset
24 prosody.shutdown_reason and st.stanza("note"):text(prosody.shutdown_reason);
18fd615c2733 mod_audit_status: Include shutdown reason in log entry
Matthew Wild <mwild1@gmail.com>
parents: 5320
diff changeset
25 };
18fd615c2733 mod_audit_status: Include shutdown reason in log entry
Matthew Wild <mwild1@gmail.com>
parents: 5320
diff changeset
26 });
5320
c450dbf6c0fa mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
27 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
28 end);
c450dbf6c0fa mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
29
c450dbf6c0fa mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
30 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
31 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
32 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
33 return heartbeat_interval;
c450dbf6c0fa mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
34 end);
c450dbf6c0fa mod_audit_status: New module to log server status to audit log
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
35 end