ó
Qü½cc           @   s  d  Z  d d l Z d d l Z d d l Z d d l m Z d d l Z d d l m Z d Z	 d d l
 m Z d d l
 m Z d d l m Z d d	 l m Z e j d
 e j ƒ Z y e e f Wn e k
 rÞ d Z d Z n Xd e f d „  ƒ  YZ d „  Z d S(   s   NNTP queue runner.iÿÿÿÿN(   t   StringIO(   t   getaddressess   , (   t   mm_cfg(   t   Utils(   t   Runner(   t   syslogs&  
    <mailman.                                     # match the prefix
    \d+.                                          # serial number
    \d+.                                          # time in seconds since epoch
    \d+.                                          # pid
    (?P<listname>[^@]+)                           # list's internal_name()
    @                                             # localpart@dom.ain
    (?P<hostname>[^>]+)                           # list's host_name
    >                                             # trailer
    i   i    t
   NewsRunnerc           B   s   e  Z e j Z d  „  Z RS(   c   	   	   C   s>  | j  ƒ  | j d ƒ s, t | | | ƒ n  yê t | j ƒ  ƒ } d  } z· yS t j | j ƒ \ } } t	 j
 | | d t d t j d t j ƒ} | j | ƒ Wn] t	 j k
 rÎ } t d d | j ƒ  | ƒ n/ t j k
 rü } t d d | j ƒ  | ƒ n XWd  | r| j ƒ  n  XWn! t k
 r9} |  j | ƒ t SXt S(   Nt   preppedt
   readermodet   usert   passwordt   errors)   (NNTPDirect) NNTP error for list "%s": %ss+   (NNTPDirect) socket error for list "%s": %s(   t   Loadt   gett   prepare_messageR    t	   as_stringt   NoneR   t	   nntpsplitt	   nntp_hostt   nntplibt   NNTPt   TrueR   t   NNTP_USERNAMEt   NNTP_PASSWORDt   postt
   error_tempR   t   internal_namet   socketR   t   quitt	   Exceptiont   _logt   False(	   t   selft   mlistt   msgt   msgdatat   fpt   connR   t	   nntp_portt   e(    (    s7   /export/web/mailman/mailman/Mailman/Queue/NewsRunner.pyt   _dispose<   s8    
	(   t   __name__t
   __module__R   t   NEWSQUEUE_DIRt   QDIRR(   (    (    (    s7   /export/web/mailman/mailman/Mailman/Queue/NewsRunner.pyR   9   s   	c         C   s«  |  j  d k r) | d =|  j ƒ  | d <n  | j d ƒ pD | j d ƒ } |  j rq | d  k	 rq | d =| | d <n  | j d d	 ƒ s— | d =d
 | d <n  | d d  k	 r± | d =n  |  j | d <| d } t } | r1t j | ƒ } | r1| j	 d d ƒ \ } } | |  j
 ƒ  k r.| |  j k r.t } q.q1n  | rÉ| d =t j |  ƒ | d <| rÉ| | d <| d }	 | d =|	 s| j d d	 ƒ }	 n
 |	 | d <|	 r¹d j |	 | g ƒ | d <qÆ| | d <qÉn  | d d  k r
t t t j j | ƒ ƒ ƒ }
 t |
 ƒ | d <n  x t j D] } | | =qWxu t j D]j \ } } | j | g  ƒ } t | ƒ d k  req/n  | | =| d | | <x | d D] } | | | <q…Wq/Wt | d <d  S(   Ni   i   t   approvedt   Approvedt   stripped_subjectt   origsubjt   subjectt   Subjectt    s   (no subject)t
   newsgroupst
   Newsgroupss
   message-idt   listnamet   hostnames
   Message-IDs   X-Mailman-Original-Message-IDt
   referencess   in-reply-tos   X-Mailman-Original-Referencess   
 t
   Referencest   Linesi    R   (   i   i   (   t   news_moderationt   GetListEmailR   t   news_prefix_subject_tooR   t   linked_newsgroupR   t   mcret   searcht   groupR   t	   host_nameR   R   t   unique_message_idt   joint   lent   listt   emailt	   Iteratorst   body_line_iteratort   strR   t   NNTP_REMOVE_HEADERSt   NNTP_REWRITE_DUPLICATE_HEADERSt   get_all(   R!   R"   R#   R/   t   msgidt	   hackmsgidt   mot   lnamet   hnamet   refst   countt   headert   rewritet   valuest   v(    (    s7   /export/web/mailman/mailman/Mailman/Queue/NewsRunner.pyR   a   sb    

!


(   t   __doc__t   reR   R   t	   cStringIOR    RG   t   email.UtilsR   t
   COMMASPACEt   MailmanR   R   t   Mailman.Queue.RunnerR   t   Mailman.Logging.SyslogR   t   compilet   VERBOSER?   R   R   t	   NameErrorR   R   (    (    (    s7   /export/web/mailman/mailman/Mailman/Queue/NewsRunner.pyt   <module>   s(   	
(