Software /
code /
prosody-modules
File
mod_password_policy/mod_password_policy.lua @ 4409:44f6537f6427
mod_invites_adhoc: Fail contact invite if user is not on current host
Only the username was being used, and the host of the requester ignored.
Luckily this only affects admins of the host. If they want to create an
account they can use the other command. If they want to create a contact
they should request from their account on this host.
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Thu, 28 Jan 2021 07:04:11 +0000 |
parent | 3351:662f2722f745 |
child | 4828:56eba4bca28f |
line wrap: on
line source
-- Password policy enforcement for Prosody -- -- Copyright (C) 2012 Waqas Hussain -- -- -- Configuration: -- password_policy = { -- length = 8; -- } local options = module:get_option("password_policy"); options = options or {}; options.length = options.length or 8; local st = require "util.stanza"; function check_password(password) if #password < options.length then return nil, ("Password is too short (minimum %d characters)"):format(options.length); end return true; end function get_policy() return options; end function handler(event) local origin, stanza = event.origin, event.stanza; if stanza.attr.type == "set" then local query = stanza.tags[1]; local passwords = {}; local dataform = query:get_child("x", "jabber:x:data"); if dataform then for _,tag in ipairs(dataform.tags) do if tag.attr.var == "password" then table.insert(passwords, tag:get_child_text("value")); end end end table.insert(passwords, query:get_child_text("password")); for _,password in ipairs(passwords) do if password and not check_password(password) then origin.send(st.error_reply(stanza, "cancel", "not-acceptable", "Please use a longer password.")); return true; end end end end module:hook("iq/self/jabber:iq:register:query", handler, 10); module:hook("iq/host/jabber:iq:register:query", handler, 10); module:hook("stanza/iq/jabber:iq:register:query", handler, 10);