Example #1
0
        public static void SnippetWillBeEmptyWhenInstrumentationKeyIsNotDefined()
        {
            var telemetryConfigurationWithNullKey = new TelemetryConfiguration();
            var snippet = new JavaScriptSnippet(telemetryConfigurationWithNullKey, GetOptions(false), null);

            Assert.Equal(string.Empty, snippet.FullScript);
        }
 /// <summary>
 /// Init script helper - need a csp-nonce in the context
 /// </summary>
 /// <param name="httpContext">Your IHttpContext</param>
 /// <param name="aiJavaScriptSnippet">the snip-it from app insights</param>
 public ApplicationInsightsJsHelper(IHttpContextAccessor httpContext, JavaScriptSnippet aiJavaScriptSnippet = null)
 {
     _httpContext = httpContext;
     if (aiJavaScriptSnippet != null && !string.IsNullOrEmpty(aiJavaScriptSnippet.FullScript))
     {
         _aiJavaScriptSnippet = aiJavaScriptSnippet;
     }
 }
        public static void SnippetWillBeEmptyWhenInstrumentationKeyIsEmpty()
        {
            var telemetryConfigurationWithEmptyKey = new TelemetryConfiguration {
                InstrumentationKey = string.Empty
            };
            var snippet = new JavaScriptSnippet(telemetryConfigurationWithEmptyKey, GetOptions(false), null, encoder);

            Assert.Equal(string.Empty, snippet.FullScript);
        }
Example #4
0
 public AnalyticsViewComponent(
     ISettingService settingService,
     JavaScriptSnippet jsSnippet,
     IHostingEnvironment env)
 {
     _settingSvc = settingService;
     _jsSnippet  = jsSnippet;
     _env        = env;
 }
Example #5
0
        public static void SnippetWillBeEmptyWhenInstrumentationKeyIsEmpty()
        {
            var telemetryConfigurationWithEmptyKey = new TelemetryConfiguration {
                InstrumentationKey = string.Empty
            };
            var snippet = new JavaScriptSnippet(telemetryConfigurationWithEmptyKey);

            Assert.Equal(string.Empty, snippet.FullScript.ToString());
        }
Example #6
0
        public static void SnippetWillIncludeEscapedAuthUserNameIfEnabledAndAuthenticated()
        {
            string unittestkey            = "unittestkey";
            var    telemetryConfiguration = new TelemetryConfiguration {
                InstrumentationKey = unittestkey
            };
            var snippet = new JavaScriptSnippet(telemetryConfiguration, GetOptions(true), GetHttpContextAccessor("user\\name", true));

            Assert.Contains("setAuthenticatedUserContext(\"user\\\\name\")", snippet.FullScript);
        }
Example #7
0
        public static void SnippetWillIncludeInstrumentationKeyAsSubstring()
        {
            string unittestkey            = "unittestkey";
            var    telemetryConfiguration = new TelemetryConfiguration {
                InstrumentationKey = unittestkey
            };
            var snippet = new JavaScriptSnippet(telemetryConfiguration, GetOptions(false), null);

            Assert.Contains("instrumentationKey: '" + unittestkey + "'", snippet.FullScript);
        }
        public static void CrossSiteScriptingIsBlockedByEncoding()
        {
            string unittestkey            = "unittestkey";
            var    telemetryConfiguration = new TelemetryConfiguration {
                InstrumentationKey = unittestkey
            };
            var snippet = new JavaScriptSnippet(telemetryConfiguration, GetOptions(true), GetHttpContextAccessor("<script>alert('hack');</script>", true), encoder);

            Assert.Contains("setAuthenticatedUserContext(\"\\u003Cscript\\u003Ealert(\\u0027hack\\u0027);", snippet.FullScript);
        }
        public static void SnippetWillNotIncludeAuthUserNameIfEnabledAndAuthenticated()
        {
            string unittestkey            = "unittestkey";
            var    telemetryConfiguration = new TelemetryConfiguration {
                InstrumentationKey = unittestkey
            };
            var snippet = new JavaScriptSnippet(telemetryConfiguration, GetOptions(true), GetHttpContextAccessor("username", false), encoder);

            Assert.DoesNotContain("setAuthenticatedUserContext", snippet.FullScript);
        }
