Example #1
0
        public override void Respond(HttpApplication application, GlimpseConfiguration configuration)
        {
            var response = application.Response;
            var mode     = application.GetGlimpseMode();

            response.Write(
                string.Format(
                    "<html><head><title>Glimpse Config</title><script>function toggleCookie(){{var mode = document.getElementById('glimpseMode'); if (mode.innerHTML==='On'){{mode.innerHTML='Off';document.cookie='glimpseMode=Off; path=/;'}}else{{mode.innerHTML='On';document.cookie='glimpseMode=On; path=/;'}}}}</script><head><body><h1>Glimpse Config Settings:</h1><ul><li>On = {0}</li><li>Allowed IP's = <ol>",
                    configuration.On));
            foreach (IpAddress ipAddress in configuration.IpAddresses)
            {
                response.Write(string.Format("<li>{0}</li>", ipAddress.Address));
            }
            response.Write("</ol></li><li>Allowed ContentType's = <ol>");
            foreach (ContentType contentType in configuration.ContentTypes)
            {
                response.Write(string.Format("<li>{0}</li>", contentType.Content));
            }
            response.Write(
                string.Format(
                    "</ol></li></ul><h1>Your Settings:</h1><ol><li>IP = {0}</li><li>GlimpseMode = <input type='checkbox' id='gChk' onclick='toggleCookie();'{2}/> <label for='gChk' id='glimpseMode'>{1}</lable></li></ol></body></html>",
                    application.Request.ServerVariables["REMOTE_ADDR"], mode,
                    mode == GlimpseMode.On ? " checked" : ""));

            application.CompleteRequest();
        }
Example #2
0
        public override void Respond(HttpApplication application, GlimpseConfiguration configuration)
        {
            var response = application.Response;
            var mode     = application.GetGlimpseMode();

            response.Write("<!DOCTYPE html><html><head><style>body { text-align:center; font-family:\"avante garde\", \"Century Gothic\", Serif; font-size:0.8em; line-height:1.4em; } .content { position:absolute; left:50%; margin-left:-450px; text-align:left; width:900px; } h1, h2, h3, h4 { line-height:1.2em; font-weight:normal; } h1 { font-size:4em; } h2 { font-size:2.5em; } h3 { font-size:2em; } .logo { font-family: \"TitilliumMaps\", helvetica, sans-serif; margin:100px 0 40px; position:relative; background: url(http://getglimpse.com/Content/glimpseLogo.png) -10px -15px no-repeat; padding: 0 0 0 140px; } .logo h1 { color:transparent; } .logo div { font-size:1.5em; margin: 25px 0 0 -10px; } .logo blockquote { width:350px; position:absolute; right:0; top:10px; } blockquote { font: 1.2em/1.6em \"avante garde\", \"Century Gothic\", Serif; width: 400px; background: url(http://getglimpse.com/Content/close-quote.gif) no-repeat right bottom; padding-left: 18px; text-indent: -18px; } blockquote:first-letter { background: url(http://getglimpse.com/Content/open-quote.gif) no-repeat left top; padding-left: 18px; font: italic 1.4em \"avante garde\", \"Century Gothic\", Serif; } .myButton{width:175px; line-height: 1.2em; margin:0.25em 0; text-align:center; -moz-box-shadow:inset 0 1px 0 0 #fff;-webkit-box-shadow:inset 0 1px 0 0 #fff;box-shadow:inset 0 1px 0 0 #fff;background:-webkit-gradient(linear,left top,left bottom,color-stop(0.05,#ededed),color-stop(1,#dfdfdf));background:-moz-linear-gradient(center top,#ededed 5%,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#dfdfdf');background-color:#ededed;-moz-border-radius:6px;-webkit-border-radius:6px;border-radius:6px;border:1px solid #dcdcdc;display:inline-block;color:#777;font-family:arial;font-size:24px;padding:10px 41px;text-decoration:none;text-shadow:1px 1px 0 #fff}.myButton:hover{background:-webkit-gradient(linear,left top,left bottom,color-stop(0.05,#dfdfdf),color-stop(1,#ededed));background:-moz-linear-gradient(center top,#dfdfdf 5%,#ededed 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#dfdfdf',endColorstr='#ededed');background-color:#dfdfdf}.myButton:active{position:relative;top:1px}</style><title>Glimpse Config</title><script>function toggleCookie(){var mode = document.getElementById('glimpseState'); if (mode.innerHTML==='On'){mode.innerHTML='Off';document.cookie='glimpseState=Off; path=/;';}else{mode.innerHTML='On';document.cookie='glimpseState=On; path=/;';}}</script><head><body><div class='content'><div class=\"logo\"><blockquote>What Firebug is for the client, Glimpse does for the server... in other words, a client side Glimpse into whats going on in your server.</blockquote><h1>Glimpse</h1><div>A client side Glimpse to your server</div></div><table width=\"100%\"><tr align=\"center\"><td width=\"50%\"><a class=\"myButton\" href=\"javascript:(function(){document.cookie='glimpseState=On; path=/; expires=Sat, 01 Jan 2050 12:00:00 GMT;'; window.location.reload();})();\">Turn Glimpse On</a></td><td><a class=\"myButton\" href=\"javascript:(function(){document.cookie='glimpseClientName='+ prompt('Client Name?') +'; path=/; expires=Sat, 01 Jan 2050 12:00:00 GMT;'; window.location.reload();})();\">Set Glimpse Session Name</a></td></tr></table><p style=\"text-align:center\">Drag the above button to your favorites bar for quick and easy access to Glimpse.</p>");
            response.Write(string.Format("<h2>Glimpse Config Settings:</h2><p>This section details the Glimpse settings in your web.config file.</p><ul><li>On = {0}</li><li>Allowed IP's = <ol>", configuration.On));

            foreach (IpAddress ipAddress in configuration.IpAddresses)
            {
                response.Write(string.Format("<li>{0}</li>", ipAddress.Address));
            }
            response.Write("</ol></li><li>Allowed ContentType's = <ol>");
            foreach (ContentType contentType in configuration.ContentTypes)
            {
                response.Write(string.Format("<li>{0}</li>", contentType.Content));
            }
            response.Write(
                string.Format(
                    "</ol></li></ul><h2>Your Settings:</h2><p>This section tells you how Glimpse sees your requests.</p><ul><li>IP = {0}</li><li>glimpseState = <label for='gChk' id='glimpseState'>{1}</label></li></ul>",
                    application.Request.ServerVariables["REMOTE_ADDR"], mode));

            response.Write("<h2>Loaded Plugins:</h2><p>This is the list of Glimpse plugins loaded for this web application. Glimpse plugins show up as individual tabs in the Glimpse client.</p><ul>");

            foreach (var plugin in Module.Plugins)
            {
                response.Write("<li>" + plugin.Value.GetType() + "</li>");
            }

            response.Write("</ul><h2>More Info:</h2><p><em>For more info see <a href='http://getGlimpse.com'/>getGlimpse.com</a> or follow <a href='http://twitter.com/#!/search/%23glimpse'/>#glimpse</a> on Twitter</em></p></body></html>");

            application.CompleteRequest();
        }
        /// <summary>
        /// Discovers NuGet packages by checking all loaded assemblies for the presence of the <see cref="NuGetPackageAttribute"/> attribute,
        /// while keeping track of assemblies that could not be processed during discovery, if any.
        /// </summary>
        /// <returns>The result of the discovery.</returns>
        public static NuGetPackageDiscoveryResult Discover()
        {
            var foundNuGetPackages       = new List <NuGetPackageAttribute>();
            var nonProcessableAssemblies = new List <Assembly>();

            foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
            {
                NuGetPackageAttribute nuGetPackageAttribute = null;

                try
                {
                    nuGetPackageAttribute = assembly.GetCustomAttributes(typeof(NuGetPackageAttribute), false)
                                            .Cast <NuGetPackageAttribute>()
                                            .SingleOrDefault();
                }
                catch (Exception exception)
                {
                    GlimpseConfiguration.GetLogger().Error(string.Format("Failed requesting custom attributes of assembly '{0}'", assembly.FullName), exception);
                    nonProcessableAssemblies.Add(assembly);
                }

                if (nuGetPackageAttribute != null)
                {
                    nuGetPackageAttribute.Initialize(assembly);
                    foundNuGetPackages.Add(nuGetPackageAttribute);
                }
            }

            return(new NuGetPackageDiscoveryResult(foundNuGetPackages.ToArray(), nonProcessableAssemblies.ToArray()));
        }
Example #4
0
        public override void Respond(HttpApplication application, GlimpseConfiguration configuration)
        {
            var response = application.Response;
            var mode     = application.GetGlimpseMode();

            response.Write(
                string.Format(
                    "<html><head><title>Glimpse Config</title><script>function toggleCookie(){{var mode = document.getElementById('glimpseState'); if (mode.innerHTML==='On'){{mode.innerHTML='Off';document.cookie='glimpseState=Off; path=/;'}}else{{mode.innerHTML='On';document.cookie='glimpseState=On; path=/;'}}}}</script><head><body><h1>Glimpse Config Settings:</h1><ul><li>On = {0}</li><li>Allowed IP's = <ol>",
                    configuration.On));
            foreach (IpAddress ipAddress in configuration.IpAddresses)
            {
                response.Write(string.Format("<li>{0}</li>", ipAddress.Address));
            }
            response.Write("</ol></li><li>Allowed ContentType's = <ol>");
            foreach (ContentType contentType in configuration.ContentTypes)
            {
                response.Write(string.Format("<li>{0}</li>", contentType.Content));
            }
            response.Write(
                string.Format(
                    "</ol></li></ul><h1>Your Settings:</h1><ol><li>IP = {0}</li><li>glimpseState = <input type='checkbox' id='gChk' onclick='toggleCookie();'{2}/> <label for='gChk' id='glimpseState'>{1}</lable></li></ol>",
                    application.Request.ServerVariables["REMOTE_ADDR"], mode,
                    mode == GlimpseMode.On ? " checked" : ""));

            response.Write("<h1>Bookmarklets:</h1><p>Drag the following bookmarklets to your favorites bar for quick and easy access to Glimpse.</p><ul><li><a href=\"javascript:(function(){document.cookie='glimpseState=On; path=/; expires=Sat, 01 Jan 2050 12:00:00 GMT;'; window.location.reload();})();\">Glimpse</a> - Used to turn Glimpse on.</li><li><a href=\"javascript:(function(){document.cookie='glimpseClientName='+ prompt('Client Name?') +'; path=/; expires=Sat, 01 Jan 2050 12:00:00 GMT;'; window.location.reload();})();\">Glimpse Name</a> - Used to set the client name in Glimpse requests.</li></ul></body></html>");

            application.CompleteRequest();
        }
Example #5
0
        public override void Respond(HttpApplication application, GlimpseConfiguration config)
        {
            if (!application.IsValidRequest(config, false, checkPath: false))
            {
                var data =
                    JsSerializer.Serialize(new { Error = true, Message = "You are not configured to access history." });
                JsonResponse(application, data);
                return;
            }

            var queue = application.Application[GlimpseConstants.JsonQueue] as Queue <GlimpseRequestMetadata>;

            if (queue != null)
            {
                var filteredQueue = from request in queue
                                    group request by request.ClientName
                                    into clients
                                    select new { Client = clients.Key, RequestCount = clients.Count() };

                var data = JsSerializer.Serialize(filteredQueue);
                JsonResponse(application, data);
                return;
            }
            else
            {
                var data = JsSerializer.Serialize(new { Error = true, Message = "No history avalible." });
                JsonResponse(application, data);
                return;
            }
        }
Example #6
0
        public UrlValidator(GlimpseConfiguration configuration)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException("configuration");
            }

            Configuration = configuration;
        }
Example #7
0
        /// <summary>
        /// Initializes the Json.NET Glimpse extension.
        /// </summary>
        public static void Initialize()
        {
            // because there is no static way to access runtime policy strategy
            // RuntimePolicyStrategy will be set from JsonInspector
            Func <RuntimePolicy> runtimePolicyStrategy = RuntimePolicyStrategy ?? (() => RuntimePolicy.On);

#pragma warning disable 612,618
            Initialize(runtimePolicyStrategy, GlimpseConfiguration.GetConfiguredTimerStrategy(), GlimpseConfiguration.GetConfiguredMessageBroker());
#pragma warning restore 612,618
        }
Example #8
0
        public override void Respond(HttpApplication application, GlimpseConfiguration configuration)
        {
            var response = application.Response;

            ////<style>.glimpse-open { display:none; } </style>

            response.Write("<!DOCTYPE html><html><head><title>Glimpse - Popup</title><style type='text/css'>html{color:#000;background:#FFF;} body{margin:0;padding:0;} .glimpse-holder { position:relative !important; display: block !important; } .glimpse-buttons, .glimpse-open { display:none !important; } .glimpse-panel { overflow:visible !important; }</style></head><body><script src='/Scripts/jquery-1.4.4.min.js' type='text/javascript'></script><script type='text/javascript' id='glimpseClient' src='/Glimpse/glimpseClient.js'></script>");

            application.CompleteRequest();
        }
