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"); } } }
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); }
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); }
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" })); }