__copyright__ = "Copyright 2013"
__license__ = "LGPL-3"
-__version__ = "1.0"
+__version__ = "1.2"
from contextlib import contextmanager
import sys
import time
import socket
+import syslog
verbose = False
def log(conf, msg, id=None):
"""Write message to log file"""
+ # Prepend ID to msg
+ if id is not None:
+ msg = ("ID %s: " % id) + msg
+
+ if conf.getlogdir() == 'syslog':
+ syslog.syslog(msg)
+ return
+
fn = conf.getlogdir() + "/smailq.log"
with open(fn, 'a') as f:
fcntl.lockf(f, fcntl.LOCK_EX)
- # Prepend ID to msg
- if id is not None:
- msg = ("ID %s: " % id) + msg
+
# Prepend time to msg
msg = time.strftime("%Y-%m-%d %H:%M:%S: ", time.localtime()) + msg
OPTIONS:
-C, --config=FILE
- Use the given configuration file instead of "$HOME/.smailq.conf".
+ Use the given configuration file.
-q, --quiet
Do not print info messages.
if __name__ == "__main__":
- conffn = os.path.expanduser("~/.smailq.conf")
+ conffn_list = [os.path.expanduser("~/.smailq.conf"), "/etc/smailq.conf"]
cmd = "--list"
nooptargs = []
'--deliver']:
cmd = opt
elif opt in ['-C', '--config']:
- conffn = arg
+ conffn_list = [arg]
elif opt in ['-v', '--verbose']:
verbose = True
quiet = False
assert(False)
except getopt.GetoptError as e:
- printerr("Error parsing arguments:", e)
+ printerr("Error parsing arguments: " + str(e))
usage()
sys.exit(os.EX_USAGE)
# Reading config file
- if not os.path.isfile(conffn):
- printerr("No such config file:", conffn)
+ conffn = next((f for f in conffn_list if os.path.isfile(f)), None)
+ if conffn is None:
+ printerr("No config file found: " + str(conffn_list))
sys.exit(os.EX_IOERR)
conf = None
try:
printerr("Data directory does not exist: " + conf.getdatadir())
sys.exit(os.EX_IOERR)
- if not os.path.isdir(conf.getlogdir()):
- printerr("Log directory does not exist: " + conf.getlogdir())
- sys.exit(os.EX_IOERR)
+ if conf.getlogdir() == 'syslog':
+ syslog.openlog('smailq', 0, syslog.LOG_MAIL)
+ elif not os.path.isdir(conf.getlogdir()):
+ printinfo('Creating logdir: ' + conf.getlogdir())
+ os.mkdir(conf.getlogdir())
except Exception as e:
- printerr("Error reading config file:", e)
+ printerr("Error reading config file: " + str(e))
sys.exit(os.EX_IOERR)
try: