Esempio n. 1
0
        public static List <ConditionalRegistrationLog.ConditionalRegistrationHitMetadata> GetHitsMetadata(string userIdentity = "")
        {
            List <ConditionalRegistrationLog.ConditionalRegistrationHitMetadata> list = null;
            string text = Path.Combine(ConditionalRegistrationLog.LoggingDirectory, userIdentity);

            if (!string.IsNullOrEmpty(userIdentity))
            {
                list = ConditionalRegistrationLog.GetHitsMetadataForUser(text, userIdentity);
            }
            else
            {
                DirectoryInfo   directoryInfo = new DirectoryInfo(text);
                DirectoryInfo[] directories   = directoryInfo.GetDirectories();
                foreach (DirectoryInfo directoryInfo2 in directories)
                {
                    List <ConditionalRegistrationLog.ConditionalRegistrationHitMetadata> hitsMetadataForUser = ConditionalRegistrationLog.GetHitsMetadataForUser(directoryInfo2.FullName, directoryInfo2.Name);
                    if (hitsMetadataForUser != null)
                    {
                        if (list == null)
                        {
                            list = new List <ConditionalRegistrationLog.ConditionalRegistrationHitMetadata>();
                        }
                        list.AddRange(hitsMetadataForUser);
                    }
                }
            }
            return(list);
        }
Esempio n. 2
0
        internal void HydrateNonPersistentRegistrations()
        {
            string conditionalRegistrationsDirectory = ConditionalRegistrationLog.GetConditionalRegistrationsDirectory();

            if (!string.IsNullOrEmpty(conditionalRegistrationsDirectory))
            {
                DirectoryInfo directoryInfo = new DirectoryInfo(conditionalRegistrationsDirectory);
                FileInfo[]    files         = directoryInfo.GetFiles("*.xml");
                foreach (FileInfo fileInfo in files)
                {
                    try
                    {
                        ConditionalRegistration conditionalRegistration;
                        using (StreamReader streamReader = fileInfo.OpenText())
                        {
                            conditionalRegistration = ConditionalRegistration.DeserializeFromStreamReader(streamReader);
                        }
                        if (conditionalRegistration != null)
                        {
                            ConditionalRegistrationCache.Singleton.Register(conditionalRegistration);
                        }
                        else
                        {
                            File.Delete(fileInfo.FullName);
                        }
                    }
                    catch (Exception exception)
                    {
                        ConditionalRegistrationLog.LogFailedHydration(new XElement(string.Format("Failed to hydrate registration with cookie:{0}", fileInfo.Name)), exception);
                    }
                }
            }
        }
Esempio n. 3
0
            private static FileInfo[] GetHits(string cookie, string user)
            {
                string        orCreateLogFilePathForCookie = ConditionalRegistrationLog.GetOrCreateLogFilePathForCookie(user, cookie, false);
                DirectoryInfo directoryInfo = new DirectoryInfo(orCreateLogFilePathForCookie);

                if (!directoryInfo.Exists)
                {
                    return(null);
                }
                return(directoryInfo.GetFiles("*.xml", SearchOption.TopDirectoryOnly));
            }
Esempio n. 4
0
        public static string Save(ConditionalRegistration registration)
        {
            string text = Path.Combine(ConditionalRegistrationLog.GetConditionalRegistrationsDirectory(), string.Format("{0}.{1}", registration.Cookie, "xml"));

            ExTraceGlobals.DiagnosticHandlersTracer.TraceDebug <string, string>(0L, "[ConditionalRegistrationLog.Save] Logging registration for '{0}' of user '{1}'", registration.Cookie, registration.User);
            using (XmlWriter xmlWriter = XmlWriter.Create(text, ConditionalRegistrationLog.writerSettings))
            {
                XElement xelement = new XElement("ConditionalRegistration");
                XElement content  = new XElement("Description")
                {
                    Value = registration.Description
                };
                xelement.Add(content);
                XElement content2 = new XElement("CreatedTime")
                {
                    Value = registration.Created.ToString()
                };
                xelement.Add(content2);
                XElement content3 = new XElement("User")
                {
                    Value = registration.User
                };
                xelement.Add(content3);
                XElement content4 = new XElement("Cookie")
                {
                    Value = registration.Cookie
                };
                xelement.Add(content4);
                XElement content5 = new XElement("PropertiesToFetch")
                {
                    Value = registration.OriginalPropertiesToFetch
                };
                xelement.Add(content5);
                XElement content6 = new XElement("Filter")
                {
                    Value = registration.OriginalFilter
                };
                xelement.Add(content6);
                XElement content7 = new XElement("TimeToLive")
                {
                    Value = registration.TimeToLive.ToString()
                };
                xelement.Add(content7);
                XElement content8 = new XElement("MaxHits")
                {
                    Value = registration.MaxHits.ToString()
                };
                xelement.Add(content8);
                xelement.WriteTo(xmlWriter);
                xmlWriter.Flush();
            }
            return(text);
        }
