Ñò
u©×Nc           @   sU  d  d k  Z  d  d k Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k l Z d  d k	 l
 Z
 d  d k l Z d  d k l Z l Z l Z l Z l Z l Z y d  d k Z Wn e j
 o n Xd e f d „  ƒ  YZ d e e f d	 „  ƒ  YZ d d d
 „ Z d e e f d „  ƒ  YZ d e e f d „  ƒ  YZ d „  Z d S(   iÿÿÿÿN(   t   sha1(   t   getglobalui(   t   OfflineImapError(   t   IMAP4t	   IMAP4_SSLt   zlibt
   IMAP4_PORTt   InternalDatet   Mon2numt   UsefulIMAPMixInc           B   s2   e  Z d  „  Z d e d d „ Z d d d „ Z RS(   c         C   s   |  i  d j o |  i Sd  S(   Nt   SELECTED(   t   statet   mailboxt   None(   t   self(    (    s{   /projectLibrary/707976 EPBuoyPrototypeAndTesting/SpotWatchCircleAlarm/spaetz-offlineimap-5f3ac2c/offlineimap/imaplibutil.pyt   getselectedfolder&   s    t   INBOXi    c         C   sí   |  i  ƒ  | j o |  i | j o | o d S|  i 2y t t |  ƒ i | | ƒ } WnP |  i j
 oA } d |  i | | i d f } t	 i
 i } t	 | | ƒ ‚ n X| d d j o/ d | | f } t	 i
 i } t	 | | ƒ ‚ n | S(   s    Selects a mailbox on the IMAP server

        :returns: 'OK' on success, nothing if the folder was already
        selected or raises an :exc:`OfflineImapError`NsD   Server '%s' closed connection, error on SELECT '%s'. Server said: %si    t   OKs.   Error SELECTing mailbox '%s', server reply:
%s(   R   t   is_readonlyt   untagged_responsest   superR	   t   selectt   abortt   hostt   argsR   t   ERRORt   FOLDER_RETRYt   FOLDER(   R   R   t   readonlyt   forcet   resultt   et   errstrt   severity(    (    s{   /projectLibrary/707976 EPBuoyPrototypeAndTesting/SpotWatchCircleAlarm/spaetz-offlineimap-5f3ac2c/offlineimap/imaplibutil.pyR   +   s"    #c         C   s   t  |  | | | ƒ d  S(   N(   t   new_mesg(   R   t   st   tnt   secs(    (    s{   /projectLibrary/707976 EPBuoyPrototypeAndTesting/SpotWatchCircleAlarm/spaetz-offlineimap-5f3ac2c/offlineimap/imaplibutil.pyt   _mesgF   s    N(   t   __name__t
   __module__R   t   FalseR   R   R&   (    (    (    s{   /projectLibrary/707976 EPBuoyPrototypeAndTesting/SpotWatchCircleAlarm/spaetz-offlineimap-5f3ac2c/offlineimap/imaplibutil.pyR	   %   s   	t   IMAP4_Tunnelc           B   sD   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s°   IMAP4 client class over a tunnel

    Instantiate with: IMAP4_Tunnel(tunnelcmd)

    tunnelcmd -- shell command to generate the tunnel.
    The result will be in PREAUTH stage.c         K   s   t  i |  | |  d  S(   N(   R   t   __init__(   R   t	   tunnelcmdt   kwargs(    (    s{   /projectLibrary/707976 EPBuoyPrototypeAndTesting/SpotWatchCircleAlarm/spaetz-offlineimap-5f3ac2c/offlineimap/imaplibutil.pyR+   Q   s    c      
   C   s~   | |  _  t i | d t d t d t i d t i ƒ|  _ |  i i |  i i |  _ |  _	 |  i	 i
 ƒ  |  _ |  i |  i ƒ d S(   s   The tunnelcmd comes in on host!t   shellt	   close_fdst   stdint   stdoutN(   R   t
   subprocesst   Popent   Truet   PIPEt   processR0   R1   t   outfdt   infdt   filenot   read_fdt   set_nonblocking(   R   R   t   port(    (    s{   /projectLibrary/707976 EPBuoyPrototypeAndTesting/SpotWatchCircleAlarm/spaetz-offlineimap-5f3ac2c/offlineimap/imaplibutil.pyt   openT   s    	c         C   s=   t  i  | t  i ƒ } | t i @} t  i  | t  i | ƒ d S(   s   Mark fd as nonblockingN(   t   fcntlt   F_GETFLt   ost
   O_NONBLOCKt   F_SETFL(   R   t   fdt   fl(    (    s{   /projectLibrary/707976 EPBuoyPrototypeAndTesting/SpotWatchCircleAlarm/spaetz-offlineimap-5f3ac2c/offlineimap/imaplibutil.pyR;   _   s    c         C   si   |  i  d j o t i |  i | ƒ S|  i  i o |  i  i } n t i |  i d ƒ } |  i  i | | ƒ S(   s@   data = read(size)
        Read at most 'size' bytes from remote.i    N(   t   decompressorR   R@   t   readR:   t   unconsumed_tailt
   decompress(   R   t   sizet   data(    (    s{   /projectLibrary/707976 EPBuoyPrototypeAndTesting/SpotWatchCircleAlarm/spaetz-offlineimap-5f3ac2c/offlineimap/imaplibutil.pyRF   g   s    c         C   sS   |  i  d  j	 o/ |  i  i | ƒ } | |  i  i t i ƒ 7} n |  i i | ƒ d  S(   N(   t
   compressorR   t   compresst   flushR   t   Z_SYNC_FLUSHR7   t   write(   R   RJ   (    (    s{   /projectLibrary/707976 EPBuoyPrototypeAndTesting/SpotWatchCircleAlarm/spaetz-offlineimap-5f3ac2c/offlineimap/imaplibutil.pyt   sendu   s    c         C   s+   |  i  i ƒ  |  i i ƒ  |  i i ƒ  d  S(   N(   R8   t   closeR7   R6   t   wait(   R   (    (    s{   /projectLibrary/707976 EPBuoyPrototypeAndTesting/SpotWatchCircleAlarm/spaetz-offlineimap-5f3ac2c/offlineimap/imaplibutil.pyt   shutdown}   s    (	   R'   R(   t   __doc__R+   R=   R;   RF   RP   RS   (    (    (    s{   /projectLibrary/707976 EPBuoyPrototypeAndTesting/SpotWatchCircleAlarm/spaetz-offlineimap-5f3ac2c/offlineimap/imaplibutil.pyR*   I   s   					c         C   sŠ   | d  j o t i ƒ  } n | d  j o t i ƒ  i ƒ  } n t i d t i | ƒ ƒ } t ƒ  i d d | | d d | | f ƒ d  S(   Ns   %M:%St   imaps     %s.%02d %s %sid   (	   R   t   timet	   threadingt   currentThreadt   getNamet   strftimet	   localtimeR   t   debug(   R   R#   R$   R%   t   tm(    (    s{   /projectLibrary/707976 EPBuoyPrototypeAndTesting/SpotWatchCircleAlarm/spaetz-offlineimap-5f3ac2c/offlineimap/imaplibutil.pyR"   ƒ   s    t   WrappedIMAP4_SSLc           B   s&   e  Z d  Z d „  Z d d d „ Z RS(   s9   Improved version of imaplib.IMAP4_SSL overriding select()c         O   sM   | i  d d  ƒ |  _ | i d ƒ o | d =n t t |  ƒ i | | Ž  d  S(   Nt   fingerprint(   t   getR   t   _fingerprintt   has_keyR   R^   R+   (   R   R   R-   (    (    s{   /projectLibrary/707976 EPBuoyPrototypeAndTesting/SpotWatchCircleAlarm/spaetz-offlineimap-5f3ac2c/offlineimap/imaplibutil.pyR+   Ž   s    c         C   s—   t  t |  ƒ i | | ƒ |  i p |  i oe d t ƒ  j oU t |  i i t	 ƒ ƒ i
 ƒ  } | |  i j o# t d | | f t i i ƒ ‚ q“ n d  S(   Nt   ssls™   Server SSL fingerprint '%s' for hostname '%s' does not match configured fingerprint. Please verify and set 'cert_fingerprint' accordingly if not set yet.(   R   R^   R=   Ra   t   ca_certst   localsR    t   sockt   getpeercertR4   t	   hexdigestR   R   t   REPO(   R   R   R<   R_   (    (    s{   /projectLibrary/707976 EPBuoyPrototypeAndTesting/SpotWatchCircleAlarm/spaetz-offlineimap-5f3ac2c/offlineimap/imaplibutil.pyR=   ”   s    
N(   R'   R(   RT   R+   R   R=   (    (    (    s{   /projectLibrary/707976 EPBuoyPrototypeAndTesting/SpotWatchCircleAlarm/spaetz-offlineimap-5f3ac2c/offlineimap/imaplibutil.pyR^   Œ   s   	t   WrappedIMAP4c           B   s   e  Z d  Z RS(   s5   Improved version of imaplib.IMAP4 overriding select()(   R'   R(   RT   (    (    (    s{   /projectLibrary/707976 EPBuoyPrototypeAndTesting/SpotWatchCircleAlarm/spaetz-offlineimap-5f3ac2c/offlineimap/imaplibutil.pyRj   ¢   s   c      	   C   s(  t  i |  ƒ } | p d St | i d ƒ } | i d ƒ } t | i d ƒ ƒ } t | i d ƒ ƒ } t | i d ƒ ƒ } t | i d ƒ ƒ } t | i d ƒ ƒ } t | i d ƒ ƒ }	 t | i d	 ƒ ƒ }
 |	 d
 |
 d
 } | d j o | } n | | | | | | d d d f	 } t i | ƒ S(   sL   Convert IMAP4 INTERNALDATE to UT.

    Returns seconds since the epoch.
    t   mont   zonent   dayt   yeart   hourt   mint   sect   zoneht   zonemi<   t   -iÿÿÿÿN(   R   t   matchR   R   t   groupt   intRV   t   mktime(   t   respt   moRk   Rl   Rm   Rn   Ro   Rp   Rq   Rr   Rs   t   zonet   tt(    (    s{   /projectLibrary/707976 EPBuoyPrototypeAndTesting/SpotWatchCircleAlarm/spaetz-offlineimap-5f3ac2c/offlineimap/imaplibutil.pyt   Internaldate2epoch§   s"    !(   R@   R>   t   ret   socketRV   R2   RW   t   hashlibR    t   offlineimap.uiR   t   offlineimapR   t   offlineimap.imaplib2R   R   R   R   R   R   Rc   t   ImportErrort   objectR	   R*   R   R"   R^   Rj   R}   (    (    (    s{   /projectLibrary/707976 EPBuoyPrototypeAndTesting/SpotWatchCircleAlarm/spaetz-offlineimap-5f3ac2c/offlineimap/imaplibutil.pyt   <module>   s(   .$:	