internal static string OrganizationNameForLogging(IRoutingKey key) { RoutingItemType routingItemType = key.RoutingItemType; if (routingItemType != RoutingItemType.ArchiveSmtp) { switch (routingItemType) { case RoutingItemType.MailboxGuid: { MailboxGuidRoutingKey mailboxGuidRoutingKey = key as MailboxGuidRoutingKey; return(mailboxGuidRoutingKey.TenantDomain); } case RoutingItemType.Smtp: { SmtpRoutingKey smtpRoutingKey = key as SmtpRoutingKey; return(smtpRoutingKey.SmtpAddress.Domain); } case RoutingItemType.LiveIdMemberName: { LiveIdMemberNameRoutingKey liveIdMemberNameRoutingKey = key as LiveIdMemberNameRoutingKey; return(liveIdMemberNameRoutingKey.OrganizationDomain); } } return(string.Empty); } ArchiveSmtpRoutingKey archiveSmtpRoutingKey = key as ArchiveSmtpRoutingKey; return(archiveSmtpRoutingKey.SmtpAddress.Domain); }
private static IRoutingKey FindByMailboxId(string mailboxId, IAddressFinderDiagnostics diagnostics) { if (string.IsNullOrEmpty(mailboxId)) { return(null); } if (!SmtpAddress.IsValidSmtpAddress(mailboxId)) { ExTraceGlobals.VerboseTracer.TraceDebug <string>(0L, "[MapiAddressFinder::FindByMailboxId]: Malformed mailboxId {0}.", mailboxId); return(null); } Guid guid = Guid.Empty; string tenantDomain = string.Empty; try { SmtpAddress smtpAddress = new SmtpAddress(mailboxId); guid = new Guid(smtpAddress.Local); tenantDomain = smtpAddress.Domain; } catch (FormatException arg) { ExTraceGlobals.VerboseTracer.TraceDebug <string, FormatException>(0L, "[MapiAddressFinder::FindByMailboxId]: Caught exception: Reason {0}; Exception {1}.", string.Format("Invalid mailboxGuid {0}", guid), arg); return(null); } IRoutingKey routingKey = new MailboxGuidRoutingKey(guid, tenantDomain); diagnostics.AddRoutingkey(routingKey, "MailboxGuidInQueryString"); return(routingKey); }
IRoutingKey[] IAddressFinder.Find(AddressFinderSource source, IAddressFinderDiagnostics diagnostics) { AddressFinderHelper.ThrowIfNull(source, diagnostics); if (string.IsNullOrEmpty(source.Url.Query)) { return(AddressFinderHelper.EmptyRoutingKeyArray); } RpcHttpQueryString rpcHttpQueryString = new RpcHttpQueryString(source.Url.Query); if (!SmtpAddress.IsValidSmtpAddress(rpcHttpQueryString.RcaServer)) { return(AddressFinderHelper.EmptyRoutingKeyArray); } Guid guid = Guid.Empty; string text = string.Empty; try { SmtpAddress smtpAddress = new SmtpAddress(rpcHttpQueryString.RcaServer); guid = new Guid(smtpAddress.Local); text = smtpAddress.Domain; } catch (FormatException arg) { ExTraceGlobals.VerboseTracer.TraceDebug <string, FormatException>(0L, "[RpcHttpAddressFinder::Find]: Caught exception: Reason {0}; Exception {1}.", string.Format("Invalid mailboxGuid {0}", guid), arg); return(AddressFinderHelper.EmptyRoutingKeyArray); } string text2 = "MailboxGuidWithDomain"; if (!text.Contains(".") && !source.Items.IsNullOrEmpty()) { string text3 = source.Items["WLID-MemberName"] as string; if (!string.IsNullOrEmpty(text3)) { SmtpAddress smtpAddress2 = new SmtpAddress(text3); string domain = smtpAddress2.Domain; if (domain != null && !string.Equals(domain, text, StringComparison.OrdinalIgnoreCase)) { ExTraceGlobals.BriefTracer.TraceError <string, string>((long)this.GetHashCode(), "[RpcHttpAddressFinder::Find]: Fixing up invalid domain name from client: {0} to {1}", text, domain); text = domain; text2 += "-ChangedToUserDomain"; } } } IRoutingKey routingKey = new MailboxGuidRoutingKey(guid, text); diagnostics.AddRoutingkey(routingKey, text2); return(AddressFinderHelper.GetRoutingKeyArray(new IRoutingKey[] { routingKey })); }
string ISharedCache.GetSharedCacheKeyFromRoutingKey(IRoutingKey key) { string text = string.Empty; switch (key.RoutingItemType) { case RoutingItemType.ArchiveSmtp: { ArchiveSmtpRoutingKey archiveSmtpRoutingKey = key as ArchiveSmtpRoutingKey; text = SharedCacheClientWrapper.MakeCacheKey(SharedCacheClientWrapper.AnchorSource.Smtp, archiveSmtpRoutingKey.SmtpAddress); text += "_Archive"; break; } case RoutingItemType.DatabaseGuid: { DatabaseGuidRoutingKey databaseGuidRoutingKey = key as DatabaseGuidRoutingKey; text = SharedCacheClientWrapper.MakeCacheKey(SharedCacheClientWrapper.AnchorSource.DatabaseGuid, databaseGuidRoutingKey.DatabaseGuid); break; } case RoutingItemType.MailboxGuid: { MailboxGuidRoutingKey mailboxGuidRoutingKey = key as MailboxGuidRoutingKey; text = SharedCacheClientWrapper.MakeCacheKey(SharedCacheClientWrapper.AnchorSource.MailboxGuid, mailboxGuidRoutingKey.MailboxGuid); break; } case RoutingItemType.Smtp: { SmtpRoutingKey smtpRoutingKey = key as SmtpRoutingKey; text = SharedCacheClientWrapper.MakeCacheKey(SharedCacheClientWrapper.AnchorSource.Smtp, smtpRoutingKey.SmtpAddress); break; } case RoutingItemType.ExternalDirectoryObjectId: { ExternalDirectoryObjectIdRoutingKey externalDirectoryObjectIdRoutingKey = key as ExternalDirectoryObjectIdRoutingKey; text = SharedCacheClientWrapper.MakeCacheKey(SharedCacheClientWrapper.AnchorSource.ExternalDirectoryObjectId, externalDirectoryObjectIdRoutingKey.UserGuid); break; } case RoutingItemType.LiveIdMemberName: { LiveIdMemberNameRoutingKey liveIdMemberNameRoutingKey = key as LiveIdMemberNameRoutingKey; text = SharedCacheClientWrapper.MakeCacheKey(SharedCacheClientWrapper.AnchorSource.LiveIdMemberName, liveIdMemberNameRoutingKey.LiveIdMemberName); break; } } return(text); }
private static IRoutingKey[] FindByAnchorMailbox(string anchorMailbox, IAddressFinderDiagnostics diagnostics) { if (string.IsNullOrEmpty(anchorMailbox)) { return(AddressFinderHelper.EmptyRoutingKeyArray); } Match match = Constants.GuidAtDomainRegex.Match(anchorMailbox); if (match != null && match.Success) { string text = match.Result("${mailboxguid}"); if (!string.IsNullOrEmpty(text)) { Guid mailboxGuid = new Guid(text); string text2 = match.Result("${domain}"); IRoutingKey routingKey = new MailboxGuidRoutingKey(mailboxGuid, text2); diagnostics.AddRoutingkey(routingKey, "MailboxGuidInAnchorMailbox"); if (string.IsNullOrEmpty(text2)) { return(AddressFinderHelper.GetRoutingKeyArray(new IRoutingKey[] { routingKey })); } if (SmtpAddress.IsValidSmtpAddress(anchorMailbox)) { IRoutingKey routingKey2 = new SmtpRoutingKey(new SmtpAddress(anchorMailbox)); diagnostics.AddRoutingkey(routingKey2, "FallbackSmtpAddressInAnchorMailbox"); return(AddressFinderHelper.GetRoutingKeyArray(new IRoutingKey[] { routingKey, routingKey2 })); } ExTraceGlobals.VerboseTracer.TraceDebug <string>(0L, "[RoutingHintAddressFinder::FindByAnchorMailbox]: Malformed smtp address in X-AnchorMailbox {0}.", anchorMailbox); } } if (SmtpAddress.IsValidSmtpAddress(anchorMailbox)) { IRoutingKey routingKey3 = new SmtpRoutingKey(new SmtpAddress(anchorMailbox)); diagnostics.AddRoutingkey(routingKey3, "SmtpAddressInAnchorMailbox"); return(AddressFinderHelper.GetRoutingKeyArray(new IRoutingKey[] { routingKey3 })); } ExTraceGlobals.VerboseTracer.TraceDebug <string>(0L, "[RoutingHintAddressFinder::FindByAnchorMailbox]: Invalid smtp address in X-AnchorMailbox {0}.", anchorMailbox); return(AddressFinderHelper.EmptyRoutingKeyArray); }
private static IRoutingKey DeserializeRoutingKey(string type, string value) { switch (type) { case "ArchiveSmtp": { ArchiveSmtpRoutingKey result; if (ArchiveSmtpRoutingKey.TryParse(value, out result)) { return(result); } break; } case "DatabaseGuid": { DatabaseGuidRoutingKey result2; if (DatabaseGuidRoutingKey.TryParse(value, out result2)) { return(result2); } break; } case "MailboxGuid": { MailboxGuidRoutingKey result3; if (MailboxGuidRoutingKey.TryParse(value, out result3)) { return(result3); } break; } case "Smtp": { SmtpRoutingKey result4; if (SmtpRoutingKey.TryParse(value, out result4)) { return(result4); } break; } case "Server": { ServerRoutingKey result5; if (ServerRoutingKey.TryParse(value, out result5)) { return(result5); } break; } case "Oid": { ExternalDirectoryObjectIdRoutingKey result6; if (ExternalDirectoryObjectIdRoutingKey.TryParse(value, out result6)) { return(result6); } break; } case "LiveIdMemberName": { LiveIdMemberNameRoutingKey result7; if (LiveIdMemberNameRoutingKey.TryParse(value, out result7)) { return(result7); } break; } } return(new UnknownRoutingKey(type, value)); }