public void TestComInterfaces()
        {
            using (DirectoryEntry de = CreateRootEntry())
            {
                DeleteOU(de, "dateRoot");

                try
                {
                    using (DirectoryEntry rootOU = CreateOU(de, "dateRoot", "Date OU"))
                    {
                        long deTime     = GetTimeValue((IADsLargeInteger)de.Properties["uSNCreated"].Value);
                        long rootOUTime = GetTimeValue((IADsLargeInteger)rootOU.Properties["uSNCreated"].Value);

                        // we are sure rootOU is created after de
                        Assert.True(rootOUTime > deTime);

                        IADs iads = (IADs)rootOU.NativeObject;
                        Assert.Equal("ou=dateRoot", iads.Name);
                        Assert.Equal("Class", iads.Class);
                        Assert.True(iads.ADsPath.IndexOf(LdapConfiguration.Configuration.ServerName, StringComparison.OrdinalIgnoreCase) >= 0);

                        IADsSecurityDescriptor iadsSD = (IADsSecurityDescriptor)de.Properties["ntSecurityDescriptor"].Value;
                        Assert.True(LdapConfiguration.Configuration.Domain.IndexOf(iadsSD.Owner.Split('\\')[0], StringComparison.OrdinalIgnoreCase) >= 0);
                        Assert.True(LdapConfiguration.Configuration.Domain.IndexOf(iadsSD.Group.Split('\\')[0], StringComparison.OrdinalIgnoreCase) >= 0);
                    }
                }
                finally
                {
                    DeleteOU(de, "dateRoot");
                }
            }
        }
Example #2
0
        public static int Main(string[] args)
        {
            string Path  = "LDAP://dsaddom.nttest.microsoft.com/rootDSE";
            IADs   pIADs = null;

            DirectoryEntry Entry = new DirectoryEntry(Path);

            pIADs = (IADs)Entry.NativeObject;

            Array NamingContexts = (Array)pIADs.Get("namingContexts");

            for (int i = 0; i < NamingContexts.GetLength(0); i++)
            {
                Console.WriteLine((string)NamingContexts.GetValue(i));
            }

            Array Contexts = (Array)pIADs.GetEx("namingContexts");

            for (int i = 0; i < NamingContexts.GetLength(0); i++)
            {
                Console.WriteLine((string)Contexts.GetValue(i));
            }

            return(0);
        }
    static void Main(string[] args)
    {
        DirectoryEntry e = new DirectoryEntry(
            "IIS://localhost/Logging/Custom Logging/Extended Properties");

        IADs iad = (IADs)e.NativeObject;

        e.Path = iad.Schema;
        e.RefreshCache();

        IADsClass iac = (IADsClass)e.NativeObject;

        Console.WriteLine("MANDATORY PROPERTIES");

        Array mandatoryProps = (Array)iac.MandatoryProperties;

        foreach (object o in mandatoryProps)
        {
            Console.WriteLine(o);
        }

        Console.WriteLine("OPTIONAL PROPERTIES");

        Array optionalProps = (Array)iac.OptionalProperties;

        foreach (object o in optionalProps)
        {
            Console.WriteLine(o);
        }
    }
        public static int Main(string[] args)
        {
            string Path  = "LDAP://dsaddom.nttest.microsoft.com/rootDSE";
            IADs   pIADs = null;

            DirectoryEntry Entry = new DirectoryEntry(Path);

            pIADs = (IADs)Entry.NativeObject;


            return(0);
        }
Example #5
0
        public static string GetObjectAccountName(IADs nativeObject, string nameProperty)
        {
            string objectAccountName = String.Empty;

            SecurityIdentifier objectSid = null;

            try
            {
                objectSid = new SecurityIdentifier((byte[])nativeObject.Get("objectSid"), 0);

                if (objectSid != null)
                {
                    NTAccount objectAccount;

                    if (!m_accountsCache.TryGetValue(objectSid, out objectAccountName))
                    {
                        objectAccount = (NTAccount)objectSid.Translate(typeof(NTAccount));

                        if (objectAccount != null)
                        {
                            objectAccountName = objectAccount.Value;
                        }

                        m_accountsCache.Add(objectSid, objectAccountName);
                    }
                }
            }
            catch (Exception exc)
            {
                Log.WriteException(exc);

                if (objectSid != null)
                {
                    m_accountsCache.Add(objectSid, objectAccountName);
                }
            }

            if (!StringUtil.IsStringInitialized(objectAccountName))
            {
                if (!StringUtil.IsStringInitialized(nameProperty))
                {
                    nameProperty = LOCAL_ACCOUNT_NAME_PROPERTY;
                }

                objectAccountName = (string)nativeObject.Get(nameProperty);
            }

            return(objectAccountName);
        }
