private static ActivitySession.ClientInfo ExtractClientInfo(MailboxSession mailboxSession) { ActivitySession.ClientInfo clientInfo = new ActivitySession.ClientInfo { Id = ClientId.Other, Version = "15.00.1497.012" }; string text = (mailboxSession == null || mailboxSession.ClientInfoString == null) ? string.Empty : mailboxSession.ClientInfoString; if (text.Equals("Client=MSExchangeRPC", StringComparison.OrdinalIgnoreCase) && ActivityContext.GetCurrentActivityScope() != null) { clientInfo = ActivitySession.ExtractMapiClientInfo(ActivityContext.GetCurrentActivityScope().ClientInfo, clientInfo); } else if (text.IndexOf("macoutlook", StringComparison.OrdinalIgnoreCase) != -1) { clientInfo.Id = ClientId.MacOutlook; } else if (text.IndexOf("Client=OWA", StringComparison.OrdinalIgnoreCase) != -1) { clientInfo.Id = ClientId.Web; } else if (text.IndexOf("Client=ActiveSync", StringComparison.OrdinalIgnoreCase) != -1) { clientInfo.Id = ClientId.Mobile; } else if (text.StartsWith("Client=Hub Transport", StringComparison.OrdinalIgnoreCase)) { clientInfo.Id = ClientId.Exchange; } else if (text.StartsWith("Client=POP3/IMAP4;Protocol=POP3", StringComparison.OrdinalIgnoreCase)) { clientInfo.Id = ClientId.POP3; } else if (text.StartsWith("Client=POP3/IMAP4;Protocol=IMAP4", StringComparison.OrdinalIgnoreCase)) { clientInfo.Id = ClientId.IMAP4; } else { clientInfo.Id = ClientId.Other; } clientInfo.Id = clientInfo.Id.GetServerSideInstrumentationVariant(true); return(clientInfo); }
public static ActivitySession Create(MailboxSession session) { Util.ThrowOnNullArgument(session, "session"); if (!ActivityLogHelper.IsActivityLoggingEnabled(false)) { return(null); } if (session.LogonType == LogonType.Delegated || session.LogonType == LogonType.DelegatedAdmin) { ExTraceGlobals.SessionTracer.TraceDebug(0L, "Skipping Activity Logging since session is from delegate."); return(null); } IActivityLogger activityLogger = ActivityLogger.Create(session); if (activityLogger == null) { ExTraceGlobals.SessionTracer.TraceDebug(0L, "Skipping Activity Logging since the activity logger couldn't be created"); return(null); } ActivitySession.ClientInfo clientInfo = ActivitySession.ExtractClientInfo(session); return(new ActivitySession(session, clientInfo, activityLogger)); }