protected OrganizationId GetOrganizationId(OrganizationId currentOrgId, ADObjectId id) { if (OrganizationId.ForestWideOrgId.Equals(currentOrgId) && id != null) { if (id.Parent != null && TemplateTenantConfiguration.IsTemplateTenantName(id.Parent.Name) && TemplateTenantConfiguration.GetLocalTemplateTenant() != null) { return(TemplateTenantConfiguration.GetLocalTemplateTenant().OrganizationId); } IConfigurationSession tenantOrTopologyConfigurationSession = DirectorySessionFactory.Default.GetTenantOrTopologyConfigurationSession(ConsistencyMode.PartiallyConsistent, ADSessionSettings.FromAllTenantsOrRootOrgAutoDetect(id), 350, "GetOrganizationId", "f:\\15.00.1497\\sources\\dev\\Configuration\\src\\ObjectModel\\BaseTasks\\ADIdParameter.cs"); ADRawEntry adrawEntry = tenantOrTopologyConfigurationSession.ReadADRawEntry(id, new ADPropertyDefinition[] { ADObjectSchema.OrganizationId }); if (adrawEntry != null) { return((OrganizationId)adrawEntry[ADObjectSchema.OrganizationId]); } IRecipientSession tenantOrRootOrgRecipientSession = DirectorySessionFactory.Default.GetTenantOrRootOrgRecipientSession(ConsistencyMode.PartiallyConsistent, ADSessionSettings.FromAllTenantsOrRootOrgAutoDetect(id), 365, "GetOrganizationId", "f:\\15.00.1497\\sources\\dev\\Configuration\\src\\ObjectModel\\BaseTasks\\ADIdParameter.cs"); adrawEntry = tenantOrRootOrgRecipientSession.ReadADRawEntry(id, new ADPropertyDefinition[] { ADObjectSchema.OrganizationId }); if (adrawEntry != null) { return((OrganizationId)adrawEntry[ADObjectSchema.OrganizationId]); } } return(currentOrgId); }
// Token: 0x06000AF9 RID: 2809 RVA: 0x000320CC File Offset: 0x000302CC public static bool IsConsumerMailbox(ADObjectId id) { if (id == null || id.DistinguishedName == null || !Globals.IsDatacenter) { return(false); } Match match = ConsumerIdentityHelper.RDNRegex.Match(id.DistinguishedName); if (match.Success) { string[] array = id.DistinguishedName.Split(ConsumerIdentityHelper.OUSplitter, StringSplitOptions.None); return(array.Length >= 2 && TemplateTenantConfiguration.IsTemplateTenantName(array[1])); } return(false); }
protected override void InternalValidate() { TaskLogger.LogEnter(); if (Server.IsSubscribedGateway(base.GlobalConfigSession)) { base.WriteError(new CannotRunOnSubscribedEdgeException(), ErrorCategory.InvalidOperation, null); } base.InternalValidate(); if (this.SkipDomainNameValidation) { if (!TemplateTenantConfiguration.IsTemplateTenant(base.OrganizationId)) { base.WriteError(new CannotBypassDomainNameValidationException(), ErrorCategory.InvalidOperation, null); } } else { NewAcceptedDomain.ValidateDomainName(this.DataObject, new Task.TaskErrorLoggingDelegate(base.WriteError)); } if (this.DataObject.DomainName.Equals(SmtpDomainWithSubdomains.StarDomain)) { this.WriteWarning(Strings.WarnAboutStarAcceptedDomain); } NewAcceptedDomain.DomainAdditionValidator domainAdditionValidator = new NewAcceptedDomain.DomainAdditionValidator(this); domainAdditionValidator.ValidateAllPolicies(); if (this.DataObject.InitialDomain) { NewAcceptedDomain.ValidateInitialDomain(this.DataObject, this.ConfigurationSession, new Task.TaskErrorLoggingDelegate(base.WriteError)); } if (this.DataObject.DomainType == AcceptedDomainType.ExternalRelay && (Datacenter.IsMicrosoftHostedOnly(true) || Datacenter.IsForefrontForOfficeDatacenter())) { base.WriteError(new ExternalRelayDomainsAreNotAllowedInDatacenterAndFfoException(), ErrorCategory.InvalidOperation, null); } if (base.Fields.IsModified(AcceptedDomainSchema.CatchAllRecipient) && this.CatchAllRecipient != null) { this.resolvedCatchAllRecipient = (ADRecipient)base.GetDataObject <ADRecipient>(this.CatchAllRecipient, base.TenantGlobalCatalogSession, null, new LocalizedString?(Strings.CatchAllRecipientNotExists(this.CatchAllRecipient)), new LocalizedString?(Strings.CatchAllRecipientNotUnique(this.CatchAllRecipient)), ExchangeErrorCategory.Client); } AcceptedDomainUtility.ValidateCatchAllRecipient(this.resolvedCatchAllRecipient, this.DataObject, base.Fields.IsModified(AcceptedDomainSchema.CatchAllRecipient), new Task.TaskErrorLoggingDelegate(base.WriteError)); AcceptedDomainUtility.ValidateIfOutboundConnectorToRouteDomainIsPresent(base.DataSession, this.DataObject, new Task.TaskWarningLoggingDelegate(this.WriteWarning)); AcceptedDomainUtility.ValidateMatchSubDomains(this.DataObject.MatchSubDomains, this.DataObject.DomainType, new Task.TaskErrorLoggingDelegate(base.WriteError)); TaskLogger.LogExit(); }
protected override void InternalValidate() { TaskLogger.LogEnter(); base.InternalValidate(); if (this.CreateSharedConfiguration && !this.shouldCreateSCT) { return; } if (this.ProgramId.IndexOf(".") != -1 || this.OfferId.IndexOf(".") != -1) { base.WriteError(new ArgumentException(Strings.ErrorParametersCannotHaveEmbeddedDot), ErrorCategory.InvalidArgument, null); } this.CheckForDuplicateExistingOrganization(); NewAcceptedDomain.ValidateDomainName(new AcceptedDomain { DomainName = new SmtpDomainWithSubdomains(this.DomainName, false), DomainType = AcceptedDomainType.Authoritative }, new Task.TaskErrorLoggingDelegate(this.WriteWrappedError)); bool flag = this.ServicePlanConfig.IsTemplateTenantServicePlan(this.servicePlanSettings); bool flag2 = TemplateTenantConfiguration.IsTemplateTenantName(this.Name); if (flag) { if (this.partition != PartitionId.LocalForest) { this.WriteWarning(Strings.ErrorLocalAccountPartitionRequiredForTT); } if (!this.CreateSharedConfiguration) { base.WriteError(new ArgumentException(Strings.CreateSharedConfigurationRequiredForTT), ErrorCategory.InvalidArgument, null); } if (!flag2) { base.WriteError(new ArgumentException(Strings.CalculatedNameRequiredForTT(TemplateTenantConfiguration.TopLevelDomain)), ErrorCategory.InvalidArgument, null); } } else if (flag2) { base.WriteError(new ArgumentException(Strings.TTNameWithNonTTServiceplan(TemplateTenantConfiguration.TopLevelDomain)), ErrorCategory.InvalidArgument, null); } TaskLogger.LogExit(); }
private static bool ShouldCreateTenantTemplate(string programId, string offerId, PartitionId partitionId, out ExchangeConfigurationUnit sctConfigUnit) { sctConfigUnit = null; ADDriverContext processADContext = ADSessionSettings.GetProcessADContext(); if (processADContext == null || processADContext.Mode != ContextMode.Setup) { return(true); } ADPagedReader <ExchangeConfigurationUnit> adpagedReader = TemplateTenantConfiguration.FindAllTempateTenants(programId, offerId, partitionId); foreach (ExchangeConfigurationUnit exchangeConfigurationUnit in adpagedReader) { if (exchangeConfigurationUnit.SharedConfigurationInfo != null && ((IComparable)TemplateTenantConfiguration.RequiredTemplateTenantVersion).CompareTo(exchangeConfigurationUnit.SharedConfigurationInfo.CurrentVersion) <= 0) { sctConfigUnit = exchangeConfigurationUnit; return(false); } } return(true); }
public static ADRawEntry PerformADLookup(ADObjectId identity, List <ADPropertyDefinition> properties) { ADUser aduser = (ADUser)TemplateTenantConfiguration.GetLocalTempateUser().Clone(); ADPropertyBag adpropertyBag = new ADPropertyBag(); foreach (ADPropertyDefinition adpropertyDefinition in properties) { adpropertyBag.SetField(adpropertyDefinition, aduser[adpropertyDefinition]); if (adpropertyDefinition.IsCalculated) { foreach (ProviderPropertyDefinition providerPropertyDefinition in adpropertyDefinition.SupportingProperties) { ADPropertyDefinition adpropertyDefinition2 = (ADPropertyDefinition)providerPropertyDefinition; adpropertyBag.SetField(adpropertyDefinition2, aduser[adpropertyDefinition2]); } } } ADRawEntry adrawEntry = new ADRawEntry(adpropertyBag); adrawEntry.SetId(identity); adrawEntry.ValidateRead(); adrawEntry.ResetChangeTracking(true); return(adrawEntry); }
protected OrganizationId GetOrganizationId(OrganizationId currentOrgId, string orgName) { if (OrganizationId.ForestWideOrgId.Equals(currentOrgId) && !string.IsNullOrEmpty(orgName)) { if (TemplateTenantConfiguration.IsTemplateTenantName(orgName) && TemplateTenantConfiguration.GetLocalTemplateTenant() != null) { return(TemplateTenantConfiguration.GetLocalTemplateTenant().OrganizationId); } ExchangeConfigurationUnit configurationUnit = this.GetConfigurationUnit(orgName); if (configurationUnit != null) { if (this.MustScopeToSharedConfiguration(configurationUnit)) { SharedConfiguration sharedConfiguration = SharedConfiguration.GetSharedConfiguration(configurationUnit.OrganizationId); if (sharedConfiguration != null) { return(sharedConfiguration.SharedConfigurationCU.OrganizationId); } } return(configurationUnit.OrganizationId); } } return(currentOrgId); }
// Token: 0x06000B05 RID: 2821 RVA: 0x00032318 File Offset: 0x00030518 public static ADObjectId GetADObjectIdFromSmtpAddress(SmtpAddress address) { ADObjectId organizationalUnitRoot = TemplateTenantConfiguration.GetLocalTemplateTenant().OrganizationalUnitRoot; return(new ADObjectId(organizationalUnitRoot.GetChildId(address.ToString()).DistinguishedName)); }
protected override void InternalBeginProcessing() { TaskLogger.LogEnter(); if (this.nameWarning != LocalizedString.Empty) { this.WriteWarning(this.nameWarning); } base.InternalBeginProcessing(); if (this.Administrator != null) { OrganizationTaskHelper.ValidateParamString("Administrator", this.Administrator.ToString(), new Task.TaskErrorLoggingDelegate(base.WriteError)); } if (this.AdministratorNetID != null) { OrganizationTaskHelper.ValidateParamString("AdministratorNetID", this.AdministratorNetID.ToString(), new Task.TaskErrorLoggingDelegate(base.WriteError)); } if (this.AdministratorNetID != null && this.Administrator != null && this.Administrator.NetId != null && !this.AdministratorNetID.Equals(this.Administrator.NetId)) { base.WriteError(new RecipientTaskException(Strings.ErrorNetIDValuesDoNotMatch(this.AdministratorNetID.ToString(), this.Administrator.NetId.ToString())), ErrorCategory.InvalidArgument, null); } if (this.AdministratorNetID != null && this.Administrator == null) { this.Administrator = new WindowsLiveId(this.AdministratorNetID.ToString()); } if (base.Fields.IsModified("TenantDirSyncServiceInstance") && !string.IsNullOrEmpty(this.DirSyncServiceInstance) && !ServiceInstanceId.IsValidServiceInstanceId(this.DirSyncServiceInstance)) { base.WriteError(new InvalidServiceInstanceIdException(this.DirSyncServiceInstance), ExchangeErrorCategory.Client, null); } if (this.ServicePlanConfig.IsPilotOffer(this.ProgramId, this.OfferId) && !this.CreateSharedConfiguration) { base.WriteError(new ArgumentException(Strings.ErrorPilotServicePlanCanBeUsedToCreateSharedOrgsOnly(this.ProgramId, this.OfferId)), (ErrorCategory)1000, null); } Exception ex = null; string text = null; if (base.Fields["TenantExternalDirectoryOrganizationId"] == null && !this.CreateSharedConfiguration) { base.Fields["TenantExternalDirectoryOrganizationId"] = Guid.NewGuid(); } try { bool flag = this.ServicePlanConfig.TryGetHydratedOfferId(this.ProgramId, this.OfferId, out text); if (!this.CreateSharedConfiguration && this.Name == null) { base.WriteError(new ArgumentException(Strings.ErrorNameNotSet), (ErrorCategory)1000, null); } this.partition = ((this.AccountPartition != null) ? NewOrganizationTask.ResolvePartitionId(this.AccountPartition, new Task.TaskErrorLoggingDelegate(base.WriteError)) : NewOrganizationTask.ChoosePartition(this.Name, this.CreateSharedConfiguration, new Task.TaskErrorLoggingDelegate(base.WriteError))); if (this.CreateSharedConfiguration && flag) { this.OfferId = text; this.shouldCreateSCT = NewOrganizationTask.ShouldCreateSharedConfiguration(this.ProgramId, this.OfferId, this.partition, out this.sctConfigUnit); } string text2 = this.ServicePlanConfig.ResolveServicePlanName(this.ProgramId, this.OfferId); this.servicePlanSettings = this.ServicePlanConfig.GetServicePlanSettings(text2); bool flag2 = this.ServicePlanConfig.IsTemplateTenantServicePlan(this.servicePlanSettings); if (flag2) { this.shouldCreateSCT = NewOrganizationTask.ShouldCreateTenantTemplate(this.ProgramId, this.OfferId, this.partition, out this.sctConfigUnit); } if (this.CreateSharedConfiguration) { if (!this.shouldCreateSCT) { this.WriteWarning(Strings.WarningSharedConfigurationAlreadyExists(this.ProgramId, this.OfferId)); return; } if (string.IsNullOrEmpty(this.Name)) { this.Name = (flag2 ? TemplateTenantConfiguration.CreateSharedConfigurationName(this.ProgramId, this.OfferId) : SharedConfiguration.CreateSharedConfigurationName(this.ProgramId, this.OfferId)); } if (this.DomainName == null) { this.DomainName = (flag2 ? TemplateTenantConfiguration.CreateSharedConfigurationDomainName(this.Name) : SharedConfiguration.CreateSharedConfigurationDomainName(this.Name)); } } OrganizationTaskHelper.ValidateParamString("Name", this.Name, new Task.TaskErrorLoggingDelegate(base.WriteError), true); ADOrganizationalUnit adorganizationalUnit = new ADOrganizationalUnit(); adorganizationalUnit[ADObjectSchema.Name] = this.Name; base.InternalIsSharedConfigServicePlan = this.ServicePlanConfig.IsSharedConfigurationAllowedForServicePlan(this.servicePlanSettings); if (this.CreateSharedConfiguration && !base.InternalIsSharedConfigServicePlan && !this.ServicePlanConfig.IsHydratedOffer(text2)) { base.WriteError(new SharedConfigurationValidationException(Strings.ErrorServicePlanDoesntAllowSharedConfiguration(this.ProgramId, this.OfferId)), (ErrorCategory)1000, null); } else if (!flag && base.InternalIsSharedConfigServicePlan) { text = this.OfferId; } if (this.CreateSharedConfiguration) { base.InternalCreateSharedConfiguration = true; } else if (!this.CreateSharedConfiguration && base.InternalIsSharedConfigServicePlan) { SharedConfigurationInfo sharedConfigurationInfo = SharedConfigurationInfo.FromInstalledVersion(this.ProgramId, text); base.InternalSharedConfigurationId = SharedConfiguration.FindOneSharedConfigurationId(sharedConfigurationInfo, this.partition); if (base.InternalSharedConfigurationId == null) { base.WriteError(new SharedConfigurationValidationException(Strings.ErrorSharedConfigurationNotFound(this.ProgramId, text, sharedConfigurationInfo.CurrentVersion.ToString())), (ErrorCategory)1000, null); } base.InternalCreateSharedConfiguration = false; } List <ValidationError> list = new List <ValidationError>(); list.AddRange(ServicePlan.ValidateFileSchema(text2)); list.AddRange(this.servicePlanSettings.Validate()); if (list.Count != 0) { ex = new ArgumentException(Strings.ErrorServicePlanInconsistent(text2, this.ProgramId, this.OfferId, ValidationError.CombineErrorDescriptions(list))); } } catch (ArgumentException ex2) { ex = ex2; } catch (IOException ex3) { ex = ex3; } if (ex != null) { base.WriteError(ex, ErrorCategory.InvalidArgument, null); } base.InternalLocalStaticConfigEnabled = (!this.servicePlanSettings.Organization.AdvancedHydrateableObjectsSharedEnabled || this.CreateSharedConfiguration); base.InternalLocalHydrateableConfigEnabled = (!this.servicePlanSettings.Organization.CommonHydrateableObjectsSharedEnabled || this.CreateSharedConfiguration); TaskLogger.LogExit(); }
// Token: 0x06000B4A RID: 2890 RVA: 0x00048AC0 File Offset: 0x00046CC0 private void UpdateSafeLists(MailboxSession mailboxSession) { ADObjectId adobjectId = (mailboxSession.MailboxOwner != null) ? mailboxSession.MailboxOwner.ObjectId : null; if (adobjectId == null) { JunkEmailOptionsCommiterAssistant.Tracer.TraceError <MailboxSession>((long)this.GetHashCode(), "can't determine owner of mailbox {0}", mailboxSession); return; } if (TemplateTenantConfiguration.IsTemplateTenant(mailboxSession.MailboxOwner.MailboxInfo.OrganizationId)) { JunkEmailOptionsCommiterAssistant.Tracer.TraceDebug <string, Guid>((long)this.GetHashCode(), "Skipping mailbox {0} (GUID: {1}) because it belongs to a consumer tenant.", mailboxSession.MailboxOwner.MailboxInfo.DisplayName, mailboxSession.MailboxOwner.MailboxInfo.MailboxGuid); return; } IRecipientSession tenantOrRootOrgRecipientSession = DirectorySessionFactory.Default.GetTenantOrRootOrgRecipientSession(false, ConsistencyMode.PartiallyConsistent, ADSessionSettings.FromOrganizationIdWithoutRbacScopesServiceOnly(mailboxSession.MailboxOwner.MailboxInfo.OrganizationId), 318, "UpdateSafeLists", "f:\\15.00.1497\\sources\\dev\\MailboxAssistants\\src\\assistants\\JunkEmailOptions\\JunkEmailOptionsCommiterAssistant.cs"); ADUser aduser = tenantOrRootOrgRecipientSession.Read(adobjectId) as ADUser; if (aduser == null) { JunkEmailOptionsCommiterAssistant.Tracer.TraceError <ADObjectId>((long)this.GetHashCode(), "can't read user object {0} from AD.", adobjectId); return; } JunkEmailRule filteredJunkEmailRule = mailboxSession.FilteredJunkEmailRule; bool flag = false; bool flag2 = false; bool flag3 = false; byte[] array = filteredJunkEmailRule.IsEnabled ? this.GetSafeSendersHash(filteredJunkEmailRule, out flag) : null; byte[] array2 = filteredJunkEmailRule.IsEnabled ? this.GetSafeRecipientsHash(filteredJunkEmailRule, out flag2) : null; byte[] array3 = filteredJunkEmailRule.IsEnabled ? this.GetBlockedSendersHash(filteredJunkEmailRule, out flag3) : null; bool flag4 = false; if (!ArrayComparer <byte> .Comparer.Equals(array, aduser.SafeSendersHash)) { aduser.SafeSendersHash = array; flag4 = true; } if (!ArrayComparer <byte> .Comparer.Equals(array2, aduser.SafeRecipientsHash)) { aduser.SafeRecipientsHash = array2; flag4 = true; } if (!ArrayComparer <byte> .Comparer.Equals(array3, aduser.BlockedSendersHash)) { aduser.BlockedSendersHash = array3; flag4 = true; } if (flag4) { JunkEmailOptionsCommiterAssistant.Tracer.TraceDebug <ADObjectId>((long)this.GetHashCode(), "Saving updated recipient object {0} to AD...", adobjectId); tenantOrRootOrgRecipientSession.Save(aduser); JunkEmailOptionsPerfCounters.TotalRecipientsUpdated.Increment(); JunkEmailOptionsCommiterAssistant.Tracer.TraceDebug <ADObjectId>((long)this.GetHashCode(), "Recipient object {0} was successfully saved", adobjectId); if (flag || flag2 || flag3) { JunkEmailOptionsPerfCounters.TotalPartialUpdates.Increment(); } } Exception ex = null; try { if (flag4 || !filteredJunkEmailRule.AllRestrictionsLoaded) { filteredJunkEmailRule.Save(); } } catch (StoragePermanentException ex2) { ex = ex2; } catch (StorageTransientException ex3) { ex = ex3; } finally { if (ex != null) { JunkEmailOptionsCommiterAssistant.EventLogger.LogEvent(InfoWorkerEventLogConstants.Tuple_FailedToUpdateMailbox, null, new object[] { mailboxSession.MailboxGuid, ex }); } } }