Example #6
0
        public static int Main(string[] args)
        {
            string Path  = "LDAP://dsaddom.nttest.microsoft.com/rootDSE";
            IADs   pIADs = null;

            DirectoryEntry Entry = new DirectoryEntry(Path);

            pIADs = (IADs)Entry.NativeObject;

            string DefaultNamingContext = (string)pIADs.Get("defaultNamingContext");

            Console.WriteLine(DefaultNamingContext);

            //Required since GetEx returns an VARIANT array regardless of the number of items
            Array NamingContext = (Array)pIADs.GetEx("defaultNamingContext");

            for (int i = 0; i < NamingContext.GetLength(0); i++)
            {
                Console.WriteLine((string)NamingContext.GetValue(i));
            }

            return(0);
        }
        /* Esta accion aplica las acciones sobre el paad como rechazar paad, aprobar paad, aprobar modificacion y rechazar modificacion
         * Recibe las credenciales a autenticar, el id del padd, la accion a realizar y el mensaje de rechazo de manera opcional
         * devuelve un json con el estado de la respuesta, el mensaje de respuesta, y una vista parcial en string */
        public ActionResult ApplyActionIAD(AuthenticationCLS credentials, int id_iad, int action_iad, string reject_message)
        {
            //Valida los campos del modelo de las credenciales
            if (!ModelState.IsValid)
            {
                return(Json(new
                {
                    Status = 2,
                    Message = "Invalid",
                    AjaxResponse = RenderRazorViewToString("_AuthenticateCredentials", credentials)
                }));
            }
            //Obtiene los datos de la sesion del usuario
            Administrativos doc = ((Administrativos)Session["administ"]);

            //Valida que la autenticacion sea correcta, que el correo de la autenticacion se el mismo que el de la sesion y que la cuenta tenga el nivel de permisos necesarios
            if (!util.AuthenticateCredentials(credentials.email, credentials.password) || doc.rol != 2 || doc.correo != credentials.email)
            {
                credentials.message = "Correo y/o contraseƱa incorrectos";
                return(Json(new
                {
                    Status = 3,
                    Message = "Error",
                    AjaxResponse = RenderRazorViewToString("_AuthenticateCredentials", credentials)
                }));
            }
            using (var db = new DB_PAAD_IADEntities())
            {
                Mensajes mssg = null;

                IADs iad = db.IADs.Where(p => p.id_iad == id_iad).FirstOrDefault();
                bool isNotDirectorOrNull = iad != null ? !util.IsDirector(iad.docente) : true;
                //Valida que el paad sea del director
                if (isNotDirectorOrNull)
                {
                    credentials.message = "Correo y/o contraseƱa incorrectos";
                    return(Json(new
                    {
                        Status = 3,
                        Message = "Error",
                        AjaxResponse = RenderRazorViewToString("_AuthenticateCredentials", credentials)
                    }));
                }
                else if (action_iad == 1)
                {
                    //Acciones para el caso de Rechazar PAAD
                    iad.estado        = 1;
                    iad.firma_docente = null;
                    db.Mensajes.Add(new Mensajes
                    {
                        iad     = iad.id_iad,
                        tipo    = 1,
                        mensaje = reject_message
                    });
                }
                else if (action_iad == 2)
                {
                    //Acciones para el caso de Aprobar PAAD
                    iad.estado         = 3;
                    iad.firma_director = Guid.NewGuid().ToString("N");
                }
                else if (action_iad == 3)
                {
                    //Acciones para el caso de Rechazar Solicitud
                    iad.estado = 3;
                    db.Mensajes.Add(new Mensajes
                    {
                        iad     = iad.id_iad,
                        tipo    = 3,
                        mensaje = reject_message
                    });
                    mssg = db.Mensajes.Single(p => p.iad == id_iad && p.tipo == 2);
                }
                else if (action_iad == 4)
                {
                    //Acciones para el caso de Aprobar Solicitud
                    iad.estado         = 1;
                    iad.firma_docente  = null;
                    iad.firma_director = null;
                    mssg = db.Mensajes.Where(p => p.iad == id_iad && p.tipo == 2).FirstOrDefault();
                }
                //Si hay mensajes que borrar los elimina, por lo generar por cada paad solo hay un mensaje activo que mostrar, en caso de eliminar varios al mismo tiempo se debera modificar.
                if (mssg != null)
                {
                    db.Mensajes.Remove(mssg);
                }
                db.SaveChanges();
            }
            return(Json(new
            {
                Status = 1,
                Message = "Success"
            }));
        }