Example #9
0
        public IpAddressValidator(GlimpseConfiguration configuration)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException("configuration");
            }

            Configuration = configuration;

            IpFilters = BuildFilters(Configuration).ToList();
        }
        protected override void OnInit(EventArgs e)
        {
            if (GlimpseConfiguration.GetConfiguredTimerStrategy()() != null)
            {
#if NET45Plus
                DataBoundControl.CallingDataMethods += DataBoundControl_CallingDataMethods;
#endif
                DataBoundControl.DataBinding += DataBoundControl_DataBinding;
            }
            base.OnInit(e);
        }
Example #11
0
        public override void Respond(HttpApplication application, GlimpseConfiguration configuration)
        {
            var response = application.Response;

            var path      = VirtualPathUtility.ToAbsolute("~/", application.Context.Request.ApplicationPath); //TODO need to centralize logic
            var requestId = "";                                                                               //TODO need to get this id from somewhere

            response.Write("<!DOCTYPE html><html><head><title>Glimpse - Popup</title>");
            response.Write("<style type='text/css'>html{color:#000;background:#FFF;} body{margin:0;padding:0;} .glimpse-holder { position:relative !important; display: block !important; } .glimpse-popout, .glimpse-popout, .glimpse-terminate, .glimpse-open { display:none !important; } .glimpse-panel { overflow:visible !important; }</style>");
            response.Write("</head><body>");
            response.Write(string.Format(@"<script type='text/javascript' id='glimpseData' data-glimpse-requestID='{1}'>var glimpse, glimpsePath = '{0}'</script>", path, requestId));
            response.Write("<script src='/Scripts/jquery-1.4.4.min.js' type='text/javascript'></script><script type='text/javascript' id='glimpseClient' src='/Glimpse/glimpseClient.js'></script>");
            response.Write("</body></html>");

            application.CompleteRequest();
        }
        public static IDisposable Capture(string eventName, string appName = "enGage")
        {
#pragma warning disable 618
            var timer = GlimpseConfiguration.GetConfiguredTimerStrategy()();
            if (timer == null)
            {
                return(null);
            }
            var broker = GlimpseConfiguration.GetConfiguredMessageBroker();
            if (broker == null)
            {
                return(null);
            }
#pragma warning restore 618
            return(new TimelineCapture(timer, broker, eventName, appName));
        }
Example #13
0
        public override void Respond(HttpApplication application, GlimpseConfiguration config)
        {
            var response = application.Response;
            var assembly = Assembly.GetExecutingAssembly();

            using (var resourceStream = assembly.GetManifestResourceStream("Glimpse.Net.glimpseClient.js"))
            {
                if (resourceStream != null)
                {
                    using (var reader = new StreamReader(resourceStream))
                    {
                        response.Write(reader.ReadToEnd());
                    }
                }
            }
            response.AddHeader("Content-Type", "application/x-javascript");
            application.CompleteRequest();
        }
Example #14
0
        public override void Respond(HttpApplication application, GlimpseConfiguration config)
        {
            var response = application.Response;
            var assembly = Assembly.GetExecutingAssembly();

            using (var resourceStream = assembly.GetManifestResourceStream("Glimpse.Net.glimpseSprite.png"))
            {
                if (resourceStream != null)
                {
                    var byteArray = new byte[resourceStream.Length];
                    resourceStream.Read(byteArray, 0, byteArray.Length);
                    response.OutputStream.Write(byteArray, 0, byteArray.Length);
                }
            }
            response.AddHeader("Content-Type", "image/png");
            application.CompleteRequest();

            return;
        }
