public static LocalizedException ValidateE164Entries(ADConfigurationObject dataObject, MultiValuedProperty <string> e164NumberList)
        {
            LocalizedException result = null;

            if (e164NumberList == null || e164NumberList.Count == 0)
            {
                return(null);
            }
            Dictionary <string, int> dictionary = new Dictionary <string, int>(e164NumberList.Count);

            for (int i = 0; i < e164NumberList.Count; i++)
            {
                string text = e164NumberList[i];
                if (!Utils.IsUriValid(text, UMUriType.E164))
                {
                    result = new InvalidUMPilotIdentifierListEntry(text);
                    break;
                }
                if (dictionary.ContainsKey(text))
                {
                    result = new DuplicateE164PilotIdentifierListEntryException(dataObject.Name);
                    break;
                }
                dictionary[text] = 1;
            }
            return(result);
        }
 private void SaveObject(ADConfigurationObject dataObject)
 {
     try
     {
         if (dataObject.Identity != null)
         {
             base.WriteVerbose(TaskVerboseStringHelper.GetSaveObjectVerboseString(dataObject, this.configurationSession, dataObject.GetType()));
         }
         using (TaskPerformanceData.SaveResult.StartRequestTimer())
         {
             this.configurationSession.Save(dataObject);
         }
     }
     catch (DataSourceTransientException exception)
     {
         base.WriteError(exception, (ErrorCategory)1002, null);
     }
     finally
     {
         if (dataObject.Identity != null)
         {
             base.WriteVerbose(TaskVerboseStringHelper.GetSourceVerboseString(this.configurationSession));
         }
     }
 }
 void IConfigurationSession.Save(ADConfigurationObject instanceToSave)
 {
     if (instanceToSave is BindingStorage)
     {
         this.SaveBindingStorage((BindingStorage)instanceToSave);
         return;
     }
     ((IConfigDataProvider)this).Save(instanceToSave);
 }
 private void DeleteContainer(ADConfigurationObject container, bool useConfigNC)
 {
     if (container != null)
     {
         PartitionId partitionId             = new PartitionId(container.Id.PartitionGuid);
         ITenantConfigurationSession session = this.WritableAllTenantsSessionForPartition(partitionId);
         this.DeleteTree(session, container, useConfigNC);
     }
 }
Example #5
0
        // Token: 0x06000598 RID: 1432 RVA: 0x000216C8 File Offset: 0x0001F8C8
        private static bool DnIsMangled(ADConfigurationObject adObject, string rdnShouldBe)
        {
            string escapedName = adObject.Id.Rdn.EscapedName;

            if (!escapedName.Equals(rdnShouldBe, StringComparison.Ordinal))
            {
                AirSyncDiagnostics.TraceDebug <string>(ExTraceGlobals.RequestsTracer, null, "Found mangled device object DN: {0}", adObject.Id.DistinguishedName);
                return(true);
            }
            return(false);
        }
Example #6
0
 // Token: 0x06000597 RID: 1431 RVA: 0x00021628 File Offset: 0x0001F828
 private static void DeleteObject(IConfigurationSession scopedSession, ADConfigurationObject adObject)
 {
     try
     {
         ADNotificationAdapter.RunADOperation(delegate()
         {
             scopedSession.Delete(adObject);
         });
         DeviceClassCache.UpdateProtocolLogLastUsedDC(scopedSession);
         AirSyncDiagnostics.TraceDebug <string>(ExTraceGlobals.RequestsTracer, null, "Deleted object: {0}", adObject.Id.DistinguishedName);
     }
     catch (LocalizedException ex)
     {
         AirSyncDiagnostics.TraceError <string, string>(ExTraceGlobals.RequestsTracer, null, "Failed to delete object {0} because: {1}", adObject.Id.DistinguishedName, ex.Message);
     }
 }
 private void DeleteTree(ITenantConfigurationSession session, ADConfigurationObject objectToDelete, bool useConfigNC)
 {
     if (objectToDelete != null)
     {
         bool useConfigNC2 = session.UseConfigNC;
         session.UseConfigNC = useConfigNC;
         try
         {
             session.DeleteTree(objectToDelete, null);
         }
         finally
         {
             session.UseConfigNC = useConfigNC2;
         }
     }
 }
