
    =	fh7                     T   d dl Z d dlZd dlZd dlZd dl d dlZd dlZddl ddl	m
Z
mZ ddlmZ d dlmZmZmZmZmZmZ ddlmZ d dlZd dlZd dlZd dl Z dZd	ad	ad	ad
ZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&d Z'd Z(d&dZ)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d  Z1d! Z2d" Z3d'd#Z4d$ Z5d% Z6y)(    N)*   )deviceutils)to_bytes_utf8)PY3r   
to_unicodeto_string_latinto_string_utf8	xStringIO)http_client    z/cdm/oauth2/v1/tokenz/cdm/ioConfig/v2/adapterConfigsz/cdm/ioConfig/v2/wifiScanz/cdm/ioConfig/v2/wirelessConfigz/ioConfig/v2/wifiDiagnosticsz/cdm/servicesDiscovery            i  i  c                    t        j                         }d}| j                          	 | j                  | j                  ||       | j                          y # t
        $ r t        j                  d       Y 1w xY w# | j                          w xY w)Nr   zUnable to read LEDM Channel)	ioBytesIOopenEWS_LEDMreadLEDMAllDatareadEWS_LEDMErrorlogdebug	closeLEDM)devresponsetimeouts       /usr/share/hplip/base/CdmWifi.pyflushThePortr"   <   sp    zz|HGC,,h@ 	  1		/01 	s#   A A74A: 6A77A: :Bc                 x   t        |        i }d|d<   ||d<   ||d<   t        j                  |      }d}t        | t        ||      \  }}|t
        k(  st        j                  d|z         yt        j                  |j                               }t        j                  t        j                  |            }|d   ay)	Npassword
grant_typeusernametokenz?Request Failed With Response Code %d, enter correct credentialsFaccess_tokenT)r"   jsondumpshttp_post_reqCDM_AUTH_REQHTTP_OKr   r   loadsstripastliteral_evalr'   )r   unamer$   dataauthrespcodes         r!   getCDMTokenr6   G   s    D#DDD::dDD"3dDAND(w		SV^^_zz$**,'

4 01^$    c           	      N   | j                          t        r)| j                  d|dt        |      dt        d       n!| j                  d|dt        |      d       | j                  |       t	               }	 | j                  | j                  |       |j                  d       t        j                  |      }|j                          |j                         }|j                         }||fS #  | j                          t        j                  d       dt         fcY S xY w)NzPOST  HTTP/1.1
Content-Type: application/json
User-Agent: hplip
Accept: */*
Cache-Control: no-cache
Host:localhost
Connection: keep-alive
Content-Length: 
Authorization: Bearer 

r   Unable to read EWS_LEDM Channelr   )r   r'   writeEWS_LEDMlenr   readLEDMDatar   seekr   HTTPResponsebegingetcodereadcloseEWS_LEDMr   r   
HTTP_ERROR)r   URI	data_jsonr4   replyr   r5   r3   s           r!   r+   r+   \   s     z}  ~A  BK  ~L  NS  T  	U  ^a  be  fo  bp  q  	ri KE))%0

1++E2##%}}X~		34*}s   =A5C3 3/D$c           	         t        j                  |      }| j                          t        r)| j	                  d|dt        |      dt        d       n!| j	                  d|dt        |      d       | j	                  |       t               }	 | j                  | j                  |       |j                  d       t        j                  |      }d}|r	 |j                          d}|r|j#                         }|j%                         }||fS #  t        j                  d       t        j                   d       |d	z  }Y ZxY w# t&        $ r( | j)                          t        j                  d
       Y y w xY w)NzPATCH z HTTP/1.1
Content-Type: application/json
User-Agent: hplip
Accept: */*
Host:localhost
Connection: keep-alive
Content-Length: r:   r;   r   
   z&Unable to begin response, retrying ...r   r   r<   )r)   r*   r   r'   r=   r>   r   r?   r   r@   r   rA   rB   r   r   timesleeprC   rD   r   rE   )r   rG   r3   rH   rI   r   resultr5   s           r!   http_patch_reqrO   t   sm   

4 I  `c  dg  hq  dr  ty  z  	{  DG  HK  LU  HV  W  	Xi KE5))%0

1++E2   ##%}}H}		BC

1!  5		345s1   AE D +E .#E 1EE .E98E9c           	      .   | j                          t        r)| j                  d|dt        |      dt        d       n!| j                  d|dt        |      d       t	               }	 | j                  | j                  |d       |j                  d       t        j                  |      }|j                          |j                         }|j                         }||fS # t        $ r( | j                          t        j!                  d       Y y w xY w)NzGET r9   r:   r;      r   r<   )r   r'   r=   r>   r   r?   r   r@   r   rA   rB   rC   rD   r   rE   r   r   )r   rG   rI   r   r5   r3   s         r!   http_get_reqrR      s      y|  }@  AD  }E  FK  L  	M  ]`  ad  eh  ai  j  	kKE
5))%4

