Milter.utils.parse_header returns string, other py3 fixes

This commit is contained in:
Stuart D. Gathman
2020-06-25 19:47:38 -04:00
parent 7ea839cfb1
commit f37090371b
5 changed files with 15 additions and 8 deletions
+4 -2
View File
@@ -34,7 +34,8 @@ class MilterConfigParser(ConfigParser):
if q.startswith('file:'):
domain = q[5:].lower()
fname = os.path.join(dir,domain)
d[domain] = d.setdefault(domain,[]) + open(fname,'r').read().split()
with open(fname,'r') as fp:
d[domain] = d.setdefault(domain,[]) + fp.read().split()
else:
user,domain = q.split('@')
d.setdefault(domain.lower(),[]).append(user)
@@ -52,7 +53,8 @@ class MilterConfigParser(ConfigParser):
addr = addr.strip()
if addr.startswith('file:'):
fname = os.path.join(dir,addr[5:])
for a in open(fname,'r').read().split():
with open(fname,'r') as fp:
for a in fp.read().split():
d[a] = q
else:
d[addr] = q
+1 -1
View File
@@ -64,7 +64,7 @@ class TestBase(object):
def getsymval(self,name):
stage = self._stage
if stage >= 0:
if stage is not None and stage >= 0:
syms = self._symlist[stage]
if syms is not None and name not in syms:
return None
+2 -1
View File
@@ -216,7 +216,8 @@ def parse_header(val):
u.append(s.decode())
else:
u.append(s.decode())
u = u''.join(u)
u = ''.join(u)
if type(u) is str: return u
for enc in ('us-ascii','iso-8859-1','utf-8'):
try:
return u.encode(enc)
+3 -2
View File
@@ -108,10 +108,11 @@ import email
from email.message import Message
try:
from email.generator import BytesGenerator
from email import message_from_binary_file
from email import message_from_binary_file, encoders
except:
from email.generator import Generator as BytesGenerator
from email import message_from_file as message_from_binary_file
from email import Encoders as encoders
from email.utils import quote
if not getattr(Message,'as_bytes',None):
@@ -534,7 +535,7 @@ def check_html(msg,savname=None):
if htmlfilter.modified:
msg.set_payload(out) # remove embedded scripts
del msg["content-transfer-encoding"]
email.Encoders.encode_quopri(msg)
encoders.encode_quopri(msg)
return Milter.CONTINUE
if __name__ == '__main__':
+4 -1
View File
@@ -43,7 +43,10 @@ class AddrCacheTestCase(unittest.TestCase):
def testParseHeader(self):
s='=?UTF-8?B?TGFzdCBGZXcgQ29sZHBsYXkgQWxidW0gQXJ0d29ya3MgQXZhaWxhYmxlAA?='
h = Milter.utils.parse_header(s)
self.assertEqual(h,b'Last Few Coldplay Album Artworks Available\x00')
self.assertEqual(h,'Last Few Coldplay Album Artworks Available\x00')
s='=?iso-8859-1?Q?Peter_=D8rum?= <orum@ditas.dk>'
h = Milter.utils.parse_header(s)
self.assertEqual(h,'Peter \xd8rum <orum@ditas.dk>')
@unittest.expectedFailure
def testParseAddress(self):