Example #8
0
        protected T GetDefaultObject <T>()
        {
            Func <object> func;

            if (!FfoDirectorySession.defaultInstanceFactory.TryGetValue(typeof(T), out func))
            {
                return(default(T));
            }
            T t = (T)((object)func());
            ADConfigurationObject adconfigurationObject = t as ADConfigurationObject;

            if (adconfigurationObject != null)
            {
                adconfigurationObject.Name = "Default";
                adconfigurationObject.SetId(new ADObjectId("CN=Default", FfoDirectorySession.defaultObjectId));
            }
            return(t);
        }
Example #9
0
 private static void CheckForPilotIdentifierDuplicates <TResult>(ADConfigurationObject dataObject, IConfigurationSession session, ADPropertyDefinition propertyDefinition, MultiValuedProperty <string> e164NumberList, Task.TaskErrorLoggingDelegate writeErrorDelegate) where TResult : ADConfigurationObject, new()
 {
     ValidateArgument.NotNull(session, "session");
     ValidateArgument.NotNull(dataObject, "dataObject");
     if (e164NumberList == null || e164NumberList.Count == 0)
     {
         return;
     }
     QueryFilter[] array = new QueryFilter[e164NumberList.Count];
     for (int i = 0; i < e164NumberList.Count; i++)
     {
         string propertyValue = e164NumberList[i];
         array[i] = new ComparisonFilter(ComparisonOperator.Equal, propertyDefinition, propertyValue);
     }
     TResult[] array2 = session.Find <TResult>(null, QueryScope.SubTree, new OrFilter(array), null, 2);
     if (array2 != null && array2.Length > 0 && (array2.Length > 1 || !array2[0].Id.Equals(dataObject.Id)))
     {
         writeErrorDelegate(new DuplicateE164PilotIdentifierListEntryException(array2[0].Name), ErrorCategory.InvalidOperation, dataObject);
     }
 }
Example #10
0
        private ADObjectId ValidateRecipientContainer(OrganizationalUnitIdParameter recipientContainer)
        {
            bool       useConfigNC      = this.ConfigurationSession.UseConfigNC;
            bool       useGlobalCatalog = this.ConfigurationSession.UseGlobalCatalog;
            ADObjectId id;

            try
            {
                this.ConfigurationSession.UseConfigNC = false;
                if (string.IsNullOrEmpty(this.ConfigurationSession.DomainController))
                {
                    this.ConfigurationSession.UseGlobalCatalog = true;
                }
                ADConfigurationObject adconfigurationObject = (ADConfigurationObject)base.GetDataObject <ExchangeOrganizationalUnit>(recipientContainer, this.ConfigurationSession, null, new LocalizedString?(Strings.ErrorRecipientContainerInvalidOrNotExists), new LocalizedString?(Strings.ErrorOrganizationalUnitNotUnique(recipientContainer.ToString())), ExchangeErrorCategory.Client);
                id = adconfigurationObject.Id;
            }
            finally
            {
                this.ConfigurationSession.UseConfigNC      = useConfigNC;
                this.ConfigurationSession.UseGlobalCatalog = useGlobalCatalog;
            }
            return(id);
        }
 void IConfigurationSession.DeleteTree(ADConfigurationObject instanceToDelete, TreeDeleteNotFinishedHandler handler)
 {
     FfoDirectorySession.LogNotSupportedInFFO(null);
     ((IConfigDataProvider)this).Delete(instanceToDelete);
 }
