private static bool TryGetMailboxGuid(string anchorMailboxAddress, out Guid mailboxGuid, out string domain, IRequestContext requestContext) { mailboxGuid = default(Guid); domain = null; if (anchorMailboxAddress != null) { Match match = RegexUtilities.TryMatch(Constants.GuidAtDomainRegex, anchorMailboxAddress, requestContext.Logger); if (match != null && match.Success) { string text = RegexUtilities.ParseIdentifier(match, "${mailboxguid}", requestContext.Logger); if (!string.IsNullOrEmpty(text)) { mailboxGuid = new Guid(text); domain = RegexUtilities.ParseIdentifier(match, "${domain}", requestContext.Logger); return(true); } } } return(false); }
// Token: 0x060000E6 RID: 230 RVA: 0x000056D4 File Offset: 0x000038D4 public static AnchorMailbox TryCreateFromRoutingHint(IRequestContext requestContext, bool tryTargetServerRoutingHint) { if (requestContext == null) { throw new ArgumentNullException("requestContext"); } string fqdn; if (tryTargetServerRoutingHint && RequestHeaderParser.TryGetTargetServer(requestContext.HttpContext.Request.Headers, ref fqdn)) { requestContext.Logger.Set(3, "TargetServerHeader"); return(new ServerInfoAnchorMailbox(fqdn, requestContext)); } string text; if (!RequestHeaderParser.TryGetAnchorMailbox(requestContext.HttpContext.Request.Headers, ref text)) { return(null); } Match match = RegexUtilities.TryMatch(Constants.SidRegex, text); if (match != null && match.Success) { string text2 = RegexUtilities.ParseIdentifier(match, "${sid}"); if (!string.IsNullOrEmpty(text2)) { SecurityIdentifier securityIdentifier = null; try { securityIdentifier = new SecurityIdentifier(text2); } catch (ArgumentException ex) { requestContext.Logger.AppendGenericError("Ignored Exception", ex.ToString()); } catch (SystemException ex2) { requestContext.Logger.AppendGenericError("Ignored Exception", ex2.ToString()); } if (securityIdentifier != null) { requestContext.Logger.SafeSet(3, "AnchorMailboxHeader-SID"); return(new SidAnchorMailbox(securityIdentifier, requestContext)); } } } Guid mailboxGuid; string text3; if (RequestHeaderParser.TryGetMailboxGuid(text, ref mailboxGuid, ref text3)) { string value = string.Format("AnchorMailboxHeader-MailboxGuid{0}", string.IsNullOrEmpty(text3) ? string.Empty : "WithDomain"); requestContext.Logger.SafeSet(3, value); MailboxGuidAnchorMailbox mailboxGuidAnchorMailbox = new MailboxGuidAnchorMailbox(mailboxGuid, text3, requestContext); if (!string.IsNullOrEmpty(text3)) { mailboxGuidAnchorMailbox.FallbackSmtp = text; } return(mailboxGuidAnchorMailbox); } if (PuidAnchorMailbox.IsEnabled) { NetID netID; Guid tenantGuid; if (RequestHeaderParser.TryGetNetIdAndTenantGuid(text, ref netID, ref tenantGuid)) { requestContext.Logger.Set(3, "AnchorMailboxHeader-PuidAndTenantGuid"); return(new PuidAnchorMailbox(netID.ToString(), tenantGuid, requestContext, text)); } string text4; if (RequestHeaderParser.TryGetNetIdAndDomain(text, ref netID, ref text4)) { if (string.IsNullOrEmpty(text4)) { requestContext.Logger.Set(3, "AnchorMailboxHeader-Puid"); return(new PuidAnchorMailbox(netID.ToString(), requestContext, text)); } requestContext.Logger.Set(3, "AnchorMailboxHeader-PuidAndDomain"); return(new PuidAnchorMailbox(netID.ToString(), text4, requestContext, text)); } } if (SmtpAddress.IsValidSmtpAddress(text)) { requestContext.Logger.Set(3, "AnchorMailboxHeader-SMTP"); return(new SmtpAnchorMailbox(text, requestContext)); } return(null); }
public static AnchorMailbox TryCreateFromRoutingHint(IRequestContext requestContext, bool tryTargetServerRoutingHint) { if (requestContext == null) { throw new ArgumentNullException("requestContext"); } string text = requestContext.HttpContext.Request.Headers[WellKnownHeader.XTargetServer]; if (!string.IsNullOrEmpty(text) && tryTargetServerRoutingHint) { requestContext.Logger.Set(HttpProxyMetadata.RoutingHint, "TargetServerHeader"); return(new ServerInfoAnchorMailbox(text, requestContext)); } string text2 = requestContext.HttpContext.Request.Headers[Constants.AnchorMailboxHeaderName]; if (string.IsNullOrEmpty(text2)) { return(null); } Match match = RegexUtilities.TryMatch(Constants.SidRegex, text2, requestContext.Logger); if (match != null && match.Success) { string text3 = RegexUtilities.ParseIdentifier(match, "${sid}", requestContext.Logger); if (!string.IsNullOrEmpty(text3)) { SecurityIdentifier securityIdentifier = null; try { securityIdentifier = new SecurityIdentifier(text3); } catch (ArgumentException ex) { requestContext.Logger.AppendGenericError("Ignored Exception", ex.ToString()); } catch (SystemException ex2) { requestContext.Logger.AppendGenericError("Ignored Exception", ex2.ToString()); } if (securityIdentifier != null) { requestContext.Logger.SafeSet(HttpProxyMetadata.RoutingHint, "AnchorMailboxHeader-SID"); return(new SidAnchorMailbox(securityIdentifier, requestContext)); } } } match = RegexUtilities.TryMatch(Constants.GuidAtDomainRegex, text2, requestContext.Logger); if (match != null && match.Success) { string text4 = RegexUtilities.ParseIdentifier(match, "${mailboxguid}", requestContext.Logger); if (!string.IsNullOrEmpty(text4)) { Guid mailboxGuid = new Guid(text4); string text5 = RegexUtilities.ParseIdentifier(match, "${domain}", requestContext.Logger); string value = string.Format("AnchorMailboxHeader-MailboxGuid{0}", string.IsNullOrEmpty(text5) ? string.Empty : "WithDomain"); requestContext.Logger.SafeSet(HttpProxyMetadata.RoutingHint, value); MailboxGuidAnchorMailbox mailboxGuidAnchorMailbox = new MailboxGuidAnchorMailbox(mailboxGuid, text5, requestContext); if (!string.IsNullOrEmpty(text5)) { mailboxGuidAnchorMailbox.FallbackSmtp = text2; } return(mailboxGuidAnchorMailbox); } } if (SmtpAddress.IsValidSmtpAddress(text2)) { requestContext.Logger.Set(HttpProxyMetadata.RoutingHint, "AnchorMailboxHeader-SMTP"); return(new SmtpAnchorMailbox(text2, requestContext)); } return(null); }