コード例 #1
0
            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());
            }
コード例 #2
0
        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);
        }
コード例 #3
0
 public ActiveDirectoryQueryConnection(ActiveDirectoryConnection activeDirectoryConnection)
 {
     this._activeDirectoryConnection = activeDirectoryConnection;
 }
コード例 #4
0
 internal AddressList(string path, ActiveDirectoryConnection connection)
 {
     _Path = path;
     _Connection = connection;
 }
コード例 #5
0
        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();
                }
            }

        }
コード例 #6
0
 public ExchangeAddressListService(ActiveDirectoryConnection connection)
 {
     if (connection == null) throw new ArgumentNullException("connection");
     _Connection = connection;
 }
コード例 #7
0
			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());
			}
コード例 #8
0
		public ActiveDirectoryQueryConnection(ActiveDirectoryConnection activeDirectoryConnection)
		{
			this._activeDirectoryConnection = activeDirectoryConnection;
		}