HOME


Mini Shell 1.0
Redirecting to https://devs.lapieza.net/iniciar-sesion Redirecting to https://devs.lapieza.net/iniciar-sesion.
DIR: /proc/self/root/usr/lib/python3/dist-packages/ntp/__pycache__/
Upload File :
Current File : //proc/self/root/usr/lib/python3/dist-packages/ntp/__pycache__/util.cpython-311.pyc
�

|�d8���(�dZddlmZmZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZ
ddlZ
ddlZ
dZdZdZdZdZd	ZdZd
ZdZdZd
ZdadZdZdZet6eeegZdZ dZ!dZ"da#e e!e"tFgZ$ee$fZ%d�Z&d�Z'dZ(dZ)dZ*d�Z+d�Z,d�Z-d�Z.d�Z/d �Z0d!�Z1d"�Z2d#�Z3d$�Z4d%�Z5d&�Z6d'�Z7d(�Z8d)�Z9d*�Z:d+�Z;d,�Z<d-�Z=d.�Z>d/�Z?d0�Z@d1�ZAdQd3�ZBdQd4�ZCd5�ZDd6�ZEd7�ZFGd8�d9��ZGeG��ZHejIfd:�ZJejKd;d<d=g��ZLeMeNurddlOZOddlPZPddlQZQd>�ZRGd?�d@��ZSdRdB�ZTGdC�dD��ZUGdE�dF��ZVGdG�dH��ZWGdI�dJ��ZX	ddKlmYZYn#eZ$rGdL�dMe[��ZYYnwxYwdSdN�Z\dTdO�Z]dP�Z^dS)UzCommon utility functions�)�print_function�divisionN��@� �������nsuµs�ms�s�ks�ppt�ppb�ppmu‰c�P�dtjjkrt��dSdS)NzUTF-8TF)�sys�stdout�encoding�deunicode_units���*/usr/lib/python3/dist-packages/ntp/util.py�
check_unicoder5s(���#�*�%�%�%������t��5rc��d}d}|tt�t��<|tt�t��<|a|adS)z�Under certain conditions it is not possible to force unicode output,
    this overwrites units that contain unicode with safe versions�us�ppkN)�	UNITS_SEC�index�UNIT_US�	UNITS_PPX�UNIT_PPK)�new_us�new_ppks  rrr<sH���F��G�*0�I�i�o�o�g�&�&�'�+2�I�i�o�o�h�'�'�(��G��H�H�Hr)�tai�poll)�	rootdelay�rootdisp�rootdist�offset�
sys_jitter�
clk_jitter�leapsmearoffset�	authdelay�koffset�kmaxerr�kesterr�kprecis�
kppsjitter�fuzz�clk_wander_threshold�tick�in�out�bias�delay�jitter�
dispersion�
fudgetime1�
fudgetime2)�	frequency�
clk_wanderc���|�dSttj����dz|zdz}||kr+|�|��|���dSdS)zQdebug is the current debug value
    threshold is the trigger for the current logN� �
)�rfc3339�time�write�flush)�logfp�text�debug�	thresholds    r�dologrOVsf��
�}����4�9�;�;���#�%��,�t�3�D��	���
���D����
���
�
�
�
�
��rc���	||��}n^#t$rQtj�||z��tj�|��t	d���wxYw|S)z�Attempts to typecast an argument, prints and dies on failure.
    errtext must contain a %s for splicing in the argument, and be
    newline terminated.r)�
ValueErrorr�stderrrI�
SystemExit)�arg�castfunc�errtext�usage�casteds     r�safeargcastrYast�����#�����������
����3��'�'�'��
���������m�m�������Ms
��AA)c��ddzS)z6Returns the NTPsec version string in a standard formatz	ntpsec-%sz1.2.2rrrr�
stdversionr[ns
���� � rc���tjdtj|����}t|��}d|vr7|�dd��d}t|��dkr|d|zz
}|dz
}|S)z<RFC 3339 string from Unix time, including fractional second.z%Y-%m-%dT%H:%M:%S�.rr�Z)rH�strftime�gmtime�str�split�int)�t�rep�subsecs   rrGrGssq��
�-�+�T�[��^�^�
<�
<�C��A���A�
�a�x�x�����a����#���v�;�;��?�?��3��<��C��3�J�C��Jrc��|dd�}d�|�d����}tj�|��}|S)Nr�r])�joinrb�ntp�util�
hexstr2octets)�txt�values  r�deformatNTPTimerosD��

�a�b�b�'�C�
�'�'�#�)�)�C�.�.�
!�
!�C��H�"�"�3�'�'�E��Lrc�(�t|��dzdkr
|dd�}g}tdt|��d��D]=}|�tt	|||dz�d�������>d�|��S)Nrr���rrh)�len�range�append�chrrcri)�hexstr�valuesr"s   rrlrl�s����F���a��A���������
�F��q�#�f�+�+�q�)�)�;�;���
�
�c�#�f�U�5��7�]�3�R�8�8�9�9�:�:�:�:�
�7�7�6�?�?�rc�*�|d|�||d�fS)z4Breaks a sequence into two pieces at the slice pointNr)�data�
slicepoints  r�	slicedatar{�s�������d�:�;�;�/�/�/rc�,�d}|�d��dkr|�d��\}}d|z}nXd|vrT|�d��}d||d�vr3|�d��}||d�}|d|�}|dd�}||fS)Nrh�:r�]rq)�countrb�rindex)�hostname�
portsuffix�rbrak�portseps    r�	portsplitr��s����J��~�~�c���a���!)����!4�!4���:��:�%�
�
�	��������$�$���(�5�6�6�"�"�"��o�o�c�*�*�G�!�'�(�(�+�J�����)�H���"��~�H��j�!�!rc�N�����	�d�d}g�g�	g����	fd������	fd�}d}t|��}||k�rd�r�|||kr���d}d��n:||dkr>|dz
}||dvr.��td	||zd
z����n��||��n�||dkr/||kr#||dkr|dz
}||kr||dk�|dz}n�||d
vrd�||}�r
���nx||dkr|dz
}||dkrt�nS||dkr|��n<||tjvr
�r
���n��||��|dz
}||k��d|���S)NFrhc���d����}�sB	t|��}n1#t$r$	t|��}n#t$rYnwxYwYnwxYw�|f}��|��g�dd�<dS)Nrh)rircrQ�floatrt)�token�wrapper�current�inQuote�tokenss  ���r�	pushTokenzparseConf.<locals>.pushToken�s�������� � ���	�
��E�
�
�����
�
�
��!�%�L�L�E�E��!�����D�������
����
�E�"���
�
�g���������
�
�
s2�*�
A�A�A�
A�A�A�A�Ac�p���r
����r&���dd���g�dd�<dSdS�N)rt)r��linesr�r�s����r�pushLinezparseConf.<locals>.pushLine�sS����	��I�K�K�K��	��L�L������#�#�#��F�1�1�1�I�I�I�	�	rr�\rz'"n\z'\�'�#rFz'"T)rrrt�eval�SyntaxError�string�
whitespace)
rL�quoteStarterr��i�tlenr�r�r�r�r�s
     @@@@@r�	parseConfr��sE��������G��L��E�
