diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..d1539cf Binary files /dev/null and b/.DS_Store differ diff --git a/requirements.txt b/requirements.txt index d55b14e..5fe820d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -82,3 +82,4 @@ watchdog==2.1.5 wcwidth==0.2.5 webencodings==0.5.1 widgetsnbextension==3.5.1 +cloudmersive-virus-api-client \ No newline at end of file diff --git a/src/__pycache__/info.cpython-39.pyc b/src/__pycache__/info.cpython-39.pyc new file mode 100644 index 0000000..c9d16a4 Binary files /dev/null and b/src/__pycache__/info.cpython-39.pyc differ diff --git a/src/__pycache__/mailer.cpython-39.pyc b/src/__pycache__/mailer.cpython-39.pyc new file mode 100644 index 0000000..3e2abb0 Binary files /dev/null and b/src/__pycache__/mailer.cpython-39.pyc differ diff --git a/src/mailer.py b/src/mailer.py index ce1b849..3d4e2cb 100644 --- a/src/mailer.py +++ b/src/mailer.py @@ -1,4 +1,5 @@ # Imports +from __future__ import print_function from email import message import smtplib import email @@ -6,6 +7,23 @@ from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase +import streamlit as st + +# Scanning the files before uploading them + +import time +import cloudmersive_virus_api_client +from cloudmersive_virus_api_client.rest import ApiException +from pprint import pprint + +# Configure API key authorization: Apikey +key='8b8683b1-e5c3-4627-9293-725d6d4a1b36' +configuration = cloudmersive_virus_api_client.Configuration() +configuration.api_key['Apikey'] = key + +# create an instance of the API class +api_instance = cloudmersive_virus_api_client.ScanApi(cloudmersive_virus_api_client.ApiClient(configuration)) + # The Mailer class @@ -50,15 +68,24 @@ def send_mail(self, to, subject, body, cc=None, bcc=None, attachments=None): # if attachment is available, add it to the message if attachments is not None: for files in attachments: - part = MIMEBase("application", "octet-stream") - part.set_payload(files.read()) # Read the file - email.encoders.encode_base64( - part) # Encode the file - part.add_header( - "Content-Disposition", - "attachment; filename=%s" % files.name, - ) # Add the header - message.attach(part) + try: + # Scan a file for viruses + api_response = api_instance.scan_file(files) + pprint(api_response) + except ApiException as e: + print("Exception when calling ScanApi->scan_file: %s\n" % e) + + if(api_response.CleanResult=='true'): + part = MIMEBase("application", "octet-stream") + part.set_payload(files.read()) # Read the file + email.encoders.encode_base64(part) # Encode the file + part.add_header( + "Content-Disposition", + "attachment; filename=%s" % files.name, + ) # Add the header + message.attach(part) + else: + st.warning("Malicious File Found!") context = ssl.create_default_context() # Create the SSL context # connect to the server