Example #12
0
 public static void CheckForPilotIdentifierDuplicates(ADConfigurationObject dataObject, IConfigurationSession session, MultiValuedProperty <string> e164NumberList, Task.TaskErrorLoggingDelegate writeErrorDelegate)
 {
     Utility.CheckForPilotIdentifierDuplicates <UMDialPlan>(dataObject, session, UMDialPlanSchema.PilotIdentifierList, e164NumberList, writeErrorDelegate);
     Utility.CheckForPilotIdentifierDuplicates <UMAutoAttendant>(dataObject, session, UMAutoAttendantSchema.PilotIdentifierList, e164NumberList, writeErrorDelegate);
 }
        private List <ExchangeRoleAssignment> GetEffectiveRoleAssignmentsForConfigObject(ADConfigurationObject configObject, IEnumerable <ExchangeRoleAssignment> roleAssignments, Dictionary <ADObjectId, ADScope> customConfigScopes, Dictionary <ADObjectId, ADScope> exclusiveConfigScopes, bool onlyExclusive)
        {
            List <ExchangeRoleAssignment> list = new List <ExchangeRoleAssignment>();

            if (onlyExclusive)
            {
                foreach (ExchangeRoleAssignment exchangeRoleAssignment in roleAssignments)
                {
                    if (this.IsValid(exchangeRoleAssignment) && exchangeRoleAssignment.ConfigWriteScope == ConfigWriteScopeType.ExclusiveConfigScope && exclusiveConfigScopes.ContainsKey(exchangeRoleAssignment.CustomConfigWriteScope) && ManagementReporting.VerifyIsWithinScopes(configObject, exclusiveConfigScopes[exchangeRoleAssignment.CustomConfigWriteScope], exclusiveConfigScopes[exchangeRoleAssignment.CustomConfigWriteScope], new RbacScope(exchangeRoleAssignment.ConfigReadScope)))
                    {
                        list.Add(exchangeRoleAssignment);
                    }
                }
                return(list);
            }
            foreach (ExchangeRoleAssignment exchangeRoleAssignment2 in roleAssignments)
            {
                if (this.IsValid(exchangeRoleAssignment2))
                {
                    switch (exchangeRoleAssignment2.ConfigWriteScope)
                    {
                    case ConfigWriteScopeType.OrganizationConfig:
                        list.Add(exchangeRoleAssignment2);
                        break;

                    case ConfigWriteScopeType.CustomConfigScope:
                        if (customConfigScopes.ContainsKey(exchangeRoleAssignment2.CustomConfigWriteScope) && ManagementReporting.VerifyIsWithinScopes(configObject, null, customConfigScopes[exchangeRoleAssignment2.CustomConfigWriteScope], new RbacScope(exchangeRoleAssignment2.ConfigReadScope)))
                        {
                            list.Add(exchangeRoleAssignment2);
                        }
                        break;
                    }
                }
            }
            return(list);
        }
        private List <ExchangeRoleAssignment> FindRoleAssignmentsWithWritableConfigObject(ScopeRestrictionType restrictionType, ADConfigurationObject writableObject, IEnumerable <ExchangeRoleAssignment> roleAssignments)
        {
            Dictionary <ADObjectId, ADScope> customConfigScopes;
            Dictionary <ADObjectId, ADScope> dictionary;

            this.RetrieveAllScopes(restrictionType, writableObject, out customConfigScopes, out dictionary);
            if (dictionary.Count > 0 && ManagementReporting.VerifyIsWithinScopes(writableObject, new List <ADScope>(dictionary.Values), new List <ADScope>(dictionary.Values), new RbacScope(ScopeType.Organization)))
            {
                return(this.GetEffectiveRoleAssignmentsForConfigObject(writableObject, roleAssignments, customConfigScopes, dictionary, true));
            }
            return(this.GetEffectiveRoleAssignmentsForConfigObject(writableObject, roleAssignments, customConfigScopes, dictionary, false));
        }
