
    =	f6                     F   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 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ZddZy)    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                    d }	 t        j                   t         j                  t         j                  t         j                        }t        j                   t         j                  t         j                        }|j	                  d       |j                         d   }|j                          |j                  d       t        j                  d|       } 	 |j                  t         j                  t         j                  d       |j                  t         j                  t         j                  d       	 |j                  t         j"                  t         j$                  |        |j                  t         j"                  t         j&                  t        j(                  |      t        j(                  d      z          |j                  t         j"                  t         j*                  d       |S # t         j                  $ r* t        j                  d       |r|j                          Y y w xY w# t         t         j                  f$ r Y w xY w# t,        $ r4}t        j                  d|z         |r|j                          Y d }~y d }~ww xY w)N)z1.2.3.48   r   BzNetwork errorr   z0.0.0.0z,Unable to setup multicast socket for SLP: %s)socketAF_INET
SOCK_DGRAMIPPROTO_UDPconnectgetsocknameclosesetblockingstructpackerrorlog
setsockopt
SOL_SOCKETSO_REUSEADDRSO_REUSEPORTAttributeErrorSOL_IPIP_MULTICAST_TTLIP_MULTICAST_IF	inet_atonIP_MULTICAST_LOOP	Exception)ttlsxintfes        /usr/share/hplip/base/slp.pycreateSocketsWithsetOptionr)   -   s   
AMM&..&*;*;V=O=OPMM&..&*;*;<			/"}}q!			akk#s#	V&&(;(;Q?	V&&(;(;Q?	V]]F$;$;SA	V]]F$:$:F<L<LT<RU[UeUefoUp<pq	V]]F$<$<a@ H+ << 		/"GGI	 FLL)   		@1DEGGI	s>   CG* AH* 2B6I
 *:H'&H'*II
	J*JJc           
         d\  }}i }t        |       }|si S dj                  t        d      t        j                  dt        j                  dd            t        d      g      }	 |j                  |d||f       |}|dkD  rt        j                         }	t        j                  |gg |g|      \  }
}}|t        j                         |	z
  z  }|
sU|j                  d
      \  }}t                t        j                  |d       	 t        j                   d|d d       \
  }}}}}}}}}}t        j                   d|z  |dd        d   j#                         }t%        |      }	 t'        t(        j+                  |      j-                  d            }|dk(  rd}d|ddddddd}	 t2        j+                  |      j-                  d      |d<   |dxx   dz  cc<   |dkD  ro	 t4        j+                  |      j-                  d      |d<   |dxx   dz  cc<   |dkD  r5	 t6        j+                  |      j-                  d      |d<   |dxx   dz  cc<   |d   d|d<   |d   d|d<   |d   d|d<   	 t8        j+                  |      j-                  d      |d<   	 t:        j+                  |      j-                  d      |d<   	 t<        j+                  |      j-                  d      |d<   	 t>        j+                  |      j-                  d      |d<   ||d<   |||d   <   t        jA                  d|z         |dkD  r|jC                          |S # t        j                  $ r#}t        j                  d	|z         Y d }~d }~ww xY w# t        j                  $ r Y w xY w# t.        t0        f$ r d}Y w xY w# t.        $ r	 d|d<   Y w xY w# t.        $ r	 d|d<   Y w xY w# t.        $ r	 d|d<   Y w xY w# t.        $ r	 d|d<   Y qw xY w# t.        $ r	 d|d<   Y ^w xY w# t.        $ r	 d|d<   Y Kw xY w# t.        $ r	 d|d<   Y 8w xY w)N)z
224.0.1.60i      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device3notedevice1r8   r1   r5      r6   r3   maciphnr4   zFound device: %s)"r)   joinr   r   r   randomrandintsendtor   r   r   timeselectrecvfromupdate_spinnerlog_data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#   timeout
mcast_addr
mcast_portfound_devicesr$   packetr'   	time_left
start_timerwdataaddrverfunclengthflagsdialect	lang_codechar_encoderecv_xidr4   attr_lengthr%   r2   ys                              r(   detectNetworkDevicesrj   P   st   -J
M"3'A	XX}%OPD&..E23]C}5~@ AFA	Z45 I
a-YY[
--R!i81adiikJ./	(ZZ%
dT$	mT#2Y7 jCvugy+xQ\^i f{2DI>qAGGIA !	L//288;<I >IYr##rVY[	"!==+11!4AiL m! q=&%}}Q/55a8) - A%  1}*#)==#3#9#9!#<AiL m$)$Y<AiLY<AiLY<AiL	!&ooa066q9AlO	~~a(..q1AeH	mmA&,,Q/AdG	mmA&,,Q/AdG '-!"d1g		$q()k a-n GGIy << A		;a?@@A( || 		
 
+ 	I	  	AiL	 " #")# & '#&AiL'   	! AlO	!  	AeH	  	AdG	  	AdG	s   &M	 AN %-N %'N4 'O	 'O ,'O3 'P <'P $'P2 	M?M::M?NNN10N14OO	OOO0/O03PPPPP/.P/2QQ)   )rk   
   )sysrA   r   rB   r   r>   regr/   r   sixextr   r   r   compile
IGNORECASErP   rQ   rI   rR   rM   rN   rO   rS   r)   rj    r+   r(   <module>rt      s   .       	   = =2::?O2::;R]]KrzzDbmmT2:::BMMJ2::CR]]S2::CR]]S2::CR]]S2:::BMMJ Fir+   