Implement and test PidFile option. Update TODO
This commit is contained in:
@@ -7,7 +7,7 @@ Domain implemented
|
|||||||
KeyFile implemented
|
KeyFile implemented
|
||||||
KeyFileEd25519
|
KeyFileEd25519
|
||||||
Mode implemented
|
Mode implemented
|
||||||
PidFile
|
PidFile implemented verified
|
||||||
Selector implemented
|
Selector implemented
|
||||||
Socket implemented verified
|
Socket implemented verified
|
||||||
Syslog implemented partly tested
|
Syslog implemented partly tested
|
||||||
@@ -17,6 +17,7 @@ UserID implemented verified
|
|||||||
0.9.5 (Beta)
|
0.9.5 (Beta)
|
||||||
dkimpy-milter.8
|
dkimpy-milter.8
|
||||||
dkimpy-milter.service
|
dkimpy-milter.service
|
||||||
|
remove PidFile on stop
|
||||||
AuthservID
|
AuthservID
|
||||||
Canonicalization
|
Canonicalization
|
||||||
Diagnostics
|
Diagnostics
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ from Milter.utils import iniplist,parse_addr,parseaddr
|
|||||||
import dkimpy_milter.config as config
|
import dkimpy_milter.config as config
|
||||||
from dkimpy_milter.util import drop_privileges
|
from dkimpy_milter.util import drop_privileges
|
||||||
from dkimpy_milter.util import setExceptHook
|
from dkimpy_milter.util import setExceptHook
|
||||||
|
from dkimpy_milter.util import write_pid
|
||||||
|
|
||||||
FWS = re.compile(r'\r?\n[ \t]+')
|
FWS = re.compile(r'\r?\n[ \t]+')
|
||||||
|
|
||||||
@@ -235,6 +236,7 @@ def main():
|
|||||||
if milterconfig.get('Syslog'):
|
if milterconfig.get('Syslog'):
|
||||||
syslog.openlog(os.path.basename(sys.argv[0]), syslog.LOG_PID, syslog.LOG_MAIL)
|
syslog.openlog(os.path.basename(sys.argv[0]), syslog.LOG_PID, syslog.LOG_MAIL)
|
||||||
setExceptHook()
|
setExceptHook()
|
||||||
|
write_pid(milterconfig)
|
||||||
drop_privileges(milterconfig)
|
drop_privileges(milterconfig)
|
||||||
Milter.factory = dkimMilter(milterconfig)
|
Milter.factory = dkimMilter(milterconfig)
|
||||||
Milter.set_flags(Milter.CHGHDRS + Milter.ADDHDRS)
|
Milter.set_flags(Milter.CHGHDRS + Milter.ADDHDRS)
|
||||||
|
|||||||
@@ -72,3 +72,23 @@ class ExceptHook:
|
|||||||
def setExceptHook():
|
def setExceptHook():
|
||||||
import sys
|
import sys
|
||||||
sys.excepthook = ExceptHook(useSyslog = 1, useStderr = 1)
|
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