1++E2##%}}X~ 5		345s   ,A6C# #.DDc                 6   t        | t              \  }}|t        k(  st        j	                  d|z         y t        j                  |j                               }d}d}|t        k  rb|dz  }|d   dk(  rnTt        j                  d       t        | t              \  }}|t        k(  st        j	                  d|z         y |t        k  rbt        j                  |j                               }t        j                  t        j                  |            }|d   dk(  S )N$Request Failed With Response Code %dr   r   r   connectionState	connectedr   )rR   	adaptorIdr-   r   r   r)   r.   r/   MAX_RETRIESrL   rM   r0   r1   r*   )r   r3   r5   rdata	max_triess        r!   eth_connect_checkr[      s    !#y1ND(w		88CD::djjl#D EI
k
!Q	!"k1

1&sI6x7"II<xGH k
! ::ekkm$DDJJt,-D"#{23r7   c                     t         S N)hostname)r   s    r!   getHostnamer_      s	     Or7   c                    g }t        | t              \  }}|t        k(  st        j	                  d|z         |S t        j                  |j                               }t        j                  t        j                  |            }|D ]A  }|dk(  s|dk(  s|j                  ||   d   d   d          |j                  ||   d          C |r|d   a|S )NrT   wifi0wifi1linksr   hrefadapterName)rR   CDM_ADP_CONFr-   r   r   r)   r.   r/   r0   r1   r*   appendrW   )r   rValr3   r5   eachs        r!   getWifiAdaptorIDrj      s    D!#|4ND(w		88CD::djjl#DDJJt,-D 37?dgoKKT
7+A.v67KKT
=123 G	Kr7   c                     d}d}d}d}|d   }|d   }ddi}t        | ||      \  }}|t        t        t        fvrt        j                  d|z         y ||||fS )Nr   r   r   enabledtruerT   )rO   HTTP_ACCEPTEDHTTP_NOCONTENTr-   r   r   )	r   adaptor_liststatepresense
adaptor_idadaptorNamedr3   r5   s	            r!   setAdaptorPowerrw      sw    EHJKaJq/K	VA"3
A6MDnW==		88CD{E833r7   c                    i }	 t        | t              \  }}|t        t        t        fvrt
        j                  d|z         y ddd}t        | t        |      \  }}|t        t        t        fvrt
        j                  d|z         y d}|dk7  rt        | t              \  }}|t        t        t        fvrt
        j                  d|z         y t        j                  |j                               }t        j                  t        j                  |            }|d   }|dk7  rt        dd	}t        | |      \  }}|t        k(  st
        j                  d
|z         y t        j                  |j                               }t        j                  t        j                  |            }t        |d         }||d<   d|d<   d|d<   |dk(  r	 |S t        |      D ]  }	|d   |	   d   |d|	z  <   |d   |	   d   |d|	z  <   |d   |	   d   |d|	z  <   |d   |	   d   d   |d|	z  <   |d   |	   d   |d|	z  <   |d   |	   d   |d|	z  <   	 |d   |	   d   |d |	z  <   	 t#        |d   |	   d   d         |d"|	z  <   	 |d   |	   d#   |d$|	z  <   |d   t#        |d"|	z           k  rt#        |d"|	z           |d<   |d   t#        |d"|	z           kD  st#        |d"|	z           |d<    |S # t         $ r, t
        j                  d!|d   |	   d   z         d |d |	z  <   Y w xY w# t         $ r d|d"|	z  <   Y w xY w# t         $ r d |d$|	z  <   Y w xY w)%Nz5get cdm wifiscan Request Failed With Response Code %dscanProcessing
undirected)rr   scanTypez7patch cdm wifiscan Request Failed With Response Code %dreadyToScanrr   /wifiNetworksz>get cdm wifiNetworks list Request Failed With Response Code %dwifiNetworkListnumberofscanentriesr   signalstrengthminr   signalstrengthmaxr   ssidzssid-%dchannelz
channel-%dcommunicationModezcommunicationmode-%dsignalStrengthdBmzdbm-%dencryptionTypezencryptiontype-%dauthenticationModezauthenticationMode-%dbssidzbssid-%dz Bssid not present in network -%szsignalstrength-%d
wpaVersionzwpaVersionPreference-%d)rR   CDM_WIFI_SCANro   rp   r-   r   r   rO   r)   r.   r/   r0   r1   r*   r>   rangeKeyErrorint)
r   rt   retr3   r5   rY   
scan_staterG   elementCountas
             r!   performScanr      s   	C	 "#}5ND(nW==		IHTU&lCD#C=NE(nW==		KhVW!J