Example #15
0
        protected override IConfigurable PrepareDataObject()
        {
            TaskLogger.LogEnter();
            UMDialPlan umdialPlan = (UMDialPlan)base.PrepareDataObject();

            if (base.HasErrors)
            {
                return(null);
            }
            if (base.Fields.IsModified("ContactRecipientContainer") && base.Fields.IsModified("ContactAddressList"))
            {
                base.WriteError(new InvalidALParameterException(), ErrorCategory.NotSpecified, null);
                TaskLogger.LogExit();
                return(null);
            }
            if (base.Fields.IsModified("CountryOrRegionCode"))
            {
                if (string.IsNullOrEmpty(this.CountryOrRegionCode))
                {
                    base.WriteError(new InvalidParameterException(Strings.EmptyCountryOrRegionCode), ErrorCategory.InvalidArgument, null);
                }
                else
                {
                    umdialPlan.CountryOrRegionCode = this.CountryOrRegionCode;
                }
            }
            if (base.Fields.IsModified("ContactRecipientContainer"))
            {
                OrganizationalUnitIdParameter contactRecipientContainer = this.ContactRecipientContainer;
                if (contactRecipientContainer != null)
                {
                    bool useConfigNC = this.ConfigurationSession.UseConfigNC;
                    this.ConfigurationSession.UseConfigNC = false;
                    ADConfigurationObject adconfigurationObject = (ADConfigurationObject)base.GetDataObject <ExchangeOrganizationalUnit>(contactRecipientContainer, this.ConfigurationSession, null, new LocalizedString?(Strings.ErrorOrganizationalUnitNotFound(this.ContactRecipientContainer.ToString())), new LocalizedString?(Strings.ErrorOrganizationalUnitNotUnique(this.ContactRecipientContainer.ToString())));
                    this.ConfigurationSession.UseConfigNC = useConfigNC;
                    if (!base.HasErrors)
                    {
                        umdialPlan.ContactAddressList = adconfigurationObject.Id;
                    }
                }
                else
                {
                    umdialPlan.ContactAddressList = null;
                }
            }
            if (base.Fields.IsModified("ContactAddressList"))
            {
                AddressListIdParameter contactAddressList = this.ContactAddressList;
                if (contactAddressList != null)
                {
                    IEnumerable <AddressBookBase> objects = contactAddressList.GetObjects <AddressBookBase>(null, this.ConfigurationSession);
                    using (IEnumerator <AddressBookBase> enumerator = objects.GetEnumerator())
                    {
                        if (enumerator.MoveNext())
                        {
                            umdialPlan.ContactAddressList = (ADObjectId)enumerator.Current.Identity;
                        }
                        goto IL_19C;
                    }
                }
                umdialPlan.ContactAddressList = null;
            }
IL_19C:
            if (umdialPlan.ContactScope != CallSomeoneScopeEnum.AddressList)
            {
                umdialPlan.ContactAddressList = null;
            }
            if (base.Fields.IsModified("UMAutoAttendant"))
            {
                UMAutoAttendantIdParameter umautoAttendant = this.UMAutoAttendant;
                if (umautoAttendant != null)
                {
                    UMAutoAttendant umautoAttendant2 = (UMAutoAttendant)base.GetDataObject <UMAutoAttendant>(umautoAttendant, this.ConfigurationSession, null, new LocalizedString?(Strings.NonExistantAutoAttendant(umautoAttendant.ToString())), new LocalizedString?(Strings.MultipleAutoAttendantsWithSameId(umautoAttendant.ToString())));
                    if (!base.HasErrors)
                    {
                        umdialPlan.UMAutoAttendant = umautoAttendant2.Id;
                    }
                }
                else
                {
                    umdialPlan.UMAutoAttendant = null;
                }
            }
            TaskLogger.LogExit();
            return(umdialPlan);
        }
        private void AssignDirectoryIdentity <TObject>(IIdentityParameter identityParameter, DirectoryObjectType objectType, LocalizedString notFoundErrorMsg, LocalizedString ambiguousObjErrorMsg) where TObject : ADConfigurationObject, new()
        {
            ADConfigurationObject adconfigurationObject = (ADConfigurationObject)base.GetDataObject <TObject>(identityParameter, this.ConfigurationSession, this.RootId, new LocalizedString?(notFoundErrorMsg), new LocalizedString?(ambiguousObjErrorMsg));

            this.objectIdentity = DirectoryIdentity.CreateFromADObjectId(adconfigurationObject.Id, objectType);
        }
