%PDF- %PDF-
Direktori : /usr/lib/python2.7/site-packages/salt/modules/ |
Current File : //usr/lib/python2.7/site-packages/salt/modules/znc.py |
# -*- coding: utf-8 -*- ''' znc - An advanced IRC bouncer .. versionadded:: 2014.7.0 Provides an interface to basic ZNC functionality ''' from __future__ import absolute_import, print_function, unicode_literals # Import python libs import hashlib import logging import os.path import random import signal # Import salt libs import salt.utils.path from salt.ext.six.moves import range log = logging.getLogger(__name__) def __virtual__(): ''' Only load the module if znc is installed ''' if salt.utils.path.which('znc'): return 'znc' return (False, "Module znc: znc binary not found") def _makepass(password, hasher='sha256'): ''' Create a znc compatible hashed password ''' # Setup the hasher if hasher == 'sha256': h = hashlib.sha256(password) elif hasher == 'md5': h = hashlib.md5(password) else: return NotImplemented c = "abcdefghijklmnopqrstuvwxyz" \ "ABCDEFGHIJKLMNOPQRSTUVWXYZ" \ "0123456789!?.,:;/*-+_()" r = { 'Method': h.name, 'Salt': ''.join(random.SystemRandom().choice(c) for x in range(20)), } # Salt the password hash h.update(r['Salt']) r['Hash'] = h.hexdigest() return r def buildmod(*modules): ''' Build module using znc-buildmod CLI Example: .. code-block:: bash salt '*' znc.buildmod module.cpp [...] ''' # Check if module files are missing missing = [module for module in modules if not os.path.exists(module)] if missing: return 'Error: The file ({0}) does not exist.'.format(', '.join(missing)) cmd = ['znc-buildmod'] cmd.extend(modules) out = __salt__['cmd.run'](cmd, python_shell=False).splitlines() return out[-1] def dumpconf(): ''' Write the active configuration state to config file CLI Example: .. code-block:: bash salt '*' znc.dumpconf ''' return __salt__['ps.pkill']('znc', signal=signal.SIGUSR1) def rehashconf(): ''' Rehash the active configuration state from config file CLI Example: .. code-block:: bash salt '*' znc.rehashconf ''' return __salt__['ps.pkill']('znc', signal=signal.SIGHUP) def version(): ''' Return server version from znc --version CLI Example: .. code-block:: bash salt '*' znc.version ''' cmd = ['znc', '--version'] out = __salt__['cmd.run'](cmd, python_shell=False).splitlines() ret = out[0].split(' - ') return ret[0]