File: //usr/lib/python3/dist-packages/hgext/zeroconf/__pycache__/__init__.cpython-310.pyc
o
�]Lb� � @ 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� zt � t jt j�} | �d� | �� d }|W S t jy Y nw zt �t �� �d d }d|v r3d}|�d�s;|W S W n t j t j
fyK d}Y nw zt � t jt j�} | �d� | �� d }|W S t jym Y |S w )N)�1.0.0.1r r � �:z 127.0.0.1�127.)r
r )�socket�AF_INET�
SOCK_DGRAM�connect�getsockname�error�
gethostbyaddr�gethostname�
startswith�gaierror�herror)�s�ip�dumbip� r �9/usr/lib/python3/dist-packages/hgext/zeroconf/__init__.py�getip7 s6
�
��
�r! c
C s� t st� }|�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�address�weight�priority� _hg._tcp.local.z._hg._tcp.local.)
r r! r r � inet_aton�localipr r �split�ServiceInfor �bytestr�registerService)�name�desc�pathr% r �hostname�host�svcr r r �publishW s>