%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /snap/core22/current/usr/lib/python3/dist-packages/probert/__pycache__/
Upload File :
Create Path :
Current File : //snap/core22/current/usr/lib/python3/dist-packages/probert/__pycache__/network.cpython-310.pyc

o

?�^m�@s�ddlZddlmZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZe�d�Z
z
ddlmZmZWneySZze
�de�WYdZ[ndZ[wwdZdZd	Zd
ZdZdZd
ZdZdZdZdZdZdZ dZ!dZ"dZ#gd�Z$gd�Z%ddgZ&ddddgd�dddd d!id d!id d"id d!id d!id#�d$�d%�d d!iddd d&id d&id'd d!id d(igidd d!id%�d'd!e$d)�d d(igid'd!e%d)�d d(igid'd!e&d)�d d(igid*�d$�dd+dd'd d!id d(igid,�id'd d!id d(igid-�dd d"id d"id d"id d"id d!id.�d/�ddd d&id d&idd d!id%�dd d!id,�d0�d$�ddd d(d!gidd d!id%�d d(d!gid1�d$�d2�d3�Z'd4d5�Z(d6d7�Z)d8d9�Z*d:d;�Z+d<d=�Z,Gd>d?�d?�Z-d@dAddBdCdD�Z.GdEdF�dF�Z/GdGdH�dHej0�Z1GdIdJ�dJej0�Z2GdKdL�dLe2�Z3dMdN�Z4dOdP�Z5ej6dQdR��Z7GdSdT�dTe1�Z8GdUdV�dV�Z9GdWdX�dX�Z:e;dYk�r�ddl<Z<ddl=Z=e8�Z>e>�?�Z@e<�<e>jA�e=�B�ZCe@D]
ZDeC�EeDe=jF��q�	eC�G�ZHeHD]
\ZDZe>�IeD��q�e<�<e>jA��q�dS)Z�N)�OrderedDict)�udev_get_attributeszprobert.network)�_nl80211�
_rtnetlinkz)Failed import network library modules: %s������ �@���iiii i@)z
balance-rrz
active-backupzbalance-xor�	broadcastz802.3adzbalance-tlbzbalance-alb)�layer2zlayer2+3zlayer3+4zencap2+3zencap3+4�slow�fastz'http://json-schema.org/draft-04/schema#�link�objectF)�	addresses�bond�bridge�netlink_data�type�	udev_data�arrayr�string�integer)�address�ip�family�source�scope)r�additionalProperties�
properties)r�items�boolean�oneOf�null)r�enum��	is_master�is_slave�master�slaves�mode�xmit_hash_policy�	lacp_rate�attrs)rr$)rr%r$)�ifindex�flags�arptyper!�name)rr%��	is_bridge�is_port�
interfaces�options)�ssid�
visible_ssids�
scan_state)rrrrrr�wlan)z$schema�titlerr$�requiredr%cCs|sdStj�d|�}tj�|�st�d�|��dSd}|dkryd}tj�tj�|d��s9tj�tj�|d��r<d}n�tj�tj�|d	��rJd	}n�tj�tj�|d
��rXd}n�tj�	tj�|d��rfd
}n�tj�tj�d|��rx|�
d�rxd}no|dkr�d}nh|dkr�tj�tj�|d
��r�d}nVtj�tj�|d��r�d}nHd}nE|dkr�d}n>|dkr�d}n7|dkr�d}n0|dkr�d}n)|dkr�d}n"|dkr�d }n|d!kr�d"}n|d#kr�d$}n
|d%kr�d&}n|d'kr�d(}|�
d)�s�|�
d*�r�d*}n|�
d+�r�d+}t|�d,k�rtd-�|��dS|S).Nz???�/sys/class/netzNo sysfs path to {}r�eth�wireless�phy80211r@r�bondingr�	tun_flags�tapz/sys/devices/virtual/net�dummy�r�create_child�ib�ibchildi�canr�pppi�ipipi�ip6tnli�loi�siti
�grei�irdai!�wlan_auxi���tun�ippp�isdn�mip6mnharz)Failed to determine interface type for {})
�os�path�join�exists�log�debug�format�isdir�islink�isfile�
startswith�len�print)�ifacer6�
sysfs_path�DEV_TYPE�rl�1/usr/lib/python3/dist-packages/probert/network.py�
_compute_type�sz��
�
rncsj�fdd���fdd����fdd�}��fdd�}��fd	d
�}����|�|�|d�|d�|d
�d�S)Nc�t�t@�dkS�Nr)�bool�
IFF_MASTERrl�r5rlrm�_iface_is_master�z&_get_bonding.<locals>._iface_is_mastercrorp)rq�	IFF_SLAVErlrsrlrm�_iface_is_slaveruz%_get_bonding.<locals>._iface_is_slavecs>z��rtd����}|��WSgWStygYSw)Nz /sys/class/net/%s/bonding/slaves��open�read�split�IOError)r�rt�ifnamerlrm�_get_slave_iface_lists
�z+_get_bonding.<locals>._get_slave_iface_listcs>z��rt�d��}tj�|�WSWdStyYdSw)Nz/sys/class/net/%s/master)r\�readlinkr]�basenamer|)r.)rwr~rlrm�_get_bond_masters�z&_get_bonding.<locals>._get_bond_mastercsvz0��r.d�|f}t|��}|����}Wd�n1swY|r+|dWSdWSWdSty:YdSw)Nz/sys/class/net/%s/bonding/%srrx)�param�
bond_param�bpr}rlrm�_get_bond_param)s
���z%_get_bonding.<locals>._get_bond_paramr0r1r2r+rl)r~r5rr�r�rl)rtrwr5r~rm�_get_bonding
s

