public ActiveDirectoryCommand( ActiveDirectoryConnection activeDirectoryConnection, string query, IEnumerable <string> parameters ) : this() { this._activeDirectoryConnection = activeDirectoryConnection; foreach (var paramName in parameters) { // initalize parameters with empty values this._parameters[paramName] = string.Empty; } ParseQuery(query.TrimmedOrEmpty()); }
public IQueryConnection CreateQueryConnection(QuerySource sourceType, InstanceInfo instance) { bool isOdbc = instance.IsODBC; QuerySource queryType = instance.Type; instance.SetSettings(this._model.Settings); if (sourceType == QuerySource.SQLite) { IStorageManager storageManager = this._model.GetVaultProcessor( instance.ConnectionGroup ?? new ConnectionGroupInfo() ); AttachingSqliteQueryConnection sqliteQueryConnection; string connectionString = instance.GetConnectionString(); SqliteConnectionParameters connectionParameters = SqliteConnectionParameters.Parse(connectionString); if (connectionParameters.IsValid) { sqliteQueryConnection = new SqliteInnerQueryConnection( storageManager.CurrentStorage, connectionParameters ); } else { sqliteQueryConnection = new SqliteInternalQueryConnection( storageManager.CurrentStorage, instance ); } if (storageManager.HistoryStorage != null) { foreach (var historyStorage in storageManager.HistoryStorage) { sqliteQueryConnection.AddDatabaseToAttach( historyStorage.Alias, historyStorage.FileName ); } } if (storageManager.ReportStorage != null) { sqliteQueryConnection.AddDatabaseToAttach( "report", storageManager.ReportStorage.FileName ); } return(sqliteQueryConnection); } if (isOdbc) { OdbcConnection odbcConnection = ConnectionFactory.CreateOdbcConnection(instance, true); return(new OdbcQueryConnection(odbcConnection)); } if (sourceType == queryType) { switch (sourceType) { case QuerySource.MSSQL: SqlConnection sqlConnection = ConnectionFactory.CreateSqlConnection(instance, true); return(new MsSqlQueryConnection(sqlConnection)); case QuerySource.TDSQL: TdConnection tdConnection = ConnectionFactory.CreateTdConnection(instance, true); return(new TeradataSqlQueryConnection(tdConnection)); case QuerySource.SQLiteExternal: SQLiteConnection sqliteConnection = ConnectionFactory.CreateSQLiteExternalConnection(instance); return(new SqliteExternalQueryConnection(sqliteConnection)); case QuerySource.ActiveDirectory: ActiveDirectoryConnection activeDirectoryConnection = ConnectionFactory.CreateActiveDirectoryConnection(instance); return(new ActiveDirectoryQueryConnection(activeDirectoryConnection)); case QuerySource.EventLog: EventLogConnection eventLogConnection = ConnectionFactory.CreateEventLogConnection(instance); return(new EventLogQueryConnection(eventLogConnection)); case QuerySource.NetworkInformation: NetworkInformationConnection networkInfoConnection = ConnectionFactory.CreateNetworkInformationConnection(instance); return(new NetworkInformationQueryConnection(networkInfoConnection)); } } string errorMessage = String.Format( "There is no QueryConnection defined. QuerySource: {0}, QueryType: {1}", sourceType, queryType ); Log.ErrorFormat(errorMessage); throw new ArgumentException(errorMessage); }
public ActiveDirectoryQueryConnection(ActiveDirectoryConnection activeDirectoryConnection) { this._activeDirectoryConnection = activeDirectoryConnection; }
internal AddressList(string path, ActiveDirectoryConnection connection) { _Path = path; _Connection = connection; }
public static void Execute() { var connection = new ActiveDirectoryConnection(); var service = new ExchangeAddressListService(connection); var ds = service.GetGlobalAddressLists().Where(a => a.Name == "symmetryinvestments.com - GAL"); foreach (var addressList in ds) { var knownEmployees = Employee.Employees(e => e.Attributes.ContainsKey("ExchangeIdentifier")); Console.Out.WriteLine("addressList.Name = {0}", addressList.Name); foreach (var searchResult in addressList.GetMembers()) { if (searchResult.Properties.Contains("grouptype") || !searchResult.Properties.Contains("sn") || searchResult.Properties.Contains("targetaddress") || (searchResult.Properties.Contains("mailnickname") && searchResult.Properties["displayname"][0].Equals(searchResult.Properties["mailnickname"][0])) || (searchResult.Properties.Contains("mailnickname") && searchResult.Properties["name"][0].Equals(searchResult.Properties["mailnickname"][0]))) continue; // Identifier string objectId =System.Convert.ToBase64String( (byte[])searchResult.Properties["objectsid"][0]); // NT User NAme string ntName = searchResult.Properties["samaccountname"][0].ToString(); // Fund or create the empliyee Employee employee = knownEmployees.FirstOrDefault(e => e.Attributes.ContainsKey("ExchangeIdentifier") && e.Attributes["ExchangeIdentifier"].Equals(objectId)) ?? new Employee(ntName) { Active = true, SecurityIdentifier = string.Format("OPTIONS-IT\\{0}", ntName) }; // Set the full name employee.FullName = searchResult.Properties["name"][0].ToString(); // Set the Exchange Identifier if it doesn't already exist if (!employee.Attributes.ContainsKey("ExchangeIdentifier")) employee.Attributes.Add("ExchangeIdentifier", objectId); // Work Email EmailContact ec = (EmailContact)employee.ContactCard.FirstOrDefault( f => f.ContactDetailType == eContactDetailType.Email && f.DisplayName.Equals("Work Email")); if (ec == null) { ec = new EmailContact() { DisplayName = "Work Email", Primary = true }; employee.ContactCard.Add(ec); } if(searchResult.Properties.Contains("mail")) ec.EmailAddress = searchResult.Properties["mail"][0].ToString(); // Telephone Number UpdateTelephoneContact(employee, eTelephoneContactType.Office, searchResult, "telephonenumber", "Office"); UpdateTelephoneContact(employee, eTelephoneContactType.Office, searchResult, "othertelephone", "Other"); UpdateTelephoneContact(employee, eTelephoneContactType.Mobile, searchResult, "mobile", "Mobile"); UpdateTelephoneContact(employee, eTelephoneContactType.Office, searchResult, "homephone", "Misc"); if (string.IsNullOrEmpty(employee.Title)) employee.Title = string.Empty; employee.Save(); } } }
public ExchangeAddressListService(ActiveDirectoryConnection connection) { if (connection == null) throw new ArgumentNullException("connection"); _Connection = connection; }
public ActiveDirectoryCommand( ActiveDirectoryConnection activeDirectoryConnection, string query, IEnumerable<string> parameters ) : this() { this._activeDirectoryConnection = activeDirectoryConnection; foreach (var paramName in parameters) { // initalize parameters with empty values this._parameters[paramName] = string.Empty; } ParseQuery(query.TrimmedOrEmpty()); }