Skip to content
This repository was archived by the owner on Jan 12, 2024. It is now read-only.

IQ# Telemetry Register Known Folders #744

Open
wants to merge 11 commits into
base: main
Choose a base branch
from
24 changes: 18 additions & 6 deletions src/Tool/Program.cs
Original file line number Diff line number Diff line change
@@ -65,7 +65,8 @@ public static int Main(string[] args)
{
["--user-agent"] = "UserAgent",
["--user-agent-extra"] = "UserAgentExtra",
["--hosting-env"] = "HostingEnvironment"
["--hosting-env"] = "HostingEnvironment",
["--register-folders-for-telemetry"] = "RegisterFoldersForTelemetry"
}
)
.Add(new NormalizedEnvironmentVariableConfigurationSource
@@ -144,7 +145,7 @@ public static int Main(string[] args)
// we get to this point, such that userAgentOption is
// not null at this point.
userAgentOption!.HasValue()
? new [] {"--user-agent-extra", userAgentOption!.Value()}
? new[] { "--user-agent-extra", userAgentOption!.Value() }
: Array.Empty<string>()
)
.AddKernelCommand(
@@ -168,6 +169,11 @@ public static int Main(string[] args)
"Specifies the hosting environment that this kernel is being run in.",
CommandOptionType.SingleValue
);
kernelCmd.Option<string>(
"--register-folders-for-telemetry <FOLDER>",
"Sends the sub-folders names of <FOLDER> as plain-text to Microsoft telemetry systems.",
CommandOptionType.SingleValue
);
}
)
);
@@ -182,15 +188,15 @@ public static int Main(string[] args)

public static IWebHost GetHttpServer(string[]? args)
{
var builder = WebHost.CreateDefaultBuilder(args ?? Array.Empty<string>())
.UseUrls("http://localhost:8008")
.UseStartup<Startup>();
var builder = WebHost.CreateDefaultBuilder(args ?? Array.Empty<string>())
.UseUrls("http://localhost:8008")

Check failure

Code scanning / devskim

Insecure URL

Insecure URL
.UseStartup<Startup>();

if (Configuration is not null)
{
builder.UseConfiguration(Configuration);
}

return builder.Build();
}

@@ -205,12 +211,18 @@ public static KernelApplication AddWorkspaceOption(KernelApplication app)
"operations available for simulation.", CommandOptionType.SingleValue);
var skipAutoLoadProjectOption = app.Option("--skipAutoLoadProject",
"Specifies whether to skip automatically loading the .csproj from the workspace's root folder.", CommandOptionType.SingleValue);
var registerFoldersForTelemetryOption = app.Option<string>(
"--register-folders-for-telemetry <FOLDER>",
"Sends the sub-folders names of <FOLDER> as plain-text to Microsoft telemetry systems.",
CommandOptionType.SingleValue
);

foreach (var command in app.Commands.Where(c => c.Name == "kernel" || c.Name == "server"))
{
command.Options.Add(cacheOption);
command.Options.Add(workspaceOption);
command.Options.Add(skipAutoLoadProjectOption);
command.Options.Add(registerFoldersForTelemetryOption);
}

return app;
25 changes: 25 additions & 0 deletions src/Tool/Telemetry.cs
Original file line number Diff line number Diff line change
@@ -205,6 +205,31 @@ private void InitTelemetryLogger(Applications.Events.ILogger telemetryLogger, IC
telemetryLogger.SetContext("DeviceId".WithTelemetryNamespace(), GetDeviceId(), PiiKind.GenericData);
telemetryLogger.SetContext("UserAgent".WithTelemetryNamespace(), config?.GetValue<string>("UserAgent"));
telemetryLogger.SetContext("HostingEnvironment".WithTelemetryNamespace(), config?.GetValue<string>("HostingEnvironment"));
RegisterFoldersForTelemetry(config?.GetValue<string>("RegisterFoldersForTelemetry"));

if (config?.GetValue<string>("HostingEnvironment") == "build-agent")
{
RegisterFoldersForTelemetry(Directory.GetCurrentDirectory());
LogManager.UploadNow();
}
}

private void RegisterFoldersForTelemetry(string folder, string rootFolder = null)
{
if (!string.IsNullOrEmpty(folder))
{
rootFolder ??= Directory.GetParent(folder).FullName;
var evt = new EventProperties() { Name = "WellKnownFolder".WithTelemetryNamespace() };
evt.SetProperty("FolderName".WithTelemetryNamespace(), Path.GetRelativePath(rootFolder, folder), PiiKind.None);
evt.SetProperty("FolderNameHash".WithTelemetryNamespace(), Path.GetFileName(folder), PiiKind.GenericData);
TelemetryLogger.LogEvent(evt);

var subFolders = Directory.EnumerateDirectories(folder).Where(s => !Path.GetFileName(s).StartsWith(".")).ToList();
foreach (var subFolder in subFolders)
{
RegisterFoldersForTelemetry(subFolder, rootFolder);
}
}
}

/// <summary>
2 changes: 1 addition & 1 deletion src/Tool/Tool.csproj
Original file line number Diff line number Diff line change
@@ -24,7 +24,7 @@
<ContentTargetFolders>\</ContentTargetFolders>
<ApplicationIcon />
</PropertyGroup>

<ItemGroup>
<PackageReference Condition="$([MSBuild]::IsOsPlatform('Windows'))"
Include="libLLVM.runtime.win-x64" Version="11.0.0"