You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1017 B
42 lines
1017 B
#!/usr/bin/env python
|
|
import os
|
|
from md5 import md5
|
|
os.umask(0027)
|
|
|
|
ARCHIVE_LIST = 'csc-industry'
|
|
ARCHIVE_MBOX = '/var/lib/mailman/archives/private/%s.mbox/%s.mbox' % (ARCHIVE_LIST, ARCHIVE_LIST)
|
|
ARCHIVE_PCK = '/tmp/%s-%s.pck' % (ARCHIVE_LIST, md5(os.path.abspath(__file__)).hexdigest())
|
|
|
|
try:
|
|
mbox_mtime = os.stat(ARCHIVE_MBOX).st_mtime
|
|
except:
|
|
print 'Content-Type: text/plain\r\n\r\nUnable to stat archive.'
|
|
exit()
|
|
|
|
try:
|
|
stat = os.stat(ARCHIVE_PCK)
|
|
pickle_mtime = stat.st_mtime
|
|
if stat.st_uid != os.getuid():
|
|
pickle_mtime = 0
|
|
except:
|
|
pickle_mtime = 0
|
|
|
|
import pickle, json
|
|
|
|
if pickle_mtime < mbox_mtime:
|
|
import mailbox
|
|
mbox = mailbox.UnixMailbox(open(ARCHIVE_MBOX, 'r'))
|
|
messages = []
|
|
for msg in mbox:
|
|
messages.append({
|
|
'subject': msg['subject'],
|
|
'date': msg['date'],
|
|
'from': msg['from']
|
|
})
|
|
pck = open(ARCHIVE_PCK, 'w')
|
|
pickle.dump(messages, pck)
|
|
else:
|
|
pck = open(ARCHIVE_PCK, 'r')
|
|
messages = pickle.load(pck)
|
|
|
|
print 'Content-Type: application/json\r\n\r\n' + json.dumps(messages[-3:])
|
|
|