Example #17
0
        protected override IConfigurable PrepareDataObject()
        {
            TaskLogger.LogEnter();
            UMAutoAttendant umautoAttendant = (UMAutoAttendant)base.PrepareDataObject();

            if (base.HasErrors)
            {
                return(null);
            }
            if (base.Fields.IsModified("ContactRecipientContainer") && base.Fields.IsModified("ContactAddressList"))
            {
                base.WriteError(new InvalidALParameterException(), ErrorCategory.NotSpecified, null);
                TaskLogger.LogExit();
                return(null);
            }
            if (base.Fields.IsModified("TimeZone") && base.Fields.IsModified("TimeZoneName"))
            {
                base.WriteError(new InvalidParameterException(Strings.InvalidTimeZoneParameters), ErrorCategory.NotSpecified, null);
            }
            if (base.Fields.IsModified("ContactRecipientContainer"))
            {
                OrganizationalUnitIdParameter contactRecipientContainer = this.ContactRecipientContainer;
                if (contactRecipientContainer != null)
                {
                    bool useConfigNC = this.ConfigurationSession.UseConfigNC;
                    this.ConfigurationSession.UseConfigNC = false;
                    ADConfigurationObject adconfigurationObject = (ADConfigurationObject)base.GetDataObject <ExchangeOrganizationalUnit>(contactRecipientContainer, this.ConfigurationSession, null, new LocalizedString?(Strings.ErrorOrganizationalUnitNotFound(this.ContactRecipientContainer.ToString())), new LocalizedString?(Strings.ErrorOrganizationalUnitNotUnique(this.ContactRecipientContainer.ToString())));
                    this.ConfigurationSession.UseConfigNC = useConfigNC;
                    if (!base.HasErrors)
                    {
                        umautoAttendant.ContactAddressList = adconfigurationObject.Id;
                    }
                }
                else
                {
                    umautoAttendant.ContactAddressList = null;
                }
            }
            if (base.Fields.IsModified("ContactAddressList"))
            {
                AddressListIdParameter contactAddressList = this.ContactAddressList;
                if (contactAddressList != null)
                {
                    IEnumerable <AddressBookBase> objects = contactAddressList.GetObjects <AddressBookBase>(null, this.ConfigurationSession);
                    using (IEnumerator <AddressBookBase> enumerator = objects.GetEnumerator())
                    {
                        if (enumerator.MoveNext())
                        {
                            umautoAttendant.ContactAddressList = (ADObjectId)enumerator.Current.Identity;
                        }
                        goto IL_193;
                    }
                }
                umautoAttendant.ContactAddressList = null;
            }
IL_193:
            if (base.Fields.IsModified("DTMFFallbackAutoAttendant"))
            {
                UMAutoAttendantIdParameter dtmffallbackAutoAttendant = this.DTMFFallbackAutoAttendant;
                if (dtmffallbackAutoAttendant != null)
                {
                    this.fallbackAA = (UMAutoAttendant)base.GetDataObject <UMAutoAttendant>(dtmffallbackAutoAttendant, this.ConfigurationSession, null, new LocalizedString?(Strings.NonExistantAutoAttendant(dtmffallbackAutoAttendant.ToString())), new LocalizedString?(Strings.MultipleAutoAttendantsWithSameId(dtmffallbackAutoAttendant.ToString())));
                    umautoAttendant.DTMFFallbackAutoAttendant = this.fallbackAA.Id;
                }
                else
                {
                    umautoAttendant.DTMFFallbackAutoAttendant = null;
                }
            }
            if (base.Fields.IsModified("DefaultMailbox"))
            {
                if (this.DefaultMailbox == null)
                {
                    umautoAttendant.DefaultMailbox         = null;
                    umautoAttendant.DefaultMailboxLegacyDN = null;
                }
                else
                {
                    IRecipientSession recipientSessionScopedToOrganization = Utility.GetRecipientSessionScopedToOrganization(umautoAttendant.OrganizationId, true);
                    LocalizedString   value = Strings.InvalidMailbox(this.DefaultMailbox.ToString(), "DefaultMailbox");
                    umautoAttendant.DefaultMailbox         = (ADUser)base.GetDataObject <ADUser>(this.DefaultMailbox, recipientSessionScopedToOrganization, null, null, new LocalizedString?(value), new LocalizedString?(value));
                    umautoAttendant.DefaultMailboxLegacyDN = umautoAttendant.DefaultMailbox.LegacyExchangeDN;
                }
            }
            if (!base.HasErrors)
            {
                if (base.Fields.IsModified("TimeZone"))
                {
                    umautoAttendant.TimeZone = this.TimeZone;
                }
                if (base.Fields.IsModified("TimeZoneName"))
                {
                    umautoAttendant.TimeZoneName = this.TimeZoneName;
                }
            }
            TaskLogger.LogExit();
            return(umautoAttendant);
        }
