File: //lib64/python3.9/site-packages/hgext/zeroconf/__pycache__/__init__.cpython-39.pyc
a
�+�b� � @ s& d Z ddlmZ ddlZddlZddlZddlmZ ddlm Z m
Z
mZmZm
Z
mZmZ ddlmZ dZdadad d
� Zdd� Zd
d� ZG dd� de�Zdd� Zdd� Zdd� Zdd� Zdd� Zdd� Z e�!e de � e�!ejde� e�!ejde� e�!ejd e� e�!ed!e� e�!ed"e� dS )#a� discover and advertise repositories on the local network
The zeroconf extension will advertise :hg:`serve` instances over
DNS-SD so that they can be discovered using the :hg:`paths` command
without knowing the server's IP address.
To allow other people to discover your repository using run
:hg:`serve` in your repository::
$ cd test
$ hg serve
You can discover Zeroconf-enabled repositories by running
:hg:`paths`::
$ hg paths
zc-test = http://example.com:8000/test
� )�absolute_importN� )�Zeroconf)�dispatch�encoding�
extensions�hg�pycompat�rcutil�ui)�servers ships-with-hg-corec C s� z,t � t jt j�} | �d� | �� d }|W S t jy@ Y n0 z6t �t �� �d d }d|v rfd}|�d�sv|W S W n t j t j
fy� d}Y n0 z,t � t jt j�} | �d� | �� d }|W S t jy� Y n0 |S )N)�1.0.0.1r r � �:z 127.0.0.1�127.)r
r )�socketZAF_INETZ
SOCK_DGRAMZconnectZgetsockname�errorZ
gethostbyaddr�gethostname�
startswithZgaierrorZherror)�s�ipZdumbip� r �=/usr/lib64/python3.9/site-packages/hgext/zeroconf/__init__.py�getip7 s.
r c
C s� t s,t� }|�d�rd S t�|�at�|�a t�� �d�d }|d }d|| f } tj dt
�| d �|||d| d �tddd
�}t �|� tj dt
�| d �|||d| d �tddd
�}t �|� d S )
Nr �.r z.localz%s-%ss _http._tcp.local.z._http._tcp.local.� /)� descriptions path)r �port�
properties�addressZweight�priority� _hg._tcp.local.z._hg._tcp.local.)
r r r r Z inet_aton�localipr r �splitZServiceInfor �bytestrZregisterService)�name�desc�pathr r �hostname�hostZsvcr r r �publishW s>