Example #1
0
 def test_create_check_task(self):
     create_check_task(Probe.get_by_id(1))
     periodic_task = PeriodicTask.objects.get(name=Probe.get_by_id(1).name +
                                              '_check_task')
     self.assertEqual(periodic_task.task, 'core.tasks.check_probe')
     self.assertEqual(periodic_task.args,
                      str([
                          Probe.get_by_id(1).name,
                      ]).replace("'", '"'))
     self.assertEqual(periodic_task.crontab,
                      CrontabSchedule.objects.get(id=4))
     probe = Probe.objects.create(
         name="probe2",
         description="test",
         created_date="2017-09-23T21:00:53.094Z",
         secure_deployment=True,
         scheduled_check_enabled=True,
         scheduled_check_crontab=CrontabSchedule.objects.get(id=2),
         scheduled_rules_deployment_enabled=True,
         scheduled_rules_deployment_crontab=CrontabSchedule.objects.get(
             id=2),
         server=Server.get_by_id(1),
         installed=True)
     create_check_task(probe)
     periodic_task = PeriodicTask.objects.get(name='probe2_check_task')
     self.assertEqual(periodic_task.task, 'core.tasks.check_probe')
     self.assertEqual(periodic_task.args,
                      str([
                          Probe.get_by_id(2).name,
                      ]).replace("'", '"'))
     self.assertEqual(periodic_task.crontab,
                      CrontabSchedule.objects.get(id=2))
Example #2
0
 def test_probe(self):
     all_probe = Probe.get_all()
     probe = Probe.get_by_id(1)
     self.assertEqual(Probe.get_by_name("probe1"), Probe.get_by_id(1))
     self.assertEqual(len(all_probe), 1)
     self.assertEqual(probe.name, "probe1")
     self.assertEqual(str(probe), "probe1")
     self.assertEqual(probe.description, "test")
     self.assertIn('Failed to get the uptime on the host :', probe.uptime())
     self.assertFalse(probe.start()['status'])
     self.assertFalse(probe.restart()['status'])
     self.assertFalse(probe.stop()['status'])
     self.assertFalse(probe.reload()['status'])
     self.assertEqual('Failed to get status', probe.status())
     probe.installed = False
     self.assertEqual('Not installed', probe.uptime())
     probe = Probe.get_by_id(99)
     self.assertEqual(probe, None)
     with self.assertRaises(AttributeError):
         probe.name
     probe = Probe.get_by_name("probe99")
     self.assertEqual(probe, None)
     with self.assertRaises(AttributeError):
         probe.name
     with self.assertLogs('core.models', level='DEBUG'):
         Probe.get_by_id(99)
     with self.assertLogs('core.models', level='DEBUG'):
         Probe.get_by_name('probe99')
     with self.assertRaises(IntegrityError):
         Probe.objects.create(name="suricata1")
Example #3
0
 def test_create_reload_task(self):
     create_reload_task(Probe.get_by_id(1))
     periodic_task = PeriodicTask.objects.get(name=Probe.get_by_id(1).name +
                                              '_reload_task')
     self.assertEqual(periodic_task.task, 'core.tasks.reload_probe')
     self.assertEqual(periodic_task.args,
                      str([
                          Probe.get_by_id(1).name,
                      ]).replace("'", '"'))
Example #4
0
 def test_create_deploy_rules_task_with_schedule(self):
     probe = Probe.get_by_id(1)
     schedule = CrontabSchedule.objects.get(id=1)
     source = Source.objects.get(id=1)
     create_deploy_rules_task(probe, schedule, source)
     periodic_task = PeriodicTask.objects.get(
         name=probe.name + '_' + source.uri + '_deploy_rules_' +
         str(schedule))
     self.assertEqual(periodic_task.task, 'core.tasks.deploy_rules')
     self.assertEqual(periodic_task.args,
                      str([
                          probe.name,
                      ]).replace("'", '"'))
Example #5
0
def status_cve(probe_id):
    probe = Probe.get_by_id(probe_id)
    if probe is None:  # pragma: no cover
        return {
            "message":
            "Error - probe is None - param id not set : " + str(probe_id)
        }
    my_class = getattr(importlib.import_module(probe.type.lower() + ".models"),
                       probe.type)
    probe = my_class.get_by_id(probe_id)
    if probe.vulnerability_found:
        return 'danger'
    else:
        return 'success'
 def test_software(self):
     all_software = Software.get_all()
     software = Software.get_by_id(1)
     self.assertEqual(len(all_software), 9)
     self.assertEqual(software.name, "dovecot-imapd")
     self.assertEqual(str(software), "dovecot-imapd - debian - apt")
     self.assertEqual(software.get_version(Probe.get_by_id(1)), "OK")
     software_brew = Software.objects.create(name='test',
                                             os=OsSupported.get_by_id(1),
                                             cpe='postfix:postfix',
                                             instaled_by='brew')
     self.assertEqual(software_brew.get_version(Checkcve.get_by_id(1)),
                      'OK')  # ????
     software_brew.delete()
Example #7
0
def status(probe_id):
    probe = Probe.get_by_id(probe_id)
    if probe is None:  # pragma: no cover
        return {
            "message":
            "Error - probe is None - param id not set : " + str(probe_id)
        }
    if probe.subtype:
        my_class = getattr(
            importlib.import_module(probe.type.lower() + ".models"),
            probe.subtype)
    else:
        my_class = getattr(
            importlib.import_module(probe.type.lower() + ".models"),
            probe.type)
    probe = my_class.get_by_id(probe_id)
    response = probe.status()
    if 'running' in response:
        return 'success'
    else:
        return 'danger'
Example #8
0
def check_cve(request, pk):
    """
    Check CVE for an instance.
    """
    probe = Probe.get_by_id(pk)
    my_class = getattr(importlib.import_module(probe.type.lower() + ".models"),
                       probe.type)
    probe = my_class.get_by_id(pk)
    if probe is None:  # pragma: no cover
        return HttpResponseNotFound
    else:
        try:
            task_cve.delay(probe.name)
            messages.add_message(
                request, messages.SUCCESS,
                mark_safe("Check CVE launched with succeed. " +
                          "<a href='/admin/core/job/'>View Job</a>"))
        except Exception as e:  # pragma: no cover
            logger.exception('Check CVE failed ! ' + str(e))
            messages.add_message(request, messages.ERROR,
                                 "Check CVE failed ! " + str(e))
    return render(request,
                  probe.type.lower() + '/index.html', {'probe': probe})