diff options
| author | bwarsaw | 1999-09-04 03:16:02 +0000 |
|---|---|---|
| committer | bwarsaw | 1999-09-04 03:16:02 +0000 |
| commit | e2febc2b7abfbd1e8e62e5281f93db263feab828 (patch) | |
| tree | e7fd44e6e8796ad1bf7b54bec5f76c9483de01c2 | |
| parent | fedc38eecdfdcc64e67711660d418951df7cadf8 (diff) | |
| download | mailman-e2febc2b7abfbd1e8e62e5281f93db263feab828.tar.gz mailman-e2febc2b7abfbd1e8e62e5281f93db263feab828.tar.zst mailman-e2febc2b7abfbd1e8e62e5281f93db263feab828.zip | |
| -rw-r--r-- | Mailman/Archiver/Archiver.py | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/Mailman/Archiver/Archiver.py b/Mailman/Archiver/Archiver.py index 0ce8b0342..e580fad90 100644 --- a/Mailman/Archiver/Archiver.py +++ b/Mailman/Archiver/Archiver.py @@ -35,7 +35,7 @@ try: except ImportError: from StringIO import StringIO -from Mailman.Utils import reraise, mkdir +from Mailman.Utils import reraise, mkdir, SafeDict # # package/project modules @@ -182,6 +182,13 @@ class Archiver: # Resurrect original date setting. post.SetHeader('Date', olddate) + def ExternalArchive(self, ar, txt): + d = SafeDict({'listname': self.real_name}) + cmd = ar % d + extarch = os.popen(cmd, 'w') + extarch.write(txt) + extarch.close() + # # archiving in real time this is called from list.post(msg) # @@ -216,12 +223,20 @@ class Archiver: if line and line[:5] == 'From ': line = '>' + line txt = txt + "%s\n" % line - f = StringIO(txt) - import HyperArch - h = HyperArch.HyperArchive(self) - h.processUnixMailbox(f, HyperArch.Article) - h.close() - f.close() + # should we use the internal or external archiver? + private_p = self.archive_private + if mm_cfg.PUBLIC_EXTERNAL_ARCHIVER and not private_p: + self.ExternalArchive(mm_cfg.PUBLIC_EXTERNAL_ARCHIVER, txt) + elif mm_cfg.PRIVATE_EXTERNAL_ARCHIVER and private_p: + self.ExternalArchive(mm_cfg.PRIVATE_EXTERNAL_ARCHIVER, txt) + else: + # use the internal archiver + f = StringIO(txt) + import HyperArch + h = HyperArch.HyperArchive(self) + h.processUnixMailbox(f, HyperArch.Article) + h.close() + f.close() except: traceback.print_exc(file=sys.stderr) finally: |
