예제 #1
0
 private void CreateCannedSystemAddressLists(IConfigurationSession session, AddressBookBase parent, out Dictionary <string, bool> addressListsCreated)
 {
     addressListsCreated = new Dictionary <string, bool>();
     foreach (string text in CannedSystemAddressLists.RecipientFilters.Keys)
     {
         AddressBookBase addressBookBase = session.Read <AddressBookBase>(parent.Id.GetChildId(text));
         bool            flag            = false;
         bool            flag2           = false;
         if (addressBookBase == null)
         {
             flag            = true;
             addressBookBase = new AddressBookBase();
             addressBookBase.SetId(parent.Id.GetChildId(text));
             addressBookBase.DisplayName         = text;
             addressBookBase.OrganizationId      = parent.OrganizationId;
             addressBookBase.IsSystemAddressList = CannedSystemAddressLists.SystemFlags[text];
         }
         if (flag || !string.Equals(LdapFilterBuilder.LdapFilterFromQueryFilter(CannedSystemAddressLists.RecipientFilters[text]), addressBookBase.LdapRecipientFilter, StringComparison.OrdinalIgnoreCase))
         {
             flag2 = true;
             addressBookBase.SetRecipientFilter(CannedSystemAddressLists.RecipientFilters[text]);
             addressBookBase[AddressBookBaseSchema.RecipientFilterFlags] = RecipientFilterableObjectFlags.FilterApplied;
             base.WriteVerbose(TaskVerboseStringHelper.GetSaveObjectVerboseString(addressBookBase, session, typeof(AddressBookBase)));
             try
             {
                 session.Save(addressBookBase);
             }
             finally
             {
                 base.WriteVerbose(TaskVerboseStringHelper.GetSourceVerboseString(session));
             }
         }
         addressListsCreated.Add(text, flag || flag2);
     }
 }
예제 #2
0
        public virtual AddressBookBase ToAddressBookBase()
        {
            AddressBookBase addressBookBase = new AddressBookBase();

            addressBookBase.SetId(this.Id);
            addressBookBase.DisplayName    = this.DisplayName;
            addressBookBase.OrganizationId = this.OrganizationId;
            return(addressBookBase);
        }
        private void CreateCannedAddressList(string name, QueryFilter recipientFilter)
        {
            bool flag = string.Equals(name, CannedAddressListsFilterHelper.DefaultAllModernGroups, StringComparison.InvariantCulture);

            if (flag && (!this.CreateModernGroupsAddressList.IsPresent || !VariantConfiguration.GetSnapshot(MachineSettingsContext.Local, null, null).CmdletInfra.InstallModernGroupsAddressList.Enabled))
            {
                return;
            }
            ADObjectId id = this.DataObject.Id;

            AddressBookBase[] array = this.FindAddressList(name, recipientFilter);
            if (array == null || array.Length == 0)
            {
                AddressBookBase addressBookBase = new AddressBookBase();
                string          text            = name;
                if (flag)
                {
                    text = Strings.DefaultAllGroups;
                    addressBookBase.IsModernGroupsAddressList = true;
                }
                ADObjectId childId = id.GetChildId(text);
                addressBookBase.SetId(childId);
                addressBookBase.DisplayName = text;
                addressBookBase.SetRecipientFilter(recipientFilter);
                RecipientFilterHelper.StampE2003FilterMetadata(addressBookBase, addressBookBase.LdapRecipientFilter, AddressBookBaseSchema.PurportedSearchUI);
                addressBookBase.OrganizationId = (base.CurrentOrganizationId ?? OrganizationId.ForestWideOrgId);
                base.WriteVerbose(TaskVerboseStringHelper.GetSaveObjectVerboseString(addressBookBase, base.DataSession, typeof(AddressBookBase)));
                try
                {
                    base.DataSession.Save(addressBookBase);
                    if (string.Equals(name, CannedAddressListsFilterHelper.DefaultAllRooms, StringComparison.InvariantCulture))
                    {
                        this.PostOrganization(childId);
                    }
                }
                catch (ADObjectAlreadyExistsException)
                {
                    base.WriteVerbose(Strings.VerboseCannedAddressListAlreadyExists(name));
                }
                finally
                {
                    base.WriteVerbose(TaskVerboseStringHelper.GetSourceVerboseString(base.DataSession));
                }
                base.WriteObject(addressBookBase);
            }
        }
