internal static ADOrganizationalUnit GetOUFromOrganizationId(OrganizationIdParameter organization, IConfigurationSession session, Task.TaskErrorLoggingDelegate errorLogger, bool reportError)
        {
            bool useConfigNC            = session.UseConfigNC;
            ADOrganizationalUnit result = null;

            try
            {
                session.UseConfigNC = false;
                IEnumerable <ADOrganizationalUnit> objects = organization.GetObjects <ADOrganizationalUnit>(null, session);
                using (IEnumerator <ADOrganizationalUnit> enumerator = objects.GetEnumerator())
                {
                    if (enumerator.MoveNext())
                    {
                        result = enumerator.Current;
                        if (reportError && enumerator.MoveNext())
                        {
                            errorLogger(new ManagementObjectAmbiguousException(Strings.ErrorOrganizationNotUnique(organization.ToString())), ErrorCategory.InvalidArgument, null);
                        }
                    }
                    else if (reportError)
                    {
                        errorLogger(new ManagementObjectNotFoundException(Strings.ErrorOrganizationNotFound(organization.ToString())), ErrorCategory.InvalidArgument, null);
                    }
                }
            }
            finally
            {
                session.UseConfigNC = useConfigNC;
            }
            return(result);
        }
 internal static OrganizationId ResolveOrganization(Task task, OrganizationIdParameter organization, ADObjectId rootOrgContainerId, LocalizedString cannotResolveOrganizationMessage)
 {
     if (organization != null)
     {
         ADSessionSettings     sessionSettings = ADSessionSettings.FromOrganizationIdWithoutRbacScopes(rootOrgContainerId, task.CurrentOrganizationId, task.ExecutingUserOrganizationId, true);
         IConfigurationSession tenantOrTopologyConfigurationSession = DirectorySessionFactory.Default.GetTenantOrTopologyConfigurationSession(ConsistencyMode.PartiallyConsistent, ADSessionSettings.RescopeToSubtree(sessionSettings), 371, "ResolveOrganization", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\Deployment\\OrganizationTaskHelper.cs");
         tenantOrTopologyConfigurationSession.UseConfigNC = false;
         ADOrganizationalUnit oufromOrganizationId = OrganizationTaskHelper.GetOUFromOrganizationId(organization, tenantOrTopologyConfigurationSession, new Task.TaskErrorLoggingDelegate(task.WriteError), true);
         if (oufromOrganizationId == null)
         {
             task.WriteError(new ArgumentException(cannotResolveOrganizationMessage), ErrorCategory.InvalidOperation, null);
             return(null);
         }
         return(oufromOrganizationId.OrganizationId);
     }
     else
     {
         if (task.CurrentOrganizationId == OrganizationId.ForestWideOrgId)
         {
             task.WriteError(new ArgumentException(cannotResolveOrganizationMessage), ErrorCategory.InvalidOperation, null);
             return(null);
         }
         return(task.CurrentOrganizationId);
     }
 }
Ejemplo n.º 3
0
        protected override IConfigDataProvider CreateSession()
        {
            OrganizationIdParameter organization = null;

            if (MapiTaskHelper.IsDatacenter)
            {
                organization = MapiTaskHelper.ResolveTargetOrganizationIdParameter(null, this.Identity, base.CurrentOrganizationId, new Task.ErrorLoggerDelegate(base.ThrowTerminatingError), new Task.TaskWarningLoggingDelegate(this.WriteWarning));
            }
            base.CurrentOrganizationId = MapiTaskHelper.ResolveTargetOrganization(base.DomainController, organization, ADSystemConfigurationSession.GetRootOrgContainerIdForLocalForest(), base.CurrentOrganizationId, base.ExecutingUserOrganizationId);
            if (this.publicFolderDataProvider == null || base.CurrentOrganizationId != this.publicFolderDataProvider.CurrentOrganizationId)
            {
                if (this.publicFolderDataProvider != null)
                {
                    this.publicFolderDataProvider.Dispose();
                    this.publicFolderDataProvider = null;
                }
                try
                {
                    this.publicFolderDataProvider = new PublicFolderDataProvider(this.ConfigurationSession, "Remove-PublicFolder", Guid.Empty);
                }
                catch (AccessDeniedException exception)
                {
                    base.WriteError(exception, ErrorCategory.PermissionDenied, this.Identity);
                }
            }
            return(this.publicFolderDataProvider);
        }
Ejemplo n.º 4
0
        internal static OrganizationId ResolveOrganization(OrganizationIdParameter organization, OrganizationId currentOrganizationId, OrganizationId executingUserOrganizationId)
        {
            if (organization == null)
            {
                return(null);
            }
            ADObjectId            rootOrgContainerIdForLocalForest = ADSystemConfigurationSession.GetRootOrgContainerIdForLocalForest();
            ADSessionSettings     sessionSettings = ADSessionSettings.FromOrganizationIdWithoutRbacScopes(rootOrgContainerIdForLocalForest, currentOrganizationId, executingUserOrganizationId, false);
            IConfigurationSession tenantOrTopologyConfigurationSession = DirectorySessionFactory.Default.GetTenantOrTopologyConfigurationSession(null, true, ConsistencyMode.PartiallyConsistent, null, sessionSettings, ConfigScopes.TenantSubTree, 48, "ResolveOrganization", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\FfoReporting\\Common\\ADHelper.cs");

            tenantOrTopologyConfigurationSession.UseConfigNC = false;
            ADOrganizationalUnit adorganizationalUnit  = null;
            LocalizedString?     localizedString       = null;
            IEnumerable <ADOrganizationalUnit> objects = organization.GetObjects <ADOrganizationalUnit>(null, tenantOrTopologyConfigurationSession, null, out localizedString);

            using (IEnumerator <ADOrganizationalUnit> enumerator = objects.GetEnumerator())
            {
                if (!enumerator.MoveNext())
                {
                    throw new ManagementObjectNotFoundException(Strings.ErrorOrganizationNotFound(organization.ToString()));
                }
                adorganizationalUnit = enumerator.Current;
                if (enumerator.MoveNext())
                {
                    throw new ManagementObjectAmbiguousException(Strings.ErrorOrganizationNotUnique(organization.ToString()));
                }
            }
            return(adorganizationalUnit.OrganizationId);
        }
Ejemplo n.º 5
0
        internal static void SetAuditConfigurationRule(Workload workload, OrganizationIdParameter organizationId, MultiValuedProperty <AuditableOperations> auditOpsToSet, out IEnumerable <ErrorRecord> pipelineErrors)
        {
            Guid guid;

            if (!AuditPolicyUtility.GetRuleGuidFromWorkload(workload, out guid))
            {
                pipelineErrors = new List <ErrorRecord>();
                return;
            }
            Command command = new Command("Get-AuditConfigurationRule");

            if (organizationId != null)
            {
                command.Parameters.Add("Organization", organizationId);
            }
            command.Parameters.Add("Identity", guid.ToString());
            Command command2 = new Command("Set-AuditConfigurationRule");

            command2.Parameters.Add("AuditOperation", auditOpsToSet);
            AuditConfigUtility.InvokeCommands(new List <Command>
            {
                command,
                command2
            }, out pipelineErrors);
        }
Ejemplo n.º 6
0
 public static void SetProperty(PswsCmdlet cmdlet, string propertyName, OrganizationIdParameter propertyValue)
 {
     if (propertyValue != null)
     {
         cmdlet.Parameters[propertyName] = propertyValue.ToString();
     }
 }
        internal static bool CanProceedWithOrganizationTask(OrganizationIdParameter orgIdParam, IConfigurationSession session, OrganizationStatus[] ignorableFlagsOnStatusTimeout, Task.TaskErrorLoggingDelegate errorLogger)
        {
            bool result = false;
            ExchangeConfigurationUnit exchangeConfigUnitFromOrganizationId = OrganizationTaskHelper.GetExchangeConfigUnitFromOrganizationId(orgIdParam, session, errorLogger, true);

            if (ExchangeConfigurationUnit.IsOrganizationActive(exchangeConfigUnitFromOrganizationId.OrganizationStatus))
            {
                result = true;
            }
            else
            {
                DateTime?whenOrganizationStatusSet = exchangeConfigUnitFromOrganizationId.WhenOrganizationStatusSet;
                if (whenOrganizationStatusSet != null)
                {
                    DateTime value = whenOrganizationStatusSet.Value.ToUniversalTime();
                    if (DateTime.UtcNow.Subtract(value) > OrganizationTaskHelper.organizationStatusTimeout && ignorableFlagsOnStatusTimeout != null)
                    {
                        foreach (OrganizationStatus organizationStatus in ignorableFlagsOnStatusTimeout)
                        {
                            if (organizationStatus == exchangeConfigUnitFromOrganizationId.OrganizationStatus)
                            {
                                result = true;
                                break;
                            }
                        }
                    }
                }
            }
            return(result);
        }
Ejemplo n.º 8
0
 protected override OrganizationId ResolveCurrentOrganization()
 {
     if (MapiTaskHelper.IsDatacenter)
     {
         OrganizationIdParameter organization = MapiTaskHelper.ResolveTargetOrganizationIdParameter(base.Organization, this.Identity, base.CurrentOrganizationId, new Task.ErrorLoggerDelegate(base.ThrowTerminatingError), new Task.TaskWarningLoggingDelegate(this.WriteWarning));
         return(MapiTaskHelper.ResolveTargetOrganization(base.DomainController, organization, ADSystemConfigurationSession.GetRootOrgContainerIdForLocalForest(), base.CurrentOrganizationId, base.ExecutingUserOrganizationId));
     }
     return(base.CurrentOrganizationId ?? base.ExecutingUserOrganizationId);
 }
Ejemplo n.º 9
0
            internal static string GetOrganizationName(OrganizationIdParameter organization)
            {
                string result = string.Empty;

                if (organization != null)
                {
                    result = ((organization.InternalADObjectId != null) ? organization.InternalADObjectId.Name : organization.RawIdentity);
                }
                return(result);
            }
Ejemplo n.º 10
0
 protected override void PopulateContextVariables()
 {
     base.PopulateContextVariables();
     if (this.exchangeConfigUnit != null)
     {
         base.Fields["OrganizationHierarchicalPath"] = OrganizationIdParameter.GetHierarchicalIdentityFromDN(this.tenantOU.DistinguishedName);
         base.Fields["RemoveObjectsChunkSize"]       = RegistryReader.Instance.GetValue <int>(Registry.LocalMachine, "SOFTWARE\\Microsoft\\ExchangeServer\\v15\\ProvisioningThrottling", "RemoveObjectsChunkSize", 100);
         base.Fields["RemoveObjectsChunkSleepTime"]  = RegistryReader.Instance.GetValue <int>(Registry.LocalMachine, "SOFTWARE\\Microsoft\\ExchangeServer\\v15\\ProvisioningThrottling", "RemoveObjectsChunkSleepTime", 10);
     }
 }
Ejemplo n.º 11
0
        private void OrganizationFromTask(object reportingObject, PropertyInfo property, object dalObject, object task)
        {
            Type type = task.GetType();
            OrganizationIdParameter organizationIdParameter = type.GetProperty(this.dalPropertyName).GetValue(task, null) as OrganizationIdParameter;

            if (organizationIdParameter != null)
            {
                string value = (organizationIdParameter.InternalADObjectId != null) ? organizationIdParameter.InternalADObjectId.Name : organizationIdParameter.RawIdentity;
                property.SetValue(reportingObject, value, null);
            }
        }
Ejemplo n.º 12
0
        protected override ADUser PrepareMailboxUser()
        {
            OrganizationIdParameter organization = null;

            if (MapiTaskHelper.IsDatacenter)
            {
                organization = MapiTaskHelper.ResolveTargetOrganizationIdParameter(null, this.Identity, base.CurrentOrganizationId, new Task.ErrorLoggerDelegate(base.ThrowTerminatingError), new Task.TaskWarningLoggingDelegate(this.WriteWarning));
            }
            base.CurrentOrganizationId = MapiTaskHelper.ResolveTargetOrganization(base.DomainController, organization, ADSystemConfigurationSession.GetRootOrgContainerIdForLocalForest(), base.CurrentOrganizationId, base.ExecutingUserOrganizationId);
            base.Identity = PublicFolderPermissionTaskHelper.GetMailboxFolderIdParameterForPublicFolder(this.ConfigurationSession, this.Identity, Guid.Empty, null, base.CurrentOrganizationId, new Task.ErrorLoggerDelegate(base.WriteError));
            return(base.PrepareMailboxUser());
        }
Ejemplo n.º 13
0
 public ExchangeTenantRecord(OrganizationIdParameter identity, SyncedPerimeterConfig config, IEnumerable <SyncedAcceptedDomain> acceptedDomains)
 {
     this.organization    = identity;
     this.perimeterConfig = config;
     this.acceptedDomains = new Dictionary <string, SyncedAcceptedDomain>();
     this.domains         = new List <DomainSyncRecord>();
     foreach (SyncedAcceptedDomain syncedAcceptedDomain in acceptedDomains)
     {
         DomainSyncRecord domainSyncRecord = new DomainSyncRecord(syncedAcceptedDomain);
         this.domains.Add(domainSyncRecord);
         this.acceptedDomains.Add(domainSyncRecord.Name, syncedAcceptedDomain);
     }
 }
 private void CheckRoleAssignmentDefinition(RoleAssignmentDefinition roleAssignment)
 {
     if (roleAssignment.UseSafeRole)
     {
         if (!Datacenter.IsMicrosoftHostedOnly(false))
         {
             Datacenter.IsDatacenterDedicated(false);
         }
         if (Datacenter.IsMicrosoftHostedOnly(false) || Datacenter.IsDatacenterDedicated(false))
         {
             OrganizationIdParameter organization = this.Organization;
         }
     }
 }
        protected override void PopulateContextVariables()
        {
            base.PopulateContextVariables();
            string distinguishedName = this.tenantCU.OrganizationId.OrganizationalUnit.DistinguishedName;

            base.Fields["OrganizationHierarchicalPath"]    = OrganizationIdParameter.GetHierarchicalIdentityFromDN(distinguishedName);
            base.Fields["TenantOrganizationDN"]            = distinguishedName;
            base.Fields["TenantDomainName"]                = this.tenantFQDN.DomainName.ToString();
            base.Fields["TenantOrganizationObjectVersion"] = this.tenantCU.ObjectVersion;
            base.Fields["TenantName"]          = this.tenantCU.OrganizationId.OrganizationalUnit.Name;
            base.Fields["IsCrossSKUMigration"] = this.IsCrossSKUMigration;
            base.Fields["IsBPOSLHydration"]    = (!this.newServicePlanSettings.Organization.CommonHydrateableObjectsSharedEnabled && this.oldServicePlanSettings.Organization.CommonHydrateableObjectsSharedEnabled);
            base.Fields["IsBPOSSHydration"]    = (!this.newServicePlanSettings.Organization.AdvancedHydrateableObjectsSharedEnabled && this.oldServicePlanSettings.Organization.AdvancedHydrateableObjectsSharedEnabled);
        }
Ejemplo n.º 16
0
 internal void ValidateOrganization(PropertyInfo property, object task)
 {
     if (!(property.GetValue(task, null) is OrganizationIdParameter))
     {
         Type           type           = task.GetType();
         OrganizationId organizationId = type.GetProperty("CurrentOrganizationId", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).GetValue(task, null) as OrganizationId;
         if (organizationId == null || organizationId.OrganizationalUnit == null)
         {
             this.ThrowError(property);
         }
         OrganizationIdParameter value = new OrganizationIdParameter(organizationId.OrganizationalUnit.Name);
         property.SetValue(task, value, null);
     }
 }
Ejemplo n.º 17
0
        private static bool TryGetEdgeSyncDiffRecord(OrganizationIdParameter organization, SyncedPerimeterConfig perimeterConfig, IList <string> exchangeIpAddresses, IList <string> ehfIpAddresses, string label, out EhfSyncDiffRecord <IList <string> > ehfSyncDiffRecord)
        {
            ehfSyncDiffRecord = null;
            IList <string> list = exchangeIpAddresses.Intersect(ehfIpAddresses).ToList <string>();

            if (list.Count != exchangeIpAddresses.Count || exchangeIpAddresses.Count != ehfIpAddresses.Count)
            {
                IList <string> expectedObject = exchangeIpAddresses.Except(ehfIpAddresses).ToList <string>();
                IList <string> actualObject   = ehfIpAddresses.Except(exchangeIpAddresses).ToList <string>();
                ehfSyncDiffRecord = new EhfSyncDiffRecord <IList <string> >(organization.RawIdentity, perimeterConfig.Identity, EhfSyncObjectType.PerimeterConfig, label, expectedObject, actualObject, list, perimeterConfig.SyncErrors);
                return(true);
            }
            return(false);
        }
 protected override void PopulateContextVariables()
 {
     base.PopulateContextVariables();
     if (this.tenantCU != null)
     {
         string distinguishedName = this.tenantCU.OrganizationId.OrganizationalUnit.DistinguishedName;
         base.Fields["TenantOrganizationDN"]            = distinguishedName;
         base.Fields["OrganizationHierarchicalPath"]    = OrganizationIdParameter.GetHierarchicalIdentityFromDN(distinguishedName);
         base.Fields["TenantOrganizationObjectVersion"] = this.tenantCU.ObjectVersion;
         base.Fields["TenantDomainName"] = this.tenantFQDN.DomainName.ToString();
         base.Fields["TenantExternalDirectoryOrganizationId"] = this.tenantCU.ExternalDirectoryOrganizationId;
         base.Fields["Partition"] = ADAccountPartitionLocator.GetAccountPartitionGuidByPartitionId(new PartitionId(this.tenantCU.Id));
     }
 }
Ejemplo n.º 19
0
        internal static OrganizationId ResolveOrganizationId(OrganizationIdParameter tenantId)
        {
            if (tenantId == null)
            {
                throw new ArgumentNullException("tenantId");
            }
            IConfigurationSession tenantOrTopologyConfigurationSession = DirectorySessionFactory.Default.GetTenantOrTopologyConfigurationSession(true, ConsistencyMode.IgnoreInvalid, ADSessionSettings.FromRootOrgScopeSet(), 146, "ResolveOrganizationId", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\CompliancePolicy\\DarTasks\\GetDarTask.cs");

            tenantOrTopologyConfigurationSession.UseConfigNC = false;
            ADOrganizationalUnit adorganizationalUnit = tenantId.GetObjects <ADOrganizationalUnit>(null, tenantOrTopologyConfigurationSession).FirstOrDefault <ADOrganizationalUnit>();

            if (adorganizationalUnit == null)
            {
                throw new ArgumentException(Strings.ErrorOrganizationNotFound(tenantId.ToString()));
            }
            return(adorganizationalUnit.OrganizationId);
        }
Ejemplo n.º 20
0
        protected sealed override IConfigDataProvider CreateSession()
        {
            OrganizationIdParameter organization = null;

            if (MapiTaskHelper.IsDatacenter)
            {
                organization = MapiTaskHelper.ResolveTargetOrganizationIdParameter(this.Organization, this.Identity, base.CurrentOrganizationId, new Task.ErrorLoggerDelegate(base.ThrowTerminatingError), new Task.TaskWarningLoggingDelegate(this.WriteWarning));
            }
            base.CurrentOrganizationId = MapiTaskHelper.ResolveTargetOrganization(base.DomainController, organization, base.RootOrgContainerId, base.CurrentOrganizationId, base.ExecutingUserOrganizationId);
            this.rootId = null;
            if ((this.Recurse.IsPresent || this.GetChildren.IsPresent) && this.Identity != null)
            {
                this.rootId   = this.Identity.PublicFolderId;
                this.Identity = null;
            }
            if (this.publicFolderDataProvider == null || base.CurrentOrganizationId != this.publicFolderDataProvider.CurrentOrganizationId)
            {
                if (this.publicFolderDataProvider != null)
                {
                    this.publicFolderDataProvider.Dispose();
                    this.publicFolderDataProvider = null;
                }
                Guid mailboxGuid = Guid.Empty;
                if (base.Fields.IsModified("Mailbox"))
                {
                    ADUser aduser = (ADUser)base.GetDataObject <ADUser>(this.Mailbox, base.TenantGlobalCatalogSession, null, new LocalizedString?(Strings.ErrorMailboxAddressNotFound(this.Mailbox.ToString())), new LocalizedString?(Strings.ErrorMailboxAddressNotFound(this.Mailbox.ToString())), ExchangeErrorCategory.Client);
                    this.VerifyIsPublicFolderMailbox(aduser);
                    mailboxGuid = aduser.ExchangeGuid;
                }
                try
                {
                    this.publicFolderDataProvider = new PublicFolderDataProvider(this.ConfigurationSession, "Get-PublicFolder", mailboxGuid);
                }
                catch (AccessDeniedException exception)
                {
                    base.WriteError(exception, ErrorCategory.PermissionDenied, this.Identity);
                }
            }
            if (this.ResidentFolders.IsPresent)
            {
                this.contentMailboxGuid = this.publicFolderDataProvider.PublicFolderSession.MailboxGuid;
                this.inputFilter        = new ComparisonFilter(ComparisonOperator.Equal, FolderSchema.ReplicaListBinary, this.contentMailboxGuid.ToByteArray());
            }
            return(this.publicFolderDataProvider);
        }
Ejemplo n.º 21
0
        protected override IConfigDataProvider CreateSession()
        {
            OrganizationIdParameter organization = null;

            if (MapiTaskHelper.IsDatacenter)
            {
                organization = MapiTaskHelper.ResolveTargetOrganizationIdParameter(null, this.Identity, base.CurrentOrganizationId, new Task.ErrorLoggerDelegate(base.ThrowTerminatingError), new Task.TaskWarningLoggingDelegate(this.WriteWarning));
            }
            base.CurrentOrganizationId = MapiTaskHelper.ResolveTargetOrganization(base.DomainController, organization, ADSystemConfigurationSession.GetRootOrgContainerIdForLocalForest(), base.CurrentOrganizationId, base.ExecutingUserOrganizationId);
            if (this.publicFolderDataProvider == null || base.CurrentOrganizationId != this.publicFolderDataProvider.CurrentOrganizationId)
            {
                if (this.OverrideContentMailbox != null)
                {
                    IRecipientSession tenantOrRootOrgRecipientSession = DirectorySessionFactory.Default.GetTenantOrRootOrgRecipientSession(base.DomainController, true, ConsistencyMode.PartiallyConsistent, null, base.SessionSettings, 337, "CreateSession", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\MapiTasks\\PublicFolder\\SetPublicFolder.cs");
                    ADUser            aduser = (ADUser)base.GetDataObject <ADUser>(this.OverrideContentMailbox, tenantOrRootOrgRecipientSession, null, new LocalizedString?(Strings.ErrorMailboxNotFound(this.OverrideContentMailbox.ToString())), new LocalizedString?(Strings.ErrorMailboxNotUnique(this.OverrideContentMailbox.ToString())));
                    if (aduser == null || aduser.RecipientTypeDetails != RecipientTypeDetails.PublicFolderMailbox)
                    {
                        base.WriteError(new RecipientTaskException(Strings.ErrorInvalidContentMailbox(this.OverrideContentMailbox.ToString())), ErrorCategory.InvalidArgument, aduser);
                    }
                    if (TenantPublicFolderConfigurationCache.Instance.GetValue(base.CurrentOrganizationId).GetLocalMailboxRecipient(aduser.ExchangeGuid) == null)
                    {
                        TenantPublicFolderConfigurationCache.Instance.RemoveValue(base.CurrentOrganizationId);
                    }
                    this.contentMailboxGuid = aduser.ExchangeGuid;
                }
                if (this.publicFolderDataProvider != null)
                {
                    this.publicFolderDataProvider.Dispose();
                    this.publicFolderDataProvider = null;
                }
                try
                {
                    this.publicFolderDataProvider = new PublicFolderDataProvider(this.ConfigurationSession, "Set-PublicFolder", Guid.Empty);
                }
                catch (AccessDeniedException exception)
                {
                    base.WriteError(exception, ErrorCategory.PermissionDenied, this.Identity);
                }
            }
            return(this.publicFolderDataProvider);
        }
        internal static OrganizationStatus SetOrganizationStatus(OrganizationIdParameter orgIdParam, IConfigurationSession session, OrganizationStatus statusToSet, Task.TaskErrorLoggingDelegate errorLogger)
        {
            ExchangeConfigurationUnit exchangeConfigUnitFromOrganizationId = OrganizationTaskHelper.GetExchangeConfigUnitFromOrganizationId(orgIdParam, session, errorLogger, true);
            OrganizationStatus        organizationStatus = exchangeConfigUnitFromOrganizationId.OrganizationStatus;

            if (statusToSet != organizationStatus)
            {
                bool useConfigNC = session.UseConfigNC;
                try
                {
                    session.UseConfigNC = true;
                    exchangeConfigUnitFromOrganizationId.OrganizationStatus = statusToSet;
                    session.Save(exchangeConfigUnitFromOrganizationId);
                }
                finally
                {
                    session.UseConfigNC = useConfigNC;
                }
            }
            return(organizationStatus);
        }
Ejemplo n.º 23
0
        internal static OWAExtensionDataProvider CreateOwaExtensionDataProvider(OrganizationIdParameter organizationIdParameter, IRecipientSession tenantGlobalCatalogSession, ADSessionSettings sessionSettings, bool isUserScope, ADUser adUser, string taskName, bool isDebugOn, Task.ErrorLoggerDelegate writeErrorDelegate)
        {
            OWAExtensionDataProvider result = null;
            LocalizedException       ex     = null;

            try
            {
                result = new OWAExtensionDataProvider((organizationIdParameter == null) ? null : organizationIdParameter.RawIdentity, tenantGlobalCatalogSession, sessionSettings, isUserScope, adUser, taskName, isDebugOn);
            }
            catch (StorageTransientException ex2)
            {
                ex = ex2;
            }
            catch (StoragePermanentException ex3)
            {
                ex = ex3;
            }
            if (ex != null)
            {
                writeErrorDelegate(ex, ExchangeErrorCategory.Client, adUser.Identity);
            }
            return(result);
        }
Ejemplo n.º 24
0
        protected override ADUser PrepareMailboxUser()
        {
            OrganizationIdParameter organization = null;
            ADUser aduser = null;
            Guid   publicFolderMailboxGuid = Guid.Empty;

            if (MapiTaskHelper.IsDatacenter)
            {
                organization = MapiTaskHelper.ResolveTargetOrganizationIdParameter(null, this.Identity, base.CurrentOrganizationId, new Task.ErrorLoggerDelegate(base.ThrowTerminatingError), new Task.TaskWarningLoggingDelegate(this.WriteWarning));
            }
            base.CurrentOrganizationId = MapiTaskHelper.ResolveTargetOrganization(base.DomainController, organization, ADSystemConfigurationSession.GetRootOrgContainerIdForLocalForest(), base.CurrentOrganizationId, base.ExecutingUserOrganizationId);
            if (base.Fields.IsModified("Mailbox"))
            {
                aduser = (ADUser)base.GetDataObject <ADUser>(this.Mailbox, base.TenantGlobalCatalogSession, null, new LocalizedString?(Strings.ErrorMailboxAddressNotFound(this.Mailbox.ToString())), new LocalizedString?(Strings.ErrorMailboxAddressNotFound(this.Mailbox.ToString())), ExchangeErrorCategory.Client);
                if (aduser == null || aduser.RecipientTypeDetails != RecipientTypeDetails.PublicFolderMailbox)
                {
                    base.WriteError(new ObjectNotFoundException(Strings.PublicFolderMailboxNotFound), ExchangeErrorCategory.Client, aduser);
                }
                publicFolderMailboxGuid = aduser.ExchangeGuid;
            }
            base.Identity = PublicFolderPermissionTaskHelper.GetMailboxFolderIdParameterForPublicFolder(this.ConfigurationSession, this.Identity, publicFolderMailboxGuid, aduser, base.CurrentOrganizationId, new Task.ErrorLoggerDelegate(base.WriteError));
            return(base.PrepareMailboxUser());
        }
Ejemplo n.º 25
0
        protected sealed override IConfigDataProvider CreateSession()
        {
            OrganizationIdParameter organization = null;

            if (MapiTaskHelper.IsDatacenter)
            {
                organization = MapiTaskHelper.ResolveTargetOrganizationIdParameter(this.Organization, this.Identity, base.CurrentOrganizationId, new Task.ErrorLoggerDelegate(base.ThrowTerminatingError), new Task.TaskWarningLoggingDelegate(this.WriteWarning));
            }
            base.CurrentOrganizationId = MapiTaskHelper.ResolveTargetOrganization(base.DomainController, organization, ADSystemConfigurationSession.GetRootOrgContainerIdForLocalForest(), base.CurrentOrganizationId, base.ExecutingUserOrganizationId);
            if (this.publicFolderStatisticsDataProvider == null || base.CurrentOrganizationId != this.publicFolderStatisticsDataProvider.CurrentOrganizationId)
            {
                if (this.publicFolderStatisticsDataProvider != null)
                {
                    this.publicFolderStatisticsDataProvider.Dispose();
                    this.publicFolderStatisticsDataProvider = null;
                }
                Guid mailboxGuid = Guid.Empty;
                if (base.Fields.IsModified("MailboxInformation"))
                {
                    ADUser aduser = (ADUser)base.GetDataObject <ADUser>(this.Mailbox, base.TenantGlobalCatalogSession, null, new LocalizedString?(Strings.ErrorMailboxAddressNotFound(this.Mailbox.ToString())), new LocalizedString?(Strings.ErrorMailboxAddressNotFound(this.Mailbox.ToString())), ExchangeErrorCategory.Client);
                    if (aduser == null || aduser.RecipientTypeDetails != RecipientTypeDetails.PublicFolderMailbox)
                    {
                        base.WriteError(new ObjectNotFoundException(Strings.PublicFolderMailboxNotFound), ExchangeErrorCategory.Client, aduser);
                    }
                    mailboxGuid = aduser.ExchangeGuid;
                }
                try
                {
                    this.publicFolderStatisticsDataProvider = new PublicFolderStatisticsDataProvider(this.ConfigurationSession, "Get-PublicFolderStatistics", mailboxGuid);
                }
                catch (AccessDeniedException exception)
                {
                    base.WriteError(exception, ErrorCategory.PermissionDenied, this.Identity);
                }
            }
            return(this.publicFolderStatisticsDataProvider);
        }
Ejemplo n.º 26
0
        protected override ADServerSettings GetCmdletADServerSettings()
        {
            PropertyBag             fields                  = base.CurrentTaskContext.InvocationInfo.Fields;
            SwitchParameter         switchParameter         = fields.Contains("IsDatacenter") ? ((SwitchParameter)fields["IsDatacenter"]) : new SwitchParameter(false);
            bool                    flag                    = fields.Contains("DomainController");
            OrganizationIdParameter organizationIdParameter = (OrganizationIdParameter)fields["PrimaryOrganization"];
            PartitionId             partitionId             = (organizationIdParameter != null) ? ADAccountPartitionLocator.GetPartitionIdByAcceptedDomainName(organizationIdParameter.RawIdentity) : null;
            string                  value                   = null;
            ADServerSettings        serverSettings          = ExchangePropertyContainer.GetServerSettings(base.CurrentTaskContext.SessionState);

            if (serverSettings != null && partitionId != null)
            {
                value = serverSettings.PreferredGlobalCatalog(partitionId.ForestFQDN);
            }
            if (switchParameter && organizationIdParameter != null && string.IsNullOrEmpty(value) && partitionId != null && !flag)
            {
                if (this.domainBasedADServerSettings == null)
                {
                    this.domainBasedADServerSettings = RunspaceServerSettings.CreateGcOnlyRunspaceServerSettings(organizationIdParameter.RawIdentity.ToLowerInvariant(), partitionId.ForestFQDN, false);
                }
                return(this.domainBasedADServerSettings);
            }
            return(base.GetCmdletADServerSettings());
        }
Ejemplo n.º 27
0
 internal static void CalculateRoleConfigurationForCurrentSKU(OrganizationIdParameter organization, out RoleDefinition[] roles, out RoleNameMappingCollection nameMapping, out string[] rolesToRemove, out RoleEntry[] allAllowedRoleEntriesForSKU)
 {
     InstallCannedRbacRoles.CalculateRoleConfigurationForCurrentSKU(organization, null, out roles, out nameMapping, out rolesToRemove, out allAllowedRoleEntriesForSKU);
 }
Ejemplo n.º 28
0
 protected override void InternalProcessRecord()
 {
     TaskLogger.LogEnter();
     try
     {
         if (base.ParameterSetName.Equals("Identity"))
         {
             TIdentity identity = this.Identity;
             if (identity.OrganizationId != null)
             {
                 IDirectorySession dataSession = this.recipSession;
                 TIdentity         identity2   = this.Identity;
                 if (TaskHelper.ShouldUnderscopeDataSessionToOrganization(dataSession, identity2.OrganizationId))
                 {
                     IDirectorySession session   = this.recipSession;
                     TIdentity         identity3 = this.Identity;
                     this.recipSession = (IRecipientSession)TaskHelper.UnderscopeSessionToOrganization(session, identity3.OrganizationId, true);
                 }
                 IDirectorySession dataSession2 = this.currentOrgConfigSession;
                 TIdentity         identity4    = this.Identity;
                 if (TaskHelper.ShouldUnderscopeDataSessionToOrganization(dataSession2, identity4.OrganizationId))
                 {
                     IDirectorySession session2  = this.currentOrgConfigSession;
                     TIdentity         identity5 = this.Identity;
                     this.currentOrgConfigSession = (ITenantConfigurationSession)TaskHelper.UnderscopeSessionToOrganization(session2, identity5.OrganizationId, true);
                     this.rjProvider.IndexProvider.ConfigSession = this.currentOrgConfigSession;
                 }
             }
             ADUser    aduser    = null;
             TIdentity identity6 = this.Identity;
             if (!string.IsNullOrEmpty(identity6.MailboxName))
             {
                 IRecipientSession dataSession3         = this.recipSession;
                 IRecipientSession globalCatalogSession = this.gcSession;
                 ADServerSettings  serverSettings       = base.ServerSettings;
                 TIdentity         identity7            = this.Identity;
                 aduser = RequestTaskHelper.ResolveADUser(dataSession3, globalCatalogSession, serverSettings, new MailboxOrMailUserIdParameter(identity7.MailboxName), base.OptionalIdentityData, this.DomainController, new DataAccessHelper.CategorizedGetDataObjectDelegate(base.GetDataObject <ADUser>), new Task.TaskVerboseLoggingDelegate(base.WriteVerbose), new Task.ErrorLoggerDelegate(base.WriteError), false);
                 if (aduser != null)
                 {
                     TIdentity identity8 = this.Identity;
                     identity8.MailboxId = aduser.Id;
                     if (TaskHelper.ShouldUnderscopeDataSessionToOrganization(this.recipSession, aduser))
                     {
                         this.recipSession = (IRecipientSession)TaskHelper.UnderscopeSessionToOrganization(this.recipSession, aduser.OrganizationId, true);
                     }
                     if (TaskHelper.ShouldUnderscopeDataSessionToOrganization(this.currentOrgConfigSession, aduser))
                     {
                         this.currentOrgConfigSession = (ITenantConfigurationSession)TaskHelper.UnderscopeSessionToOrganization(this.currentOrgConfigSession, aduser.OrganizationId, true);
                         this.rjProvider.IndexProvider.ConfigSession = this.currentOrgConfigSession;
                     }
                 }
             }
             TIdentity identity9 = this.Identity;
             if (!string.IsNullOrEmpty(identity9.OrganizationName))
             {
                 IConfigurationSession configurationSession = RequestTaskHelper.CreateOrganizationFindingSession(base.CurrentOrganizationId, base.ExecutingUserOrganizationId);
                 TIdentity             identity10           = this.Identity;
                 IIdentityParameter    id                  = new OrganizationIdParameter(identity10.OrganizationName);
                 IConfigDataProvider   session3            = configurationSession;
                 ObjectId             rootID               = null;
                 TIdentity            identity11           = this.Identity;
                 LocalizedString?     notFoundError        = new LocalizedString?(Strings.ErrorOrganizationNotFound(identity11.OrganizationName));
                 TIdentity            identity12           = this.Identity;
                 ADOrganizationalUnit adorganizationalUnit = (ADOrganizationalUnit)base.GetDataObject <ADOrganizationalUnit>(id, session3, rootID, notFoundError, new LocalizedString?(Strings.ErrorOrganizationNotUnique(identity12.OrganizationName)));
                 if (TaskHelper.ShouldUnderscopeDataSessionToOrganization(this.recipSession, adorganizationalUnit))
                 {
                     this.recipSession = (IRecipientSession)TaskHelper.UnderscopeSessionToOrganization(this.recipSession, adorganizationalUnit.OrganizationId, true);
                 }
                 if (TaskHelper.ShouldUnderscopeDataSessionToOrganization(this.currentOrgConfigSession, adorganizationalUnit))
                 {
                     this.currentOrgConfigSession = (ITenantConfigurationSession)TaskHelper.UnderscopeSessionToOrganization(this.currentOrgConfigSession, adorganizationalUnit.OrganizationId, true);
                     this.rjProvider.IndexProvider.ConfigSession = this.currentOrgConfigSession;
                 }
             }
             TIdentity identity13 = this.Identity;
             identity13.SetDefaultIndex(this.DefaultRequestIndexId);
             IRequestIndexEntry entry        = this.GetEntry();
             RequestJobObjectId requestJobId = entry.GetRequestJobId();
             if (entry.TargetUserId != null)
             {
                 if (aduser != null && aduser.Id.Equals(entry.TargetUserId))
                 {
                     requestJobId.TargetUser = aduser;
                 }
                 else
                 {
                     requestJobId.TargetUser = RequestTaskHelper.ResolveADUser(this.recipSession, this.gcSession, base.ServerSettings, new MailboxOrMailUserIdParameter(entry.TargetUserId), base.OptionalIdentityData, this.DomainController, new DataAccessHelper.CategorizedGetDataObjectDelegate(base.GetDataObject <ADUser>), new Task.TaskVerboseLoggingDelegate(base.WriteVerbose), new Task.ErrorLoggerDelegate(base.WriteError), false);
                 }
             }
             if (entry.SourceUserId != null)
             {
                 if (aduser != null && aduser.Id.Equals(entry.SourceUserId))
                 {
                     requestJobId.SourceUser = aduser;
                 }
                 else
                 {
                     requestJobId.SourceUser = RequestTaskHelper.ResolveADUser(this.recipSession, this.gcSession, base.ServerSettings, new MailboxOrMailUserIdParameter(entry.SourceUserId), base.OptionalIdentityData, this.DomainController, new DataAccessHelper.CategorizedGetDataObjectDelegate(base.GetDataObject <ADUser>), new Task.TaskVerboseLoggingDelegate(base.WriteVerbose), new Task.ErrorLoggerDelegate(base.WriteError), false);
                 }
             }
             this.CheckIndexEntry(entry);
             TDataObject tdataObject = (TDataObject)((object)this.rjProvider.Read <TDataObject>(requestJobId));
             if (tdataObject == null || tdataObject.Status == RequestStatus.None)
             {
                 TIdentity identity14 = this.Identity;
                 base.WriteError(new ManagementObjectNotFoundException(Strings.ErrorCouldNotFindRequest(identity14.ToString())), ErrorCategory.InvalidArgument, this.Identity);
             }
             else if (tdataObject.RequestType != this.RequestType)
             {
                 base.WriteError(new ManagementObjectNotFoundException(Strings.ErrorNotEnoughInformationToFindRequest), ErrorCategory.InvalidArgument, this.Identity);
             }
             else
             {
                 this.WriteResult(tdataObject);
             }
         }
         else if (base.ParameterSetName.Equals("MigrationRequestQueue"))
         {
             if (this.RequestQueue != null)
             {
                 MailboxDatabase mailboxDatabase = (MailboxDatabase)base.GetDataObject <MailboxDatabase>(this.RequestQueue, this.configSession, null, new LocalizedString?(Strings.ErrorMailboxDatabaseNotFound(this.RequestQueue.ToString())), new LocalizedString?(Strings.ErrorMailboxDatabaseNotUnique(this.RequestQueue.ToString())));
                 this.fromMdb = mailboxDatabase.Id;
             }
             this.rjProvider.AllowInvalid = true;
             base.InternalProcessRecord();
         }
     }
     finally
     {
         TaskLogger.LogExit();
     }
 }
Ejemplo n.º 29
0
 internal static void CalculateRoleConfigurationForCurrentSKU(OrganizationIdParameter organization, ServicePlan servicePlanSettings, out RoleDefinition[] roles, out RoleNameMappingCollection nameMapping, out string[] rolesToRemove, out RoleEntry[] allAllowedRoleEntriesForSKU)
 {
     if (InstallCannedRbacRoles.isFfoEnvironment)
     {
         roles         = InstallCannedRbacRoles.MergeRoleDefinitions(CannedEOPRoles_Datacenter.Definition, CannedWebServiceRoles_Datacenter.Definition);
         roles         = InstallCannedRbacRoles.MergeRoleDefinitions(roles, CannedUCCRoles_Datacenter.Definition);
         nameMapping   = InstallCannedRbacObjectsTaskBase.RoleNameMappingDatacenterR4;
         rolesToRemove = InstallCannedRbacObjectsTaskBase.ObsoleteRoleNamesDatacenter;
         allAllowedRoleEntriesForSKU = InstallCannedRbacRoles.MergeRoleEntries(AvailableEOPRoleEntries_Datacenter.RoleEntries, AvailableWebServiceRoleEntries_Datacenter.RoleEntries, AvailableUCCRoleEntries_Datacenter.RoleEntries);
         return;
     }
     if (organization == null)
     {
         if (Datacenter.IsMicrosoftHostedOnly(false))
         {
             roles         = InstallCannedRbacRoles.MergeRoleDefinitions(CannedRoles_Datacenter.Definition, CannedWebServiceRoles_Datacenter.Definition);
             nameMapping   = InstallCannedRbacObjectsTaskBase.RoleNameMappingDatacenterR4;
             rolesToRemove = InstallCannedRbacObjectsTaskBase.ObsoleteRoleNamesDatacenter;
             allAllowedRoleEntriesForSKU = InstallCannedRbacRoles.MergeRoleEntries(AvailableRoleEntries_Datacenter.RoleEntries, AvailableWebServiceRoleEntries_Datacenter.RoleEntries, null);
             return;
         }
         if (Datacenter.IsPartnerHostedOnly(false))
         {
             roles         = InstallCannedRbacRoles.MergeRoleDefinitions(CannedRoles_Hosting.Definition, CannedWebServiceRoles_Hosting.Definition);
             nameMapping   = InstallCannedRbacObjectsTaskBase.RoleNameMappingHostingR4;
             rolesToRemove = InstallCannedRbacObjectsTaskBase.ObsoleteRoleNamesHosting;
             allAllowedRoleEntriesForSKU = InstallCannedRbacRoles.MergeRoleEntries(AvailableRoleEntries_Hosting.RoleEntries, AvailableWebServiceRoleEntries_Hosting.RoleEntries, null);
             return;
         }
         if (Datacenter.IsDatacenterDedicated(false))
         {
             roles         = InstallCannedRbacRoles.MergeRoleDefinitions(CannedRoles_Dedicated.Definition, CannedWebServiceRoles_Dedicated.Definition);
             nameMapping   = InstallCannedRbacObjectsTaskBase.RoleNameMappingEnterpriseR4;
             rolesToRemove = InstallCannedRbacObjectsTaskBase.ObsoleteRoleNamesEnterprise;
             allAllowedRoleEntriesForSKU = InstallCannedRbacRoles.MergeRoleEntries(AvailableRoleEntries_Dedicated.RoleEntries, AvailableWebServiceRoleEntries_Dedicated.RoleEntries, null);
             return;
         }
         roles         = InstallCannedRbacRoles.MergeRoleDefinitions(CannedRoles_Enterprise.Definition, CannedWebServiceRoles_Enterprise.Definition);
         nameMapping   = InstallCannedRbacObjectsTaskBase.RoleNameMappingEnterpriseR4;
         rolesToRemove = InstallCannedRbacObjectsTaskBase.ObsoleteRoleNamesEnterprise;
         allAllowedRoleEntriesForSKU = InstallCannedRbacRoles.MergeRoleEntries(AvailableRoleEntries_Enterprise.RoleEntries, AvailableWebServiceRoleEntries_Enterprise.RoleEntries, null);
         return;
     }
     else
     {
         if (Datacenter.IsPartnerHostedOnly(false))
         {
             roles         = InstallCannedRbacRoles.MergeRoleDefinitions(CannedRoles_HostedTenant.Definition, CannedWebServiceRoles_HostedTenant.Definition);
             rolesToRemove = InstallCannedRbacObjectsTaskBase.ObsoleteRoleNamesHostedTenant;
             if (servicePlanSettings != null)
             {
                 List <string>          enabledRoleGroupRoleAssignmentFeatures = servicePlanSettings.Organization.GetEnabledRoleGroupRoleAssignmentFeatures();
                 RoleGroupRoleMapping[] definition = HostedTenant_RoleGroupDefinition.Definition;
                 List <string>          a;
                 roles         = InstallCannedRbacRoles.FilterOrgRolesByRoleGroupFilters(roles, enabledRoleGroupRoleAssignmentFeatures, definition, out a);
                 rolesToRemove = InstallCannedRbacRoles.AppendIListToarray <string>(rolesToRemove, a);
             }
             nameMapping = InstallCannedRbacObjectsTaskBase.RoleNameMappingHostedTenantR4;
             allAllowedRoleEntriesForSKU = InstallCannedRbacRoles.MergeRoleEntries(AvailableRoleEntries_HostedTenant.RoleEntries, AvailableWebServiceRoleEntries_HostedTenant.RoleEntries, null);
             return;
         }
         roles         = InstallCannedRbacRoles.MergeRoleDefinitions(CannedRoles_Tenant.Definition, CannedWebServiceRoles_Tenant.Definition);
         rolesToRemove = InstallCannedRbacObjectsTaskBase.ObsoleteRoleNamesTenant;
         if (servicePlanSettings != null)
         {
             List <string>          enabledRoleGroupRoleAssignmentFeatures2 = servicePlanSettings.Organization.GetEnabledRoleGroupRoleAssignmentFeatures();
             RoleGroupRoleMapping[] definition2 = Tenant_RoleGroupDefinition.Definition;
             List <string>          a2;
             roles         = InstallCannedRbacRoles.FilterOrgRolesByRoleGroupFilters(roles, enabledRoleGroupRoleAssignmentFeatures2, definition2, out a2);
             rolesToRemove = InstallCannedRbacRoles.AppendIListToarray <string>(rolesToRemove, a2);
         }
         nameMapping = InstallCannedRbacObjectsTaskBase.RoleNameMappingTenantR4;
         allAllowedRoleEntriesForSKU = InstallCannedRbacRoles.MergeRoleEntries(AvailableRoleEntries_Tenant.RoleEntries, AvailableWebServiceRoleEntries_Tenant.RoleEntries, null);
         return;
     }
 }
Ejemplo n.º 30
0
        internal static Guid GetExternalDirectoryOrganizationId(OrganizationIdParameter organization, OrganizationId currentOrganizationId, OrganizationId executingUserOrganizationId)
        {
            OrganizationId organizationId = ADHelper.ResolveOrganization(organization, currentOrganizationId, executingUserOrganizationId);

            return(ADHelper.GetExternalDirectoryOrganizationId(organizationId));
        }