File manager - Edit - /opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/__pycache__/ssdp.cpython-310.pyc
Back
o ;j�: � @ s@ d Z ddlZddlZddlZddlZddlZddlZddlZddl Zzddl mZ W n ey9 ddl mZ Y nw ej j�� Zeed�sGdZz ddlZde_W n eyn z ddlZde_W n eyk dZY nw Y nw G dd� de�ZG d d � d e�ZG dd� d�ZG d d� de�ZG dd� de�ZG dd� de�ZdS )zq Salt Service Discovery Protocol. JSON-based service discovery protocol, used by minions to find running Master. � N)�OrderedDict�dumpsFTc @ � e Zd ZdS )�TimeOutExceptionN��__name__� __module__�__qualname__� r r �C/opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/ssdp.pyr 7 � r c @ r )�TimeStampExceptionNr r r r r r ; r r c @ s^ e Zd ZdZe�e �ZdZdZdZ dZ dZede de d ed ei iZe dd� �Ze d d� �ZdS )�SSDPBasez* Salt Service Discovery Protocol. � signature�answer�port� listen_ip�timeoutZ__salt_master_servicei� z0.0.0.0� c C s t tot�S )zW Return True if the USSDP dependencies are satisfied. :return: )�bool�asyncio�_jsonr r r r � _is_availableV s zSSDPBase._is_availablec C st t � t jt j�} z,z | �d� | �� d }W n ty& t �t �� �}Y nw W | �� |S W | �� |S | �� w )zB Find out localhost outside IP. :return: )z 1.255.255.255� r ) �socket�AF_INET� SOCK_DGRAM�connect�getsockname� Exception� gethostbyname�gethostname�close)ZsckZip_addrr r r �get_self_ip^ s ��� �zSSDPBase.get_self_ipN)r r r �__doc__�logging� getLogger�log� SIGNATURE�ANSWER�PORT� LISTEN_IP�TIMEOUT�DEFAULTS�staticmethodr r# r r r r r ? s$ � r c @ s: e Zd ZdZdd� Zdd� Zdd� Zdd d�Zdd � ZdS )�SSDPFactoryz" Socket protocol factory. c K sL | j | jfD ]}t| ||�|| j| �� qd| _d| _t�t� � �| _ dS )z4 Initialize :param config: FN)r( r) �setattr�getr- �disable_hidden� transportr r r! Zmy_ip��self�config�attrr r r �__init__u s zSSDPFactory.__init__c O s | S )zo Return instance on Factory call. :param args: :param kwargs: :return: r )r5 �args�kwargsr r r �__call__� s zSSDPFactory.__call__c C s || _ dS )zL On connection. :param transport: :return: N)r3 )r5 r3 r r r �connection_made� s zSSDPFactory.connection_madeN� c C s� d}dd� }|� }||k rLz| j j||d� | j�d� W dS tyE } z| j�d|� t�|� |d7 }||� 7 }W Y d}~nd}~ww ||k s dS dS ) a� On multi-master environments, running on the same machine, transport sending to the destination can be allowed only at once. Since every machine will immediately respond, high chance to get sending fired at the same time, which will result to a PermissionError at socket level. We are attempting to send it in a different time. :param data: :param addr: :return: r c S s dt �dd� S )Ng �?r= � )�random�randintr r r r �slp_time� s z%SSDPFactory._sendto.<locals>.slp_time)�addrzSent successfullyNzPermission error: %sr )r3 �sendtor'