text: # Upside Travel, Inc.
  #
  # Licensed under the Apache License, Version 2.0 (the "License");
  # you may not use this file except in compliance with the License.
  # You may obtain a copy of the License at
  #
  # http://www.apache.org/licenses/LICENSE-2.0
  #
  # Unless required by applicable law or agreed to in writing, software
  # distributed under the License is distributed on an "AS IS" BASIS,
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  # See the License for the specific language governing permissions and
  # limitations under the License.
  
  import boto3
  import errno
  import os
  
  AV_DEFINITION_S3_BUCKET = os.getenv("AV_DEFINITION_S3_BUCKET")
  AV_DEFINITION_S3_PREFIX = os.getenv("AV_DEFINITION_S3_PREFIX", "clamav_defs")
  AV_DEFINITION_PATH = os.getenv("AV_DEFINITION_PATH", "/tmp/clamav_defs")
  AV_SCAN_START_SNS_ARN = os.getenv("AV_SCAN_START_SNS_ARN")
  AV_SCAN_START_METADATA = os.getenv("AV_SCAN_START_METADATA", "av-scan-start")
  AV_STATUS_CLEAN = os.getenv("AV_STATUS_CLEAN", "CLEAN")
  AV_STATUS_INFECTED = os.getenv("AV_STATUS_INFECTED", "INFECTED")
  AV_STATUS_INVALID_FILE = os.getenv("AV_STATUS_INVALID_FILE", "INVALID-FILE")
  AV_STATUS_SIZE_EXCEED = os.getenv("AV_STATUS_SIZE_EXCEED", "SIZE-EXCEED")
  AV_STATUS_METADATA = os.getenv("AV_STATUS_METADATA", "av-status")
  AV_STATUS_SNS_ARN = os.getenv("AV_STATUS_SNS_ARN")
  AV_TIMESTAMP_METADATA = os.getenv("AV_TIMESTAMP_METADATA", "av-timestamp")
  CLAMAVLIB_PATH = os.getenv("CLAMAVLIB_PATH", "./bin")
  CLAMSCAN_PATH = os.getenv("CLAMSCAN_PATH", "./bin/clamscan")
  FRESHCLAM_PATH = os.getenv("FRESHCLAM_PATH", "./bin/freshclam")
  AV_PROCESS_ORIGINAL_VERSION_ONLY = os.getenv("AV_PROCESS_ORIGINAL_VERSION_ONLY", "False")
  AV_DELETE_INFECTED_FILES = os.getenv("AV_DELETE_INFECTED_FILES", "False")
  AV_CLEAN_S3_BUCKET = os.getenv("AV_CLEAN_S3_BUCKET")
  AV_QUARANTINE_S3_BUCKET = os.getenv("AV_QUARANTINE_S3_BUCKET")
  AV_STATUS_CALLBACK_ENDPOINT = os.getenv("AV_STATUS_CALLBACK_ENDPOINT")
  
  AV_DEFINITION_FILENAMES = ["main.cvd","daily.cvd", "daily.cud", "bytecode.cvd", "bytecode.cud"]
  
  ACCEPTABLE_FILE_FORMATS = ["pdf", "doc", "docx", "ppt", "pptx", "pps", "ppsx", "xls", "xlsx", "csv", "txt", "rtf", "odp", "xlr", "wks", "wps", "wpd"]
  MAX_FILE_SIZE = 200 * 1024 * 1024   # 200MB
  
  s3 = boto3.resource('s3')
  s3_client = boto3.client('s3')
  
  
  def create_dir(path):
      if not os.path.exists(path):
          try:
              print("Attempting to create directory %s.\n" % path)
              os.makedirs(path)
          except OSError as exc:
              if exc.errno != errno.EEXIST:
                  raise
  