Ejemplo n.º 1
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")
Ejemplo n.º 2
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))
Ejemplo n.º 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("'", '"'))
Ejemplo n.º 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("'", '"'))
Ejemplo n.º 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'
Ejemplo n.º 6
0
 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()
Ejemplo n.º 7
0
def deploy_reputation_list(probe_name):
    job = Job.create_job('deploy_reputation_list', probe_name)
    probe = Probe.get_by_name(probe_name)
    if probe is None:
        return {
            "message":
            "Error - probe is None - param id not set : " + str(probe_name)
        }
    my_class = getattr(importlib.import_module(probe.type.lower() + ".models"),
                       probe.type)
    probe = my_class.get_by_name(probe_name)
    try:
        response_cat = CategoryReputation.deploy(probe)
        response_ip = IPReputation.deploy(probe)
        if response_cat['status'] and response_ip['status']:
            job.update_job(
                str(response_cat) + " - " + str(response_ip), 'Completed')
            logger.info("task - deploy_reputation_list : " + str(probe_name) +
                        " - " + str(response_cat) + " - " + str(response_ip))
        else:
            logger.error(str(response_cat) + " - " + str(response_ip))
            job.update_job(
                str(response_cat) + " - " + str(response_ip), 'Error')
            send_notification(
                "Error during deploy reputation list for " + str(probe.name),
                str(response_cat) + " - " + str(response_ip))
            return {
                "message": "Error for probe " + str(probe.name) +
                " to deploy reputation list",
                "exception": str(response_cat) + " - " + str(response_ip)
            }
    except Exception as e:  # pragma: no cover
        logger.exception(str(e))
        job.update_job(repr_instance.repr(e), 'Error')
        send_notification(
            "Error during deploy reputation list for " + str(probe.name),
            str(e))
        return {
            "message": "Error for probe " + str(probe.name) +
            " to deploy reputation list",
            "exception": str(e)
        }
    return {
        "message":
        "Probe " + str(probe.name) + " deployed successfully reputation list"
    }
Ejemplo n.º 8
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'
Ejemplo n.º 9
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})