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 4c5270e40..cc6e65017 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 ### ########################### @@ -356,6 +359,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) @@ -383,6 +388,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