�r�csL�fdd���fdd����fdd�}���fdd�}����|�|�d	�S)
Nc�tj�d�d�}tj�|�S)NrCr�r\r]r^r_��bridge_path�r~rlrm�_iface_is_bridge@�z'_get_bridging.<locals>._iface_is_bridgecr�)NrC�brportr�)�bridge_portr�rlrm�_iface_is_bridge_portDr�z,_get_bridging.<locals>._iface_is_bridge_portcs$��rtj�d�d�}t�|�SgS)NrC�brif)r\r]r^�listdirr�)r�r~rlrm�_get_bridge_iface_listHs
z-_get_bridging.<locals>._get_bridge_iface_listc	s�tddg�}��rtj�d�d�}n��rtj�d�d�}niSi}t�|�D]*}||vr.q'tj�||�}t|��}|����||<Wd�n1sLwYq'|S)N�flushrrCr�)�setr\r]r^r�ryrz�strip)�
skip_attrsr�r<�bridge_attr_name�bridge_attr_file�bridge_attr�r�r�r~rlrm�_get_bridge_optionsNs 
��z*_get_bridging.<locals>._get_bridge_optionsr8rl)r~r�r�rlr�rm�
_get_bridging>s�r�cs�fdd�}t|�S)Ncs
|j�S�N)r)�obj��attrrlrm�getks
znetlink_attr.<locals>.get��property)r�r�rlr�rm�netlink_attrjsr�cs��fdd�}t|�S)Ncs&�D]}||jvr|j|Sq�Sr��r)r��k��keys�missingrlrmr�qs

�zudev_attr.<locals>.getr�)r�r�r�rlr�rm�	udev_attrpsr�c@s�eZdZedd��Zedd��Z	ddd�Zdd	�Zed
�Z	ed�Z
ed�Zed
d��Z
egd�d�Zegd�d�Zeddgd�Zedgd�Zedd��Z
edd��Zedd��Zedd��ZdS)�Linkc	Cslt�|d�}|drd}nt||d�}|i|||t||d�t|�d�}|�d�dkr4gddd	�|_|S)
Nr4�is_vlan�vlanr6r5)rrrrrr�DEVTYPEr@)r>r=r?)�socket�if_indextonamernr�r�r�r@)�clsrrr7�typrrlrlrm�from_probe_data{s$��zLink.from_probe_datacCs@i}|dD]}t�|�}||t|j�<q||d<|di|��S)Nrrl)�Address�from_saved_data�strr )r��	link_data�address_objs�addr�arlrlrmr��s
zLink.from_saved_dataNcCs.||_||_||_||_||_||_||_dSr�)rrrrrrr@)�selfrrrrrrr@rlrlrm�__init__�s
z
Link.__init__cCsPdd�|j��D�|j|j|j|j|jd�}|jdur |j|d<t�	|t
�|S)NcSsg|]}|���qSrl)�	serialize)�.0r�rlrlrm�
<listcomp>�sz"Link.serialize.<locals>.<listcomp>)rrrrrrr@)r�valuesrrrrrr@�
jsonschema�validate�link_schema)r��rrlrlrmr��s�

