From 653f1ab6b97c74cd53d64b1ff40a256237dcae81 Mon Sep 17 00:00:00 2001 From: Leo Hemsted Date: Mon, 25 Feb 2019 14:26:47 +0000 Subject: [PATCH] stub out antivirus in dev antivirus is sometimes tough to get running locally - now in dev antivirus is skipped unless `ANTIVIRUS_ENABLED=1` is set on the command line. on all other environments it is always enabled. --- app/celery/letters_pdf_tasks.py | 35 +++++++++++++++------- app/config.py | 7 +++++ app/v2/notifications/post_notifications.py | 19 ++++++++---- 3 files changed, 45 insertions(+), 16 deletions(-) diff --git a/app/celery/letters_pdf_tasks.py b/app/celery/letters_pdf_tasks.py index 469fbfd6d..9149b72cc 100644 --- a/app/celery/letters_pdf_tasks.py +++ b/app/celery/letters_pdf_tasks.py @@ -347,11 +347,19 @@ def replay_letters_in_error(filename=None): move_error_pdf_to_scan_bucket(filename) # call task to add the filename to anti virus queue current_app.logger.info("Calling scan_file for: {}".format(filename)) - notify_celery.send_task( - name=TaskNames.SCAN_FILE, - kwargs={'filename': filename}, - queue=QueueNames.ANTIVIRUS, - ) + + if current_app.config['ANTIVIRUS_ENABLED']: + notify_celery.send_task( + name=TaskNames.SCAN_FILE, + kwargs={'filename': filename}, + queue=QueueNames.ANTIVIRUS, + ) + else: + # stub out antivirus in dev + process_virus_scan_passed.apply_async( + kwargs={'filename': filename}, + queue=QueueNames.LETTERS, + ) else: error_files = get_file_names_from_error_bucket() for item in error_files: @@ -359,8 +367,15 @@ def replay_letters_in_error(filename=None): current_app.logger.info("Calling scan_file for: {}".format(moved_file_name)) move_error_pdf_to_scan_bucket(moved_file_name) # call task to add the filename to anti virus queue - notify_celery.send_task( - name=TaskNames.SCAN_FILE, - kwargs={'filename': moved_file_name}, - queue=QueueNames.ANTIVIRUS, - ) + if current_app.config['ANTIVIRUS_ENABLED']: + notify_celery.send_task( + name=TaskNames.SCAN_FILE, + kwargs={'filename': moved_file_name}, + queue=QueueNames.ANTIVIRUS, + ) + else: + # stub out antivirus in dev + process_virus_scan_passed.apply_async( + kwargs={'filename': moved_file_name}, + queue=QueueNames.LETTERS, + ) diff --git a/app/config.py b/app/config.py index 7ce5cfb0f..fdc03dbf7 100644 --- a/app/config.py +++ b/app/config.py @@ -108,6 +108,9 @@ class Config(object): CRONITOR_ENABLED = False CRONITOR_KEYS = json.loads(os.environ.get('CRONITOR_KEYS', '{}')) + # Antivirus + ANTIVIRUS_ENABLED = True + ########################### # Default config values ### ########################### @@ -354,6 +357,8 @@ class Development(Config): STATSD_PORT = 1000 STATSD_PREFIX = "stats-prefix" + ANTIVIRUS_ENABLED = os.getenv('ANTIVIRUS_ENABLED') == '1' + for queue in QueueNames.all_queues(): Config.CELERY_QUEUES.append( Queue(queue, Exchange('default'), routing_key=queue) @@ -381,6 +386,8 @@ class Test(Development): BROKER_URL = 'you-forgot-to-mock-celery-in-your-tests://' + ANTIVIRUS_ENABLED = True + for queue in QueueNames.all_queues(): Config.CELERY_QUEUES.append( Queue(queue, Exchange('default'), routing_key=queue) diff --git a/app/v2/notifications/post_notifications.py b/app/v2/notifications/post_notifications.py index c15ac4ba9..cbdc1011e 100644 --- a/app/v2/notifications/post_notifications.py +++ b/app/v2/notifications/post_notifications.py @@ -6,7 +6,7 @@ from flask import request, jsonify, current_app, abort from notifications_utils.recipients import try_validate_and_format_phone_number from app import api_user, authenticated_service, notify_celery, document_download_client -from app.celery.letters_pdf_tasks import create_letters_pdf +from app.celery.letters_pdf_tasks import create_letters_pdf, process_virus_scan_passed from app.celery.research_mode_tasks import create_fake_letter_response_file from app.clients.document_download import DocumentDownloadError from app.config import QueueNames, TaskNames @@ -306,11 +306,18 @@ def process_precompiled_letter_notifications(*, letter_data, api_key, template, current_app.logger.info('Calling task scan-file for {}'.format(filename)) # call task to add the filename to anti virus queue - notify_celery.send_task( - name=TaskNames.SCAN_FILE, - kwargs={'filename': filename}, - queue=QueueNames.ANTIVIRUS, - ) + if current_app.config['ANTIVIRUS_ENABLED']: + notify_celery.send_task( + name=TaskNames.SCAN_FILE, + kwargs={'filename': filename}, + queue=QueueNames.ANTIVIRUS, + ) + else: + # stub out antivirus in dev + process_virus_scan_passed.apply_async( + kwargs={'filename': filename}, + queue=QueueNames.LETTERS, + ) return notification