Exemple #1
0
class AllpluginTestCase(unittest.TestCase):
    """Tests that pass with a default config"""
    def setUp(self):
        config = RawConfigParser()
        config.read([CONFDIR + '/fuglu.conf.dist'])
        config.set('main', 'disablebounces', '1')
        guess_clamav_socket(config)

        self.mc = MainController(config)
        self.tempfiles = []

    def tearDown(self):
        for tempfile in self.tempfiles:
            os.remove(tempfile)

    def test_virus(self):
        """Test if eicar is detected as virus"""
        from fuglu.shared import Suspect
        import shutil

        self.mc.load_plugins()
        if len(self.mc.plugins) == 0:
            raise Exception("plugins not loaded")

        sesshandler = SessionHandler(None, self.mc.config, self.mc.prependers,
                                     self.mc.plugins, self.mc.appenders)
        tempfilename = tempfile.mktemp(suffix='virus',
                                       prefix='fuglu-unittest',
                                       dir='/tmp')
        shutil.copy(TESTDATADIR + '/eicar.eml', tempfilename)
        self.tempfiles.append(tempfilename)
        suspect = Suspect('*****@*****.**',
                          '*****@*****.**', tempfilename)
        pluglist = sesshandler.run_prependers(suspect)
        self.assertFalse(
            len(pluglist) == 0,
            "Viruscheck will fail, pluginlist empty after run_prependers")
        sesshandler.run_plugins(suspect, pluglist)
        self.assertTrue(suspect.is_virus(),
                        "Eicar message was not detected as virus")
Exemple #2
0
class AllpluginTestCase(unittest.TestCase):

    """Tests that pass with a default config"""

    def setUp(self):
        config = RawConfigParser()
        config.read([CONFDIR + '/fuglu.conf.dist'])
        config.set('main', 'disablebounces', '1')
        guess_clamav_socket(config)

        self.mc = MainController(config)
        self.tempfiles = []

    def tearDown(self):
        for tempfile in self.tempfiles:
            os.remove(tempfile)

    def test_virus(self):
        """Test if eicar is detected as virus"""
        from fuglu.shared import Suspect
        import shutil

        self.mc.load_plugins()
        if len(self.mc.plugins) == 0:
            raise Exception("plugins not loaded")

        sesshandler = SessionHandler(
            None, self.mc.config, self.mc.prependers, self.mc.plugins, self.mc.appenders)
        tempfilename = tempfile.mktemp(
            suffix='virus', prefix='fuglu-unittest', dir='/tmp')
        shutil.copy(TESTDATADIR + '/eicar.eml', tempfilename)
        self.tempfiles.append(tempfilename)
        suspect = Suspect(
            '*****@*****.**', '*****@*****.**', tempfilename)
        pluglist = sesshandler.run_prependers(suspect)
        self.assertFalse(
            len(pluglist) == 0, "Viruscheck will fail, pluginlist empty after run_prependers")
        sesshandler.run_plugins(suspect, pluglist)
        self.assertTrue(
            suspect.is_virus(), "Eicar message was not detected as virus")
Exemple #3
0
    def test_prepender(self):
        """Test prepender plugin raising exception"""
        config = RawConfigParser()

        # -------------#
        # config: main #
        # -------------#
        config.add_section("main")
        config.set('main', 'plugins', '')
        config.set('main', 'prependers',
                   'sessionhandler_test.RaiseExceptionPrepender')
        config.set('main', 'appenders', '')

        # ------------------- #
        # config: performance #
        # ------------------- #
        config.add_section("performance")
        # minimum scanner threads
        config.set('performance', 'minthreads', 1)
        # maximum scanner threads
        config.set('performance', 'maxthreads', 1)
        # Method for parallelism, either 'thread' or 'process'
        config.set('performance', 'backend', 'process')

        mc = MainController(config)
        mc.propagate_core_defaults()
        ok = mc.load_plugins()

        suspect = Suspect('*****@*****.**',
                          '*****@*****.**', '/dev/null')

        shandler = SessionHandler(None, config, mc.prependers, mc.plugins,
                                  mc.appenders, 0)
        pluglist, applist = shandler.run_prependers(suspect)

        shandler.run_plugins(suspect, pluglist)

        ptags = suspect.get_tag("processingerrors")
        self.assertEqual([
            'Prepender RaiseExceptionPrepender failed: Prepender Plugin not implemented'
        ], ptags)
Exemple #4
0
            prependers.append(plugin)
        elif isinstance(pluginstance, AppenderPlugin):
            appenders.append(plugin)
        else:
            print("%s doesn't seem to be a fuglu plugin - ignoring" % plugin)

    config.set('main', 'plugins', ','.join(scanners))
    config.set('main', 'appenders', ','.join(appenders))
    config.set('main', 'prependers', ','.join(prependers))

    # load plugin
    mc = MainController(config)
    mc.propagate_core_defaults()

    mc.load_extensions()
    ok = mc.load_plugins()
    if not ok:
        logging.error("Could not load plugin(s)")
        sys.exit(1)

    if opts.defaultconfig:
        sec = pluginstance.section

        print("Default config options for %s\n" % sec)
        try:
            for opt, val in config.items(sec):
                print("%s:%s" % (opt, val))
        except NoSectionError:
            print("Plugin does not provide default options")
        sys.exit(0)
Exemple #5
0
            prependers.append(plugin)
        elif isinstance(pluginstance, AppenderPlugin):
            appenders.append(plugin)
        else:
            print("%s doesn't seem to be a fuglu plugin - ignoring" % plugin)

    config.set('main', 'plugins', ','.join(scanners))
    config.set('main', 'appenders', ','.join(appenders))
    config.set('main', 'prependers', ','.join(prependers))

    # load plugin
    mc = MainController(config)
    mc.propagate_core_defaults()

    mc.load_extensions()
    ok = mc.load_plugins()
    if not ok:
        logging.error("Could not load plugin(s)")
        sys.exit(1)

    if opts.defaultconfig:
        sec = pluginstance.section

        print("Default config options for %s\n" % sec)
        try:
            for opt, val in config.items(sec):
                print("%s:%s" % (opt, val))
        except ConfigParser.NoSectionError:
            print("Plugin does not provide default options")
        sys.exit(0)