Software /
code /
prosody-modules
File
mod_s2s_log_certs/mod_s2s_log_certs.lua @ 6112:4c0e3fe57e92
mod_compliance_latest: Gracefull error logging on missing dependency.
diff --git a/mod_compliance_latest/README.md b/mod_compliance_latest/README.md
--- a/mod_compliance_latest/README.md
+++ b/mod_compliance_latest/README.md
@@ -9,13 +9,15 @@ rockspec:
# 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].
+This meta-module will always `require` (and therefore auto-load) the lastest compliance tester we have in the community modules.
+Currently this is [mod_compliance_2023]. See the linked module for further details.
+
+If you do not use the *Prosody plugin installer* this module will likely have limited value to you.
+You can also just install the current compliance tester manually.
# 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.
+Just load this module as any other module and it will automatically install and load [mod_compliance_2023] if you use the *Prosody plugin installer*.
# Compatibility
diff --git a/mod_compliance_latest/mod_compliance_latest.lua b/mod_compliance_latest/mod_compliance_latest.lua
--- a/mod_compliance_latest/mod_compliance_latest.lua
+++ b/mod_compliance_latest/mod_compliance_latest.lua
@@ -1,1 +1,6 @@
-module:depends("compliance_2023");
+local success, err = pcall(function() module:depends("compliance_2023") end)
+
+if not success then
+ module:log("error", "Error, can't load module: mod_compliance_2023. Is this module downloaded in a folder readable by prosody?")
+ return 1, "Error: Couldn't load dependency mod_compliance_2023."
+end
author | Menel <menel@snikket.de> |
---|---|
date | Mon, 23 Dec 2024 12:58:03 +0100 |
parent | 1787:663e5d923ef0 |
line wrap: on
line source
module:set_global(); local dm_load = require "util.datamanager".load; local dm_store = require "util.datamanager".store; local datetime = require "util.datetime".datetime; local do_store = module:get_option_boolean(module:get_name().."_persist", false); local digest_algo = module:get_option_string(module:get_name().."_digest", "sha1"); local function note_cert_digest(event) local session, remote_host, cert = event.session, event.host, event.cert; if not (remote_host and cert and cert.digest) then return end; local digest = cert:digest(digest_algo); local local_host = session.direction == "outgoing" and session.from_host or session.to_host; local chain_status = session.cert_chain_status; local identity_status = session.cert_identity_status; module:log("info", "%s has a %s %s certificate with %s: %s", remote_host, chain_status == "valid" and "trusted" or "untrusted", identity_status or "invalid", digest_algo:upper(), digest:upper():gsub("..",":%0"):sub(2)); if do_store then local seen_certs = dm_load(remote_host, local_host, "s2s_certs") or {}; digest = digest_algo..":"..digest; local this_cert = seen_certs[digest] or { first = datetime(); times = 0; } this_cert.last = datetime(); this_cert.times = this_cert.times + 1; seen_certs[digest] = this_cert; chain_status = chain_status; identity_status = identity_status; dm_store(remote_host, local_host, "s2s_certs", seen_certs); end end if module.wrap_event then -- 0.10 module:wrap_event("s2s-check-certificate", function (handlers, event_name, event_data) local ret = handlers(event_name, event_data); note_cert_digest(event_data); return ret; end); else -- 0.9 module:hook("s2s-check-certificate", note_cert_digest, 1000); end --[[ function module.add_host(module) module:hook("s2s-check-certificate", note_cert_digest, 1000); end ]]