;ò
¢)?Bc           @   sé  d  Z  d k l Z d k Z d k Z d k Z d k Z d k Z d k Z d k	 Z	 d k
 l Z d k l Z d k l Z d k l Z d k l Z d k l Z d	 k l Z d
 k l Z d k l Z d k l Z d k l Z d k l Z e i d ƒ Z  e i d ƒ Z! e i d ƒ Z" d Z# d Z$ y e% e& f Wn e' j
 o d Z% d Z& n Xy d k( l) Z) Wn( e* j
 o d k( Z( e% d „ Z) n Xd „  Z+ d e f d „  ƒ  YZ, d „  Z- d „  Z. e/ d „ Z0 d „  Z1 e% d „ Z2 d S(    s!   Cleanse a message for archiving.
(   s   nested_scopesN(   s   StringIO(   s   IntType(   s	   parsedate(   s   HeaderParser(   s	   Generator(   s   mm_cfg(   s   Utils(   s   LockFile(   s   Message(   s   DiscardMessage(   s   _(   s   syslogs   [/\\:]s   [^-\w.]s   ^\.*s   <br>
s    i   i    (   s   guess_all_extensionsc            sS   g  ‰ ‡ ‡  d †  } | t i ƒ | o t t d ƒ o | t i ƒ n ˆ Sd  S(   Nc            s?   x8 |  i ƒ  D]* \ } } | ˆ j o ˆ  i | ƒ q q Wd  S(   N(   s   maps   itemss   es   ts   ctypes   alls   append(   s   maps   es   t(   s   alls   ctype(    s)   /var/mailman/Mailman/Handlers/Scrubber.pys   checkE   s     s   common_types(   s   alls   checks	   mimetypess	   types_maps   stricts   hasattrs   common_types(   s   ctypes   stricts   alls   check(    (   s   ctypes   alls)   /var/mailman/Mailman/Handlers/Scrubber.pys   guess_all_extensionsB   s    c         C   s:   t  |  d t ƒ} | | j o | Sn | o | d Sd  S(   Ns   stricti    (   s   guess_all_extensionss   ctypes   Falses   alls   ext(   s   ctypes   exts   all(    (    s)   /var/mailman/Mailman/Handlers/Scrubber.pys   guess_extensionQ   s    s   ScrubberGeneratorc           B   s#   t  Z e d e d „ Z d „  Z RS(   NiN   c         C   s#   t  i |  | d t ƒ| |  _ d  S(   Ns   mangle_from_(   s	   Generators   __init__s   selfs   outfps   Falses   skipheaderss   _ScrubberGenerator__skipheaders(   s   selfs   outfps   mangle_from_s   maxheaderlens   skipheaders(    (    s)   /var/mailman/Mailman/Handlers/Scrubber.pys   __init__g   s    c         C   s#   |  i o t i |  | ƒ n d  S(   N(   s   selfs   _ScrubberGenerator__skipheaderss	   Generators   _write_headerss   msg(   s   selfs   msg(    (    s)   /var/mailman/Mailman/Handlers/Scrubber.pys   _write_headersl   s    (   s   __name__s
   __module__s   Trues   __init__s   _write_headers(    (    (    s)   /var/mailman/Mailman/Handlers/Scrubber.pys   ScrubberGeneratorf   s   c         C   s8   y t  i |  | ƒ SWn t t f j
 o t Sn Xd  S(   N(   s   times   strftimes   fmts	   floatsecss	   TypeErrors
   ValueErrors   None(   s   fmts	   floatsecs(    (    s)   /var/mailman/Mailman/Handlers/Scrubber.pys   safe_strftimeq   s    c         C   s  d } | i d ƒ }
 |
 o t |
 ƒ } n" t i | i d t i ƒ  ƒ ƒ } t	 | | ƒ }	 |	 o- | i d ƒ }
 |
 o t	 | |
 ƒ }	 q‘ n |	 où | i ƒ  i ƒ  } y¦ h  d d <d d <d	 d
 <d d <d d <d d <d d <d d <d d <d d <d d <d d <i | d
 d ƒ } t | d ƒ } t | d ƒ } Wn' t t f j
 o d } } } n Xd | | | f }	 n |	 p t ‚ | d } | t j o t i |  ƒ } | d  <n t i | ƒ i ƒ  } t i i  d! |	 | d  | d" ƒ Sd  S(#   Ns   %Y%m%ds   Dates   received_times   X-List-Received-Dates   Jani   s   Febi   s   Mari   s   Apri   s   Mayi   s   Juni   s   Juli   s   Augi   s   Sepi	   s   Octi
   s   Novi   s   Deci   i    s   %04d%02d%02ds
   message-ids
   Message-IDs   attachmentsiüÿÿÿ(!   s   fmts   msgs   gets   datestrs	   parsedates   nows   times   gmtimes   msgdatas   safe_strftimes   datedirs   get_unixfroms   splits   partss   months   ints   days   years
   IndexErrors
   ValueErrors   AssertionErrors   msgids   Nones   Utilss   unique_message_ids   mlists   shas   news	   hexdigests   digests   oss   paths   join(   s   mlists   msgs   msgdatas   months   years   digests   msgids   fmts   partss   datedirs   datestrs   nows   day(    (    s)   /var/mailman/Mailman/Handlers/Scrubber.pys   calculate_attachments_dirx   s2    !‚
c         C   s÷  t  i } t }	 | t j o
 h  } n t |  | | ƒ } t }
 t i |  i ƒ } x©| i ƒ  D]›} | i | i ƒ  ƒ } | d j o$ |
 t j o | i | ƒ }
 qònJ| d j o t | t ƒ oœ| d j o2 |	 o
 t ‚ n | d =| i t d ƒ | ƒ qò| d j o qò| d j o] t i d ƒ } z t |  | | d t ƒ} Wd  t i | ƒ X| d =| i t d	 ƒ | ƒ qòt i! | i" d
 t ƒ ƒ } d „  } g  i% } | i' d ƒ D] } | | | ƒ ƒ q»~ } d t* i+ | ƒ d } | i | ƒ | d =t i d ƒ } z t |  | | d t ƒ} Wd  t i | ƒ X| d =| i t d	 ƒ | ƒ n‘| d j oÀ | i" d ƒ } t i d ƒ } z t |  | | ƒ } Wd  t i | ƒ X| i- d t d ƒ ƒ } | i- d t d ƒ ƒ } | i- d t d ƒ ƒ } t1 t2 | ƒ ƒ } | d =| i t d ƒ | ƒ nÄ | i4 ƒ  oµ | i" d
 t ƒ } | i ƒ  } t1 | ƒ } t i d ƒ } z t |  | | ƒ } Wd  t i | ƒ X| i- d t d ƒ ƒ } | i6 t d ƒ ƒ } | d =| d =| i t d ƒ | ƒ n t }	 q] W| i4 ƒ  oæ|
 t j p
 |
 d j o
 | }
 n g  } xr| i" ƒ  D]d} | i9 ƒ  } | d j o | i% t d ƒ ƒ q@n y | i" d
 t ƒ } Wn" t< i= j
 o | i" ƒ  } n X| i ƒ  } | o
 | |
 j o¤ y t? | | d ƒ } Wn@ t@ tA tB f j
 o+ t? | d d ƒ } | iD d d ƒ } n Xy | iD |
 d ƒ } Wqxt@ tA tB f j
 o | iD | d ƒ } qxXn | iE d ƒ o | d 7} n | i% | ƒ q@Wt d ƒ } | d =| i | i+ | ƒ |
 ƒ | d =| iG d  d! ƒ n | Sd  S("   Ns
   text/plains	   text/htmli    s   content-types$   HTML attachment scrubbed and removedi   i   s   filter_htmls0   An HTML attachment was scrubbed...
URL: %(url)s
s   decodec         C   s$   |  i d d ƒ i d d d ƒ Sd  S(   Ns    s   &nbsp;s   	s   &nbspi   (   s   ss   replace(   s   s(    (    s)   /var/mailman/Mailman/Handlers/Scrubber.pys	   doreplaceÙ   s    s   
s   <tt>
s   
</tt>
s   content-transfer-encodings   message/rfc822s   subjects
   no subjects   dates   no dates   froms   unknown sendersr   An embedded message was scrubbed...
From: %(who)s
Subject: %(subject)s
Date: %(date)s
Size: %(size)s
Url: %(url)s
s   content-descriptions   not availables{   A non-text attachment was scrubbed...
Name: %(filename)s
Type: %(ctype)s
Size: %(size)d bytes
Desc: %(desc)s
Url : %(url)s
s   us-asciis%   Skipped content of type %(partctype)ss   replaces   asciis(   -------------- next part --------------
s   Content-Transfer-Encodings   8bit(H   s   mm_cfgs   ARCHIVE_HTML_SANITIZERs   sanitizes   Trues   outers   msgdatas   Nones   calculate_attachments_dirs   mlists   msgs   dirs   charsets   Utilss
   GetCharSets   preferred_languages   lcsets   walks   parts   get_types   get_default_types   ctypes   get_content_charsets
   isinstances   IntTypes   DiscardMessages   set_payloads   _s   oss   umasks   omasks   save_attachments   Falses   urls   websafes   get_payloads   payloads	   doreplaces   appends   _[1]s   splits   ss   liness   BRs   joins   submsgs   gets   subjects   dates   whos   lens   strs   sizes   is_multiparts   descs   get_filenames   filenames   texts   get_content_types	   partctypes   ts   binasciis   Errors   partcharsets   unicodes   UnicodeErrors   LookupErrors
   ValueErrors   us   encodes   endswiths   seps
   add_header(   s   mlists   msgs   msgdatas   submsgs   seps   liness   lcsets   payloads   subjects   outers   charsets   filenames   sanitizes   texts   us   sizes   omasks   whos   ctypes   partcharsets   dates   descs   urls   _[1]s   ss   parts	   doreplaces   ts   dirs	   partctype(    (    s)   /var/mailman/Mailman/Handlers/Scrubber.pys   process¥   sÚ    	
 
 	6   

 c         C   si   y3 t  i |  d ƒ d „  } t  i i |  | t ƒ Wn/ t j
 o# } | i	 t	 i
 j o ‚  qe n Xd  S(   Niý  c         C   s   t  i | d ƒ d  S(   Niý  (   s   oss   chmods   dirname(   s   args   dirnames   names(    (    s)   /var/mailman/Mailman/Handlers/Scrubber.pys   twiddleV  s    (   s   oss   makedirss   dirs   twiddles   paths   walks   Nones   OSErrors   es   errnos   EEXIST(   s   dirs   es   twiddle(    (    s)   /var/mailman/Mailman/Handlers/Scrubber.pys   makedirsP  s    	 c         C   s@  t  i i |  i ƒ  | ƒ }
 t |
 ƒ | i	 d t
 ƒ } | i ƒ  } t  i i | i d ƒ ƒ d } t | | ƒ } | o! | d j o
 d } qš d } n t } t  i i |
 d ƒ } t i | ƒ } | i ƒ  zÛ | i ƒ  } | o
 d } nV t i | ƒ } | d	 } t i d | ƒ } t i d | ƒ } t  i i | ƒ \ } }	 d
 } d } xU t
 oM t  i i |
 | | | ƒ } t  i i" | ƒ o | d 7} d | } qSPqSWWd  | i# ƒ  X| o
 | d j oÐ t  i i | ƒ \ } } | d | } t' | d ƒ } zv | i) | ƒ | i* ƒ  t+ i, h  d | <} t  i. | d ƒ } | i0 ƒ  } | i* ƒ  } | o t2 d d | ƒ n Wd  t  i3 | ƒ Xd } | d } n3 | d j o% | i	 ƒ  } t5 i6 t7 | ƒ ƒ } n t' | d ƒ } | i) | ƒ | i* ƒ  |  i8 ƒ  } | d	 d j o | d 7} n | d | | | | f } | Sd  S(   Ns   decodes    i   s   message/rfc822s   .txts   .bins   attachments.locks
   attachmentiÿÿÿÿi    s   -%04ds	   text/htmls   -tmps   ws   filenames   rs   errors.   HTML sanitizer exited with non-zero status: %ss   /s	   %s/%s%s%s(;   s   oss   paths   joins   mlists   archive_dirs   dirs   fsdirs   makedirss   msgs   get_payloads   Trues   decodedpayloads   get_content_types   ctypes   splitexts   get_filenames   fnexts   guess_extensions   exts   Nones   lockfiles   LockFiles   locks   filenames   filebases   pres   splits   partss   dres   subs   sres   ignores   counters   extras   existss   unlocks   filter_htmls   bases   tmppaths   opens   fps   writes   closes   mm_cfgs   ARCHIVE_HTML_SANITIZERs   cmds   popens   progfps   reads   statuss   syslogs   unlinks   submsgs   Utilss   websafes   strs   GetBaseArchiveURLs   baseurls   url(   s   mlists   msgs   dirs   filter_htmls   progfps   cmds   decodedpayloads   extras   locks   ignores   fsdirs   submsgs   filenames   partss   fps   filebases   baseurls   ctypes   bases   paths   lockfiles   urls   counters   fnexts   tmppaths   exts   status(    (    s)   /var/mailman/Mailman/Handlers/Scrubber.pys   save_attachment^  s€    





 

 
 
(3   s   __doc__s
   __future__s   nested_scopess   oss   res   shas   times   errnos   binasciis   tempfiles	   cStringIOs   StringIOs   typess   IntTypes   email.Utilss	   parsedates   email.Parsers   HeaderParsers   email.Generators	   Generators   Mailmans   mm_cfgs   Utilss   LockFiles   Messages   Mailman.Errorss   DiscardMessages   Mailman.i18ns   _s   Mailman.Logging.Syslogs   syslogs   compiles   pres   sres   dres   BRs   SPACEs   Trues   Falses	   NameErrors	   mimetypess   guess_all_extensionss   ImportErrors   guess_extensions   ScrubberGenerators   safe_strftimes   calculate_attachments_dirs   Nones   processs   makedirss   save_attachment($   s	   parsedates   pres   guess_extensions   IntTypes	   Generators   guess_all_extensionss   safe_strftimes   syslogs   BRs   LockFiles   tempfiles   errnos   makedirss   binasciis   calculate_attachments_dirs   res   ScrubberGenerators   Trues	   mimetypess   nested_scopess   SPACEs   save_attachments   processs   HeaderParsers   mm_cfgs   _s   Falses   DiscardMessages   StringIOs   dres   Utilss   sres   shas   times   Messages   os(    (    s)   /var/mailman/Mailman/Handlers/Scrubber.pys   ?   sT   											-«	