import os
import time
import subprocess

host = itsm.getParameter("Enter_the_Host_name")
port = itsm.getParameter("Enter_the__port_name")
token = itsm.getParameter("Enter_the_Token")
pwd = itsm.getParameter("Custom_admin_password")

enrollment = "[General]\n"
enrollment += "host = %s\n" % host
enrollment += "port = %s\n" % port
enrollment += "remove_third_party = false\n"
enrollment += "suite = 4\n"
enrollment += "token = %s\n" % token

unenroll_txt_path = os.environ['programdata'] + "\\ITarian\\Endpoint Manager\\unenroll.txt"
try:
    with open(unenroll_txt_path, "w") as f:
        f.write(pwd)
except Exception as e:
    raise Exception("Failed to write unenroll.txt: %s" % str(e))

drive = os.environ['SystemDrive']
if os.path.exists(drive + "\\Program Files (x86)"):
    ep_path = drive + "\\Program Files (x86)\\ITarian\\Endpoint Manager\\enrollment_settings.ini"
    itsm_path = drive + "\\Program Files (x86)\\ITarian\\Endpoint Manager\\ITSMService.exe"
else:
    ep_path = drive + "\\Program Files\\ITarian\\Endpoint Manager\\enrollment_settings.ini"
    itsm_path = drive + "\\Program Files\\ITarian\\Endpoint Manager\\ITSMService.exe"

try:
    with open(ep_path, "w") as f:
        f.write(enrollment)
except Exception as e:
    raise Exception("Failed to write enrollment_settings.ini: %s" % str(e))

try:
    future = time.localtime(time.time() + 120)  # 2 minutes from now
    hh = str(future.tm_hour).zfill(2)
    mm = str(future.tm_min).zfill(2)
    date = "%02d/%02d/%04d" % (future.tm_mon, future.tm_mday, future.tm_year)

    schedule_cmd = [
        "schtasks", "/Create",
        "/SC", "ONCE",
        "/TN", "RestartITSM",
        "/TR", "cmd.exe /c \"net stop ITSMservice && timeout /t 10 /nobreak && net start ITSMservice\"",
        "/ST", "%s:%s" % (hh, mm),
        "/SD", date,
        "/RU", "SYSTEM",
        "/F"
    ]

    print "Scheduling SYSTEM task RestartITSM for %s:%s on %s..." % (hh, mm, date)
    subprocess.call(schedule_cmd)
except Exception as e:
    raise Exception("Failed to schedule SYSTEM task: %s" % str(e))

try:
    print "Running unenrollment..."
    subprocess.call([itsm_path, "-c", "2"])
    time.sleep(10)
except Exception as e:
    raise Exception("Unenrollment failed: %s" % str(e))