예제 #4
0
        private void CreateDefaultGal(ADObjectId defaultGal)
        {
            AddressBookBase addressBookBase = new AddressBookBase();

            addressBookBase.SetId(defaultGal);
            addressBookBase.DisplayName = defaultGal.Name;
            addressBookBase.SetRecipientFilter(GlobalAddressList.RecipientFilterForDefaultGal);
            addressBookBase[AddressBookBaseSchema.RecipientFilterFlags] = (RecipientFilterableObjectFlags.FilterApplied | RecipientFilterableObjectFlags.IsDefault);
            RecipientFilterHelper.StampE2003FilterMetadata(addressBookBase, addressBookBase.LdapRecipientFilter, AddressBookBaseSchema.PurportedSearchUI);
            addressBookBase.OrganizationId = (base.CurrentOrganizationId ?? OrganizationId.ForestWideOrgId);
            base.WriteVerbose(TaskVerboseStringHelper.GetSaveObjectVerboseString(addressBookBase, base.DataSession, typeof(AddressBookBase)));
            try
            {
                base.DataSession.Save(addressBookBase);
            }
            finally
            {
                base.WriteVerbose(TaskVerboseStringHelper.GetSourceVerboseString(base.DataSession));
            }
            base.WriteObject(addressBookBase);
        }
예제 #5
0
        protected override void InternalProcessRecord()
        {
            TaskLogger.LogEnter();
            IConfigurationSession configurationSession = (IConfigurationSession)base.DataSession;
            OrganizationId        organizationId       = (this.Identity != null) ? this.DataObject.OrganizationId : base.CurrentOrganizationId;
            ADSessionSettings     sessionSettings      = ADSessionSettings.FromOrganizationIdWithoutRbacScopes(base.RootOrgContainerId, organizationId, base.ExecutingUserOrganizationId, false);

            configurationSession = DirectorySessionFactory.Default.GetTenantOrTopologyConfigurationSession(configurationSession.DomainController, false, ConsistencyMode.PartiallyConsistent, configurationSession.NetworkCredential, sessionSettings, 102, "InternalProcessRecord", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\SystemConfigurationTasks\\organization\\EnableAddressListPaging.cs");
            ADObjectId descendantId;

            if (organizationId != OrganizationId.ForestWideOrgId)
            {
                descendantId = organizationId.ConfigurationUnit.GetDescendantId(SystemAddressList.RdnSystemAddressListContainerToOrganization);
            }
            else
            {
                descendantId = base.RootOrgContainerId.GetDescendantId(SystemAddressList.RdnSystemAddressListContainerToOrganization);
            }
            AddressBookBase addressBookBase = configurationSession.Read <AddressBookBase>(descendantId);

            if (null == addressBookBase)
            {
                addressBookBase = new AddressBookBase();
                addressBookBase.SetId(descendantId);
                addressBookBase.DisplayName    = SystemAddressList.RdnSystemAddressListContainerToOrganization.Name;
                addressBookBase.OrganizationId = organizationId;
                configurationSession.Save(addressBookBase);
            }
            Dictionary <string, bool> dictionary;

            this.CreateCannedSystemAddressLists(configurationSession, addressBookBase, out dictionary);
            IRecipientSession tenantOrRootOrgRecipientSession = DirectorySessionFactory.Default.GetTenantOrRootOrgRecipientSession(base.TenantGlobalCatalogSession.DomainController, true, ConsistencyMode.PartiallyConsistent, null, sessionSettings, 146, "InternalProcessRecord", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\SystemConfigurationTasks\\organization\\EnableAddressListPaging.cs");

            AddressBookBase[] array = configurationSession.Find <AddressBookBase>(descendantId, QueryScope.SubTree, null, null, 0);
            foreach (AddressBookBase addressBookBase2 in array)
            {
                if (base.Stopping)
                {
                    return;
                }
                bool flag = false;
                dictionary.TryGetValue(addressBookBase2.Name, out flag);
                if (this.DoNotUpdateRecipients.IsPresent)
                {
                    if (flag)
                    {
                        this.WriteWarning(Strings.WarningMustRunEnableAddressListPagingWithForceSwitch(addressBookBase2.Name));
                    }
                }
                else if (this.ForceUpdateOfRecipients.IsPresent || flag)
                {
                    UpdateAddressBookBase <AddressListIdParameter> .UpdateRecipients(addressBookBase2, base.DomainController, tenantOrRootOrgRecipientSession, new Task.TaskWarningLoggingDelegate(this.WriteWarning), new WriteProgress(base.WriteProgress), this);
                }
            }
            Organization orgContainer = configurationSession.GetOrgContainer();

            if (!orgContainer.IsAddressListPagingEnabled)
            {
                orgContainer.IsAddressListPagingEnabled = true;
                base.WriteVerbose(TaskVerboseStringHelper.GetSaveObjectVerboseString(orgContainer, configurationSession, typeof(Organization)));
                configurationSession.Save(orgContainer);
            }
            TaskLogger.LogExit();
        }