�F��G����������������	
�A��t�9�9�D�
�d�(�(��	(��A�w�,�&�&��	����!������a��D����Q�����7�h�&�&��N�N�4���a��(8�4�(?�#@�#@�A�A�A�����t�A�w�'�'�'�'��A�w�#�~�~��4�x�x�d�1�g��o�o���F�A��4�x�x�d�1�g��o�o��Q�����a��E�!�!���#�A�w��� ��I�K�K�K���a��D����Q�����7�d�?�?�%�%�#��a��D�����
�
�
�
��a��F�-�-�-�� ��I�K�K�K�����t�A�w�'�'�'�	�Q���C�d�(�(�D
�H�J�J�J��Lrc��|���}g}|D]'}t|d��}|�|���(d�|��}|S)z.Pretty print string of space separated numbers�rE)rb�
fitinfieldrtri)ry�parts�cooked�part�fitted�rendereds      r�
stringfiltr��s_���J�J�L�L�E�
�F������D�!�$�$���
�
�f������x�x����H��Orc�F�|���}i}d}|D]O}t|��\}}t|��}t||��}|�|d��dz||<�Pd}d}	|���D]}
|
|kr�	||
}||	kr|
}|}	�g}|D]7}t
||��}t|d��}
|�|
���8d�	|��dzt|t�t��zz}|S)zECooks a filt* string of space separated numbers, expects millisecondsi`y��rrr�rE)
rb�scalestring�maxdownscale�max�get�keys�
rescalestringr�rtrir!r"�UNIT_MS)ryr��oomcount�minscaler�rn�oom�ds�
mostcommon�highestcount�keyrr�r�r�s               r�stringfiltcookerr��sF���J�J�L�L�E��H��H��1�1�� ��&�&�
��s�
�$�
�
���r�8�$�$�� ���S�!�,�,�q�0���
�
��J��L��}�}���!�!����>�>����
���<����J� �L��
�F������T�:�.�.���D�!�$�$���
�
�f������x�x����#�%�	�*�2;�/�/�'�2J�2J�3K�)L�L�H��Orc�*�tD]
}||vr|cS�dS)z2Returns the unit group which contains a given unitN)�
unitgroups)�unit�groups  r�getunitgroupr�s2�������5�=�=��L�L�L���rc���t|��}|�|�|��dzS||vr?|�|��}|�|��}t||z
dz��SdS)z:Calculates how many orders of magnitude separate two unitsNr
)r�r"�abs)�a�br��ia�ibs     r�oomsbetweenunitsr�si����O�O�E��y��{�{�1�~�~��!�!�	
�e���
�[�[��^�^��
�[�[��^�^���B��G�q�=�!�!�!��4rc��|ddkr
|dd�}d}nd}d|vr|�d��\}}n|}d}|||fS)	zEBreaks a number string into (aboveDecimal, belowDecimal, isNegative?)r�-rNTFr]rh)rb)rn�negative�above�belows    r�breaknumberstringr�+s_���Q�x�3����a�b�b�	�������
�e�|�|��{�{�3�'�'���u�u������5�(�#�#rc�\�|dkrd}|rd�||f��}n|}|rd|z}|S)z'Glues together parts of a number stringrh�0r]r�)ri)r�r��
isnegative�newvalues    r�gluenumberstringr�:sJ����{�{������8�8�U�E�N�+�+������"���>���Orc�j�d|vr.t|�d��d��}|dzSdS)z?Maximum units a value can be scaled down without inventing datar]rr
r)rrrb)rn�
digitcounts  rr�r�Gs=��
�e�|�|�����S�)�)�!�,�-�-�
��q��!�!��qrc���t|��\}}}|dkrt|||��}|St|��}t|��}t|dz��}|dkr4||kr||z
}d}	d|z|z|z}
n@|}||d�|z}
|d|�}	n%|dkr||krdS||d|�z}	||d�}
|	�d��}	t|	|
|��}|S)z2Rescale a number string by a given number of unitsrr
rhr�N)r�r�rrr��lstrip)
rn�unitsscaled�whole�decr��hilen�lolen�digitsmoved�padcount�newwhole�newdec�	choppointr�s
             rr�r�Rs%��,�U�3�3��E�3���a��� ���X�6�6������J�J�E���H�H�E��k�A�o�&�&�K��Q����;���#�U�*�H��H��H�n��-��3�F�F�$��I��9�:�:�&��,�F��Z�i�Z�(�H�H�	�q����;����4��s�<�K�<�0�0�H�����&�F����s�#�#�H���&�(�;�;�H��Orc�n�t|��}t||���d��}||fS)zDScale a zero value for the unit with the highest available precisionr�)r�r�r�)rn�scaler�s   r�
formatzeror�us7������E��U�E�*�*�1�1�#�6�6�H��e��rc�$�t|��rt|��St|��\}}}t|��}|dkst|��rwd}t|��}||kr||dkrn|dz
}||k�|dzdz}|dz}||kr
|dz}|dz}|d|��d��}	||d�}
|}n0|dz}|dz}
|
dkr|dz}d}
|d|
�}	||
d�|z}
|}t|	|
|��}||fS)z4Scales a number string to fit in the range 1.0-999.9rr�rr
N)�isstringzeror�r�rrr�r�)rnr�r�r�r�r�r��lounits�	movecharsr�r��
unitsmoved�hiunits�hidigitsr�s               rr�r�|sd���E���!��%� � � �,�U�3�3��E�3����J�J�E�
��
�
�|�E�*�*�
�
���C�����%�i�i��1�v��}�}��
��F�A��%�i�i���6�Q�,���a�K�	��9����A�v�G��!��I��z�	�z�?�)�)�#�.�.���Y�Z�Z����X�
�
��1�*���1�9���q�=�=��q�L�G��H���(��#���x�y�y�!�C�'���
���&�(�;�;�H��j�!�!rc���t|��}|�|}n�||kr|}n�||krd||z
z}||z}n�d|vr�||z
}t|�d��d��}t||��}||z
}tt	t|��|����}|�d��}	t|	d��}|dkr|	ddz}n||kr
||z
}
|d|
zz}n|}|S)zFAttempt to fit value into a field, preserving as much data as possibleNrEr]rrr�)rrrb�minra�roundr�)rn�	fieldsize�vallenr��pad�diff�declen�croplen�roundlen�splittedr�s           rr�r��s!��
��Z�Z�F������	�9�	�	����	�)�	�	��Y��'�(����;����%�<�<��I�%�D�����S�)�)�!�,�-�-�F��&�$�'�'�G���'�H��5��u���x�8�8�9�9�H��~�~�c�*�*�H���!��%�%�F��1�}�}�#�A�;��,����F�"�"�#�f�,��#�s�X�~�6����H��Orc���d|vr|S|dkr|�d��dS|�d��dz}t|��|z
}t||��}||z
}|dkr|d|�}|S)z(Crops digits below the maximum precisionr]rrN)rb�findrrr�)rn�ooms�dstart�dsize�	precision�	cropcounts      r�
cropprecisionr��s���
�%������q�y�y��{�{�3����"�"�
�Z�Z��_�_�q�
 �F���J�J���E��D�%� � �I��	�!�I��1�}�}��k�	�z�k�"���Lrc��|D]	}|dvrdS�
dS)z)Detects whether a string is equal to zero)r�r]r�FTr)rnr�s  rr�r��s-��
�����O�#�#��5�5�$��4rc���tD]V}||vrP|�
|dcS|�|��}||z
}d|cxkrt|��kr
nn
||cSdS�WdS)z7Returns a unit at a different scale from the input unitNr)r�r"rr)r��mover�r"s    r�unitrelativetor��s����
 �
 ���5�=�=��|��Q�x�������D�)�)����
����*�*�*�*��E�
�
�*�*�*�*�*� ��<�'�'�'��4�4���4rFc��|tvrt}n$|tvrt}n|tvrt
}n|St
|||||��S)z1Call unitify() with the correct units for varname)�S_VARS�UNIT_S�MS_VARSr��PPM_VARS�UNIT_PPM�unitify)rn�varname�baseunit�width�	unitSpace�starts      r�
unitifyvarr	�sS���&������	�G�	�	����	�H�	�	�������5�%��5�)�<�<�<rc��|�t|��d}t||��}t|��rt|��\}}n"t	||��}t|��\}}t
||��}|rd}	d}
nd}	d}
|�1|�d}n|t|��|	zz
}t||��|
z|z}n||
z|z}|�|�	��}|S)zEFormats a numberstring with relevant units. Attempts to fit in width.NrrrErh)
r�r�r�r�r�r�r�rrr��strip)rn�startingunitrrrr�r�r��unitget�spaceWidthAdjustment�spacer�	realwidths            rrr�s������-�-�a�0���L�(�3�3�D��E���5�)�%�0�0���*�*� ���-�-��*�8�4�4���*��\�:�6�6�G��� ����� �������=��I�I���W���0D�!D�E�I��h�	�2�2�V�;�g�E����6�>�L�0���}��>�>�#�#���Orc��t|t��rd|zSt|ttf��sdStt|�������dkrdSd}|dkr$|dkrd}n>|d	krd
}n5|dkrd}n,|d
krd}n#|dkrd}n|dkrd
}n|dkrd}n|dkrd}||zS)�7Scaled floating point formatting to fit in 8 characters�%8s�       X�nan�     nan�%8drg@�@z%8.4f���@�%8.3f�j�@�%8.2f���.A�%8.1fgY��@������j����
isinstancerarcr��lower��f�fmts  r�f8dot4r's����!�S�����q�y���a�#�u��&�&���z�
�5��8�8�}�}������%�%��z�
�C��A�v�v��v�:�:��C�C�
��[�[��C�C�
��\�\��C�C�
��]�]��C��
�v�:�:��C�C�
��[�[��C�C�
��\�\��C�C�
��]�]��C���7�Nrc�^�t|t��rd|zSt|ttf��sdStt|�������dkrdSd}|dkr|dkrd}n,|d	krd
}n#|dkrd}n|d
krd}n|dkrd
}n|dkrd}||zS)rrrrrrrrrrrrrrrr r!r$s  r�f8dot3r)6s����!�S�����q�y���a�#�u��&�&���z�
�5��8�8�}�}������%�%��z�
�C��A�v�v��w�;�;��C�C�
��\�\��C�C�
��]�]��C��
�w�;�;��C�C�
��\�\��C�C�
��]�]��C���7�Nrc�p�	tj��S#t$rtj��cYSwxYw)z>Try to get a monotonic clock value unaffected by NTP stepping.)rH�	monotonic�AttributeErrorrrr�	monoclockr-WsB����~����������y�{�{�������s��5�5c�(�eZdZdZdd�Zd�Zdd�ZdS)	�CachezSimple time-based cache�,c�"�||_i|_dSr�)�defaultTimeout�_cache)�selfr2s  r�__init__zCache.__init__cs��,�������rc�|�||jvr2|j|\}}}|t��|z
kr|S|j|=dSdSr�)r3r-)r4r�rn�settime�ttls     rr�z	Cache.getgsO���$�+���"&�+�c�"2��E�7�C��)�+�+��+�+�+����K��$��t��4rNc�N�|�|n|j}|t��|f|j|<dSr�)r2r-r3)r4r�rn�	customTTLr8s     r�setz	Cache.setrs0��$�0�i�i�d�6I��!�9�;�;��4���C���r)r0r�)�__name__�
__module__�__qualname__�__doc__r5r�r;rrrr/r/`sQ������������	�	�	�5�5�5�5�5�5rr/c�N�t�|��}|�|Stjd|��}|st�t|��\}}	t
j|d|ddtj��}n#tj	$rd|zcYSwxYw|d\}}}}	}
	t
