import os
import ssl
from subprocess import Popen, PIPE
import ctypes
import urllib2

CretFlag = 1
CretFlag = itsm.getParameter('CerFlag') ## Parameter must be give as integer at CerFlag label ## 1 -> install certificate, 0 -> uninstall certificate


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)


def Download(src_path, URL, fp):
    request = urllib2.Request(URL, headers={'User-Agent': "Magic Browser"})
    try:
        gcontext = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
        parsed = urllib2.urlopen(request, context=gcontext)
    except:
        parsed = urllib2.urlopen(request)
    if not os.path.exists(src_path):
        os.makedirs(src_path)
    with open(fp, 'wb') as f:
        while True:
            chunk = parsed.read(100 * 1000 * 1000)
            if chunk:
                f.write(chunk)
            else:
                break
    return fp


def InstallCert():
    URL = 'https://script-downloads.comodo.com/Certificate/WebFilter.crt'
    Folder = os.environ['programdata'] + r"\extraction_file"
    if not os.path.exists(Folder):
        os.mkdir(Folder)
    fileName = os.path.basename(URL)
    fp = os.path.join(Folder, fileName)

    Download(Folder, URL, fp)
    if os.path.exists(fp):
        command = r'certutil -addstore -f root ' + fp
        with disable_file_system_redirection():
            process = Popen(command, shell=True, stdout=PIPE, stderr=PIPE)
        result, err = process.communicate()
        if err:
            print err
        else:
            print result


def UnInstallCert():
    cmd = r'Get-ChildItem Cert:\LocalMachine\Root\6E9B9304C504AA77130A4A01367EB8F376B1E82F | Remove-Item'
    with disable_file_system_redirection():
        obj = Popen('powershell "' + cmd + '"', shell=True, stdout=PIPE, stderr=PIPE)
    out, err = obj.communicate()
    return err


if CretFlag == 1:
    InstallCert()
elif CretFlag == 0:
    res = UnInstallCert()
    if res == "":
        print "Flash Start certificate removed"
    else:
        print res
else:
    print "Invalid parameter"