Add new composer/component to add marker file only when clean install or an upgrade runtime state

This commit is contained in:
Warren Buckley
2020-11-04 14:24:48 +00:00
parent c93a5a5cd1
commit 17249d226f
3 changed files with 63 additions and 0 deletions

View File

@@ -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<TelemetryMarkerComponent>("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<TelemetryMarkerComponent>(ex, "Unable to create telemetry file at {filePath}", telemetricsFilePath);
}
}
public void Terminate()
{
}
}
}

View File

@@ -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<TelemetryMarkerComponent>, ICoreComposer
{ }
}

View File

@@ -297,8 +297,10 @@
<Compile Include="Models\LinkType.cs" />
<Compile Include="Models\TemplateQuery\OperatorFactory.cs" />
<Compile Include="Telemetry\ReportSiteTask.cs" />
<Compile Include="Telemetry\TelemetryMarkerComponent.cs" />
<Compile Include="Telemetry\TelemetryComponent.cs" />
<Compile Include="Telemetry\TelemetryComposer.cs" />
<Compile Include="Telemetry\TelemetryMarkerComposer.cs" />
<Compile Include="Templates\HtmlLocalLinkParser.cs" />
<Compile Include="Templates\HtmlImageSourceParser.cs" />
<Compile Include="Templates\HtmlUrlParser.cs" />