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); }
public AnalyticsViewComponent( ISettingService settingService, JavaScriptSnippet jsSnippet, IHostingEnvironment env) { _settingSvc = settingService; _jsSnippet = jsSnippet; _env = env; }
public static void SnippetWillBeEmptyWhenInstrumentationKeyIsEmpty() { var telemetryConfigurationWithEmptyKey = new TelemetryConfiguration { InstrumentationKey = string.Empty }; var snippet = new JavaScriptSnippet(telemetryConfigurationWithEmptyKey); Assert.Equal(string.Empty, snippet.FullScript.ToString()); }
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); }
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); }
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); }
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); }
/// <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); }
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; }
public ApplicationInsightsJsHelper(IHttpContextAccessor accessor, JavaScriptSnippet aiJavaScriptSnippet) { _aiJavaScriptSnippet = aiJavaScriptSnippet; _httpContextAccessor = accessor; }
/// <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; }
public ApplicationInsightsJsHelper(IHttpContextAccessor httpContext, JavaScriptSnippet aiJavaScriptSnippet) { _httpContext = httpContext; _aiJavaScriptSnippet = aiJavaScriptSnippet; }