#To define a particular parameter, replace the 'parameterName' inside itsm.getParameter('parameterName') with that parameter's name
input_user=itsm.getParameter("username")#"OMY"
import os
import ctypes
from subprocess import PIPE,Popen
import sys
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 alert(arg):
    sys.stderr.write("%d%d%d" % (arg, arg, arg))
with disable_file_system_redirection():
    process=Popen("net localgroup",stdout=PIPE,stdin=PIPE)
    r,e=process.communicate()
#     if e:
#         print e
#     else:
#         print r
    process2=Popen("net user /domain",stdout=PIPE,stdin=PIPE)
    r2,e2=process2.communicate()
# if e2:
#     print e2
# else:
#     print r2
    if r2:
        fl=[]
        Domain_list=[i.strip() for i in r2.split()[17:-4]]
        for i in Domain_list:
            if i!='Administrator' and i!='Guest':
                    fl.append(i)
#print fl
    ls1=dict()
    ls1["Domain Users"]=fl
#print ls1
    q=os.popen('systeminfo | findstr /B /C:"Domain"','r').read()
    domainname=q.split()[-1].strip().split('.')[0].upper()
#print domainname
    p=os.popen('net localgroup Administrators','r')
    adminusers=p.read().splitlines()[6:-2]
    d_admins=[]
    for i in adminusers:
        if domainname in i:
            d_admins.append(i)
#print d_admins
    ls2=dict()
    ls2["Domain Admins"]=d_admins
if r:
    LocalGroup_list= [i.strip().replace("*",'') for i in r.splitlines()[4:-2]]
    ls=dict()
    for i in LocalGroup_list:
        out=os.popen('net localgroup "%s"'%i).read()
        #print out
        Users=out.splitlines()[6:-2]
        #print i
        #print Users

        ls_i=[]
        #print i
        if Users:
            for j in Users:
                ls_i.append(j)
        #else:
        #    ls_i.append("No Users")
        #print i
        #print ls_i
        ls[i]=ls_i


    import json
    import collections
    print "System Name : "+os.popen("hostname").read()
    print "Domain Admins"
    print ls2
    print "Domain Users"
    print ls1
    print "Local Users"
    od = collections.OrderedDict(sorted(ls.items()))
    print(json.dumps(od, indent = 4))
else:
    print e
#user Change alert
if input_user not in adminusers:
    alert(1)
else:
    alert(0)