Example #18
0
        protected override void InternalProcessRecord()
        {
            TaskLogger.LogEnter();
            ADConfigurationObject config = null;
            string parameterSetName;

            if ((parameterSetName = base.ParameterSetName) != null)
            {
                if (parameterSetName == "UploadDialPlanPrompts" || parameterSetName == "UploadDialPlanPromptsStream")
                {
                    config = this.DataObject;
                    goto IL_7D;
                }
                if (parameterSetName == "UploadAutoAttendantPrompts" || parameterSetName == "UploadAutoAttendantPromptsStream")
                {
                    config = base.AutoAttendant;
                    goto IL_7D;
                }
            }
            ExAssert.RetailAssert(false, "Invalid parameter set {0}", new object[]
            {
                base.ParameterSetName
            });
            try
            {
IL_7D:
                ITempFile tempFile = null;
                string extension = Path.GetExtension(this.PromptFileName);
                if (string.Equals(extension, ".wav", StringComparison.OrdinalIgnoreCase))
                {
                    tempFile = TempFileFactory.CreateTempWavFile();
                }
                else
                {
                    if (!string.Equals(extension, ".wma", StringComparison.OrdinalIgnoreCase))
                    {
                        throw new InvalidFileNameException(128);
                    }
                    tempFile = TempFileFactory.CreateTempWmaFile();
                }
                using (tempFile)
                {
                    using (FileStream fileStream = new FileStream(tempFile.FilePath, FileMode.Create, FileAccess.Write))
                    {
                        if (this.PromptFileData != null)
                        {
                            fileStream.Write(this.PromptFileData, 0, this.PromptFileData.Length);
                        }
                        else
                        {
                            CommonUtil.CopyStream(this.PromptFileStream, fileStream);
                        }
                    }
                    using (IPublishingSession publishingSession = PublishingPoint.GetPublishingSession(Environment.UserName, config))
                    {
                        publishingSession.Upload(tempFile.FilePath, this.PromptFileName);
                    }
                }
            }
            catch (UnsupportedCustomGreetingSizeFormatException)
            {
                this.HandleOversizeAudioData();
            }
            catch (LocalizedException exception)
            {
                base.WriteError(exception, (ErrorCategory)1000, null);
            }
            catch (SystemException ex)
            {
                if (!this.HandleException(ex))
                {
                    throw;
                }
                base.WriteError(ex, (ErrorCategory)1000, null);
            }
            TaskLogger.LogExit();
        }