#To define a particular parameter, replace the 'parameterName' inside itsm.getParameter('parameterName') with that parameter's name
import os
from subprocess import PIPE,Popen
import re
import shutil
import sys
import time
########################################Packages##############################################
start=time.time()
def alert(arg):
    sys.stderr.write("%d%d%d "%(arg,arg,arg))


def convert_bytes(size, unit=None):
    if unit == "KB":
        return (str(round(size / 1024, 3)))
    elif unit == "MB":
        return (str(round(size / (1024 * 1024), 3)))
    elif unit == "GB":
        return (str(round(size / (1024 * 1024 * 1024), 3)))
    else:
        return (str(size))

def permissions(dirpath):
    mode=0o777
    if os.path.isdir(dirpath):
        try:
            for root,dirs,files in os.walk(dirpath,topdown=False):
                for dircs in [os.path.join(root,d) for d in dirs]:
                    os.chmod(dircs,mode)
                for s_file in [os.path.join(root,f) for f in files]:
                    os.chmod(s_file,mode)
        except Exception as E:
            print "File being Used %s"%E
########################################Funtions##############################################           
process=Popen('wmic logicaldisk get size,freespace,caption',stdout=PIPE,stderr=PIPE)
res,err=process.communicate()
harddisk=re.findall("C:.+",res)[0].split()
caption=harddisk[0]
freespace=int(harddisk[1])
totalspace=int(harddisk[2])
percent5=float(convert_bytes(totalspace,"GB"))*0.05
try :
    re_size=convert_bytes(freespace,unit='GB')
    re_size=float(re_size)
    if re_size<percent5:
        #alert(1)
        print "Space is less than 10 GB clearing Temp Files"
        print "Removing Users Temp Files"
        users=os.popen("net user").read().split()[5:-5]
        #logged_user=os.popen("whoami").read().split('\\')[1]
        #logged_user=str(logged_user.upper()).strip()
        #print logged_user
        fil_users=[i for i in users if i!='Guest' and i!='DefaultAccount']
        fil_user_temp_path=["C:\\Users\\"+i+"\\AppData\\Local\\Temp" for i in fil_users ]
        for i in fil_user_temp_path:
            if os.path.exists(i):
                print "Providing permission %s "%i
                permissions(i)
                print "Cleaning %s"%i
                shutil.rmtree(i,ignore_errors=True)
            else:
                pass
        print "Provinding Permission C:\Windows\Temp"
        permissions("C:\Windows\Temp")
        print("Cleaning C:\Windows\Temp")
        shutil.rmtree("C:\Windows\Temp",ignore_errors=True)
        print "Cleared Temp Files\n"
#         print "Cleaning Logs"
#         print "Provinding Permission for Log folders"
#         permissions("C:\Windows\System32\winevt\Logs")
#         permissions("C:\Windows\System32\config")
#         print "Clearing Logs"
#         shutil.rmtree("C:\Windows\System32\winevt\Logs",ignore_errors=True)
#         shutil.rmtree("C:\Windows\System32\config",ignore_errors=True)
#         os.chdir('C:\Windows\System32\winevt\Logs')
#         print os.popen("del *.log /a /s /q /f").read()
#         os.chdir('C:\Windows\System32\config')
#         print os.popen("del *.log /a /s /q /f").read()
        fil_logs=os.popen('powershell.exe "Get-EventLog -LogName * | Select-Object -Property Log"').read().splitlines()[3:-2]
        for i in fil_logs:
            print "Clearing Logs of %s"%i
            os.popen("wmic nteventlog where filename=%s cleareventlog"%i).read()
        print "Logs Cleared"
    else:
        #alert(0)
        print "Still contains %s GB in %s"%(re_size,caption)
except Exception as E:
    print E
finally:
    print "Executed in %s seconds "%(time.time()-start)
    