Example #1
0
    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)
Example #2
0
 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)
Example #3
0
 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
Example #4
0
 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
Example #5
0
 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
Example #6
0
 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)