zLink.serializer5r4r7cC�|jddS�Nr3rr��r�rlrlrm�<lambda>��z
Link.<lambda>)�ID_VENDOR_FROM_DATABASE�	ID_VENDOR�ID_VENDOR_IDzUnknown Vendor)�ID_MODEL_FROM_DATABASE�ID_MODEL�ID_MODEL_IDz
Unknown Model�
ID_NET_DRIVER�
ID_USB_DRIVERzUnknown Driver�DEVPATHzUnknown devpathcCr�r�r�r�rlrlrmr��r�cCs|jt@p
|jt@Sr�)r5�IFF_UP�IFF_RUNNINGr�rlrlrmr���cCs|j�d�S)Nz/devices/virtual/)�devpathrfr�rlrlrmr��scCs|jr|jdSdS)Nr=)r@r�rlrlrmr=�s
z	Link.ssidr�)�__name__�
__module__�__qualname__�classmethodr�r�r�r�r�r5r4r7r��hwaddrr��vendor�model�driverr��is_connected�
is_virtualr=rlrlrlrmr�ys6

	
�
��
�
�r��global�site�host�nowhere)r�����c@s4eZdZdd�Zdd�Zedd��Zedd��Zd	S)
r�cCs,t�|�|_|jj|_||_||_||_dSr�)�	ipaddress�ip_interfacerr r!r"r#)r�rr!r"r#rlrlrmr��s


zAddress.__init__cCs|j|jt|j�|jd�S)N)r"r!rr#)r"r!r�rr#r�rlrlrmr��s
�zAddress.serializecCsV|d�d�}|d}|�dd�t@rd}nd}|d}tt�||��}|||||�S)	N�local�latin-1r!r5r�static�dhcpr#)�decoder��IFA_F_PERMANENTr��
_scope_str)r�rrr!r"r#rlrlrmr��szAddress.from_probe_datacCstdi|��S)Nrl)r�)r�r�rlrlrmr��szAddress.from_saved_dataN)r�r�r�r�r�r�r�r�rlrlrlrmr��s
r�c@s,eZdZdZejdd��Zejdd��ZdS)�NetworkObserverzzA NetworkObserver observes the network state.

    It calls methods on a NetworkEventReceiver in response to changes.
    cC�dSr�rlr�rlrlrm�start�zNetworkObserver.startcCr�r�rl�r��fdrlrlrm�
data_ready
r�zNetworkObserver.data_readyN)r�r�r��__doc__�abc�abstractmethodr�r�rlrlrlrmr�s
r�c@sHeZdZdZejdd��Zejdd��Zejdd��Zejdd	��Z	d
S)�NetworkEventReceiverzTNetworkEventReceiver has methods called on it in response to network
       changes.cCr�r�rl�r�r4rrlrlrm�new_linkr�zNetworkEventReceiver.new_linkcCr�r�rl�r�r4rlrlrm�update_linkr�z NetworkEventReceiver.update_linkcCr�r�rlrrlrlrm�del_linkr�zNetworkEventReceiver.del_linkcCr�r�rl�r��action�datarlrlrm�route_changer�z!NetworkEventReceiver.route_changeN)
r�r�r�r�r�r�rrrrrlrlrlrmr�s


r�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�TrivialEventReceivercCr�r�rlr�rlrlrmr&�zTrivialEventReceiver.new_linkcCr�r�rlrrlrlrmr)r	z TrivialEventReceiver.update_linkcCr�r�rlrrlrlrmr,r	zTrivialEventReceiver.del_linkcCr�r�rlrrlrlrmr/r	z!TrivialEventReceiver.route_changeN)r�r�r�rrrrrlrlrlrmr$s
rc��fdd�}|S)Ncs��fdd�}|S)Ncs�t�d�j||��jf}�D]	}|||f7}q||jvr\|j|\}}}|dkr4�||f|j|<dS|dkrB�||f|j|<dS|dkrZ|dkrP|j|=dS�||f|j|<dSdS�||f|j|<dS)Nzevent for %s: %s %s�NEW�CHANGE�DEL)r`rar��_calls)r�rr�keyr��	prev_meth�prev_action�	prev_data)�funcr�rlrm�wGs 
�
z&coalesce.<locals>.decorator.<locals>.wrl�rr�r��rrm�	decoratorFszcoalesce.<locals>.decoratorrl)r�rrlrrm�coalesceCsrcr
)Ncs�||f|jt�<dSr�)rrrrrlrmrir�znocoalesce.<locals>.wrlrrlrrm�
nocoalescehsrccsj�t�|_zdVW|j��D]\}}}||||�qd|_dS|j��D]\}}}||||�q%d|_wr�)rrr�)r��methrrrlrlrm�CoalescedCallsns�
�rc@sheZdZdZddd�Zdd�Zdd�Zed	�d
d��Zed	d�d
d��Z	e
dd��Zdd�Zdd�Z
dS)�UdevObserverz,Use udev/netlink to observe network changes.NcCs<i|_t��|_|durt�}t|t�sJ�||_d|_dSr�)	�_links�pyudev�Context�contextr�
isinstancer��receiverr)r�r#rlrlrmr�|s

zUdevObserver.__init__cCs�t�|�|_t|��
|j��Wd�n1swY|j��|jji|_zt�|�|_	|j	��|j�
|j	��|j	ji�WntyQt�
d�Ynwt|j�S)Nzcould not start wlan_listener)r�listener�
rtlistenerrr��filenor��_fdmapr�
wlan_listener�update�RuntimeErrorr`ra�listr�rlrlrmr��s 
��

��
zUdevObserver.startcCs:t|��|j|�Wd�dS1swYdSr�)rr'r�rlrlrmr��s
"�zUdevObserver.data_readyr4cCs~t�d||�|��D]\}}t|t�r|�dd�||<q|d}|dkr6||jvr4|j|=|j�|�dS|dkr�||jvr�|j|}|j	dkrj|j
t@sj|dt@rjz|�|�Wnt
yit�d	�Ynw||_|j	durxt|j�|_	t|j|jd�|_|j�|�dSt|jjt|�d
��}t|�dkr�dS|d}t|�}	t|�|	d<t�||	�}
|
|j|<|j�||
�dS)
Nzlink_change %s %s�utf-8�replacer4r
rr@r5zon-up trigger_scan failed)�IFINDEXrr3)r`rar&r"�bytesr�rr#rrr5r��trigger_scanr*�	exceptionrrnr7r�rrr+r!�list_devicesr�rg�dictrr�r�r)r�rrr��vr4�dev�udev_devices�udev_devicerrrlrlrm�link_change�sH
�



�

zUdevObserver.link_changer�cCs�t�d||�|j�|d�}|durdS|d�d�}|dkr1|j�|d�|j�|d�dSt	�
|�|j|<|j�|d�dS)Nzaddr_change %s %sr4r�r�r
)r`rarr�r�r�popr#rr�r�)r�rrrr rlrlrm�addr_change�szUdevObserver.addr_changecCsLt�d||�|��D]\}}t|t�r|�dd�||<q|j�||�dS)Nzroute_change %s %sr,r-)r`rar&r"r/r�r#r)r�rrr�r4rlrlrmr�s
�zUdevObserver.route_changecCs|j�|�dSr�)r(r0rrlrlrmr0�ruzUdevObserver.trigger_scancCs�t�d|�|d}|dks||jvrdS|j|}|ddkr%d|jd<|ddkr[d	|vr[t�}|d	D]\}}|�d
d�}|�|�|dkrN||jd
<q6t|�|jd<d|jd<|ddkr�|jt	@r|z|�
|�Wn&ty{t�d�Ynwz	|j
�|t	�Wnty�t�d�Ynw|ddks�|ddkr�t|�d	g��dkr�|d	dd�d
d�|jd
<|ddkr�d|jd
<dSdS)Nz
wlan_event %sr4r�cmd�TRIGGER_SCAN�scanningr?�NEW_SCAN_RESULTS�ssidsr,r-z	no statusr=r>�
NEW_INTERFACEzinitial trigger_scan failedzset_link_flags failed�	ASSOCIATE�
DISCONNECT)r`rarr@r�r��add�sortedr5r�r0r*r1r%�set_link_flagsrgr�)r��argr4rr?r=�statusrlrlrm�
wlan_event�sH



�

����zUdevObserver.wlan_eventr�)r�r�r�r�r�r�r�rr8r:rrr0rHrlrlrlrmrys
	
,

rc@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�StoredDataObserverzVA cheaty observer that just pretends the network is in some
       pre-arranged state.cCsB||_|jdD]}t�|t�qi|_||_t��\|_|_	dS)N�links)
�
saved_datar�r�r�rJr#r\�pipe�rd�wr)r�rKr#rrlrlrmr�szStoredDataObserver.__init__cCs\|jdD]}t�|�}|j�|j|�||j|j<q|jdD]	}|j�d|�q |jgS)NrJ�routesr)	rKr�r�r#rr4rJrrM)r�rrrlrlrmr�s
zStoredDataObserver.startcCs*ddg|jd<d|jd<t�|jd�dS)N�AA�BBr>r?�x)r@r\�writerN)r�rrlrlrm�
_scan_resultss
z StoredDataObserver._scan_resultscCsBddl}|j|}d|jd<|���d|j|�t�|jd�dS)Nrr=r?g@rR)	�asynciorJr@�get_event_loop�
call_laterrTr\rSrN)r�r4rUrrlrlrmr0"s

�zStoredDataObserver.trigger_scancCst�|jd�dS)Nr)r\rzrMr�rlrlrmr�*szStoredDataObserver.data_readyN)	r�r�r�r�r�r�rTr0r�rlrlrlrmrIs	rIc@seZdZdd�ZdS)�
NetworkProbercCslGdd�dt�}|�}t|�}|��ggd�}|jD]}|d�|���q|jD]	}|d�|�q*|S)Nc@s$eZdZdd�Zdd�Zdd�ZdS)z/NetworkProber.probe.<locals>.CollectingReceivercSst�|_g|_dSr�)r��	all_links�
route_datar�rlrlrmr�2s
z8NetworkProber.probe.<locals>.CollectingReceiver.__init__cS�|j�|�dSr�)rYrCr�rlrlrmr6ruz8NetworkProber.probe.<locals>.CollectingReceiver.new_linkcSr[r�)rZ�appendrrlrlrmr9ruz<NetworkProber.probe.<locals>.CollectingReceiver.route_changeN)r�r�r�r�rrrlrlrlrm�CollectingReceiver1sr])rJrOrJrO)rrr�rYr\r�rZ)r�r]�	collector�observer�resultsrrZrlrlrm�probe0s
�

zNetworkProber.probeN)r�r�r�rarlrlrlrmrX.srX�__main__)Jr��collectionsr�
contextlibr�r��loggingr\r�r�
probert.utilsr�	getLoggerr`�probertrr�ImportError�e�warningr��
IFF_BROADCAST�	IFF_DEBUG�IFF_LOOPBACK�IFF_POINTOPOINT�IFF_NOTRAILERSr��	IFF_NOARP�IFF_PROMISC�IFF_ALLMULTIrrrv�
IFF_MULTICAST�IFF_PORTSEL�
IFF_AUTOMEDIAr��
BOND_MODES�XMIT_HASH_POLICIES�
LACP_RATESr�rnr�r�r�r�r�r�r��ABCr�r�rrr�contextmanagerrrrIrXr��pprint�select�cr��fdsrJ�epoll�poll_obr��register�EPOLLIN�poll�eventsr�rlrlrlrm�<module>sT
��
	�	���������������%������������
�
����yD1,	]�	"%

&
��

Zerion Mini Shell 1.0