Esempio n. 5
0
 // Token: 0x06000904 RID: 2308 RVA: 0x00023B68 File Offset: 0x00021D68
 internal void GetRegistrationMetadata(string userIdentity, out List <BaseConditionalRegistration> active, out List <ConditionalRegistrationLog.ConditionalRegistrationHitMetadata> hits)
 {
     if (string.IsNullOrEmpty(userIdentity))
     {
         active = this.cache.Values;
         hits   = ConditionalRegistrationLog.GetHitsMetadata("");
         return;
     }
     active = (from s in this.cache.Values
               where s.User == userIdentity
               select s).ToList <BaseConditionalRegistration>();
     hits = ConditionalRegistrationLog.GetHitsMetadata(userIdentity);
 }
Esempio n. 6
0
 static ConditionalRegistrationLog()
 {
     ConditionalRegistrationLog.LoggingRootPath = Path.Combine(ExchangeSetupContext.LoggingPath, "ConditionalHandlers");
     ConditionalRegistrationLog.CreateLogFilePath();
     ConditionalRegistrationLog.writerSettings = new XmlWriterSettings();
     ConditionalRegistrationLog.writerSettings.CheckCharacters  = false;
     ConditionalRegistrationLog.writerSettings.CloseOutput      = true;
     ConditionalRegistrationLog.writerSettings.ConformanceLevel = ConformanceLevel.Fragment;
     ConditionalRegistrationLog.writerSettings.Indent           = true;
     ConditionalRegistrationLog.readerSettings = new XmlReaderSettings();
     ConditionalRegistrationLog.readerSettings.CheckCharacters  = false;
     ConditionalRegistrationLog.readerSettings.ConformanceLevel = ConformanceLevel.Fragment;
     ConditionalRegistrationLog.readerSettings.DtdProcessing    = DtdProcessing.Prohibit;
 }
Esempio n. 7
0
 public static void LogFailedHydration(XElement childNode, Exception exception)
 {
     if (ConditionalRegistrationLog.OnFailedHydration != null)
     {
         ConditionalRegistrationLog.OnFailedHydration(childNode, exception);
         return;
     }
     ConditionalRegistrationLog.EventLog.LogEvent(ApplicationLogicEventLogConstants.Tuple_PersistentHandlerRegistrationFailed, null, new object[]
     {
         childNode.ToString(SaveOptions.None),
         ConditionalRegistrationLog.ProtocolName,
         exception.ToString()
     });
 }
Esempio n. 8
0
        // Token: 0x06000901 RID: 2305 RVA: 0x000239C0 File Offset: 0x00021BC0
        internal void Register(ConditionalRegistration registration)
        {
            TimeSpan expiration = (ConditionalRegistrationCache.MaxActiveRegistrationTimeEntry.Value < registration.TimeToLive) ? ConditionalRegistrationCache.MaxActiveRegistrationTimeEntry.Value : registration.TimeToLive;

            if (this.cache.TryAddAbsolute(registration.Cookie, registration, expiration))
            {
                this.UpdateActiveProperties(registration, true);
                if (ConditionalRegistrationCache.TESTHOOK_PersistRegistration == null)
                {
                    ConditionalRegistrationLog.Save(registration);
                    return;
                }
                ConditionalRegistrationCache.TESTHOOK_PersistRegistration(registration);
            }
        }
Esempio n. 9
0
        public static void DeleteRegistration(string cookie)
        {
            string path = Path.Combine(ConditionalRegistrationLog.GetConditionalRegistrationsDirectory(), string.Format("{0}.{1}", cookie, "xml"));

            ExTraceGlobals.DiagnosticHandlersTracer.TraceDebug <string>(0L, "[ConditionalRegistrationLog.DeleteRegistration] Deleting registration for '{0}'", cookie);
            if (File.Exists(path))
            {
                try
                {
                    File.Delete(path);
                }
                catch (Exception ex)
                {
                    ExTraceGlobals.DiagnosticHandlersTracer.TraceDebug <string, string>(0L, "[ConditionalRegistrationLog.DeleteRegistration] failure deleting registration for '{0}'. Exception: {1}", cookie, ex.ToString());
                }
            }
        }
Esempio n. 10
0
 // Token: 0x0600090B RID: 2315 RVA: 0x00023C9C File Offset: 0x00021E9C
 private void HandleRemoveRegistration(string key, BaseConditionalRegistration value, RemoveReason reason)
 {
     ExTraceGlobals.DiagnosticHandlersTracer.TraceDebug <string, RemoveReason, string>((long)this.GetHashCode(), "[ConditionalRegistrationCache.HandleRemoveRegistration] Cookie: {0} was removed for reason {1}.  Description: '{2}'", key, reason, value.Description ?? "<NULL>");
     if (ConditionalRegistrationCache.TESTHOOK_DeleteRegistration == null)
     {
         ConditionalRegistrationLog.DeleteRegistration(key);
     }
     else
     {
         ConditionalRegistrationCache.TESTHOOK_DeleteRegistration(key);
     }
     this.UpdateActiveProperties(value, false);
     if (value.OnExpired != null)
     {
         value.OnExpired(value, reason);
     }
 }