Example #10
0
        public static void SnippetWillIncludeConnectionStringAsSubstring()
        {
            string testConnString         = "InstrumentationKey=00000000-0000-0000-0000-000000000000";
            var    telemetryConfiguration = new TelemetryConfiguration {
                ConnectionString = testConnString
            };
            var snippet = new JavaScriptSnippet(telemetryConfiguration, GetOptions(false), null, encoder);

            Assert.Contains("connectionString: '" + testConnString + "'", snippet.FullScript);
        }
Example #11
0
        public static void SnippetWillBeEmptyWhenTelemetryDisabled()
        {
            var telemetryConfigurationWithEmptyKey = new TelemetryConfiguration
            {
                InstrumentationKey = "NonEmpty",
                DisableTelemetry   = true
            };
            var snippet = new JavaScriptSnippet(telemetryConfigurationWithEmptyKey, GetOptions(false), null);

            Assert.Equal(string.Empty, snippet.FullScript);
        }
Example #12
0
        /// <summary>
        /// Gets a code snippet with instrumentation key initialized from <see cref="TelemetryConfiguration"/>.
        /// </summary>
        /// <param name="snippet">The <see cref="JavaScriptSnippet"/> to use.</param>
        /// <param name="context">The current HTTP context.</param>
        /// <returns>
        /// JavaScript code snippet with instrumentation key or empty if instrumentation key was not set for the application.
        /// </returns>
        public static string FullScriptWithCspNonce(this JavaScriptSnippet snippet, HttpContext context)
        {
            string script = snippet.FullScript;

            if (!string.IsNullOrEmpty(script))
            {
                int index = script.IndexOf(OpeningScriptTag);

                if (index > -1)
                {
                    string nonce = context.EnsureCspNonce();
                    script = script.Insert(index + OpeningScriptTag.Length, $"nonce=\"{nonce}\" ");
                }
            }

            return(script);
        }
        protected override void RenderControl(IHtmlWriter writer, IDotvvmRequestContext context)
        {
            var doNotTrack = false;

            if (context.HttpContext.Request.Headers.TryGetValue("DNT", out var doNotTrackHeaderValue))
            {
                doNotTrack = string.Equals(doNotTrackHeaderValue, "1");
            }

            if (!doNotTrack)
            {
                var javascriptSnippet = new JavaScriptSnippet(telemetryConfiguration.Value, applicationInsightsServiceOptions, httpContextAccessor);

                writer.WriteUnencodedText(javascriptSnippet.FullScript);
            }

            base.RenderControl(writer, context);
        }
Example #14
0
 public ApplicationInsightsTelemetryClient(TelemetryClient telemetryClient, JavaScriptSnippet snippet)
 {
     _appInsights = telemetryClient;
     _javascript  = snippet;
 }
        /// <summary>
        /// Extension method to inject Application Insights JavaScript snippet into cshml files.
        /// </summary>
        /// <param name="helper">Html helper object to align with razor code style.</param>
        /// <param name="configuration">Telemetry configuraiton to initialize snippet.</param>
        /// <returns>JavaScript snippt to insert into html page.</returns>
        public static HtmlString ApplicationInsightsJavaScript(this IHtmlHelper helper, TelemetryConfiguration configuration)
        {
            JavaScriptSnippet snippet = new JavaScriptSnippet(configuration);

            return(new HtmlString(snippet.FullScript));
        }
 public InsightsJavaScriptSnippet(JavaScriptSnippet snippet)
 {
     _snippet = snippet;
 }
Example #17
0
 public ApplicationInsightsJsHelper(IHttpContextAccessor accessor, JavaScriptSnippet aiJavaScriptSnippet)
 {
     _aiJavaScriptSnippet = aiJavaScriptSnippet;
     _httpContextAccessor = accessor;
 }
Example #18
0
 /// <summary>
 /// Initializes the <see cref="JavaScriptSnippetTagHelperComponent"/>.
 /// </summary>
 /// <param name="javaScriptSnippet">The <see cref="JavaScriptSnippet"/> to inject in the head tag.</param>
 public JavaScriptSnippetTagHelperComponent(JavaScriptSnippet javaScriptSnippet)
 {
     _javaScriptSnippet = javaScriptSnippet.FullScript;
 }
Example #19
0
 public ApplicationInsightsJsHelper(IHttpContextAccessor httpContext, JavaScriptSnippet aiJavaScriptSnippet)
 {
     _httpContext         = httpContext;
     _aiJavaScriptSnippet = aiJavaScriptSnippet;
 }