public override PropertyConstraintViolationError Validate(IEnumerable value, PropertyDefinition propertyDefinition, IPropertyBag propertyBag) { if (value == null) { return(null); } HashSet <string> hashSet = new HashSet <string>(StringComparer.InvariantCultureIgnoreCase); StringBuilder stringBuilder = new StringBuilder(128); foreach (object obj in value) { SharingPolicyDomain sharingPolicyDomain = (SharingPolicyDomain)obj; if (hashSet.Contains(sharingPolicyDomain.Domain)) { if (stringBuilder.Length > 0) { stringBuilder.Append(", "); } stringBuilder.Append(sharingPolicyDomain.Domain); } else { hashSet.Add(sharingPolicyDomain.Domain); } } if (stringBuilder.Length > 0) { return(new PropertyConstraintViolationError(DirectoryStrings.SharingPolicyDuplicateDomain(stringBuilder.ToString()), propertyDefinition, value, this)); } return(null); }
// Token: 0x06000E63 RID: 3683 RVA: 0x00056AF8 File Offset: 0x00054CF8 private void PopulatePolicyHash() { SharingPolicyDomain[] array = null; if (this.policy.Domains != null) { array = new SharingPolicyDomain[this.policy.Domains.Count]; for (int i = 0; i < this.policy.Domains.Count; i++) { array[i] = this.policy.Domains[i]; } Array.Sort <SharingPolicyDomain>(array, (SharingPolicyDomain a, SharingPolicyDomain b) => StringComparer.OrdinalIgnoreCase.Compare(a.Domain, b.Domain)); } StringBuilder stringBuilder = new StringBuilder("V1.0", 200); stringBuilder.Append(this.policy.Enabled); if (array != null) { foreach (SharingPolicyDomain sharingPolicyDomain in array) { stringBuilder.Append(","); stringBuilder.Append(sharingPolicyDomain.Domain); stringBuilder.Append(":"); stringBuilder.Append(sharingPolicyDomain.Actions.ToString()); } } string text = stringBuilder.ToString(); SharingPolicyCache.Tracer.TraceDebug <string>(0L, "String representation of policy: {0}", text); byte[] bytes = Encoding.ASCII.GetBytes(text); using (SHA512Cng sha512Cng = new SHA512Cng()) { this.hash = sha512Cng.ComputeHash(bytes); } }
public SharingRuleEntry(SharingPolicyDomain policyDomain) { if (policyDomain == null) { throw new ArgumentNullException("policyDomain"); } this.IsAnyDomain = ("*" == policyDomain.Domain); if (!this.IsAnyDomain) { this.Domain = policyDomain.Domain; } this.IsCalendarSharing = ((SharingPolicyAction)0 != (~SharingPolicyAction.ContactsSharing & policyDomain.Actions)); this.CalendarSharing = (this.IsCalendarSharing ? (~SharingPolicyAction.ContactsSharing & policyDomain.Actions).ToString() : SharingPolicyAction.CalendarSharingFreeBusySimple.ToString()); this.IsContactsSharing = ((SharingPolicyAction)0 != (policyDomain.Actions & SharingPolicyAction.ContactsSharing)); }
protected static object GetSingleProperty(object prop, Type type) { if (prop == null) { return(null); } object obj = null; if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable <>)) { obj = MockObjectCreator.GetSingleProperty(prop, type.GetGenericArguments()[0]); } else if (type == typeof(ADObjectId) && prop is PSObject) { obj = new ADObjectId(((PSObject)prop).Members["DistinguishedName"].Value.ToString(), new Guid(((PSObject)prop).Members["ObjectGuid"].Value.ToString())); } else if (type == typeof(EnhancedTimeSpan)) { obj = EnhancedTimeSpan.Parse(prop.ToString()); } else if (type == typeof(Unlimited <EnhancedTimeSpan>)) { obj = Unlimited <EnhancedTimeSpan> .Parse(prop.ToString()); } else if (type == typeof(ByteQuantifiedSize)) { obj = ByteQuantifiedSize.Parse(prop.ToString()); } else if (type == typeof(Unlimited <ByteQuantifiedSize>)) { obj = Unlimited <ByteQuantifiedSize> .Parse(prop.ToString()); } else if (type == typeof(Unlimited <int>)) { obj = Unlimited <int> .Parse(prop.ToString()); } else if (type == typeof(ProxyAddress)) { obj = ProxyAddress.Parse(prop.ToString()); } else if (type == typeof(SmtpAddress)) { obj = new SmtpAddress(prop.ToString()); } else if (type == typeof(SmtpDomain)) { obj = SmtpDomain.Parse(prop.ToString()); } else if (type == typeof(CountryInfo)) { obj = CountryInfo.Parse(prop.ToString()); } else if (type == typeof(SharingPolicyDomain)) { obj = SharingPolicyDomain.Parse(prop.ToString()); } else if (type == typeof(ApprovedApplication)) { obj = ApprovedApplication.Parse(prop.ToString()); } else if (type == typeof(SmtpDomainWithSubdomains)) { obj = SmtpDomainWithSubdomains.Parse(prop.ToString()); } else if (type == typeof(UMLanguage)) { obj = UMLanguage.Parse(prop.ToString()); } else if (type == typeof(UMSmartHost)) { obj = UMSmartHost.Parse(prop.ToString()); } else if (type == typeof(ScheduleInterval)) { obj = ScheduleInterval.Parse(prop.ToString()); } else if (type == typeof(NumberFormat)) { obj = NumberFormat.Parse(prop.ToString()); } else if (type == typeof(DialGroupEntry)) { obj = DialGroupEntry.Parse(prop.ToString()); } else if (type == typeof(CustomMenuKeyMapping)) { obj = CustomMenuKeyMapping.Parse(prop.ToString()); } else if (type == typeof(HolidaySchedule)) { obj = HolidaySchedule.Parse(prop.ToString()); } else if (type == typeof(UMTimeZone)) { obj = UMTimeZone.Parse(prop.ToString()); } else if (type == typeof(ServerVersion)) { obj = ServerVersion.ParseFromSerialNumber(prop.ToString()); } else if (type == typeof(X509Certificate2)) { obj = new X509Certificate2(((PSObject)prop).Members["RawData"].Value as byte[]); } else if (type == typeof(LocalizedString)) { obj = new LocalizedString(prop.ToString()); } else if (type == typeof(ExchangeObjectVersion)) { obj = ExchangeObjectVersion.Parse(prop.ToString()); } else if (type == typeof(bool)) { obj = bool.Parse(prop.ToString()); } else if (type == typeof(SecurityPrincipalIdParameter)) { obj = new SecurityPrincipalIdParameter(prop.ToString()); } else if (type == typeof(ActiveDirectoryAccessRule)) { obj = (prop as ActiveDirectoryAccessRule); } else if (type == typeof(ObjectId)) { string text = prop.ToString(); if (!ADObjectId.IsValidDistinguishedName(text) && text.Contains("/")) { text = MockObjectCreator.ConvertDNFromTreeStructure(text); } obj = new ADObjectId(text); } else if (type.IsEnum) { try { obj = Enum.Parse(type, prop.ToString()); } catch (ArgumentException) { obj = Enum.GetValues(type).GetValue(0); } } return(obj ?? prop); }
public bool TryGetProvider(SmtpAddress recipientAddress, ADRecipient adRecipient, IFrontEndLocator frontEndLocator, out SharingProvider provider, out DetailLevelEnumType detailLevel) { provider = null; detailLevel = DetailLevelEnumType.AvailabilityOnly; bool result; try { if (this.mailboxOwner.GetConfiguration().DataStorage.XOWAConsumerSharing.Enabled) { provider = SharingProvider.SharingProviderConsumer; detailLevel = DetailLevelEnumType.Editor; result = true; } else { if (adRecipient != null) { if (adRecipient.IsValidSecurityPrincipal) { provider = SharingProvider.SharingProviderInternal; detailLevel = DetailLevelEnumType.Editor; return(true); } if (DelegateUserCollection.IsCrossPremiseDelegateEnabled(this.mailboxOwner) && (adRecipient.RecipientType == RecipientType.User || adRecipient.RecipientType == RecipientType.UserMailbox || adRecipient.RecipientType == RecipientType.MailUser)) { provider = SharingProvider.SharingProviderInternal; detailLevel = DetailLevelEnumType.Editor; return(true); } if (adRecipient.RecipientType != RecipientType.User && adRecipient.RecipientType != RecipientType.UserMailbox && adRecipient.RecipientType != RecipientType.MailUser && adRecipient.RecipientType != RecipientType.Contact && adRecipient.RecipientType != RecipientType.MailContact) { return(false); } } SharingPolicyDomain effectiveCalendarSharingPolicy = this.GetEffectiveCalendarSharingPolicy(recipientAddress.Domain, frontEndLocator); this.TraceDebug("Policy found:{0}", new object[] { (effectiveCalendarSharingPolicy == null) ? "none" : effectiveCalendarSharingPolicy.Domain }); int maxAllowed; if (effectiveCalendarSharingPolicy != null && (maxAllowed = PolicyAllowedDetailLevel.GetMaxAllowed(effectiveCalendarSharingPolicy.Actions)) > 0) { detailLevel = (DetailLevelEnumType)maxAllowed; if (effectiveCalendarSharingPolicy.Domain == "Anonymous") { provider = SharingProvider.SharingProviderPublishReach; } else { provider = SharingProvider.SharingProviderExternal; } } result = (provider != null); } } finally { this.TraceDebug("MailboxOwner:{0},Recipient:{1},RecipientType:{2},Handler={2},DetailLevel={3}", new object[] { this.mailboxOwner.MailboxInfo.PrimarySmtpAddress.ToString(), recipientAddress, (adRecipient == null) ? "none" : adRecipient.RecipientType.ToString(), (provider == null) ? "none" : provider.Name, detailLevel }); } return(result); }
private SharingPolicyDomain GetEffectiveCalendarSharingPolicy(string recipientDomain, IFrontEndLocator frontEndLocator) { SharingPolicyDomain sharingPolicyDomain = null; SharingPolicyDomain sharingPolicyDomain2 = null; bool enabled = ExternalAuthentication.GetCurrent().Enabled; bool flag = false; this.TraceDebug("External authentication enabled:{0}", new object[] { enabled }); foreach (SharingPolicyDomain sharingPolicyDomain3 in this.SharingPolicy.Domains) { if (enabled) { if (StringComparer.OrdinalIgnoreCase.Equals(sharingPolicyDomain3.Domain, recipientDomain)) { this.TraceDebug("Found exact policy for domain {0}", new object[] { sharingPolicyDomain3.Domain }); sharingPolicyDomain = sharingPolicyDomain3; } else if (sharingPolicyDomain == null && StringComparer.OrdinalIgnoreCase.Equals(sharingPolicyDomain3.Domain, "*")) { this.TraceDebug("Found asterisk policy", new object[0]); sharingPolicyDomain = sharingPolicyDomain3; flag = true; } } if (StringComparer.OrdinalIgnoreCase.Equals(sharingPolicyDomain3.Domain, "Anonymous")) { if (OwaAnonymousVdirLocater.Instance.IsPublishingAvailable(this.mailboxOwner, frontEndLocator)) { this.TraceDebug("Found anonymous policy", new object[0]); sharingPolicyDomain2 = sharingPolicyDomain3; } else { this.TraceDebug("Found anonymous policy but publishing is not allowed", new object[0]); } } } if (flag && sharingPolicyDomain2 != null && PolicyAllowedDetailLevel.GetMaxAllowed(sharingPolicyDomain.Actions) <= PolicyAllowedDetailLevel.GetMaxAllowed(sharingPolicyDomain2.Actions)) { this.TraceDebug("Override AsteriskPolicy with anonymous policy", new object[0]); sharingPolicyDomain = null; } if (sharingPolicyDomain != null) { if (TargetUriResolver.Resolve(recipientDomain, this.mailboxOwner.MailboxInfo.OrganizationId) != null) { return(sharingPolicyDomain); } this.TraceDebug("Target domain '{0}' is not federated", new object[] { recipientDomain }); } return(sharingPolicyDomain2); }