j
|
tj��}|d���|z}n0#tj	$r|	p|}
|
���|z}YnwxYwt�
||��|S)z.Canonicalize a hostname or numeric IP address.Nz
([:.[\]]|\w)*rz
DNSFAIL:%s)�canonicalization_cacher��re�match�	TypeErrorr��socket�getaddrinfo�AI_CANONNAME�gaierror�getnameinfo�NI_NAMEREQDr#r;)�inhost�family�resname�mr�r��ai�socktype�proto�	canonname�sockaddr�name�result�
canonicalizeds              r�canonicalize_dnsrW{sM��$�(�(��0�0�G�����
���&�)�)�A�����&�v�.�.��X�z�'�
�
��$���1� &� 3�5�5�����?�'�'�'��h�&�&�&�&�'����57��U�2�V�X�u�i��4��!�(�F�,>�?�?���a������:�-�����?�4�4�4�"�-�X�
��$�$�&�&��3����	4����
���v�v�.�.�.��Ms$�#A4�4B�
B�<C�*D�D�TermSizer�heightc�\�d}tjd��r�tturt	jd��\}}||f}nd	t
jdtj	dtjt
jddddd������\}}}}||f}n#t$rYnwxYwt|�S)z!Return the current terminal size.)�P�r�HHHHrr)�os�isattyra�bytes�shutil�get_terminal_size�struct�unpack�fcntl�ioctl�termios�
TIOCGWINSZ�pack�IOErrorrX)�size�w�h�hp�wps     r�termsizerp�s����D�	�y��|�|���e����-�h�7�7�F�Q���q�6�D�D�
�%�}���K��7�#5� &��F�A�q�!�Q� ?� ?�A�A� B� B���1�b�"��1�v�����
�
�
���
�����T�?�s�AB�
B"�!B"c�6�eZdZdZejjfd�Zd�ZdS)�PeerStatusWordz:A peer status word from readstats(), dissected for displayc�b�tj�|��|_tj�|��|_tj�|��}|tjjzrd|_nd|_|tjj	zrd|_
n#|tjjzrd|_
nd|_
|tjjzdkrd|_
n#|tjjzrd|_
nd|_
|tjjkr�tjjdtjjdtjjd	tjjd
tjjdtjjdtjjd
tjjdi}||dz|_n�|dzt4kr4|t6zdkrd|_n_|t8zdkrd|_nId|_nA|dzt:krd|_n+|dzt<krd|_n|dzt>krd|_tjj dtjj!dtjj"dtjj#dtjj$dtjj%dtjj&dtjj'dtjj(dtjj)dtjj*d i}|�+tjj,|jzd��|_-dS)!N�yes�no�noner�ok �bad�reject�	falsetick�excess�outlier�	candidate�backupzsys.peerzpps.peerr�r
�insane�hi_disprh�sel_cand�	sync_cand�sys_peer�mobilize�
demobilize�unreachable�	reachable�restart�no_reply�
rate_exceeded�
access_denied�
leap_armed�clock_alarm).rj�control�CTL_PEER_EVENT�event�CTL_PEER_NEVNT�event_count�CTL_PEER_STATVAL�CTL_PST_CONFIG�conf�
CTL_PST_BCAST�reach�
CTL_PST_REACH�CTL_PST_AUTHENABLE�auth�CTL_PST_AUTHENTIC�magic�NTP_OLDVERSION�CTL_PST_SEL_REJECT�CTL_PST_SEL_SANE�CTL_PST_SEL_CORRECT�CTL_PST_SEL_SELCAND�CTL_PST_SEL_SYNCCAND�CTL_PST_SEL_EXCESS�CTL_PST_SEL_SYSPEER�CTL_PST_SEL_PPS�	condition�OLD_CTL_PST_SEL_REJECT�OLD_CTL_PST_SANE�OLD_CTL_PST_DISP�OLD_CTL_PST_SEL_SELCAND�OLD_CTL_PST_SEL_SYNCCAND�OLD_CTL_PST_SEL_SYSPEER�PEVNT_MOBIL�
PEVNT_DEMOBIL�
PEVNT_UNREACH�PEVNT_REACH�
PEVNT_RESTART�PEVNT_REPLY�
PEVNT_RATE�
PEVNT_DENY�PEVNT_ARMED�
PEVNT_NEWPEER�PEVNT_CLOCKr��
PEER_EVENT�
last_event)r4�status�
pktversion�statval�seldict�
event_dicts      rr5zPeerStatusWord.__init__�s����[�/�/��7�7��
��;�5�5�f�=�=����+�.�.�v�6�6���S�[�/�/�	��D�I�I��D�I��S�[�.�.�	��D�J�J�
�s�{�0�
0�	��D�J�J��D�J��c�k�4�4��:�:��D�I�I�
�s�{�4�
4�	��D�I�I��D�I���	�0�0�0���.����,�k���/����/����0�+���.����/����+�Z�	�G�%�W�s�]�3�D�N�N��#�
�"8�8�8��.�.�1�4�4�%-�D�N�N�� 0�0�Q�6�6�%.�D�N�N�%'�D�N�N��C�-�$;�;�;�!+�����C�-�$<�<�<�!,�����C�-�$;�;�;�!+���
�I�!�:��I�#�\��I�#�]��I�!�;��I�#�Y��I�!�:��I� �/��I� �/��I�!�<��I�#�Z��I�!�=��
�%�.�.���)=��
�)J�B�O�O����rc��d|jzS)Nzjconf=%(conf)s, reach=%(reach)s, auth=%(auth)s, cond=%(condition)s, event=%(last_event)s ec=%(event_count)s)�__dict__�r4s r�__str__zPeerStatusWord.__str__s��N��-� �	!rN)	r<r=r>r?rjr��NTP_VERSIONr5r�rrrrrrr�sN������@�@�*-�)�*?�BP�BP�BP�BP�H!�!�!�!�!rrr�, c�2�tj���jdz
}d}d}t	t|t�����}|���D�]&\}\}}	||vrdt|��zdz}
|
|z}nd|z}|dvr$|tj�	|��z
}�n�|d	vr||z
}�n�|d
kr
|d|z
}�nq|dkr
|d
|zz
}�na||vrB|r|t|��z
}�nG|d�|�����z
}�n|dkrL|d|zz
}|dkr|dz
}n-d}t|��D]\}
}d|
z|zr|||
dzz
}�|dd�}n�|tvr6|r!|t|	t t"d���z
}n�|t%|��z
}n�|t&vr6|r!|t|	t(t"d���z
}n^|t%|��z
}nK|t*vr0|r|t|	t,d���z
}n%|t%|��z
}n|t%|��z
}||z
}d}|D]}|dkrd}�|dz
}�|t	|��z|kr
|dd�dz}||z
}��(|dd�dz}|S)zCooked-mode variable display.rrh)�	filtdelay�
filtoffset�filtdisp�	filterror)r��%zs =z%s=)�reftime�clock�org�rec�xmt)�srcadr�peeradr�dstadr�refid�leap)�00�01�10�11r�z%03lo�	�flashz%02x rrw)
�pkt_dup�	pkt_bogus�
pkt_unsync�
pkt_denied�pkt_auth�pkt_stratum�
pkt_header�pkt_autokey�
pkt_crypto�peer_stratum�	peer_dist�	peer_loop�peer_unreachrrENrq)rrF���)rjrkrprrrr��itemsra�ntpc�
prettydater�rirb�	enumeraterrr��UNIT_NS�reprr�r�rr)�	variables�	showunits�seprrL�specials�longestspecialrTrn�rawvalue�	formatter�item�tstflagnamesr��n�	lastcount�cs                 r�cookr�	s1���H�����%��)�E�
�D�C�H���X�3�/�/�/�0�0�N�%.�_�_�%6�%6�P�P�!�� ��x��8����c�.�1�1�1�E�9�I��t�#�D�D��4�<�D��<�<�<��C�H�'�'��.�.�.�D�D�
�=�
=�
=�
�E�M�D�D�
�V�^�^��,�U�3�3�D�D�
�W�_�_��G�e�O�#�D�D�
�X�
�
��
1��(��/�/�/�����	�	�%�+�+�-�-�0�0�0���
�W�_�_��G�e�O�#�D���z�z���
��� ��(��5�5�6�6�F�Q���Q��%�'�6���Q��#� 5�5�������9�D�D�
�W�_�_��
$����'�7�$�G�G�G�G�����U���#���
�V�^�^��
$����&�'��F�F�F�F�����U���#���
�X�
�
��
$����(�$�?�?�?�?�����U���#����D��K�K��D������	��	�	�A��D�y�y��	�	��Q��	�	��s�4�y�y� �5�(�(�����9�t�#�D����������9�t��D��Krc��eZdZdZdddejfd�Zed���Zed���Z	ed���Z
d	�Zd
�Zd�Z
d�ZdS)
�PeerSummaryz-Reusable report generator for peer statisticsFNrc	�>�||_||_||_||_||_||_||_||_t|pddz
d��|_	d|j	z|_
d|_d�|j
��|_
d|_d|_g|_dS)Nr[r\�z     remote    z(st t when poll reach   delay   offset   )�displaymoder��
showhostnamesr��
wideremoterMrK�	termwidthr��horizontal_slack�	namewidth�
refidwidth�ljust�_PeerSummary__remote�_PeerSummary__common�_PeerSummary__header�polls)	r4rr�rrr�rrMrKs	         rr5zPeerSummary.__init__gs���'���$���*���"���$�����
���
�"���!$�Y�_�"��$:�B� ?� ?����d�3�3������)�/�/���?�?��
�B��
���
���
�
�
rc���t|t��r|dkrdS|dkrt|��S|dzdz}|dkrd|zS|dzdz}|dkrd	|zS|d
zdz}d|zS)
z(Print an interval in natural time units.rr�i��<r0z%dm�`z%dh�r\z%dd)r"rcra)r�s r�prettyintervalzPeerSummary.prettyinterval�s����$��$�$�	���	�	��3��4�<�<��t�9�9���r�	�R����3�;�;��4�<���r�	�R����2�:�:��4�<���r�	�R����t�|�rc�N�t|��|kr|Sd||dzd�zS)z8Truncate on the left using leading _ to indicate 'more'.r�rN)rr)r��maxlens  r�
high_truncatezPeerSummary.high_truncate�s4���x�=�=�F�"�"��O���6�'�!�)�*�*�-�-�-rc�*�d|vod|ddvS)z;Does a set of variables look like it returned from a clock?�srchost�(rr)r�s r�is_clockzPeerSummary.is_clock�s#���I�%�H�#��9�1E�a�1H�*H�Hrc��|jdkr3|jd�|j��z|jzdz|_n�|jdkr3|jd�|j��z|jzdz|_nE|jdkrd|_n2|jd	�|j��z|jzdz|_|jS)
zColumn headers for peer display�apeersz   refid   assid  r>�opeersz       local      z  disp�rpeerszH st t when poll reach   delay   offset   jitter refid           T remotez       refid      )rrrrr	r
r�s r�headerzPeerSummary.header�s�����x�'�'� �M�$�*�*�4�?�;�;�<��
�� (�)�D�M�M��
��
)�
)� �M�$�*�*�4�?�;�;�<��
�� (�)�D�M�M��
��
)�
)�G�D�M�M�!�M�$�*�*�4�?�;�;�<��
�� (�)�D�M��}�rc��d|jzS)zWidth of display�O)rr�s rrzPeerSummary.width�s���D�)�)�)rc�x
�d}d}d}d}d}d}	d}
d}d}d}
d}d}d}d}d}d}d}d}d}d}d}d}d}d}d}d}d}d}d} d}!d}"d}#d}$d}%d	}&tj��}'|���D�][}(d
t|(��ksd
t|(d��kr�0|(\})\}*}+|)dkr-|jr|+n|*}t|+��d
kr|+ddkrd}�k|)dkrd|jvr|+}�}|)dkr|*}��|)dkr|*}��|)dkr|*}��|)dkr|*}
��|)dkr|*}��|)dkr|*}��|)dkr|*}��|)dkr|*}|dkrt
jj}��|)dkrd|jvr
|jr|+n|*}	d}��|)dkr|*}��|)dkr|*}��
|)dkr
|jr|+n|*}
�� |)dkr|*}��*|)dkr|*}|dkrt
jj}��K|)d kr|*}��U|)d!kr|*}��_|)d"kr
d"|jvr|+}��r|)d#kr3|*}t|'t
j	�
|��z
��}���|)d$kr3|*}t|'t
j	�
|��z
��}���|)d%kr|*}���|)d&ks|)d'kr
|jr|+n|*}��|)d(vr|*}��|)d)kr|*} ��|)d*ks|)d+kr|*}!��)|)d,kr|*}"��3|)d-kr|*}#��=|)d.kr|*}$��G|)d/kr|*}%��Q|)d0kr|*}&��[��]|t
jjkrd1}n�|t
jjkr|�
d2��rd3}n�d4}n�|t
jjkrgt�|��rd5}ny|d6krd7}np|�
d2��rd8}nX|&d	kr t#|&t%d9��z��}n2d:}n/|t
jjkrd;}n|t
jjkrd<}d},dt+||��z}-|j�|-��|jt
jjkr)d=t
j�|��d>z}.n(d?t
j�|��d@z}.|��|dAkr�|�
dB��s�|dCkr�|jd
zrd)t;��vr| r| }ns|jdzrd	|jr|j� dD��tC|��}|jr|j� dE��n#tD$rYdSwxYw|}n| }|�|r|}nd}|j#dFkr]|j$r3t|��|j%kr|,dG|.|fzz
},|,dH|j%d
zzz
},n#|,dI|.|j%|j%|d|j%�fzz
},|j#dJkrd>nd}/d|vrdK|vrd|zdz}|/rt|��|j&|/z
krdL}0n|}0|j#dFkrr|,|�'|0|j&��z
},|j#dJkr,|,dH|j&t|0��z
|/z
dzzz
},|,dM|zz
},n|,dH|j&t|0��z
zz
},|�|'}|r|	n|}1|jrdN�}2n	|rdO�}2ndP�}2|,dQ|"|t�(|��t�(|-��||2|��|2|
��|2|1��fzz
},|,dRz
},|,S)SzPeer status summary line.rhrr]gFN�?�rqrrr=�i����Tr��local�dstportr�r�r�r��headway�hmode�hpollr>�keyidr�r-�pmode�ppollr�r�r�r�r�r*r+r?)r�r�r�srcport�peerport�stratum�mode�unreachr��
ntscookiesr�z224.�M�B�l�POOL�pr�r��ur�Sz x.-+#*or�z .+*r
z0.0.0.0z127.127z::zDNS lookup begins...
zDNS lookup ends.
rz%c%s
rEz	%c%-*.*s rr}z...z%-6dc�,�t|t��Sr�)rr���xs r�<lambda>z%PeerSummary.summary.<locals>.<lambda>�s��g�a��1�1�rc� �t|��Sr�)r'r:s rr<z%PeerSummary.summary.<locals>.<lambda>����f�Q�i�i�rc� �t|��Sr�)r)r:s rr<z%PeerSummary.summary.<locals>.<lambda>�r>rz# %2ld %c %4.4s %4.4s  %3lo %s %s %srF))rHr�rrr�r
rjr��NTP_MINPOLLrcr��
lfptofloat�
MODE_BCLIENTX�MODE_BROADCASTx�
startswith�MODE_CLIENTr�rru�ord�MODE_ACTIVEx�
MODE_PASSIVExr�rrtr�r�r�r�r�localsrMrKrIrWrDrrrrrr)3r4�rstatusr��associd�
clock_name�dstadr_refidr%�estdelay�estdisp�	estjitter�	estoffsetr�r�r�r��have_jitterr&r'r(r)�	last_syncr�r*r+r��ptyper�r�r�r*�saw6r�rr,r.r/r0r�r1�nowr�rTrnr��line�poll_secr��
assocwidth�visible�jd�finis3                                                   r�summaryzPeerSummary.summary�s����
����������	��	��	����
��������������	��������	����������	������������������
��i�k�k���O�O�%�%�h	�h	�D��C��I�I�~�~��c�$�q�'�l�l�!2�!2��(,�%�T�$�E�8��w���'+�~�@�8�8�5���x�=�=�1�$�$��"���)<�)<��D����!�!��d�m�+�+�#+�L����"�"������$�$�!�	�	���#�#� �����%�%�"�
�
����������"�"������������������1�9�9��I�1�E����!�!��t�}�,�,�,0�N� E����I�"&�K������������������!�!�(,��A�H�H�E�	�	���������������1�9�9��I�1�E����$�$�!�	�	�������������d�m�+�+�#+�L����������c�h�&9�&9�#�&>�&>� >�?�?�	�	���"�"�����c�h�&9�&9�'�&B�&B� B�C�C�	�	���$�$�!�	�	���#�#�t�|�';�';�&*�n�?�(�(�%����.�.�.������"�"������"�"�d�j�&8�&8������"�"�������������"�"�������������%�%�"�
�
�
��C�I�+�+�+��E�E�
�c�i�/�
/�
/�� � ��(�(�
�������
�c�i�+�
+�
+��#�#�I�.�.�

������'�'�����"�"�6�*�*�
�����b����J��S���1�2�2������
�c�i�,�
,�
,��E�E�
�c�i�-�
-�
-��E�
����E�5�)�)�)���
���(�#�#�#��?�S�Y�5�5�5��3�;�7�7��@�@�3�F�G�A�A��s�{�3�3�G�<�<�s�B�C�A����i�'�'��)�)�)�4�4�(��d�N�N��!�A�%�
$�)�v�x�x�*?�*?�G�*?�$�
�
��#�a�'�

$���z�C��
�(�(�)A�B�B�B�!1�&�!9�!9�J��z�?��
�(�(�)=�>�>�>��� �����2�2�����$�
�
� �J����
 �#�
�
��
���x�'�'���
F�3�z�?�?�T�^�#C�#C���Q�
�O�3�4������� 2�3�4������4�>�4�>�(2�?�D�N�?�(C�(E�E�F���*�h�6�6�Q�Q�A�
��l�"�"�s�,�'>�'>���-��3�L��	#�#�l�+�+�t���/K�K�K��G�G�"�G���x�'�'��D�&�&�w���@�@�@�D���8�+�+�����#�g�,�,� >�� K�a� O�P�Q����7�+�,�������#�g�,�,� >�?�@�����I�%�
2�Y�Y�7���>�	(�1�1�D�D�
�	(�'�'�D�D�'�'�D��1����)�)�)�4�4��)�)�(�3�3�U��t�H�~�~�t�t�I�����R���:�
:�	;��	
�����s�%AS7�7
T�Tc�2�|jdd�}g|_|S)z3Return and flush the list of actual poll intervals.N)r)r4�ress  r�	intervalszPeerSummary.intervals�s���j����m����
��
r)r<r=r>r?rrRr5�staticmethodrrrrrr]r`rrrr�r�ds�������3�3�(-����
�����:�
�
��\�
��.�.��\�.��I�I��\�I����&*�*�*�~�~�~�@����rr�c�4�eZdZdZddejfd�ZdZd�ZdS)�
MRUSummaryz0Reusable class for MRU entry summary generation.Frc�L�||_||_d|_||_||_dSr�)rMrKrVrr)r4rrrMrKs     rr5zMRUSummary.__init__�s*����
���
����*���$����rzE lstint avgint rstr r m v  count    score   drop rport remote addressc���tj�|j��}tj�|j��}t||z
��}t
|j��}|jrot
|j|z
dz��}d|z}|dkrd}n||dz
z}t
|dz��}	d|ksd|kr	|d|	zz
}nEd|kr	|d|zz
}n6|d	|zz
}n-d
}
tt
|��d��\}}d||
z||fz}|j
tjjzrd
}n|j
tjj
zrd}nd}t|j��\}
}	|jdzs|
}n�t#|
��}t$�|��}|�fd}	t)j|d��}|D]\}}}}}|r|d|
krd}n�n#t(j$rYnwxYwt$�||��|s|
�d|�d�}|js
|dd�}|jr2t|j��}|dkrd|z}n|dkrd|z}nd|z}nd}|jdkrd|jz}nd}|d|j
|tj�|j��tj�|j��|j|||dd�|f	zz
}|S#t<$rYdSwxYw)Ng�?z%7drrg@z %6dg�?z %6.2fz %6.3fi���Qz%5d %5d %6d�K�Lr]FTz (�)�(rrrrrr�z%4dz! %4hx %c %d %d %6d %8s %6s %5s %srh)rjr�rA�first�lastr�rc�ctrV�divmod�rsr��RES_KOD�RES_LIMITEDr��addrrrWrAr�rErFrHr;r�sc�dr�PKT_MODE�mv�PKT_VERSIONrQ)r4�entryrkrl�activer�lstint�stats�favgint�avgint�MJD_1970�days�rscode�ip�port�dns�	confirmedrO�_rS�score�drops                      rr]zMRUSummary.summary�sn����#�#�E�K�0�0���x�"�"�5�:�.�.���t�e�|�$�$���E�H�
�
���8�	F����D��3�.�/�/�F��F�N�E���z�z���� �E�!�G�,����3��'�'�F��W�}�}��U�
�
���&��(���������G�+�+�����G�+�+����H�!�#�d�)�)�U�3�3�L�D�&�!�T�H�_�f�f�$E�E�E��8�c�i�'�'�	��F�F�
�X��	�-�
-�	��F�F��F��u�z�*�*�
��T�-	��%��)�
0����&�r�*�*��2�6�6�s�;�;�	��$� %�I��#�/��T�:�:��68�&�&�2�Q��1�a��'�&�H�Q�K�2�,=�,=�,0�	� %�����!�?����������*�.�.�s�I�>�>�>� �0�')�r�r�3�3�3�/�C��?�
��#�2�#�h���x�	
��e�h�����8�#�#�!�E�/�%�%��W�_�_�!�E�/�%�%�!�E�/�%�%����x�$����u�x�'������8��h���i�(�(���2�2��i�+�+�E�H�5�5��h��t�T�!�"�"�X�s�<�<�
<�E�
�L���	�	�	��2�2�	���s7�$:K�2G�K�G$�!K�#G$�$C4K�
K'�&K'N)	r<r=r>r?rrRr5rr]rrrrcrc�sT������6�6�16���
�%�%�%�%�U�F�K�K�K�K�Krrcc�6�eZdZdZdZdZed���Zd�ZdS)�ReslistSummaryz4Reusable class for reslist entry summary generation.z<   hits    addr/prefix or addr mask
           restrictions
