예제 #1
0
    def setUp(self):
        config = RawConfigParser()
        config.add_section('main')
        config.add_section('virus')
        config.set('main', 'prependaddedheaders', 'X-Fuglu-')
        config.set('virus', 'defaultvirusaction', 'DELETE')
        config.add_section('SSSPPlugin')
        config.set('SSSPPlugin', 'host', '127.0.0.1')
        config.set('SSSPPlugin', 'port', '1344')
        config.set('SSSPPlugin', 'timeout', '5')
        config.set('SSSPPlugin', 'retries', '3')
        config.set('SSSPPlugin', 'maxsize', '22000000')
        config.set('SSSPPlugin', 'virusaction', 'DEFAULTVIRUSACTION')
        config.set('SSSPPlugin', 'problemaction', 'DEFER')
        config.set('SSSPPlugin', 'rejectmessage', '')

        self.candidate = SSSPPlugin(config)
예제 #2
0
    def test_answer(self, rops, exchgr, acc, rcvmsg, sgb):
        """Test parsing of sophos answer, especially removal of tmp-folder in name"""

        rops.return_value = {
            u'maxscandata': [u'0'],
            u'version': [u'SAV Dynamic Interface 2.6.0'],
            u'maxclassificationsize': [u'4096'],
            u'method': [
                u'QUERY SERVER', u'QUERY SAVI', u'QUERY ENGINE', u'OPTIONS',
                u'SCANDATA', u'SCANFILE', u'SCANDIR'
            ],
            u'maxmemorysize': [u'250000']
        }
        acc.return_value = True
        rcvmsg.return_value = \
          [b'EVENT FILE /tmp/savid_tmpgMEMBE', b'FILE /tmp/savid_tmpgMEMBE', b'TYPE D0',
           b'EVENT ARCHIVE /tmp/savid_tmpgMEMBE/AAAA0001', b'FILE /tmp/savid_tmpgMEMBE/AAAA0001',
           b'TYPE D0', b'EVENT ARCHIVE /tmp/savid_tmpgMEMBE/AAAA0001/AAAA0001',
           b'FILE /tmp/savid_tmpgMEMBE/AAAA0001/AAAA0001', b'TYPE 80',
           b'EVENT ARCHIVE /tmp/savid_tmpgMEMBE/AAAA0001/AAAA0002',
           b'FILE /tmp/savid_tmpgMEMBE/AAAA0001/AAAA0002', b'TYPE D9',
           b'EVENT ARCHIVE /tmp/savid_tmpgMEMBE/AAAAAAAAA%20AA%20AAAAAAAA.zip',
           b'FILE /tmp/savid_tmpgMEMBE/AAAAAAAAA%20AA%20AAAAAAAA.zip', b'TYPE 30',
           b'EVENT ARCHIVE /tmp/savid_tmpgMEMBE/AAAAAAAAA%20AA%20AAAAAAAA.zip/AAAAAAAAA%20AA%20AAAAAAAA.exe',
           b'FILE /tmp/savid_tmpgMEMBE/AAAAAAAAA%20AA%20AAAAAAAA.zip/AAAAAAAAA%20AA%20AAAAAAAA.exe',
           b'TYPE 60', b'TYPE 81', b'TYPE 53', b'TYPE 60', b'TYPE 81',
           b'EVENT VIRUS Mal/DummyFlu /tmp/savid_tmpgMEMBE/AAAAAAAAA%20AA%20AAAAAAAA.zip/AAAAAAAAA%20AA%20AAAAAAAA.exe',
           b'VIRUS Mal/DummyFlu /tmp/savid_tmpgMEMBE/AAAAAAAAA%20AA%20AAAAAAAA.zip/AAAAAAAAA%20AA%20AAAAAAAA.exe',
           b'OK 0203 /tmp/savid_tmpgMEMBE', b'DONE OK 0203 Virus found during virus scan']

        candidate = SSSPPlugin(self.config)
        candidate.__init_socket__ = MagicMock()
        candidate.__init_socket__.return_value = MagicMock()

        reply = candidate.scan_stream(b"dummy")
        # ideally we don't want the tmp-folder structure in the message
        # /tmp/savid_tmpgMEMBE should be removed by the regex sssp.tmpdirsyntax
        targetanswer = {
            u'AAAAAAAAA%20AA%20AAAAAAAA.zip/AAAAAAAAA%20AA%20AAAAAAAA.exe':
            u'Mal/DummyFlu'
        }
        self.assertEqual(targetanswer, reply)