Esempio n. 11
0
        // Token: 0x06000907 RID: 2311 RVA: 0x00023C10 File Offset: 0x00021E10
        internal bool Remove(string cookie)
        {
            if (ConditionalRegistrationCache.TESTHOOK_DeleteRegistration == null)
            {
                ConditionalRegistrationLog.DeleteRegistration(cookie);
            }
            else
            {
                ConditionalRegistrationCache.TESTHOOK_DeleteRegistration(cookie);
            }
            BaseConditionalRegistration baseConditionalRegistration = this.cache.Remove(cookie.ToString());

            if (baseConditionalRegistration != null)
            {
                this.UpdateActiveProperties(baseConditionalRegistration, false);
            }
            return(baseConditionalRegistration != null);
        }
Esempio n. 12
0
        public static string Save(ConditionalResults hit)
        {
            string fullPathForCookie = ConditionalRegistrationLog.GetFullPathForCookie(hit.Registration.User.Replace("/", "-"), hit.Registration.Cookie);

            ConditionalRegistrationLog.LimitFileCount(fullPathForCookie);
            ExTraceGlobals.DiagnosticHandlersTracer.TraceDebug <string, string>(0L, "[ConditionalRegistrationLog.Log] Logging registration results for '{0}' to path '{1}'", hit.Registration.Cookie, fullPathForCookie);
            try
            {
                using (XmlWriter xmlWriter = XmlWriter.Create(fullPathForCookie, ConditionalRegistrationLog.writerSettings))
                {
                    hit.GetXmlResults().WriteTo(xmlWriter);
                    xmlWriter.Flush();
                }
            }
            catch (Exception arg)
            {
                ExTraceGlobals.DiagnosticHandlersTracer.TraceDebug <string, Exception>(0L, "[ConditionalRegistrationLog.Log] Caught exception trying to save hit for cookie: {0}.  Exception: {1}", hit.Registration.Cookie, arg);
            }
            return(fullPathForCookie);
        }
Esempio n. 13
0
 internal void HydratePersistentHandlers()
 {
     if (this.Data == null || this.hydrated)
     {
         return;
     }
     foreach (XNode xnode in this.Data.DescendantNodes())
     {
         XElement xelement = xnode as XElement;
         if (xelement != null)
         {
             try
             {
                 PersistentConditionalRegistration persistentRegistration = PersistentConditionalRegistration.CreateFromXml(xelement);
                 ConditionalRegistrationCache.Singleton.Register(persistentRegistration);
             }
             catch (Exception exception)
             {
                 ConditionalRegistrationLog.LogFailedHydration(xelement, exception);
             }
         }
     }
     this.hydrated = true;
 }
Esempio n. 14
0
 public static string GetFullPathForCookie(string userIdentity, string cookie)
 {
     return(Path.Combine(ConditionalRegistrationLog.GetOrCreateLogFilePathForCookie(userIdentity, cookie, true), string.Format("{0}_{1}.xml", DateTime.UtcNow.ToString("yyyy-MM-dd_HH-mm-ss.fff"), Thread.CurrentThread.ManagedThreadId)));
 }
Esempio n. 15
0
 // Token: 0x060008C2 RID: 2242 RVA: 0x00022E68 File Offset: 0x00021068
 protected BaseConditionalRegistration(string cookie, string user, string propertiesToFetch, string whereClause)
 {
     this.User                      = user;
     this.OriginalFilter            = whereClause;
     this.OriginalPropertiesToFetch = propertiesToFetch;
     this.PropertiesToFetch         = BaseConditionalRegistration.ParsePropertiesToFetch(propertiesToFetch);
     this.QueryFilter               = BaseConditionalRegistration.ParseWhereClause(whereClause);
     this.Created                   = (ExDateTime)TimeProvider.UtcNow;
     this.Cookie                    = cookie;
     if (BaseConditionalRegistration.GetHitCountForCookie == null)
     {
         ConditionalRegistrationLog.ConditionalRegistrationHitMetadata hitsForCookie = ConditionalRegistrationLog.GetHitsForCookie(user, cookie);
         if (hitsForCookie != null)
         {
             this.hits = hitsForCookie.HitFiles.Length;
             return;
         }
     }
     else
     {
         this.hits = BaseConditionalRegistration.GetHitCountForCookie();
     }
 }
Esempio n. 16
0
 // Token: 0x06000905 RID: 2309 RVA: 0x00023BE0 File Offset: 0x00021DE0
 internal void GetRegistrationMetadata(string userIdentity, string cookie, out BaseConditionalRegistration reg, out ConditionalRegistrationLog.ConditionalRegistrationHitMetadata hit)
 {
     reg = this.GetRegistration(cookie);
     hit = ConditionalRegistrationLog.GetHitsForCookie(userIdentity, cookie);
 }