Example #15
0
        private GlimpseRuntimeTester(GlimpseConfiguration configuration, Mock <IFrameworkProvider> frameworkProviderMock, Mock <ResourceEndpointConfiguration> endpointConfigMock) : base(configuration)
        {
            FrameworkProviderMock = frameworkProviderMock;
            EndpointConfigMock    = endpointConfigMock;
            HttpRequestStoreMock  = new Mock <IDataStore>();
            TabMock              = new Mock <ITab>().Setup();
            InspectorMock        = new Mock <IInspector>();
            SerializerMock       = new Mock <ISerializer>();
            PersistenceStoreMock = new Mock <IPersistenceStore>();
            LoggerMock           = new Mock <ILogger>();
            ResourceMock         = new Mock <IResource>();
            ResourceResultMock   = new Mock <IResourceResult>();
            RuntimePolicyMock    = new Mock <IRuntimePolicy>();
            RuntimePolicyMock.Setup(v => v.Execute(It.IsAny <IRuntimePolicyContext>())).Returns(RuntimePolicy.On);
            RuntimePolicyMock.Setup(v => v.ExecuteOn).Returns(RuntimeEvent.Initialize);
            RequestMetadataMock = new Mock <IRequestMetadata>();
            RequestMetadataMock.Setup(r => r.RequestHttpMethod).Returns("GET");
            RequestMetadataMock.Setup(r => r.RequestIsAjax).Returns(true);
            RequestMetadataMock.Setup(r => r.RequestUri).Returns("http://localhost");
            RequestMetadataMock.Setup(r => r.ResponseStatusCode).Returns(200);
            RequestMetadataMock.Setup(r => r.ResponseContentType).Returns(@"text\html");
            RequestMetadataMock.Setup(r => r.GetCookie(Constants.ClientIdCookieName)).Returns(@"Some Client");
            RequestMetadataMock.Setup(r => r.GetCookie(Constants.UserAgentHeaderName)).Returns(@"FireFox");
            RequestMetadataMock.Setup(r => r.GetHttpHeader(Constants.HttpRequestHeader)).Returns(Guid.NewGuid().ToString());
            StaticScriptMock = new Mock <IStaticClientScript>();
            StaticScriptMock.Setup(ss => ss.Order).Returns(ScriptOrder.ClientInterfaceScript);
            StaticScriptMock.Setup(ss => ss.GetUri(Version)).Returns("http://localhost/static");
            DynamicScriptMock = new Mock <IDynamicClientScript>();
            DynamicScriptMock.Setup(ds => ds.Order).Returns(ScriptOrder.RequestDataScript);
            DynamicScriptMock.Setup(ds => ds.GetResourceName()).Returns("aResource");
            EncoderMock = new Mock <IHtmlEncoder>();


            FrameworkProviderMock.Setup(fp => fp.RequestMetadata).Returns(RequestMetadataMock.Object);

            configuration.Serializer           = SerializerMock.Object;
            configuration.PersistenceStore     = PersistenceStoreMock.Object;
            configuration.Logger               = LoggerMock.Object;
            configuration.DefaultRuntimePolicy = RuntimePolicy.On;
            configuration.HtmlEncoder          = EncoderMock.Object;

            Configuration = configuration;
        }
Example #16
0
        public override void Respond(HttpApplication application, GlimpseConfiguration config)
        {
            if (!application.IsValidRequest(config, false, checkPath: false))
            {
                var data =
                    JsSerializer.Serialize(new { Error = true, Message = "You are not configured to access history." });
                JsonResponse(application, data);
                return;
            }

            var queue = application.Application[GlimpseConstants.JsonQueue] as Queue <GlimpseRequestMetadata>;

            if (queue != null)
            {
                var result      = new Dictionary <string, object>();
                var sortedQueue = from request in queue orderby request.ClientName select request;
                var lastClient  = Guid.NewGuid().ToString();

                foreach (var request in sortedQueue)
                {
                    if (!lastClient.Equals(request.ClientName))
                    {
                        result.Add(request.ClientName, new Dictionary <string, object>());
                    }

                    var dictionary = result[request.ClientName] as IDictionary <string, object>;

                    dictionary.Add(request.RequestId.ToString(), new { request.Url, request.Browser, request.RequestTime, request.IsAjax, request.Method });

                    lastClient = request.ClientName;
                }

                var data = JsSerializer.Serialize(new { Data = result });
                JsonResponse(application, data);
                return;
            }
            else
            {
                var data = JsSerializer.Serialize(new { Error = true, Message = "No history avalible." });
                JsonResponse(application, data);
                return;
            }
        }
Example #17
0
        internal static OngoingCapture Capture(string eventName, string eventSubText, TimelineCategoryItem category, ITimelineMessage message)
        {
            if (string.IsNullOrEmpty(eventName))
            {
                throw new ArgumentNullException("eventName");
            }

#pragma warning disable 618
            var executionTimer = GlimpseConfiguration.GetConfiguredTimerStrategy()();
            var messageBroker  = GlimpseConfiguration.GetConfiguredMessageBroker();
#pragma warning restore 618

            if (executionTimer == null || messageBroker == null)
            {
                return(OngoingCapture.Empty());
            }

            return(new OngoingCapture(executionTimer, messageBroker, eventName, eventSubText, category, message));
        }
Example #18
0
        public override void Respond(HttpApplication application, GlimpseConfiguration config)
        {
            var response = application.Response;
            var assembly = Assembly.GetExecutingAssembly();

            using (var resourceStream = assembly.GetManifestResourceStream("Glimpse.Net.glimpseSprite.png"))
            {
                if (resourceStream != null)
                {
                    using (var bitmap = new Bitmap(resourceStream))
                    {
                        bitmap.Save(response.OutputStream, ImageFormat.Png);
                    }
                }
            }
            response.AddHeader("Content-Type", "image/png");
            application.CompleteRequest();

            return;
        }
Example #19
0
        public void Construct()
        {
            var providerMock        = new Mock <IFrameworkProvider>();
            var endpointConfogMock  = new Mock <ResourceEndpointConfiguration>();
            var clientScriptsStub   = new List <IClientScript>();
            var loggerMock          = new Mock <ILogger>();
            var encoderMock         = new Mock <IHtmlEncoder>();
            var storeMock           = new Mock <IPersistenceStore>();
            var inspectorsStub      = new LinkedList <IInspector>();
            var resourcesStub       = new LinkedList <IResource>();
            var serializerMock      = new Mock <ISerializer>();
            var tabsStub            = new List <ITab>();
            var displaysStub        = new List <IDisplay>();
            var policiesStub        = new List <IRuntimePolicy>();
            var defaultResourceMock = new Mock <IResource>();
            var factoryMock         = new Mock <IProxyFactory>();
            var brokerMock          = new Mock <IMessageBroker>();
            Func <IExecutionTimer> timerStrategy         = () => new ExecutionTimer(Stopwatch.StartNew());
            Func <RuntimePolicy>   runtimePolicyStrategy = () => RuntimePolicy.On;

            var config = new GlimpseConfiguration(providerMock.Object, endpointConfogMock.Object, clientScriptsStub, loggerMock.Object, RuntimePolicy.On, encoderMock.Object, storeMock.Object, inspectorsStub, resourcesStub, serializerMock.Object,
                                                  tabsStub, displaysStub, policiesStub, defaultResourceMock.Object, factoryMock.Object, brokerMock.Object, "~/Glimpse.axd", timerStrategy, runtimePolicyStrategy);

            Assert.Equal(providerMock.Object, config.FrameworkProvider);
            Assert.Equal(endpointConfogMock.Object, config.ResourceEndpoint);
            Assert.Equal(clientScriptsStub, config.ClientScripts);
            Assert.Equal(loggerMock.Object, config.Logger);
            Assert.Equal(encoderMock.Object, config.HtmlEncoder);
            Assert.Equal(storeMock.Object, config.PersistenceStore);
            Assert.Equal(inspectorsStub, config.Inspectors);
            Assert.Equal(resourcesStub, config.Resources);
            Assert.Equal(serializerMock.Object, config.Serializer);
            Assert.Equal(tabsStub, config.Tabs);
            Assert.Equal(displaysStub, config.Displays);
            Assert.Equal(policiesStub, config.RuntimePolicies);
            Assert.Equal(defaultResourceMock.Object, config.DefaultResource);
            Assert.Equal(factoryMock.Object, config.ProxyFactory);
            Assert.Equal(brokerMock.Object, config.MessageBroker);
            Assert.Equal(timerStrategy, config.TimerStrategy);
            Assert.Equal(runtimePolicyStrategy, config.RuntimePolicyStrategy);
        }
Example #20
0
        public override void Respond(HttpApplication application, GlimpseConfiguration config)
        {
            if (!application.IsValidRequest(config, false, checkPath: false))
            {
                var data =
                    JsSerializer.Serialize(new { Error = true, Message = "You are not configured to access history." });
                JsonResponse(application, data);
                return;
            }

            var queue = application.Application[GlimpseConstants.JsonQueue] as Queue <GlimpseRequestMetadata>;

            if (queue != null)
            {
                var    clientName = application.Request.QueryString[GlimpseConstants.ClientName];
                string data;

                if (string.IsNullOrEmpty(clientName))
                {
                    data = JsSerializer.Serialize(queue);
                }
                else
                {
                    var filteredQueue = from request in queue
                                        where request.ClientName.Equals(clientName)
                                        select request;
                    data = JsSerializer.Serialize(filteredQueue);
                }

                JsonResponse(application, data);
                return;
            }
            else
            {
                var data = JsSerializer.Serialize(new { Error = true, Message = "No history avalible." });
                JsonResponse(application, data);
                return;
            }
        }
