parent
ab539d4c74
commit
2baff0f469
@ -0,0 +1,4 @@ |
||||
AddHandler cgi-script .cgi |
||||
Options +Indexes +ExecCGI |
||||
RewriteEngine On |
||||
RewriteRule ^$ /mailman/listinfo/csc-industry [R] |
@ -0,0 +1,3 @@ |
||||
FILES = .htaccess archives.cgi
|
||||
RELDIR = industry/
|
||||
include ../common.mk |
@ -0,0 +1,42 @@ |
||||
#!/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:]) |
Loading…
Reference in new issue