def test_getnames(self): names = [] self.sawpif = False def do_part(m): n = m.getnames() a = names a += n return Milter.CONTINUE def chk_part(m): for k, n in m.getnames(): if n and n.lower().endswith('.pif'): self.sawpif = True s = m.get_submsg() print(m.get_content_type(), type(s), 'modified:', m.ismodified()) if isinstance(s, email.message.Message): return mime.check_attachments(s, chk_part) return Milter.CONTINUE with self.zf.open('virus7', 'r') as fp: msg = mime.message_from_file(fp) self.assertTrue(msg.ismultipart()) mime.check_attachments(msg, do_part) self.assertTrue(('filename', 'application.pif') in names) self.assertFalse(self.sawpif) mime.check_attachments(msg, chk_part) self.assertTrue(self.sawpif)
def testCheckAttach(self,fname="test1"): # test1 contains a very long filename msg = mime.message_from_file(open('test/'+fname,'r')) mime.defang(msg,scan_zip=True) self.failIf(msg.ismodified()) msg = mime.message_from_file(open('test/test2','r')) rc = mime.check_attachments(msg,self._chk_attach) self.assertEquals(self.filename,"7501'S FOR TWO GOLDEN SOURCES SHIPMENTS FOR TAX & DUTY PURPOSES ONLY.PDF") self.assertEquals(rc,Milter.CONTINUE)
def chk_part(m): for k, n in m.getnames(): if n and n.lower().endswith('.pif'): self.sawpif = True s = m.get_submsg() print(m.get_content_type(), type(s), 'modified:', m.ismodified()) if isinstance(s, email.message.Message): return mime.check_attachments(s, chk_part) return Milter.CONTINUE
def _chk_attach(self, msg): "Filter attachments by content." # check for bad extensions mime.check_name(msg, ckname=self._chk_name, scan_zip=True) # remove scripts from HTML mime.check_html(msg) # don't let a tricky virus slip one past us msg = msg.get_submsg() if isinstance(msg, email.Message.Message): return mime.check_attachments(msg, self._chk_attach) return Milter.CONTINUE
def _chk_attach(self,msg): "Filter attachments by content." # check for bad extensions mime.check_name(msg,ckname=self._chk_name,scan_zip=True) # remove scripts from HTML mime.check_html(msg) # don't let a tricky virus slip one past us msg = msg.get_submsg() if isinstance(msg,email.Message.Message): return mime.check_attachments(msg,self._chk_attach) return Milter.CONTINUE
def testCheckAttach(self, fname="test1"): # test1 contains a very long filename msg = mime.message_from_file(open('test/' + fname, 'r')) mime.defang(msg, scan_zip=True) self.failIf(msg.ismodified()) msg = mime.message_from_file(open('test/test2', 'r')) rc = mime.check_attachments(msg, self._chk_attach) self.assertEquals( self.filename, "7501'S FOR TWO GOLDEN SOURCES SHIPMENTS FOR TAX & DUTY PURPOSES ONLY.PDF" ) self.assertEquals(rc, Milter.CONTINUE)