Example #21
0
        public static GlimpseRuntimeTester Create()
        {
            var frameworkProviderMock = new Mock <IFrameworkProvider>().Setup();
            var endpointConfigMock    = new Mock <ResourceEndpointConfiguration>();
            var loggerMock            = new Mock <ILogger>();
            var clientScripts         = new ReflectionDiscoverableCollection <IClientScript>(loggerMock.Object);
            var htmlEncoderMock       = new Mock <IHtmlEncoder>();
            var persistenceStoreMock  = new Mock <IPersistenceStore>();
            var inspectors            = new ReflectionDiscoverableCollection <IInspector>(loggerMock.Object);
            var resources             = new ReflectionDiscoverableCollection <IResource>(loggerMock.Object);
            var serializerMock        = new Mock <ISerializer>();
            var tabs              = new ReflectionDiscoverableCollection <ITab>(loggerMock.Object);
            var policies          = new ReflectionDiscoverableCollection <IRuntimePolicy>(loggerMock.Object);
            var resourceMock      = new Mock <IResource>();
            var proxyFactoryMock  = new Mock <IProxyFactory>();
            var messageBrokerMock = new Mock <IMessageBroker>();

            var configuration =
                new GlimpseConfiguration(frameworkProviderMock.Object, endpointConfigMock.Object, clientScripts, loggerMock.Object, RuntimePolicy.On, htmlEncoderMock.Object, persistenceStoreMock.Object, inspectors, resources, serializerMock.Object, tabs, policies, resourceMock.Object, proxyFactoryMock.Object, messageBrokerMock.Object, "~/Glimpse.axd", () => new ExecutionTimer(Stopwatch.StartNew()), () => RuntimePolicy.On);


            return(new GlimpseRuntimeTester(configuration, frameworkProviderMock, endpointConfigMock));
        }
Example #22
0
        public void Subscribe()
        {
            //HttpContext.Current.
            var client = new TcpClient();

            client.Connect(host, port);
            var               stream     = client.GetStream();
            var               writer     = new StreamWriter(stream);
            IMessageBroker    broker     = GlimpseConfiguration.GetConfiguredMessageBroker();
            JsonNetSerializer serializer = new JsonNetSerializer(new NullLogger());

            broker.Subscribe <IMessage>(x =>
            {
                if (acceptedMessages.Contains(x.GetType()))
                //&& (!specificFilters.ContainsKey(x.GetType()) || specificFilters[x.GetType()].Accept(x)))
                {
                    if (messageSerializers.ContainsKey(x.GetType()))
                    {
                        messageSerializers[x.GetType()].Serialize(app, x, writer);
                    }
                }
            });
        }
Example #23
0
        public static IEnumerable <IIpFilter> BuildFilters(GlimpseConfiguration configuration)
        {
            var filters = configuration.IpAddresses.Cast <IpAddress>()
                          .OrderBy(i => i.Address == null ? 1 : 0).ToList(); //Order so address are validated against before ranges

            foreach (var filter in filters)
            {
                if ((filter.Address == null && filter.AddressRange == null) ||
                    (filter.Address != null && filter.AddressRange != null))
                {
                    throw new ConfigurationErrorsException("IpAddress element must have either an address or an address-range attribute");
                }

                if (filter.Address != null)
                {
                    yield return(new IpFilter(IPAddress.Parse(filter.Address)));
                }
                else
                {
                    yield return(new IpRangeFilter(filter.AddressRange));
                }
            }
        }
Example #24
0
        internal static void CaptureMoment(string eventName, string eventSubText, TimelineCategoryItem category, ITimelineMessage message)
        {
            if (string.IsNullOrEmpty(eventName))
            {
                throw new ArgumentNullException("eventName");
            }

#pragma warning disable 618
            var executionTimer = GlimpseConfiguration.GetConfiguredTimerStrategy()();
            var messageBroker  = GlimpseConfiguration.GetConfiguredMessageBroker();
#pragma warning restore 618

            if (executionTimer == null || messageBroker == null)
            {
                return;
            }

            message
            .AsTimelineMessage(eventName, category, eventSubText)
            .AsTimedMessage(executionTimer.Point());

            messageBroker.Publish(message);
        }
