| Server IP : 198.38.94.13 / Your IP : 216.73.217.33 Web Server : Apache System : Linux d4744.dxb1.stableserver.net 5.14.0-611.49.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Apr 21 16:39:08 EDT 2026 x86_64 User : revivere ( 1140) PHP Version : 8.2.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/__pycache__/ |
Upload File : |
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'