HEX
Server: Apache
System: Linux pdx1-shared-a1-38 6.6.104-grsec-jammy+ #3 SMP Tue Sep 16 00:28:11 UTC 2025 x86_64
User: mmickelson (3396398)
PHP: 8.1.31
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/hgext/zeroconf/__pycache__/__init__.cpython-310.pyc
o

�]Lb��@s&dZddlmZddlZddlZddlZddlmZddlm	Z	m
Z
mZmZm
Z
mZmZddlmZdZdadad	d
�Zdd�Zd
d�ZGdd�de�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Z e�!e	de �e�!ejde�e�!ejde�e�!ejd e�e�!ed!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)�serversships-with-hg-corec	Cs�zt�tjtj�}|�d�|��d}|WStjy Ynwzt�t���dd}d|vr3d}|�d�s;|WSWntj	tj
fyKd}Ynwzt�tjtj�}|�d�|��d}|WStjymY|Sw)N)�1.0.0.1rr��: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�getip7s6
�
��
�r!c
Cs�tst�}|�d�rdSt�|�at�|�at���d�d}|d}d||f}tj	dt
�|d�|||d|d	�tddd
�}t�|�tj	dt
�|d�|||d|d	�tddd
�}t�|�dS)
Nr�.rz.localz%s-%ss_http._tcp.local.z._http._tcp.local.�/)�descriptionspath)r�port�
properties�address�weight�priority�_hg._tcp.local.z._hg._tcp.local.)
rr!rr�	inet_aton�localiprr�split�ServiceInfor	�bytestr�registerService)�name�desc�pathr%r�hostname�host�svcrrr �publishWs>


�

�
r7cCs6|||�}|j}z|j}WnEtyR|���(}|jp"tj�|j�}|j	�
ddd��d�}|j	�
dd�}	|	s9|}	Wd�n1sCwYt||	||�Y|Sw|j	�
ddd��d�d}
|D]6\}}|j	�
�}t��rz|�tj�|dd��tj�|�}|
|�d�}|�
dd�}	|	s�|}	t||	||�qb|S)Nswebsprefix�r#r$s.hgshgrc)r%�repos�AttributeError�_obtainrepo�reponame�osr3�basename�rootr�config�stripr7�copyr
�
use_repo_hgrc�
readconfig�join)�
create_serverr�app�httpdr%r9�repor1r3r2�prefix�urrr �zc_create_server�s8


���
rLc@s$eZdZdd�Zdd�Zdd�ZdS)�listenercCs
i|_dS�N)�found)�selfrrr �__init__�s
zlistener.__init__cCs"t|�|jvr|jt|�=dSdSrN)�reprrO�rPr�typer1rrr �
removeService�s�zlistener.removeServicecCs|�||�|jt|�<dSrN)�getServiceInforOrRrSrrr �
addService�szlistener.addServiceN)�__name__�
__module__�__qualname__rQrUrWrrrr rM�srMccs��t�}|�d�rdSt�|�}t�}t�|d|�t�d�|��|j�	�D](}|j
d|j
�d��}dt�
|j�|j|j�dd�f}d|t�|�fVq(dS)	Nrr*r�.zhttp://%s:%s%sr3�/�zc-)r!rrrM�ServiceBrowser�time�sleep�closerO�valuesr1�indexr�	inet_ntoar'r%r&�getr	r/)rr�l�valuer1�urlrrr �
getzcpaths�s$�



��ricOsL|dkr|�d�rt�D]\}}||kr|Sq||||g|�Ri|��S�N�pathsr]�rri)�origrP�section�key�args�kwargsr1r3rrr r@�s�r@cOs.|||g|�Ri|��}|dkr|t�7}|S)Nrk)ri)rmrPrnrprqr9rrr �configitems�s
rrc
Os\||||g|�Ri|��\}}|dkr*|�d�r*t�D]\}}	||kr)|	|fSq||fSrjrl)
rmrPrnr1rprq�opt�sub�zcname�zcurlrrr �configsuboptions�s�rwcCs0t�D]\}}||kr|�tj�Sq||�SrN)ri�encoder)rm�sourcer1r3rrr �defaultdest�s
�rzcCs0z|||||�Wtrt��SStrt��wwrN)rra)rmr�options�cmd�cmdfuncrrr �cleanupafterdispatch�s
�
�r~s_runcommandsconfigsconfigitemssconfigsuboptionssdefaultdests
create_server)"�__doc__�
__future__rr=rr_�r�	mercurialrrrrr	r
r�uimod�mercurial.hgwebr�	servermod�
testedwithr,r!r7rL�objectrMrir@rrrwrzr~�wrapfunctionrrrr �<module>s6$	 )"