�Hc���|sd}d|vrd}d�nd}d�t�fd�|�|��D����}dt|��zS)Nrhr}rr]�
c�t��g|]4}|�tt|������d����5S)�1)�binrcr)�.0r;�bases  �r�
<listcomp>z.ReslistSummary.__getPrefix.<locals>.<listcomp>-sK���5�5�5��!�5�c�#�a��,�,�'�'�-�-�c�2�2�5�5�5r�/)�sumrbra)�mask�prefixr�r�s   @r�__getPrefixzReslistSummary.__getPrefix#s����	��F��$�;�;��C��D�D��C��D��5�5�5�5�#�z�z�#���5�5�5�6�6���S��[�[� � rc�d�|�dd��}|�dd��}|�dd��}|dks|dkrdS|t�|��z
}|�dd��}|d�d|�d	|�d
�}|D]}|���s|dvrdS�|S)N�hitsr!rrr�rh�flagsz>10rEz
           rFz/.: 
)r�r��_ReslistSummary__getPrefix�isalnum)r4r�r��addressr�r�rr�s        rr]zReslistSummary.summary1s����}�}�V�S�)�)���-�-���,�,���}�}�V�S�)�)���c�>�>�T�S�[�[��2��>�-�-�d�3�3�3���
�
�g�s�+�+��*.�$�$�$�������?���	�	�A��9�9�;�;�
�1�H�#4�#4��r�r���rN)	r<r=r>r?rrrar�r]rrrr�r�sP������:�:��F�
�E��!�!��\�!�����rr�c�4�eZdZdZdZdZdddddddd	�Zd
�ZdS)�IfstatsSummaryz4Reusable class for ifstats entry summary generation.z�    interface name                                  send
 #  address/broadcast     drop flag received sent failed peers   uptime
 �Jz%-24.24sz%4xz%6dz%5dr)rTr��rx�tx�txerr�pc�upc� �i}	|j���D]6}|�|d��}|dkr|}n|j||z}|||<�7|�dd��rdnd}|�dd��}|�d��}	d||d	||d
