Continue moving towards a working system:
- Move exception hook from config into util - Make config data conversion work for all used types - Make syslog work (still need to make it only work if specified)
This commit is contained in:
@@ -22,6 +22,7 @@
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA."""
|
||||
|
||||
import sys
|
||||
import syslog
|
||||
import Milter
|
||||
import dkim
|
||||
from dkim.dnsplug import get_txt
|
||||
@@ -37,38 +38,11 @@ from Milter.config import MilterConfigParser
|
||||
from Milter.utils import iniplist,parse_addr,parseaddr
|
||||
import dkimpy_milter.config as config
|
||||
from dkimpy_milter.util import drop_privileges
|
||||
|
||||
def read_config(list):
|
||||
"Return new config object."
|
||||
for fn in list:
|
||||
if os.access(fn,os.R_OK):
|
||||
logging.config.fileConfig(fn)
|
||||
break
|
||||
cp = MilterConfigParser()
|
||||
cp.read(list)
|
||||
if cp.has_option('milter','datadir'):
|
||||
os.chdir(cp.get('milter','datadir'))
|
||||
conf = Config()
|
||||
conf.log = logging.getLogger('dkim-milter')
|
||||
conf.log.info('logging started')
|
||||
conf.socketname = cp.getdefault('milter','socketname', '/tmp/dkimmiltersock')
|
||||
conf.miltername = cp.getdefault('milter','name','pydkimfilter')
|
||||
conf.internal_connect = cp.getlist('milter','internal_connect')
|
||||
# DKIM section
|
||||
if cp.has_option('dkim','privkey'):
|
||||
conf.keyfile = cp.getdefault('dkim','privkey')
|
||||
conf.selector = cp.getdefault('dkim','selector','default')
|
||||
conf.domain = cp.getdefault('dkim','domain')
|
||||
conf.reject = cp.getdefault('dkim','reject')
|
||||
if conf.keyfile and conf.domain:
|
||||
try:
|
||||
with open(conf.keyfile,'r') as kf:
|
||||
conf.key = kf.read()
|
||||
except:
|
||||
conf.log.error('Unable to read: %s',conf.keyfile)
|
||||
return conf
|
||||
from dkimpy_milter.util import setExceptHook
|
||||
|
||||
FWS = re.compile(r'\r?\n[ \t]+')
|
||||
syslog.openlog(os.path.basename(sys.argv[0]), syslog.LOG_PID, syslog.LOG_MAIL)
|
||||
setExceptHook()
|
||||
|
||||
class dkimMilter(Milter.Base):
|
||||
"Milter to check and sign DKIM. Each connection gets its own instance."
|
||||
@@ -272,8 +246,9 @@ def main():
|
||||
print('usage: dkimpy-milter [<configfilename>]')
|
||||
sys.exit(1)
|
||||
configFile = sys.argv[1]
|
||||
print('configfile', configFile)
|
||||
milterconfig = config._processConfigFile(filename = configFile)
|
||||
|
||||
print('Socket', milterconfig.get('Socket'))
|
||||
drop_privileges(milterconfig)
|
||||
Milter.factory = dkimMilter(milterconfig)
|
||||
Milter.set_flags(Milter.CHGHDRS + Milter.ADDHDRS)
|
||||
|
||||
Reference in New Issue
Block a user