#!/usr/bin/env python
# coding: utf-8

# In[76]:


import os
directorypath=r"C:\\"
emailto=itsm.getParameter('EmailTo')  ## Provide an To email address where the mail need to be sent.
emailfrom=itsm.getParameter('EmailFrom')  ## Provide the From Email address from which the mail to be send
password=itsm.getParameter('Password')               ##Provide password for from email
smtpserver=itsm.getParameter('smptserver') #Default 'smtp.gmail.com'
port=itsm.getParameter('portnumber') #Default port number 587

import sys,shutil,re,sys,socket,_winreg,random,getpass
from datetime import date, datetime
import socket
import smtplib
import mimetypes
from email.mime.multipart import MIMEMultipart
from email import encoders
from email.message import Message
from email.mime.audio import MIMEAudio
from email.mime.base import MIMEBase
from email.mime.image import MIMEImage
from email.mime.text import MIMEText
import ctypes
from subprocess import PIPE, Popen

##Executing

def ecmd(command,directory):
    import ctypes
    from subprocess import PIPE, Popen
    
    class disable_file_system_redirection:
        _disable = ctypes.windll.kernel32.Wow64DisableWow64FsRedirection
        _revert = ctypes.windll.kernel32.Wow64RevertWow64FsRedirection
        def __enter__(self):
            self.old_value = ctypes.c_long()
            self.success = self._disable(ctypes.byref(self.old_value))
        def __exit__(self, type, value, traceback):
            if self.success:
                self._revert(self.old_value)
    
    with disable_file_system_redirection():
        os.chdir(directory)
        #print (os.getcwd())
        obj = Popen(command, shell = True, stdout = PIPE, stderr = PIPE)
        x=obj.communicate()[0]
        if len(x)==0:
            return "No Files"
        else:
            return x

#Writing in TXT
def txtoutput():
    ls=[".sql",".bak",".bacpac",".dacpac",".mdf",".idl"]
    for i in ls:
        yield ("Searching for {}".format(i),ecmd("dir  /S /b *"+i,directorypath))
z=txtoutput()
file_name='output.txt'
file_path=os.path.join(os.environ['TEMP'], file_name)
with open(file_path, 'wb') as wr:
    for i in z:
        wr.write(i[0]+"\n")
        wr.write(i[1]+"\n")

##Emailing 
def computername():
    return os.environ['COMPUTERNAME']

def ipaddress():
    return socket.gethostbyname(socket.gethostname())

subject='%s %s Search Report!!!!!'%(computername(), ipaddress())

message_body="""Hi, 
                
The report has been attached in .txt file.
                
Thanks
                """

fileToSend=os.path.join(os.environ['TEMP'], 'output.txt')

def emailreport(subject, emailto,emailfrom,password,smtpserver,port,msgbody,fileToSend):
    msg = MIMEMultipart()
    msg["From"] = emailfrom
    msg["To"] = ",".join(emailto)
    msg["Subject"] = subject
    msg.preamble = subject
    body = MIMEText(msgbody)
    msg.attach(body)    
    
    attachment=open(fileToSend,"rb")
    p = MIMEBase('application', 'octet-stream') 
    p.set_payload((attachment).read())
    encoders.encode_base64(p)
    p.add_header('Content-Disposition', 'attachment', filename='output.txt')
    msg.attach(p) 
    

    try:
        server = smtplib.SMTP(smtpserver,port)
        server.ehlo()
        server.starttls()
        server.login(emailfrom, password)
        server.sendmail(emailfrom, emailto, msg.as_string())
        server.quit()
        return " \nThe email report has been sent to "+emailto
    except Exception as e:
        return e


emailreport(subject, emailto,emailfrom,password,smtpserver,port,message_body,fileToSend) 
os.remove(fileToSend)


# In[ ]:




