userdir-ldap (0.3.XXX) UNRELEASED; urgency=low
- *
+ * some ud-echelon fixes,
+ * userdir_gpg.py: GetClearSig: add lax_multipart to deal
+ with random multipart mails.
- -- Peter Palfrader <weasel@debian.org> Sat, 21 May 2011 14:57:05 +0200
+ -- Peter Palfrader <weasel@debian.org> Sat, 21 May 2011 15:12:23 +0200
userdir-ldap (0.3.79) unstable; urgency=low
def TryGPG(email):
# Try to get a pgp text
try:
- Msg = GetClearSig(email);
+ Msg = GetClearSig(email, lax_multipart=True);
except:
# Log an exception.. but continue. This is to deal with 'sort of'
# PGP-MIME things
User = TryMatcher(email);
# Get any mailing list information
- if 'X-Mailing-List' in email:
- List = email['X-Mailing-List']
- else:
- List = "-";
+ List = email['X-Mailing-List']
+ if not List: List = "-";
# Tada, write a log message
if User != None:
else:
print Rec;
else:
- User = ("-","UKN",email("From"));
+ User = ("-","UKN",email["From"]);
Msg = "[%s] \"%s\" \"%s\" \"%s\""%(Now,User[2],List,MsgID);
MainLog.write("%s %s %s\n"%(User[0],User[1],Msg));
#
# Paranoid will check the message text to make sure that all the plaintext is
# in fact signed (bounded by a PGP packet)
-def GetClearSig(Msg,Paranoid = 0):
+#
+# lax_multipart: treat multipart bodies other than multipart/signed
+# as one big plain text body
+def GetClearSig(Msg, Paranoid = 0, lax_multipart = False):
if not Msg.__class__ == email.message.Message:
raise RuntimeError, "GetClearSign() not called with a email.message.Message"
+ if Paranoid and lax_multipart:
+ raise RuntimeError, "Paranoid and lax_multipart don't mix well"
+
# See if this is a MIME encoded multipart signed message
if Msg.is_multipart():
if not Msg.get_content_type() == "multipart/signed":
+ if lax_multipart:
+ payloads = Msg.get_payload()
+ msg = "\n".join(map( lambda p: p.get_payload(decode=True), payloads))
+ return (msg, 0)
raise UDFormatError, "Cannot handle multipart messages not of type multipart/signed";
if Paranoid: