26 lines
990 B
Python
26 lines
990 B
Python
from django.core.management.base import BaseCommand, CommandError
|
|
from logtracker.data.models import Entry, Mail, Sender
|
|
from logtracker.collectors import parse
|
|
from logtracker.utils import lock
|
|
|
|
|
|
class Command(BaseCommand):
|
|
help = 'Collect entries from exim4 log'
|
|
|
|
def add_arguments(self, parser):
|
|
parser.add_argument('-l', '--logfile', default='/var/log/exim4/mainlog')
|
|
parser.add_argument('--lockfile', default='/var/lock/mainlog.lock')
|
|
|
|
def handle(self, logfile, *args, **options):
|
|
with lock(options.get('lockfile')):
|
|
new_mails = []
|
|
for stamp, identifier, action, data in parse(logfile):
|
|
mail, created = Mail.objects.get_or_create(identifier=identifier)
|
|
entry = Entry(mail=mail, action=action, data=data, stamp=stamp)
|
|
entry.save()
|
|
if created:
|
|
new_mails.append(mail)
|
|
|
|
for mail in new_mails:
|
|
mail.handle_exim_data()
|