Software /
code /
prosody-modules
File
mod_checkcerts/mod_checkcerts.lua @ 890:7ac1b8a799be
mod_carbons_adhoc: Initial commit.
This module will add an Adhoc-command by which a user can see if Message
Carbons (XEP-0280) are generated for his clients and also which version
is used for the individual client. Clients which receive copies as per
mod_carbons_copies will be listed as Version 0 carbons.
author | Michael Holzt <kju@fqdn.org> |
---|---|
date | Sun, 23 Dec 2012 19:36:31 +0100 |
parent | 855:1983d4d51e1a |
child | 941:a6c2345bcf87 |
line wrap: on
line source
local ssl = require"ssl"; local load_cert = ssl.x509 and ssl.x509.load or ssl.cert_from_pem; -- COMPAT mw/luasec-hg if not load_cert then module:log("error", "This version of LuaSec (%s) does not support certificate checking", ssl._VERSION); return end local function check_certs_validity() -- First, let's find out what certificate this host uses. local ssl_config = config.rawget(module.host, "core", "ssl"); if not ssl_config then local base_host = module.host:match("%.(.*)"); ssl_config = config.get(base_host, "core", "ssl"); end if ssl_config.certificate then local certfile = ssl_config.certificate; local cert; local fh = io.open(certfile); -- Load the file. cert = fh and fh:read"*a"; fh:close(); cert = cert and load_cert(cert); -- And parse if not cert then return end -- No error reporting, certmanager should complain already local now = os.time(); local valid_at = cert.valid_at or cert.validat; if not valid_at then return end -- Broken or uncommon LuaSec version? -- This might be wrong if the certificate has NotBefore in the future. -- However this is unlikely to happen in the wild. if not valid_at(cert, now) then module:log("warn", "The certificate %s has expired", certfile); elseif not valid_at(cert, now+86400*7) then module:log("warn", "The certificate %s will expire this week", certfile); elseif not valid_at(cert, now+86400*30) then module:log("info", "The certificate %s will expire later this month", certfile); end -- TODO Maybe notify admins end end module.load = check_certs_validity; module:hook_global("config-reloaded", check_certs_validity);