Exemple #1
0
def scan_cancel(frontend_scanid):
    try:
        log.info("scanid %s", frontend_scanid)
        rmqvhost = config.get_frontend_rmqvhost()
        user_id = user_ctrl.get_userid(rmqvhost)
        scan_id = scan_ctrl.get_scan_id(frontend_scanid, user_id)
        (status, progress_details) = scan_ctrl.progress(scan_id)
        scan_ctrl.cancelling(scan_id)
        pending_jobs = scan_ctrl.get_pending_jobs(scan_id)
        cancel_details = None
        if len(pending_jobs) != 0:
            celery_probe.job_cancel(pending_jobs)
            cancel_details = {}
            cancel_details['total'] = progress_details['total']
            cancel_details['finished'] = progress_details['finished']
            cancel_details['cancelled'] = len(pending_jobs)
        scan_ctrl.cancelled(scan_id)
        scan_flush(frontend_scanid)
        res = {}
        res['status'] = status
        res['cancel_details'] = cancel_details
        return IrmaTaskReturn.success(res)
    except:
        log.info("exception", exc_info=True)
        return IrmaTaskReturn.error("cancel error on brain")
Exemple #2
0
def mimetype_filter_scan_request(scan_request_dict):
    try:
        with session_transaction() as session:
            available_probelist = probe_ctrl.get_list(session)
            scan_request = IrmaScanRequest(scan_request_dict)
            for filehash in scan_request.filehashes():
                filtered_probelist = []
                mimetype = scan_request.get_mimetype(filehash)
                mimetype_probelist = probe_ctrl.mimetype_probelist(mimetype,
                                                                   session)
                probe_list = scan_request.get_probelist(filehash)
                log.debug("filehash: %s probe_list: %s",
                          filehash, "-".join(probe_list))
                # first check probe_list for unknown probe
                for probe in probe_list:
                    # check if probe exists
                    if probe not in available_probelist:
                        log.warning("probe %s not available", probe)
                    if probe in mimetype_probelist:
                        # probe is asked and supported by mimetype
                        log.debug("filehash %s probe %s asked" +
                                  " and supported for %s append to request",
                                  filehash, probe, mimetype)
                        filtered_probelist.append(probe)
                # update probe list in scan request
                scan_request.set_probelist(filehash, filtered_probelist)
            return IrmaTaskReturn.success(scan_request.to_dict())
    except Exception as e:
        log.exception(e)
        return IrmaTaskReturn.error("Brain error")
Exemple #3
0
def mimetype_filter_scan_request(scan_request_dict):
    try:
        with session_transaction() as session:
            available_probelist = probe_ctrl.get_list(session)
            scan_request = IrmaScanRequest(scan_request_dict)
            for filehash in scan_request.filehashes():
                filtered_probelist = []
                mimetype = scan_request.get_mimetype(filehash)
                mimetype_probelist = probe_ctrl.mimetype_probelist(mimetype,
                                                                   session)
                probe_list = scan_request.get_probelist(filehash)
                log.debug("filehash: %s probe_list: %s",
                          filehash, "-".join(probe_list))
                # first check probe_list for unknown probe
                for probe in probe_list:
                    # check if probe exists
                    if probe not in available_probelist:
                        msg = "Unknown probe {0}".format(probe)
                        log.error(msg)
                        return IrmaTaskReturn.error(msg)
                    if probe in mimetype_probelist:
                        # probe is asked but not supported by mimetype
                        log.debug("filehash %s probe %s asked but" +
                                  " not supported for %s",
                                  filehash, probe, mimetype)
                        filtered_probelist.append(probe)
                # update probe list in scan request
                scan_request.set_probelist(filehash, filtered_probelist)
            return IrmaTaskReturn.success(scan_request.to_dict())
    except Exception as e:
        log.exception(e)
        raise
Exemple #4
0
def probe_list():
    try:
        with session_transaction() as session:
            probe_list = probe_ctrl.get_list(session)
            return IrmaTaskReturn.success(probe_list)
    except Exception as e:
        log.exception(e)
        return IrmaTaskReturn.error("Error getting probelist")
Exemple #5
0
def probe_list():
    try:
        with session_transaction() as session:
            probe_list = probe_ctrl.get_list(session)
            return IrmaTaskReturn.success(probe_list)
    except Exception as e:
        log.exception(e)
        return IrmaTaskReturn.error("Error getting probelist")
Exemple #6
0
def scan_cancel(frontend_scan_id):
    try:
        with session_transaction() as session:
            user = User.get_by_rmqvhost(session)
            scan = Scan.get_scan(frontend_scan_id, user.id, session)
            res = scan_ctrl.cancel(scan, session)
            return IrmaTaskReturn.success(res)
    except Exception as e:
        log.exception(e)
        return IrmaTaskReturn.error("cancel error on brain")
Exemple #7
0
def probe_list():
    try:
        probe_list = celery_probe.get_probelist()
        if len(probe_list) > 0:
            return IrmaTaskReturn.success(probe_list)
        else:
            return IrmaTaskReturn.error("no probe available")
    except:
        log.info("exception", exc_info=True)
        raise
Exemple #8
0
def scan_cancel(frontend_scan_id):
    try:
        with session_transaction() as session:
            user = User.get_by_rmqvhost(session)
            scan = Scan.get_scan(frontend_scan_id, user.id, session)
            res = scan_ctrl.cancel(scan, session)
            return IrmaTaskReturn.success(res)
    except Exception as e:
        log.exception(e)
        return IrmaTaskReturn.error("cancel error on brain")
Exemple #9
0
def scan_progress(frontend_scanid):
    try:
        log.info("scanid %s", frontend_scanid)
        rmqvhost = config.get_frontend_rmqvhost()
        user_id = user_ctrl.get_userid(rmqvhost)
        scan_id = scan_ctrl.get_scan_id(frontend_scanid, user_id)
        (status, progress_details) = scan_ctrl.progress(scan_id)
        res = {}
        res['status'] = status
        res['progress_details'] = progress_details
        return IrmaTaskReturn.success(res)
    except:
        log.info("exception", exc_info=True)
        return IrmaTaskReturn.error("progress error on brain")