File manager - Edit - /opt/saltstack/salt/lib/python3.10/site-packages/salt/beacons/__pycache__/btmp.cpython-310.pyc
Back
o ;j�! � @ s� d Z ddlZddlZddlZddlZddlZddlZddlZdZ dZ dZg d�Ze� e�ZdZe�e�Zz ddlmZ dZW n eyI d ZY nw d d� Zdd � Zdd� Zdd� Zdd� Zdd� Zdd� ZdS )a? Beacon to fire events at failed login of users .. versionadded:: 2015.5.0 Example Configuration ===================== .. code-block:: yaml # Fire events on all failed logins beacons: btmp: [] # Matching on user name, using a default time range beacons: btmp: - users: gareth: - defaults: time_range: start: '8am' end: '4pm' # Matching on user name, overriding the default time range beacons: btmp: - users: gareth: time_range: start: '8am' end: '4pm' - defaults: time_range: start: '8am' end: '4pm' # Matching on group name, overriding the default time range beacons: btmp: - groups: users: time_range: start: '8am' end: '4pm' - defaults: time_range: start: '8am' end: '4pm' Use Case: Posting Failed Login Events to Slack ============================================== This can be done using the following reactor SLS: .. code-block:: jinja report-wtmp: runner.salt.cmd: - args: - fun: slack.post_message - channel: mychannel # Slack channel - from_name: someuser # Slack user - message: "Failed login from `{{ data.get('user', '') or 'unknown user' }}` on `{{ data['id'] }}`" Match the event like so in the master config file: .. code-block:: yaml reactor: - 'salt/beacon/*/btmp/': - salt://reactor/btmp.sls .. note:: This approach uses the :py:mod:`slack execution module <salt.modules.slack_notify>` directly on the master, and therefore requires that the master has a slack API key in its configuration: .. code-block:: yaml slack: api_key: xoxb-XXXXXXXXXXXX-XXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXX See the :py:mod:`slack execution module <salt.modules.slack_notify>` documentation for more information. While you can use an individual user's API key to post to Slack, a bot user is likely better suited for this. The :py:mod:`slack engine <salt.engines.slack>` documentation has information on how to set up a bot user. � NZbtmpz /var/log/btmps hi32s4s32s256shhiii4i20x) �typeZPID�lineZinittab�user�hostname�exit_status�session�time�addrzbtmp.locTFc C s0 t j�t�rtS t� d�} t�dt| � d| fS )Nz does not exist.zUnable to load %s beacon: %sF)�os�path�isfile�BTMP�__virtualname__�log�error)�err_msg� r �E/opt/saltstack/salt/lib/python3.10/site-packages/salt/beacons/btmp.py�__virtual__� s r c sD � s||fS t � t�sd}d}t� fdd�dD ��sd}d}||fS )� Check time range Fz>The time_range parameter for btmp beacon must be a dictionary.c 3 s � | ]}|� v V qd S )Nr )�.0�k��tranger r � <genexpr>� s � z'_validate_time_range.<locals>.<genexpr>)�start�endzJThe time_range parameter for btmp beacon must contain start & end options.)� isinstance�dict�all)r �status�msgr r r �_validate_time_range� s �r"