Example #25
0
        private static bool IsValidRequestInternal(HttpApplication application, GlimpseConfiguration config, bool checkContentType, bool checkMode, bool checkPath = true)
        {
            var request  = application.Request;
            var response = application.Response;
            var store    = application.Context.Items;

            var validIp = store["__validIp"] as bool?;

            if (!validIp.HasValue)
            {
                store["__validIp"] = validIp = config.IpAddresses.Contains(request.ServerVariables["REMOTE_ADDR"]);
            }

            if (!validIp.Value)
            {
                return(false);
            }

            if (checkMode)
            {
                var validMode = store["__validMode"] as bool?;
                if (!validMode.HasValue)
                {
                    store["__validMode"] = validMode = application.GetGlimpseMode() == GlimpseMode.On;
                }

                if (!validMode.Value)
                {
                    return(false);
                }
            }

            if (checkContentType)
            {
                var validContentType = store["__valueContentType"] as bool?;
                if (!validContentType.HasValue)
                {
                    store["__valueContentType"] = validContentType = config.ContentTypes.Contains(response.ContentType);
                }

                if (!validContentType.Value)
                {
                    return(false);
                }
            }

            if (checkPath)
            {
                var validPath = store["__validPath"] as bool?;
                if (validPath.HasValue && validPath.Value == true)
                {
                    return(false);
                }
            }

            var validResponseCodes = new List <int> {
                200, 301, 302
            };

            if (!validResponseCodes.Contains(response.StatusCode))
            {
                return(false);
            }

            return(true);
        }
 public ViewStatePageStatePersister(Page page, PageStatePersister innerPageStatePersister)
     : base(page)
 {
     Logger = GlimpseConfiguration.GetLogger();
     InnerPageStatePersister = innerPageStatePersister;
 }
Example #27
0
 public static bool IsValidRequest(this HttpApplication application, GlimpseConfiguration config, bool checkContentType, bool checkMode = true, bool checkPath = true)
 {
     return(IsValidRequestInternal(application, config, checkContentType, checkMode, checkPath));
 }
Example #28
0
        public static bool IsValidRequest(this object obj, out HttpApplication application, GlimpseConfiguration config, bool checkContentType, bool checkMode = true, bool checkPath = true)
        {
            application = obj as HttpApplication;
            if (application == null)
            {
                return(false);
            }

            return(IsValidRequestInternal(application, config, checkContentType, checkMode, checkPath));
        }
Example #29
0
        public override void Respond(HttpApplication application, GlimpseConfiguration config)
        {
            if (!application.IsValidRequest(config, false, checkPath: false))
            {
                var data =
                    JsSerializer.Serialize(new { Error = true, Message = "You are not configured to access history." });
                JsonResponse(application, data);
                return;
            }

            var queue = application.Application[GlimpseConstants.JsonQueue] as Queue <GlimpseRequestMetadata>;

            if (queue != null)
            {
                var result = new Dictionary <string, object>();
                IEnumerable <GlimpseRequestMetadata> data;

                var requestId = application.Request.QueryString[GlimpseConstants.ClientRequestId];
                if (!string.IsNullOrEmpty(requestId))
                {
                    data = from request in queue
                           where request.RequestId.ToString().Equals(requestId)
                           select request;

                    var requestResult = data.FirstOrDefault();
                    if (requestResult != null)
                    {
                        result.Add(requestResult.RequestId.ToString(), new { Data = requestResult.Json });
                    }
                }
                else
                {
                    var clientName = application.Request.QueryString[GlimpseConstants.ClientName];

                    if (string.IsNullOrEmpty(clientName))
                    {
                        data = queue;
                    }
                    else
                    {
                        data = from request in queue
                               where request.ClientName.Equals(clientName)
                               select request;
                    }

                    var lastClient = Guid.NewGuid().ToString();
                    foreach (var request in data.OrderBy(d => d.ClientName))
                    {
                        if (!lastClient.Equals(request.ClientName))
                        {
                            result.Add(request.ClientName, new Dictionary <string, object>());
                        }

                        var dictionary = result[request.ClientName] as IDictionary <string, object>;
                        dictionary.Add(request.RequestId.ToString(), new { Data = request.Json });

                        lastClient = request.ClientName;
                    }

                    if (!string.IsNullOrEmpty(clientName) && result.Count == 0)
                    {
                        result.Add(clientName, new Dictionary <string, object>());
                    }
                }

                var json = JsSerializer.Serialize(new { Data = result });
                JsonResponse(application, json);
                return;
            }
            else
            {
                var data = JsSerializer.Serialize(new { Error = true, Message = "No history avalible." });
                JsonResponse(application, data);
                return;
            }
        }
Example #30
0
 /// <summary>
 /// Initializes a new instance of the <see cref="GlimpseTelemetryChannel" /> class.
 /// </summary>
 public GlimpseTelemetryChannel()
 {
     this.MessageBroker = GlimpseConfiguration.GetConfiguredMessageBroker();
     this.TimerStrategy = GlimpseConfiguration.GetConfiguredTimerStrategy();
 }