|d|d|d
|d|d|f
z}
|	r|
d|	zz
}
n#t$rYdSwxYw|
D]}|���s|dvrdS�|
S)Nr!�enFr]�Drr�bcastz#%3u %s %s %s %s %s %s %s %s
    %s
rTr�r�r�r�r�r�z    %s
rhz	/.:[] \%
)�fieldsr�r�rDr�)r4r�r��	formattedrTrnr&�enFlagr�r�rr�s            rr]zIfstatsSummary.summarySsh���	�	���(�(�*�*�
&�
&��!�
�
�d�C�0�0���C�<�<��C�C��+�d�+�e�3�C�"%�	�$���%�M�M�$��6�6�?�S�S�C�F��m�m�F�C�0�0�G��M�M�'�*�*�E�8���f�%���g�&��d�O��d�O��g�&��d�O��d�O��	�
�A��
(��Z�%�'�'�����	�	�	��2�2�	�����	�	�A��9�9�;�;�
�1�L�#8�#8��r�r���s�CC�
C+�*C+N)r<r=r>r?rrr�r]rrrr�r�CsX������:�:��F�
�E�!�������
��F�%�%�%�%�%rr�)�OrderedDictc�8�eZdZdZd	d�Zd�Zd�Zd�Zd�Zd�Z	dS)
r�zBA stupid simple implementation in order to be back-portable to 2.6Nc�j�t�|��g|_|r
|D]\}}|||<�dSdSr�)�dictr5�_OrderedDict__keys)r4r��k�vs    rr5zOrderedDict.__init__�sU���M�M�$�����D�K��
 �#� � �F�Q���D��G�G�
 �
 � � rc�r�t�|||��|j�|��dSr�)r��__setitem__r�rt)r4r��vals   rr�zOrderedDict.__setitem__�s6�����T�3��,�,�,��K���s�#�#�#�#�#rc�p�t�||��|j�|��dSr�)r��__delitem__r��remove�r4r�s  rr�zOrderedDict.__delitem__�s4�����T�3�'�'�'��K���s�#�#�#�#�#rc��|jSr��r�r�s rr�zOrderedDict.keys�s