%%c=9hM.AAIIMPXXY::djjl+D##DJJt$45DgJ 
% #N
3C!#s+ND(w		RU]]^::djjl#DDJJt,-Dt-./L!-C C Cq6 J3 |$ 	MA!%&7!8!;F!CC	A$():$;A$>y$ICq !.23D.Ea.HI\.]C&*+ $%6 7 :;K LU SC1+/0A+B1+EFV+WC#a'(045F0G0JK_0`C'!+,+&*+<&=a&@&IJN#
203D9J4KA4NO_4`aq4r0s'!+,;6:;L6Ma6PQ]6^-12 &'#c2E2I.J*KK+.s3F3J/K+L'(&'#c2E2I.J*KK+.s3F3J/K+L'(1	M2 J!  +		<dCT>UVW>XY_>``a&*JN#+  201'!+,2  ;6:-12;s6   	K&L9L5&2LLL21L25M	M	c                    t        | t              \  }}|t        k(  st        j	                  d|z         y t        j                  |j                               }t        j                  t        j                  |            }|D ]  }|dk(  s|dk(  s||   d   d   d   }||   d   d   d   }||   d   d   d   }||   d   d	   d
   d   }||   d   d	   d   d   }	||   d   d   d   a||   d   d   d   }
|t        |
||||	fc S  y )Nz5get CDM_ADP_CONF Request Failed With Response Code %dra   rb   ipv4addressipsubnetgateway	dnsServerprimary	secondaryidentityr^   namerequestedConfigMethod)rR   rf   r-   r   r   r)   r.   r/   r0   r1   r*   r^   )r   re   r3   r5   ri   r   
subnetmaskr   pridnssec_dnsaddressmodes              r!   getIPConfigurationr   5  sB   !#|4ND(w		IHTU::djjl#DDJJt,-D 	S7?dgodF#I.t4BdF+I6x@J4j(3I>G$Z'4Y?	JF4j(5kB9MGDz*-j9&AHt*V,Y78OPKxj'67RR	Sr7   c                 $   |dk(  rd}i }t        | t              \  }}|t        k(  st        j	                  d|z         y t        j                  |j                               }t        j                  t        j                  |            }|d= |d   }	|||	   d<   |||	   d<   |||	   d<   |||	   d	<   |||	   d
<   t        | t        |      \  }}|t        k(  st        j                  d|z         y t        |       st        j                  d       |S )N	wpaOrWpa2autoz<get CDM_WIRELESS_CONFIG Request Failed With Response Code %dversionpreferredProfiler   r   r   wpaVersionPreference
passPhrasez>patch CDM_WIRELESS_CONFIG Request Failed With Response Code %dz+wifi not connected, remove ethernet and try)rR   CDM_WIRELESS_CONFIGr-   r   errorr)   r.   r/   r0   r1   r*   rO   rp   r   r[   )
r   r   r   r   securitykeyr   r3   r5   r   s
             r!   	associater   H  s"   [(#	C!#':;ND(w		PS[[\::djjl#DDJJt,-DY,-3ED	/0/7D	+,%)D	6"5ID	12+.D	<(#C)<dCND(~%		RU]]^S!		?@Jr7   c                 
    g }|S r]    )r   re   r   s      r!   getVSACodesr   h  s    
CJr7   c                     d\  }}}}||||fS )N)r   r   r   i8r   )r   re   r   rt   ss_maxss_minss_valss_dbms           r!   getSignalStrengthr   l  s    %2"FFFFFFF**r7   c                     d\  }}}|||fS )N)r   r   r   r   )r   re   algmodesecretids        r!   getCryptoSuiter   p  s    $Cxxr7   c                 F    d}t        | t              \  }}|t        fv rd}|S )NFT)rR   rf   HTTP_UNAUTHORIZED)r   rN   _datar5   s       r!   checkAuthrequiredr   t  s-    F"35OE8%&&Mr7   r]   )r   )7rL   r   binasciixml.parsers.expatxmlstringr)   r0   gr   r   r   sixextr   base.sixextr   r	   r
   r   r   sixext.movesr   sysrX   r'   rW   r^   r,   rf   r   r   CDM_WIFI_DIAGCDM_SERVICE_DISCOVERYr-   HTTP_CREATEDro   rp   rF   r   r"   r6   r+   rO   rR   r[   r_   rj   rw   r   r   r   r   r   r   r   r   r7   r!   <module>r      s   .  	       ! b b %  
 
		%0+7 .0 

 	*05B5,42
"4KZS&@+ r7   