
(VZ              (   @   s  d  d l  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  d l	 Z	 d  d l
 Z e j j Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z e e j d  Z e j j d d d d i  Z e g Z e j d  Z y e j d	  Wn e k
 r#Yn Xd
 e j k rZe re d  d  d l  Z  d  d l! Z! d  d l" Z" Gd d   d  Z# Gd d   d e j  Z$ e  j e# d d   e! j%  n	 e j Z$ d  d l& Z& d  d l' Z d d   Z( e j) j* d	 d  Z+ yA e, e+ d   Z- e j. e-  Z/ Wd QRXe r4e! j%   e/ _0 Wn' e1 e2 f k
 r^e j3 j4   Z/ Yn Xx0 e j e j) j5 d   D] Z6 e( e/ e6  q{Wd d   Z7 e7 e/ d  e	 j8 d e j) j* d	   u Z9 e$ e9  Z: e: j; e/  e j) j< e+  re j= e+  e j> e9 j? e+  y e9 j@   Wn e k
 r9Yn XWd QRXe jA e j jB e/   Gd d   d e j jC  ZD e jA eD    e j jE e   ZF d' d( g eF _G e j jH eF  Gd! d"   d" eI  ZJ e d# d$    ZK d% d&   ZL d S))    )closingcontextmanager)StringIONdispatchhttpzhttp://127.0.0.1:4444Zhttpsz[ 	]+tempZskipcookiesZispypyc               @   s   e  Z d  Z d S)DerpLockN)__name__
__module____qualname__ r   r   2/extra/hacker/creation/stories/code/setupurllib.pyr   #   s    r   c                   s;   e  Z d  Z d e j   f d d  Z e e j j e	 <  S)	MyPicklerNc                sJ   t  | t j  r t   } | t j k r0 t } t   j | | |  d  S)N)
isinstance_threadRLockr   supersave_global)selfobjnamepack)	__class__r   r   r   %   s
    	zMyPickler.save_global)
r	   r
   r   structr   r   picklePicklerr   typer   r   )r   r   r   $   s   r   c             C   s   d S)N r   )lockr   r   r   <lambda>,   s    r   c             C   s   t  t j |    } | j   } | j d  x | j   D] } t j j d | d | d d  d | d | d j	 d  | d j	 d  | d d | d | d	 | d	 d
 k d  d  i   } |  j
 |  q> WWd  QRXd  S)NzASELECT host, path, isSecure, expiry, name, value FROM moz_cookiesr         F.         r   )r   sqlite3ZconnectcursorexecuteZfetchallr   	cookiejarCookie
startswith
set_cookie)cj
ff_cookiesZconZcuritemcr   r   r   get_cookies3   s    '
r1   zcookies.picklerbz#~/.mozilla/firefox/*/cookies.sqlitec             C   s   t  j j |  s d  St |   } x | D] } t j | d  \ } } } } } }	 }
 t j j d |	 |
 d  d | | j	 d  | j	 d  | d | d k t
 |  | d k d  d  i   } |  j |  q, WWd  QRXd  S)N   r   Fr"   ZTRUEr   )ospathexistsopenspacesplitr   r)   r*   r+   intr,   )r-   textinplinehostZ	isSessionr5   ZisSecureZexpiryr   valuer0   r   r   r   get_text_cookiesO   s     '	r@   z/extra/user/tmp/cookies.txtdirc               @   s8   e  Z d  Z Gd d   d e j j  Z d d   Z d S)HeaderWatcherc                   s"   e  Z d  Z   f d d   Z   S)zHeaderWatcher.Clientc                s   t    j | | | |  d  S)N)r   request)r   methodselectordataheaders)r   r   r   rC   l   s    zHeaderWatcher.Client.request)r	   r
   r   rC   r   r   )r   r   Clientk   s   rH   c             C   s   |  j  |  j |  S)N)Zdo_openrH   )r   Zreqr   r   r   	http_openn   s    zHeaderWatcher.http_openN)r	   r
   r   r   ZclientZHTTPConnectionrH   rI   r   r   r   r   rB   j   s   rB   
User-agent'Mozilla/5.0 Gecko/20100101 Firefox/19.0Accept-Encodinggzip,deflatec               @   s   e  Z d  Z d d   Z d S)URLErrorc             C   s"   t  |  j  d t  |  j d  S)Nz: r   )str	__cause__args)r   r   r   r   __str__z   s    zURLError.__str__N)r	   r
   r   rR   r   r   r   r   rN   y   s   rN   c          &   c   s:  t  |  t  s t |   }  y |  j j d  Wn t k
 r } zu t t j j |  j   } x= t	 d t
 |   D]& } t j j | | d d | | <qu Wt j j |  |  _ WYd  d  } ~ Xn Xy t t j |     } | j } | d } | d k rt j d | d d	  } nh | d
 k r| j d  } y t j |  } Wn+ t j k
 rwt j | t j  } Yn Xt |  } | | _ | VWd  QRXWn t j j k
 r} z7 | j d k rt d | j  t | j      WYd  d  } ~ Xn= t j j k
 r5} z t |  j  |  WYd  d  } ~ Xn Xd  S)Nasciir$   Zsafez/&=?+zContent-Encodinggzipfileobjmoder2   Zdeflatei   i  head)r   RequestZfull_urlencodeUnicodeEncodeErrorlisturllibparseZurlparserangelenquoteZ
urlunparser   openerr7   rG   rT   GzipFilereadzlib
decompresserror	MAX_WBITSr   Z	HTTPErrorcodeprintrN   )rC   eZurlir<   rG   encodingrF   r   r   r   myopen}   s>    $(	
 	rm   c          
   C   s1   t  |    } t j | |  | j SWd  QRXd  S)N)rm   shutilcopyfileobjrG   )rC   destr<   r   r   r   
myretrieve   s    rq   )rJ   rK   )rL   rM   )M
contextlibr   r   ior   rT   rd   sysr4   tempfileZurllib.requestr\   rC   rX   r   rn   ZglobreZhttp.clientr   hasattrr   ZisPypyZProxyHandlerproxyZhandlerscompiler8   mkdirOSErrorenvironri   copyregr   r   r   r   r   r&   Zhttp.cookiejarr1   r5   joinZ
cookiefiler7   r<   loadZjarZ_cookies_lockIOErrorAttributeErrorr)   Z	CookieJar
expanduserr.   r@   NamedTemporaryFileoutZpicklerdumpr6   unlinkrenamer   closeappendZHTTPCookieProcessorZHTTPHandlerrB   Zbuild_openerra   Z
addheadersZinstall_opener	ExceptionrN   rm   rq   r   r   r   r   <module>   s   		  
	"!  )