;ò
¢)?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 y e e f Wn e j
 o d
 Z d Z n Xd „  Z d „  Z d f  d „  ƒ  YZ d S(   sã   Mixin class for putting new messages in the right place for archival.

Public archives are separated from private ones.  An external archival
mechanism (eg, pipermail) should be pointed to the right places, to do the
archival.
N(   s   StringIO(   s   mm_cfg(   s   Mailbox(   s   Utils(   s   Site(   s   SafeDict(   s   syslog(   s   _i   i    c         C   sJ   y t  i |  | ƒ Wn/ t j
 o# } | i t i j o ‚  qF n Xd  S(   N(   s   oss   symlinks   olds   news   OSErrors   es   errnos   EEXIST(   s   olds   news   e(    (    s)   /var/mailman/Mailman/Archiver/Archiver.pys   makelink.   s
    c         C   sG   y t  i |  ƒ Wn/ t j
 o# } | i t i j o ‚  qC n Xd  S(   N(   s   oss   unlinks   links   OSErrors   es   errnos   ENOENT(   s   links   e(    (    s)   /var/mailman/Mailman/Archiver/Archiver.pys	   breaklink5   s
    s   Archiverc           B   sY   t  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d	 „  Z
 RS(
   Nc      
   C   sÖ  t  i |  _ t  i |  _ t  i |  _ t i	 d ƒ } zŽy t i |  i ƒ  d d ƒ Wn/ t j
 o# } | i t i j o ‚  q† n Xy t i |  i ƒ  d ƒ Wn/ t j
 o# } | i t i j o ‚  qÒ n Xt i i |  i ƒ  d ƒ } t } y t | ƒ } Wn¥ t j
 o™ } | i t i j o ‚  n t i	 d ƒ } z t | d ƒ } Wd  t i	 | ƒ X| i t i d h  d |  i <d	 |  i d	 d
 d ƒ<d |  ƒƒ n X| o | i ƒ  n Wd  t i	 | ƒ Xd  S(   Ni    s   .mboxiý  s
   index.htmli   s   ws   emptyarchive.htmls   listnames   listinfos   absolutei   s   mlist(   s   mm_cfgs   DEFAULT_ARCHIVEs   selfs   archives   DEFAULT_ARCHIVE_PRIVATEs   archive_privates    DEFAULT_ARCHIVE_VOLUME_FREQUENCYs   archive_volume_frequencys   oss   umasks   omasks   mkdirs   archive_dirs   OSErrors   es   errnos   EEXISTs   paths   joins	   indexfiles   Nones   fps   opens   IOErrors   ENOENTs   writes   Utilss   maketexts	   real_names   GetScriptURLs   close(   s   selfs   fps   es	   indexfiles   omask(    (    s)   /var/mailman/Mailman/Archiver/Archiver.pys   InitVarsC   sD        ' c         C   s   t  i |  i ƒ  ƒ Sd  S(   N(   s   Sites   get_archpaths   selfs   internal_name(   s   self(    (    s)   /var/mailman/Mailman/Archiver/Archiver.pys   archive_dir   s    c         C   s+   t  i i |  i ƒ  d |  i ƒ  d ƒ Sd S(   s?   The mbox name where messages are left for archive construction.s   .mboxN(   s   oss   paths   joins   selfs   archive_dirs   internal_name(   s   self(    (    s)   /var/mailman/Mailman/Archiver/Archiver.pys   ArchiveFileName„   s     c         C   s³   |  i o |  i d d d ƒd Sn‹ h  } x' t i i ƒ  D] \ } } | | | <q; Wt i	 h  d |  i
 ƒ  <d | i |  i t i ƒ <} | i d ƒ o | d 7} n | Sd  S(   Ns   privates   absolutei   s   /s   listnames   hostname(   s   selfs   archive_privates   GetScriptURLs   invs   mm_cfgs   VIRTUAL_HOSTSs   itemss   ks   vs   PUBLIC_ARCHIVE_URLs   internal_names   gets	   host_names   DEFAULT_URL_HOSTs   urls   endswith(   s   selfs   urls   ks   invs   v(    (    s)   /var/mailman/Mailman/Archiver/Archiver.pys   GetBaseArchiveURL‰   s    
 7c         C   s>   t  i d ƒ } z t i t | d ƒ ƒ SWd t  i | ƒ Xd S(   s5   Open (creating, if necessary) the named archive file.i   s   a+N(   s   oss   umasks   omasks   Mailboxs   opens   afn(   s   selfs   afns   omask(    (    s)   /var/mailman/Mailman/Archiver/Archiver.pys   __archive_file˜   s      c         C   sk   y9 |  i ƒ  } |  i | ƒ } | i | ƒ | i i ƒ  Wn+ t	 j
 o } t d d | | ƒ ‚  n Xd S(   s2   Retain a text copy of the message in an mbox file.s   errors#   Archive file access failure:
	%s %sN(   s   selfs   ArchiveFileNames   afns   _Archiver__archive_files   mboxs   AppendMessages   posts   fps   closes   IOErrors   msgs   syslog(   s   selfs   posts   afns   msgs   mbox(    (    s)   /var/mailman/Mailman/Archiver/Archiver.pys   __archive_to_mbox¤   s     c         C   sƒ   t  h  d |  i ƒ  <d |  i <ƒ } | | } t i | d ƒ } | i
 | ƒ | i ƒ  } | o t d d | d @d ?ƒ n d  S(   Ns   listnames   hostnames   ws   errors+   external archiver non-zero exit status: %d
i ÿ  i   (   s   SafeDicts   selfs   internal_names	   host_names   ds   ars   cmds   oss   popens   extarchs   writes   txts   closes   statuss   syslog(   s   selfs   ars   txts   statuss   extarchs   ds   cmd(    (    s)   /var/mailman/Mailman/Archiver/Archiver.pys   ExternalArchive¯   s    '
	c         C   s  t  i d j o d Sn t  i d d f j o) |  i | ƒ t  i d j o d SqW n t | ƒ } |  i } t  i	 o | o |  i
 t  i	 | ƒ nn t  i o | o |  i
 t  i | ƒ nF t | ƒ } d k } | i |  ƒ } | i | ƒ | i ƒ  | i ƒ  d S(   s;   Store postings in mbox and/or pipermail archive, depending.iÿÿÿÿNi   i   (   s   mm_cfgs   ARCHIVE_TO_MBOXs   selfs   _Archiver__archive_to_mboxs   msgs   strs   txts   archive_privates	   private_ps   PUBLIC_EXTERNAL_ARCHIVERs   ExternalArchives   PRIVATE_EXTERNAL_ARCHIVERs   StringIOs   fs	   HyperArchs   HyperArchives   hs   processUnixMailboxs   close(   s   selfs   msgs   fs   hs	   private_ps   txts	   HyperArch(    (    s)   /var/mailman/Mailman/Archiver/Archiver.pys   ArchiveMail¾   s&     		
c         C   s¡   t  i d j o d  Sn t i |  i ƒ  d t ƒ} |  i ƒ  } | d } | d } |  i o t | ƒ t | ƒ n) t | | ƒ t  i o t | | ƒ n d  S(   Niÿÿÿÿs   publics   .mbox(   s   mm_cfgs   ARCHIVE_TO_MBOXs   Sites   get_archpaths   selfs   internal_names   Trues   pubdirs   archive_dirs   privdirs   pubmboxs   privmboxs   archive_privates	   breaklinks   makelinks   PUBLIC_MBOX(   s   selfs   privmboxs   pubmboxs   pubdirs   privdir(    (    s)   /var/mailman/Mailman/Archiver/Archiver.pys   CheckHTMLArchiveDirÞ   s    




(   s   __name__s
   __module__s   InitVarss   archive_dirs   ArchiveFileNames   GetBaseArchiveURLs   _Archiver__archive_files   _Archiver__archive_to_mboxs   ExternalArchives   ArchiveMails   CheckHTMLArchiveDir(    (    (    s)   /var/mailman/Mailman/Archiver/Archiver.pys   Archiver>   s   	>							 (   s   __doc__s   oss   errnos	   tracebacks	   cStringIOs   StringIOs   Mailmans   mm_cfgs   Mailboxs   Utilss   Sites   Mailman.SafeDicts   SafeDicts   Mailman.Logging.Syslogs   syslogs   Mailman.i18ns   _s   Trues   Falses	   NameErrors   makelinks	   breaklinks   Archiver(   s   Trues   SafeDicts   Falses   StringIOs   errnos   Utilss	   tracebacks   Sites   Mailboxs   syslogs   mm_cfgs   Archivers   makelinks	   breaklinks   oss   _(    (    s)   /var/mailman/Mailman/Archiver/Archiver.pys   ?   s&   						