���;�rc�D��t�fd��jD����S)Nc�$��g|]}|�|f��
Srr)r�r�r4s  �rr�z%OrderedDict.items.<locals>.<listcomp>�s!���<�<�<�1�1�d�1�g�,�<�<�<r)�tupler�r�s`rr�zOrderedDict.items�s(����<�<�<�<���<�<�<�=�=�=rc#�&K�|jD]}|V��dSr�r�r�s  r�__iter__zOrderedDict.__iter__�s,�����{�
�
���	�	�	�	�
�
rr�)
r<r=r>r?r5r�r�r�r�r�rrrr�r�~sy������L�L�
	 �	 �	 �	 �	$�	$�	$�	$�	$�	$�	�	�	�	>�	>�	>�	�	�	�	�	rr�c��t|t��sdS|dkst|ttf��s|ddfS||kr|t||z|��dfS|r|t	||z|��ddfS|t||z|��dfS)a
Given a number of packets and a duration (s) return a tuple.

    return the packet quantity, and a two part rate in packets/seconds
    or seconds/packet. On error the latter fields should be blank, the
    first the number of packets if zero otherwise unhelpful text.)�???rhrhrrhzp/srz/pzs/p)r"rcr�r��	periodize)�packets�period�
clipdigits�
periodizeds    r�	packetizer��s����g�s�#�#�����!�|�|�:�f�s�E�l�;�;�|���R� � �������w��/��<�<�e�D�D��K���6�G�#3�Z�@�@��C�T�J�J��U�6�G�+�Z�8�8�%�@�@rc�.�t|ttf��r|nd}t|ttf��sdSd}t||��}|dkrt|��n|}|dkr|d|dzzz
}|d|dzdz|dzd	z|d	zfzz
}||fS)
z}Given a number of seconds, return number and pretty string.

    On error return None for the number and an unhelpful string.r)Nr�rhrrfz%dD z%02d:%02d:%02dir)r"rcr�r�)r�r��cliprUr��nperiods      rr�r��s���$�J��e��=�=�D�:�:�1�D��f�s�E�l�+�+���}�
�F�
�f�d���A��q���c�!�f�f�f�a�G��%����&�G�u�,�-�-��
��	�5��T�!�	�4��B���"��"���F�

�V��rc�,�t|��dS)Nr)r�)r6s rr<r<�s��9�Q�<�<��?�r)Nr	F)Fr�)rF)r)_r?�
__future__rr�collectionsr^rBrarEr�rrH�ntp.ntpcrj�	ntp.magic�ntp.control�OLD_CTL_PST_CONFIG�OLD_CTL_PST_AUTHENABLE�OLD_CTL_PST_AUTHENTIC�OLD_CTL_PST_REACHr�r�r�r�r�r�r�r#r�r��UNIT_KSr!�UNIT_PPT�UNIT_PPBrr%r$r�rrr�rrrOrYr[rGrorlr{r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r	rr'r)r-r/rA�	AF_UNSPECrW�
namedtuplerXrar`rergrcrprrr�r�rcr�r�r��ImportErrorr�r�r��uptimerrr�<module>r�sV����0�/�/�/�/�/�/�/�����	�	�	�	�	�	�	�	�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
���������������������������������������
��
��	��
��
�g�w���8�	���������
�x��8�4�	���
#�
����
�
�
�"
��'��
'�����
�
�
�!�!�!�
	�	�	�������0�0�0�
"�"�"�A�A�A�H������D���	�	�	�$�$�$�
�
�
���� � � �F���!"�!"�!"�H���<������
�
�
� 
=�
=�
=�
=�����<#�#�#�L���B���5�5�5�5�5�5�5�5�0�����%+�$4�����8"�;�!�*�w��.A�B�B���%�<�<��L�L�L��N�N�N��M�M�M����0J!�J!�J!�J!�J!�J!�J!�J!�ZX�X�X�X�vY�Y�Y�Y�Y�Y�Y�Y�x
X�X�X�X�X�X�X�X�v%�%�%�%�%�%�%�%�P5�5�5�5�5�5�5�5�p �'�'�'�'�'�'�'�����������d����������BA�A�A�A�"����(
#�	"���s�'E.�.F�F