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")
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")
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
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")
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")
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
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")