Mercurial > prosody-modules
annotate mod_statsd/mod_statsd.lua @ 6214:cc5c0f1dc89b
mod_muc_anonymize_moderation_actions: Fix mentioning Virtualhost for MUC, Compatibility section and License.
diff --git a/mod_muc_anonymize_moderation_actions/README.md b/mod_muc_anonymize_moderation_actions/README.md
--- a/mod_muc_anonymize_moderation_actions/README.md
+++ b/mod_muc_anonymize_moderation_actions/README.md
@@ -1,8 +1,10 @@
-<!--
-SPDX-FileCopyrightText: 2024 John Livingston <https://www.john-livingston.fr/>
-SPDX-License-Identifier: AGPL-3.0-only
--->
-# mod_muc_anonymize_moderation_actions
+---
+labels:
+- 'Stage-Alpha'
+summary: Anonymize moderator actions for participants
+---
+
+## Introduction
This modules allows to anonymize affiliation and role changes in MUC rooms.
@@ -11,13 +13,10 @@ When the feature is enabled, when a mode
This is particularly usefull to prevent some revenge when a moderator bans someone.
-This module is under AGPL-3.0 license.
-
-It was tested on Prosody 0.12.x.
## Configuration
-Just enable the module on your MUC VirtualHost.
+Just enable the module on your MUC Component.
The feature will be accessible throught the room configuration form.
You can tweak the position of the settings in the MUC configuration form using `anonymize_moderation_actions_form_position`.
@@ -26,7 +25,20 @@ This value will be passed as priority fo
By default, the field will be between muc#roomconfig_changesubject and muc#roomconfig_moderatedroom (default value is `78`).
``` lua
-VirtualHost "muc.example.com"
+Component "muc.example.com" "muc"
modules_enabled = { "muc_anonymize_moderation_actions" }
anonymize_moderation_actions_form_position = 96
```
+
+## Compatibility
+
+ ------ ----------------------
+ trunk Works as of 25-05-12
+ 0.13 Works
+ 0.12 Works
+ ------ ----------------------
+
+### License
+
+SPDX-FileCopyrightText: 2024 John Livingston <https://www.john-livingston.fr/>
+SPDX-License-Identifier: AGPL-3.0-only
| author | Menel <menel@snikket.de> |
|---|---|
| date | Mon, 12 May 2025 10:42:26 +0200 |
| parents | c3a039972b74 |
| children |
| rev | line source |
|---|---|
| 1443 | 1 -- Log common stats to statsd |
| 2 -- | |
| 3 -- Copyright (C) 2014 Daurnimator | |
| 4 -- | |
| 5 -- This module is MIT/X11 licensed. | |
| 6 | |
| 7 local socket = require "socket" | |
| 8 local iterators = require "util.iterators" | |
| 9 local jid = require "util.jid" | |
|
2425
26c68a5f432f
mod_statsd: Import bare_sessions from the prosody global, using it as a global directly is deprecated
Kim Alvefur <zash@zash.se>
parents:
1451
diff
changeset
|
10 local bare_sessions = prosody.bare_sessions; |
| 1443 | 11 |
| 12 local options = module:get_option("statsd") or {} | |
| 13 | |
| 14 -- Create UDP socket to statsd server | |
| 15 local sock = socket.udp() | |
| 16 sock:setpeername(options.hostname or "127.0.0.1", options.port or 8125) | |
| 17 | |
|
2875
c3a039972b74
mod_statsd: Fix typo in comment [codespell]
Kim Alvefur <zash@zash.se>
parents:
2425
diff
changeset
|
18 -- Metrics are namespaced by ".", and separated by newline |
|
1447
e96ac4291b36
mod_statsd: Clean off colons (:)
daurnimator <quae@daurnimator.com>
parents:
1443
diff
changeset
|
19 function clean(s) return (s:gsub("[%.:\n]", "_")) end |
| 1443 | 20 |
| 21 -- A 'safer' send function to expose | |
| 22 function send(s) return sock:send(s) end | |
| 23 | |
| 24 -- prefix should end in "." | |
|
1448
d722a4defea7
mod_statsd: Optionally include host in prefix
daurnimator <quae@daurnimator.com>
parents:
1447
diff
changeset
|
25 local prefix = (options.prefix or "prosody") .. "." |
|
d722a4defea7
mod_statsd: Optionally include host in prefix
daurnimator <quae@daurnimator.com>
parents:
1447
diff
changeset
|
26 if not options.no_host then |
|
d722a4defea7
mod_statsd: Optionally include host in prefix
daurnimator <quae@daurnimator.com>
parents:
1447
diff
changeset
|
27 prefix = prefix .. clean(module.host) .. "." |
|
d722a4defea7
mod_statsd: Optionally include host in prefix
daurnimator <quae@daurnimator.com>
parents:
1447
diff
changeset
|
28 end |
| 1443 | 29 |
| 30 -- Track users as they bind/unbind | |
| 31 -- count bare sessions every time, as we have no way to tell if it's a new bare session or not | |
| 32 module:hook("resource-bind", function(event) | |
|
1451
d31ace5b1175
mod_statsd: Add missing `pairs` call
daurnimator <quae@daurnimator.com>
parents:
1449
diff
changeset
|
33 send(prefix.."bare_sessions:"..iterators.count(pairs(bare_sessions)).."|g") |
| 1443 | 34 send(prefix.."full_sessions:+1|g") |
| 35 end, 1) | |
| 36 module:hook("resource-unbind", function(event) | |
|
1451
d31ace5b1175
mod_statsd: Add missing `pairs` call
daurnimator <quae@daurnimator.com>
parents:
1449
diff
changeset
|
37 send(prefix.."bare_sessions:"..iterators.count(pairs(bare_sessions)).."|g") |
| 1443 | 38 send(prefix.."full_sessions:-1|g") |
| 39 end, 1) | |
| 40 | |
| 41 -- Track MUC occupants as they join/leave | |
| 42 module:hook("muc-occupant-joined", function(event) | |
| 43 send(prefix.."n_occupants:+1|g") | |
| 44 local room_node = jid.split(event.room.jid) | |
| 45 send(prefix..clean(room_node)..".occupants:+1|g") | |
| 46 end) | |
| 47 module:hook("muc-occupant-left", function(event) | |
| 48 send(prefix.."n_occupants:-1|g") | |
| 49 local room_node = jid.split(event.room.jid) | |
| 50 send(prefix..clean(room_node)..".occupants:-1|g") | |
| 51 end) | |
| 52 | |
| 53 -- Misc other MUC | |
| 54 module:hook("muc-broadcast-message", function(event) | |
| 55 send(prefix.."broadcast-message:1|c") | |
| 56 local room_node = jid.split(event.room.jid) | |
| 57 send(prefix..clean(room_node)..".broadcast-message:1|c") | |
| 58 end) | |
| 59 module:hook("muc-invite", function(event) | |
|
1449
365f6db9531a
mod_statsd: Better accounting for invites, add declines
daurnimator <quae@daurnimator.com>
parents:
1448
diff
changeset
|
60 -- Total count |
| 1443 | 61 send(prefix.."invite:1|c") |
| 62 local room_node = jid.split(event.room.jid) | |
|
1449
365f6db9531a
mod_statsd: Better accounting for invites, add declines
daurnimator <quae@daurnimator.com>
parents:
1448
diff
changeset
|
63 -- Counts per room |
| 1443 | 64 send(prefix..clean(room_node)..".invite:1|c") |
|
1449
365f6db9531a
mod_statsd: Better accounting for invites, add declines
daurnimator <quae@daurnimator.com>
parents:
1448
diff
changeset
|
65 -- Counts per recipient |
|
365f6db9531a
mod_statsd: Better accounting for invites, add declines
daurnimator <quae@daurnimator.com>
parents:
1448
diff
changeset
|
66 send(prefix..clean(event.stanza.attr.to)..".invited:1|c") |
| 1443 | 67 end) |
|
1449
365f6db9531a
mod_statsd: Better accounting for invites, add declines
daurnimator <quae@daurnimator.com>
parents:
1448
diff
changeset
|
68 module:hook("muc-decline", function(event) |
|
365f6db9531a
mod_statsd: Better accounting for invites, add declines
daurnimator <quae@daurnimator.com>
parents:
1448
diff
changeset
|
69 -- Total count |
|
365f6db9531a
mod_statsd: Better accounting for invites, add declines
daurnimator <quae@daurnimator.com>
parents:
1448
diff
changeset
|
70 send(prefix.."decline:1|c") |
|
365f6db9531a
mod_statsd: Better accounting for invites, add declines
daurnimator <quae@daurnimator.com>
parents:
1448
diff
changeset
|
71 local room_node = jid.split(event.room.jid) |
|
365f6db9531a
mod_statsd: Better accounting for invites, add declines
daurnimator <quae@daurnimator.com>
parents:
1448
diff
changeset
|
72 -- Counts per room |
|
365f6db9531a
mod_statsd: Better accounting for invites, add declines
daurnimator <quae@daurnimator.com>
parents:
1448
diff
changeset
|
73 send(prefix..clean(room_node)..".decline:1|c") |
|
365f6db9531a
mod_statsd: Better accounting for invites, add declines
daurnimator <quae@daurnimator.com>
parents:
1448
diff
changeset
|
74 -- Counts per sender |
|
365f6db9531a
mod_statsd: Better accounting for invites, add declines
daurnimator <quae@daurnimator.com>
parents:
1448
diff
changeset
|
75 send(prefix..clean(event.incoming.attr.from)..".declined:1|c") |
|
365f6db9531a
mod_statsd: Better accounting for invites, add declines
daurnimator <quae@daurnimator.com>
parents:
1448
diff
changeset
|
76 end) |
