Add GPL license headers
[people/stefanha/gpxebot.git] / utils.py
1 # Copyright (C) 2010 Stefan Hajnoczi <stefanha@gmail.com>.
2 #
3 # This program is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU General Public License as
5 # published by the Free Software Foundation; either version 2 of the
6 # License, or any later version.
7 #
8 # This program is distributed in the hope that it will be useful, but
9 # WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 # General Public License for more details.
12 #
13 # You should have received a copy of the GNU General Public License
14 # along with this program; if not, write to the Free Software
15 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
16
17 import smtplib
18 import tempfile
19 import time
20 import sys
21
22 import config
23
24 def dbg(msg):
25     if config.DEBUG:
26         sys.stderr.write(msg + '\n')
27
28 def email_log(to_address, subject, logfile, aliases):
29     email_addresses = []
30     unrecognized = []
31     for a in to_address.split(','):
32         if '@' in a:
33             email_addresses.append(a)
34         elif a in aliases:
35             email_addresses.append(aliases[a])
36         elif a:
37             unrecognized.append(a)
38     if email_addresses:
39         header = '''From: %(from_address)s
40 To: %(to_address)s
41 Subject: %(subject)s
42
43 ''' % {
44     'from_address': config.FROM_ADDRESS,
45     'to_address': ','.join(email_addresses),
46     'subject': subject,
47 }
48         msg = header + open(logfile).read()
49         s = smtplib.SMTP(config.MTA)
50         s.sendmail(config.FROM_ADDRESS, email_addresses, msg)
51     return unrecognized
52
53 def get_time():
54     return '%s-%02d-%02d %02d:%02d' % time.gmtime()[:5]
55
56 def make_log(channel):
57     (year, month, day, hour, minute) = time.gmtime()[:5]
58     return tempfile.mkstemp(
59             suffix='.log',
60             prefix='%s-%s%02d%02d.%02d%02d-' % (channel, year, month, day, hour, minute),
61             dir=config.LOG_DIR)[1]
62
63 def do_log(logs, target, nick, msg):
64     if target in logs:
65         log = logs[target]
66         log['fileobj'].write('%s <%s> %s\n' % (get_time(), nick, msg))