summaryrefslogtreecommitdiff
path: root/filter_plugins
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2023-12-19 02:24:32 +0100
committerChristian Pointner <equinox@spreadspace.org>2023-12-19 02:24:32 +0100
commit6da64ac795c0e395c74d9da8ae21687eb6cf35a2 (patch)
treec9ffed9ee10ba64949c1cb202fe1107283a5b3d7 /filter_plugins
parentupdate prometheus server (diff)
add mosquitto role (WIP)
Diffstat (limited to 'filter_plugins')
-rw-r--r--filter_plugins/crypto.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/filter_plugins/crypto.py b/filter_plugins/crypto.py
index 54547a34..995776d3 100644
--- a/filter_plugins/crypto.py
+++ b/filter_plugins/crypto.py
@@ -2,6 +2,7 @@ from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
import hashlib
+import passlib
from binascii import hexlify
from passlib.utils.binary import Base64Engine, HASH64_CHARS, BCRYPT_CHARS
from ansible.module_utils._text import to_bytes, to_text
@@ -53,6 +54,18 @@ def wifi_80211r_key(seed):
raise errors.AnsibleFilterError("wifi_80211r_key(): %s" % str(e))
+def mosquitto_passwd_hash(password, seed):
+ ''' generate password hash for use by mosquitto mqtt server '''
+ try:
+ h = hashlib.new('sha512')
+ h.update(to_bytes(seed, errors='surrogate_or_strict'))
+ salt = h.digest()[0:12]
+ digest = passlib.hash.pbkdf2_sha512.using(salt=salt).hash(password).replace('pbkdf2-sha512', '7').replace('.', '+')
+ return digest + '=='
+ except Exception as e:
+ raise errors.AnsibleFilterError("mosquitto_passwd_hash(): %s" % str(e))
+
+
class FilterModule(object):
''' crypto helpers '''
@@ -62,6 +75,7 @@ class FilterModule(object):
'sha512_salt': sha2_crypt_salt,
'bcrypt_salt': bcrypt_salt,
'wifi_80211r_key': wifi_80211r_key,
+ 'mosquitto_passwd_hash': mosquitto_passwd_hash,
}
def filters(self):