From 17249d226f3e1ed55085279cb312353cb4db1261 Mon Sep 17 00:00:00 2001 From: Warren Buckley Date: Wed, 4 Nov 2020 14:24:48 +0000 Subject: [PATCH] Add new composer/component to add marker file only when clean install or an upgrade runtime state --- .../Telemetry/TelemetryMarkerComponent.cs | 52 +++++++++++++++++++ .../Telemetry/TelemetryMarkerComposer.cs | 9 ++++ src/Umbraco.Web/Umbraco.Web.csproj | 2 + 3 files changed, 63 insertions(+) create mode 100644 src/Umbraco.Web/Telemetry/TelemetryMarkerComponent.cs create mode 100644 src/Umbraco.Web/Telemetry/TelemetryMarkerComposer.cs diff --git a/src/Umbraco.Web/Telemetry/TelemetryMarkerComponent.cs b/src/Umbraco.Web/Telemetry/TelemetryMarkerComponent.cs new file mode 100644 index 0000000000..0426fe777e --- /dev/null +++ b/src/Umbraco.Web/Telemetry/TelemetryMarkerComponent.cs @@ -0,0 +1,52 @@ +using System; +using System.IO; +using Umbraco.Core; +using Umbraco.Core.Composing; +using Umbraco.Core.IO; +using Umbraco.Core.Logging; + +namespace Umbraco.Web.Telemetry +{ + public class TelemetryMarkerComponent : IComponent + { + private IProfilingLogger _logger; + private IRuntimeState _runtime; + + public TelemetryMarkerComponent(IProfilingLogger logger, IRuntimeState runtime) + { + _logger = logger; + _runtime = runtime; + } + + public void Initialize() + { + var telemetricsFilePath = IOHelper.MapPath(SystemFiles.TelemetricsIdentifier); + + // Verify file does not exist already + // If the site is upgraded and the file was removed it would re-create one + if (File.Exists(telemetricsFilePath)) + { + _logger.Warn("When installing or upgrading the anonymous telemetry file already existsed on disk at {filePath} with the runtime state {runtimeStateLevel}", telemetricsFilePath, _runtime.Level); + return; + } + + // Generate GUID + var telemetrySiteIdentifier = Guid.NewGuid(); + + // Write file contents + try + { + File.WriteAllText(telemetricsFilePath, telemetrySiteIdentifier.ToString()); + } + catch (Exception ex) + { + _logger.Error(ex, "Unable to create telemetry file at {filePath}", telemetricsFilePath); + } + + } + + public void Terminate() + { + } + } +} diff --git a/src/Umbraco.Web/Telemetry/TelemetryMarkerComposer.cs b/src/Umbraco.Web/Telemetry/TelemetryMarkerComposer.cs new file mode 100644 index 0000000000..e01b4a7f10 --- /dev/null +++ b/src/Umbraco.Web/Telemetry/TelemetryMarkerComposer.cs @@ -0,0 +1,9 @@ +using Umbraco.Core; +using Umbraco.Core.Composing; + +namespace Umbraco.Web.Telemetry +{ + [RuntimeLevel(MinLevel = RuntimeLevel.Install, MaxLevel = RuntimeLevel.Upgrade)] + public class TelemetryMarkerComposer : ComponentComposer, ICoreComposer + { } +} diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj index 90088fe552..1f7158b2b1 100644 --- a/src/Umbraco.Web/Umbraco.Web.csproj +++ b/src/Umbraco.Web/Umbraco.Web.csproj @@ -297,8 +297,10 @@ + +