;ς
’)?Bc           @   sΓ   d  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
   Z d   Z d   Z d   Z d   Z d   Z d S(   s\  MIME-stripping filter for Mailman.

This module scans a message for MIME content, removing those sections whose
MIME types match one of a list of matches.  multipart/alternative sections are
replaced by the first non-empty component, and multipart/mixed sections
wrapping only single sections after other processing are replaced by their
contents.
N(   s   typed_subpart_iterator(   s   mm_cfg(   s   Errors(   s   UserNotification(   s   get_switchboard(   s   syslog(   s   VERSION(   s   _c         C   s¬  |  i o d  Sn | i d  o d  Sn | i   }
 | i   } |  i	 } |  i } |
 | j p
 | | j o t |  | | t d   n | o |
 | j p
 | | j o t |  | | t d   n t g  i } | i   D] } | |  qβ ~  } | i   oo t | i    } t | | |  t | i    } | d j o
 | d j o t |  | | t d   qzn t |  |
 d j o  | i d  }	 t | |	  n d } | t g  i } | i   D] } | |  qΡ~  j o
 d } n |  i o t i  o | t! |  7} n | i   o t | i    d j oF | i d  i   d	 j o& | i d  } t | |  d } qn | o d
 t# | d <n d  S(   Ns   isdigests4   The message's content type was explicitly disalloweds5   The message's content type was not explicitly allowedi    s.   After content filtering, the message was emptys   multipart/alternativei   i   s    s   Mailman/MimeDel %ss   X-Content-Filtered-By($   s   mlists   filter_contents   msgdatas   gets   msgs   get_content_types   ctypes   get_content_maintypes   mtypes   filter_mime_typess   filtertypess   pass_mime_typess	   passtypess   disposes   _s   lens   appends   _[1]s   walks   subparts   numpartss   is_multiparts   get_payloads   prelens   filter_partss   postlens   collapse_multipart_alternativess   firstalts   reset_payloads   changedps   convert_html_to_plaintexts   mm_cfgs   HTML_TO_PLAIN_TEXT_COMMANDs   to_plaintexts   usefuls   VERSION(   s   mlists   msgs   msgdatas   usefuls   filtertypess   mtypes   subparts   prelens   changedps   firstalts   ctypes   postlens	   passtypess   numpartss   _[1](    (    s(   /var/mailman/Mailman/Handlers/MimeDel.pys   process*   sL    		"3
:
&c         C   s»   | i   } |  i |  |  d =|  d =|  d =|  d =| i d d  |  d <| i d  } | o | |  d <n | i d  } | o | |  d <n | i d  } | o | |  d	 <n d  S(
   Ns   content-types   content-transfer-encodings   content-dispositions   content-descriptions
   text/plains   Content-Types   Content-Transfer-Encodings   Content-Dispositions   Content-Description(	   s   subparts   get_payloads   payloads   msgs   set_payloads   gets   ctes   cdisps   cdesc(   s   msgs   subparts   ctes   cdescs   payloads   cdisp(    (    s(   /var/mailman/Mailman/Handlers/MimeDel.pys   reset_payloadg   s     c         C   s  |  i   o d Sn |  i   }
 t |
  } g  } x |
 D] } t | | |  } | o q; n | i   } | i   } | | j p
 | | j o q; n | o | | j p
 | | j o q; n | i |  q; Wt |  }	 |  i |  |	 d j o
 | d j o d Sn d Sd  S(   Ni   i    (   s   msgs   is_multiparts   get_payloads   payloads   lens   prelens
   newpayloads   subparts   filter_partss   filtertypess	   passtypess   keeps   get_content_types   ctypes   get_content_maintypes   mtypes   appends   postlens   set_payload(   s   msgs   filtertypess	   passtypess   subparts
   newpayloads   keeps   mtypes   ctypes   prelens   postlens   payload(    (    s(   /var/mailman/Mailman/Handlers/MimeDel.pys   filter_parts|   s,     "c         C   s   |  i   o d  Sn g  } xn |  i   D]` } | i   d j o: y  | i d  } | i |  Wq t j
 o q Xq) | i |  q) W|  i	 |  d  S(   Ns   multipart/alternativei    (
   s   msgs   is_multiparts
   newpayloads   get_payloads   subparts   get_content_types   firstalts   appends
   IndexErrors   set_payload(   s   msgs   subparts
   newpayloads   firstalt(    (    s(   /var/mailman/Mailman/Handlers/MimeDel.pys   collapse_multipart_alternatives   s     	c   	   	   C   s#  d } xt |  d d  D]ώ } t i d  } t | d  } zs | i	 | i
    | i   t i t i h  d | < } | i   } | i   } | o t d d |  n Wd  y t i |  Wn/ t j
 o# } | i t i j o   qφ n XX| i |  | i d	  d
 } q W| Sd  S(   Ni    s   texts   htmls   .htmls   ws   filenames   errors   HTML->text/plain error: %ss
   text/plaini   (   s   changedps   typed_subpart_iterators   msgs   subparts   tempfiles   mktemps   filenames   opens   fps   writes   get_payloads   closes   oss   popens   mm_cfgs   HTML_TO_PLAIN_TEXT_COMMANDs   cmds   reads	   plaintexts   rtns   syslogs   unlinks   OSErrors   es   errnos   ENOENTs   set_payloads   set_type(	   s   msgs   fps   es   subparts   cmds   filenames   rtns	   plaintexts   changedp(    (    s(   /var/mailman/Mailman/Handlers/MimeDel.pys   to_plaintext«   s.     
  
c         C   s―   |  i d j o t i |  n |  i d j o5 |  i   } |  i | d t	 d  d t	 d  n |  i d j o t
 i o# t t
 i  } | i | |  n t i  d  S(   Ni   i   s   textsέ   The attached message matched the %(listname)s mailing list's content filtering
rules and was prevented from being forwarded on to the list membership.  You
are receiving the only remaining copy of the discarded message.

s   subjects%   Content filtered message notificationi   (   s   mlists   filter_actions   Errorss   RejectMessages   whys   internal_names   listnames   ForwardMessages   msgs   _s   mm_cfgs%   OWNERS_CAN_PRESERVE_FILTERED_MESSAGESs   get_switchboards   BADQUEUE_DIRs   badqs   enqueues   msgdatas   DiscardMessage(   s   mlists   msgs   msgdatas   whys   listnames   badq(    (    s(   /var/mailman/Mailman/Handlers/MimeDel.pys   disposeΖ   s    	(   s   __doc__s   oss   errnos   tempfiles   email.Iteratorss   typed_subpart_iterators   Mailmans   mm_cfgs   Errorss   Mailman.Messages   UserNotifications   Mailman.Queue.sbcaches   get_switchboards   Mailman.Logging.Syslogs   syslogs   Mailman.Versions   VERSIONs   Mailman.i18ns   _s   processs   reset_payloads   filter_partss   collapse_multipart_alternativess   to_plaintexts   dispose(   s   collapse_multipart_alternativess   VERSIONs   typed_subpart_iterators   UserNotifications   filter_partss   get_switchboards   reset_payloads   tempfiles   errnos   to_plaintexts   disposes   Errorss   syslogs   mm_cfgs   processs   oss   _(    (    s(   /var/mailman/Mailman/Handlers/MimeDel.pys   ?   s"   				=				