Implement and test PidFile option. Update TODO
This commit is contained in:
@@ -7,7 +7,7 @@ Domain implemented
|
||||
KeyFile implemented
|
||||
KeyFileEd25519
|
||||
Mode implemented
|
||||
PidFile
|
||||
PidFile implemented verified
|
||||
Selector implemented
|
||||
Socket implemented verified
|
||||
Syslog implemented partly tested
|
||||
@@ -17,6 +17,7 @@ UserID implemented verified
|
||||
0.9.5 (Beta)
|
||||
dkimpy-milter.8
|
||||
dkimpy-milter.service
|
||||
remove PidFile on stop
|
||||
AuthservID
|
||||
Canonicalization
|
||||
Diagnostics
|
||||
|
||||
@@ -37,6 +37,7 @@ from Milter.utils import iniplist,parse_addr,parseaddr
|
||||
import dkimpy_milter.config as config
|
||||
from dkimpy_milter.util import drop_privileges
|
||||
from dkimpy_milter.util import setExceptHook
|
||||
from dkimpy_milter.util import write_pid
|
||||
|
||||
FWS = re.compile(r'\r?\n[ \t]+')
|
||||
|
||||
@@ -235,6 +236,7 @@ def main():
|
||||
if milterconfig.get('Syslog'):
|
||||
syslog.openlog(os.path.basename(sys.argv[0]), syslog.LOG_PID, syslog.LOG_MAIL)
|
||||
setExceptHook()
|
||||
write_pid(milterconfig)
|
||||
drop_privileges(milterconfig)
|
||||
Milter.factory = dkimMilter(milterconfig)
|
||||
Milter.set_flags(Milter.CHGHDRS + Milter.ADDHDRS)
|
||||
|
||||
@@ -72,3 +72,23 @@ class ExceptHook:
|
||||
def setExceptHook():
|
||||
import sys
|
||||
sys.excepthook = ExceptHook(useSyslog = 1, useStderr = 1)
|
||||
|
||||
####################
|
||||
def write_pid(milterconfig):
|
||||
"""Write PID in pidfile. Will not overwrite an existing file."""
|
||||
import os
|
||||
import syslog
|
||||
if not os.path.isfile(milterconfig.get('PidFile')):
|
||||
pid = str(os.getpid())
|
||||
try:
|
||||
f = open(milterconfig.get('PidFile'), 'w')
|
||||
except IOError as e:
|
||||
if milterconfig.get('Syslog'):
|
||||
syslog.syslog('Unable to write pidfle {0}. IOError: {1}'.format(milterconfig.get('PidFile'), e))
|
||||
raise
|
||||
f.write(pid)
|
||||
f.close()
|
||||
else:
|
||||
if milterconfig.get('Syslog'):
|
||||
syslog.syslog('Unable to write pidfle {0}. File exists.'.format(milterconfig.get('PidFile')))
|
||||
raise RuntimeError('Unable to write pidfle {0}. File exists.'.format(milterconfig.get('PidFile')))
|
||||
Reference in New Issue
Block a user