3
NZ6                 @   s   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZddlT ddlm	Z	 ddl
mZmZmZ ejdejZejdejZejdejZejd	ejZejd
ejZejdejZejdejZejdejZdddZdddZdS )    N   )*)utils)to_bytes_utf8
to_unicodeto_string_utf8z"\(\s*x-hp-prod_id\s*=\s*(.*?)\s*\)z\(\s*x-hp-mac\s*=\s*(.*?)\s*\)z#\(\s*x-hp-num_port\s*=\s*(.*?)\s*\)z\(\s*x-hp-ip\s*=\s*(.*?)\s*\)z&\(\s*x-hp-p1\s*=(?:\d\)|\s*(.*?)\s*\))z&\(\s*x-hp-p2\s*=(?:\d\)|\s*(.*?)\s*\))z&\(\s*x-hp-p3\s*=(?:\d\)|\s*(.*?)\s*\))z\(\s*x-hp-hn\s*=\s*(.*?)\s*\)   c              C   s`  d }y\t j t jt jt j}t j t jt j}|jd	 |j d }|j  |jd tj	d| } W n, t j
k
r   tj
d |r|j  d S X y(|jt jt jd |jt jt jd W n tt j
fk
r   Y nX yJ|jt jt j|  |jt jt jt j|t jd  |jt jt jd W n> tk
rZ } z tj
d|  |rL|j  d S d }~X nX |S )
N1.2.3.48   r   BzNetwork errorr   z0.0.0.0z,Unable to setup multicast socket for SLP: %s)r	   r
   )socketZAF_INETZ
SOCK_DGRAMZIPPROTO_UDPZconnectZgetsocknamecloseZsetblockingstructpackerrorlogZ
setsockoptZ
SOL_SOCKETZSO_REUSEADDRZSO_REUSEPORTAttributeErrorZSOL_IPZIP_MULTICAST_TTLZIP_MULTICAST_IFZ	inet_atonZIP_MULTICAST_LOOP	Exception)ttlsxZintfe r   /usr/share/hplip/base/slp.pycreateSocketsWithsetOption-   s:    


"r   
   c          Z   C   s  d\}}i }t | }|si S djtdtjdtjddtdg}y|j|d	||f W n2 tj	k
r } zt
j	d
|  W Y d d }~X nX |}xd|d	krtj }	tj|gg |g|\}
}}|tj |	 8 }|
sq|jd\}}t  t
j|dd yLtjd|d d \
}}}}}}}}}}tjd| |dd  d	 j }W n tj	k
r`   wY nX t|}yttj|jd}W n ttfk
r   d}Y nX |d	krd}d	|dd	ddddd}ytj|jd|d< W n tk
r   d|d< Y nX |d  d7  < |dkrytj|jd|d< W n tk
rN   d|d< Y nX |d  d7  < |dkrytj|jd|d< W n tk
r   d|d< Y nX |d  d7  < |d d krd|d< |d d krd|d< |d d krd|d< ytj|jd|d< W n tk
r*   d|d< Y nX ytj|jd|d< W n tk
rb   d|d< Y nX ytj|jd|d< W n tk
r   d|d< Y nX ytj|jd|d< W n tk
r   d|d< Y nX ||d< |||d	 < t
j d|  qW |j!  |S ) N
224.0.1.60      z
 ,  en z!Hr   i  z    service:x-hpnp-discover:    r   z'Unable to send broadcast SLP packet: %si       )widthz!BBHBBHHHHH   z!%ds 0)num_devices	num_ports
product_idstatus_codedevice2device3Znotedevice1r*   r$   r(      r)   r&   ZmacZipZhnr'   zFound device: %s)r   r   )"r   joinr   r   r   randomZrandintZsendtor   r   r   timeselectZrecvfromZupdate_spinnerZlog_dataZunpackstripr   intnum_port_patsearchgroupr   
ValueErrorp1_patp2_patp3_patprod_patmac_patip_pathn_patdebugr   )r   ZtimeoutZ
mcast_addrZ
mcast_portZfound_devicesr   Zpacketr   Z	time_leftZ
start_timerwdataZaddrZverfuncZlengthflagsZdialectZ	lang_codeZchar_encodeZrecv_xidr'   Zattr_lengthr   r%   yr   r   r   detectNetworkDevicesP   s    
  ($



rD   )r   )r   r   )sysr.   r   r/   r   r-   regr"   r   Zsixextr   r   r   compile
IGNORECASEr9   r:   r2   r;   r6   r7   r8   r<   r   rD   r   r   r   r   <module>   s&   
#