Mercurial > prosody-modules
view mod_report_affiliations/traits.lib.lua @ 6083:ffd0184cd478
mod_compliance_latest: New module that depends on and therefore loads the latest compliance tester mod.
diff --git a/mod_compliance_latest/README.md b/mod_compliance_latest/README.md
new file mode 100644
--- /dev/null
+++ b/mod_compliance_latest/README.md
@@ -0,0 +1,25 @@
+---
+summary: XMPP Compliance Suites self-test
+labels:
+- Stage-Beta
+rockspec:
+ dependencies:
+ - mod_compliance_2023
+...
+
+# Introduction
+
+This module will always require and load to the lastest compliance tester we have in the community modules.
+Currently this is [mod_compliance_2023].
+
+# Configuration
+
+Just load this module as any other module and it will automatically install [mod_compliance_2023] if you use the Prosody plugin installer.
+See the linked module for further details.
+
+# Compatibility
+
+ Prosody-Version Status
+ --------------- ----------------------
+ trunk Works as of 2024-12-22
+ 0.12 Works
diff --git a/mod_compliance_latest/mod_compliance_latest.lua b/mod_compliance_latest/mod_compliance_latest.lua
new file mode 100644
--- /dev/null
+++ b/mod_compliance_latest/mod_compliance_latest.lua
@@ -0,0 +1,1 @@
+module:depends("compliance_2023");
| author | Menel <menel@snikket.de> |
|---|---|
| date | Sun, 22 Dec 2024 18:12:42 +0100 |
| parents | e905ef16efb7 |
| children |
line wrap: on
line source
local known_traits = {}; local function trait_added(event) local trait = event.item; local name = trait.name; if known_traits[name] then return; end known_traits[name] = trait.probabilities; end local function trait_removed(event) local trait = event.item; known_traits[trait.name] = nil; end module:handle_items("account-trait", trait_added, trait_removed); local function bayes_probability(prior, prob_given_true, prob_given_false) local numerator = prob_given_true * prior; local denominator = numerator + prob_given_false * (1 - prior); return numerator / denominator; end local function prob_is_bad(traits, prior) prior = prior or 0.50; for trait, state in pairs(traits) do local probabilities = known_traits[trait]; if probabilities then if state then prior = bayes_probability( prior, probabilities.prob_bad_true, probabilities.prob_bad_false ); else prior = bayes_probability( prior, 1 - probabilities.prob_bad_true, 1 - probabilities.prob_bad_false ); end end end return prior; end local function get_probability_bad(username, prior) local user_traits = {}; module:fire_event("get-account-traits", { username = username, host = module.host, traits = user_traits }); local result = prob_is_bad(user_traits, prior); return result; end return { get_probability_bad = get_probability_bad; };
