summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbwarsaw1999-09-04 03:16:02 +0000
committerbwarsaw1999-09-04 03:16:02 +0000
commite2febc2b7abfbd1e8e62e5281f93db263feab828 (patch)
treee7fd44e6e8796ad1bf7b54bec5f76c9483de01c2
parentfedc38eecdfdcc64e67711660d418951df7cadf8 (diff)
downloadmailman-e2febc2b7abfbd1e8e62e5281f93db263feab828.tar.gz
mailman-e2febc2b7abfbd1e8e62e5281f93db263feab828.tar.zst
mailman-e2febc2b7abfbd1e8e62e5281f93db263feab828.zip
-rw-r--r--Mailman/Archiver/Archiver.py29
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: