diff options
Diffstat (limited to 'filter_plugins')
-rw-r--r-- | filter_plugins/znc.py | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/filter_plugins/znc.py b/filter_plugins/znc.py new file mode 100644 index 0000000..243cdd5 --- /dev/null +++ b/filter_plugins/znc.py @@ -0,0 +1,32 @@ +# Copyright (c) 2018 Aaron LI <aly@aaronly.me> +# MIT License + +""" +Custom Ansible template filters for "znc" role. +""" + +import os +import base64 +import hashlib + + +def znc_makepass(p, method="sha256", saltlen=20): + """ + Generate the salted hashed password for ZNC configuration. + + Implement the "znc --makepass" command. + + ZNC password format: <method>#<hash>#<salt> + """ + salt = os.urandom(saltlen) + salt = base64.b64encode(salt)[:saltlen] + s = p + salt + h = getattr(hashlib, method)(s) + return "%s#%s#%s" % (method, h.hexdigest(), salt) + + +class FilterModule(object): + def filters(self): + return { + "znc_makepass": znc_makepass, + } |