mirror of
https://github.com/okieselbach/AutopilotMonitor.git
synced 2026-10-24 12:42:38 +00:00
await-enrollment param persistence and added agent command line to logfile
This commit is contained in:
@@ -171,6 +171,24 @@ namespace AutopilotMonitor.Agent
|
||||
catch { /* ignore corrupt file */ }
|
||||
}
|
||||
|
||||
// Await-enrollment config: if no --await-enrollment CLI arg, check for persisted config file.
|
||||
// RunInstallMode persists await-enrollment.json so the Scheduled Task picks it up on restart.
|
||||
var awaitConfigPath = Path.Combine(dataDirectory, "await-enrollment.json");
|
||||
if (!awaitEnrollment && File.Exists(awaitConfigPath))
|
||||
{
|
||||
try
|
||||
{
|
||||
var json = File.ReadAllText(awaitConfigPath);
|
||||
var awaitConfig = Newtonsoft.Json.JsonConvert.DeserializeObject<AwaitEnrollmentConfigFile>(json);
|
||||
if (awaitConfig != null)
|
||||
{
|
||||
awaitEnrollment = true;
|
||||
awaitEnrollmentTimeoutMinutes = awaitConfig.TimeoutMinutes;
|
||||
}
|
||||
}
|
||||
catch { /* ignore corrupt file */ }
|
||||
}
|
||||
|
||||
var useBootstrapToken = !string.IsNullOrEmpty(bootstrapToken);
|
||||
|
||||
return new AgentConfiguration
|
||||
|
||||
@@ -58,6 +58,22 @@ namespace AutopilotMonitor.Agent
|
||||
logger.Info("Bootstrap config persisted for Scheduled Task");
|
||||
}
|
||||
|
||||
// Persist await-enrollment config if --await-enrollment was provided.
|
||||
// The Scheduled Task command line has no args, so the agent reads this file on restart.
|
||||
if (args.Contains("--await-enrollment"))
|
||||
{
|
||||
var dataDir = Environment.ExpandEnvironmentVariables(Constants.AgentDataDirectory);
|
||||
var awaitConfigPath = Path.Combine(dataDir, "await-enrollment.json");
|
||||
var awaitTimeoutArg = GetArgValue(args, "--await-enrollment-timeout");
|
||||
var timeoutMinutes = 480;
|
||||
if (!string.IsNullOrEmpty(awaitTimeoutArg) && int.TryParse(awaitTimeoutArg, out var parsed))
|
||||
timeoutMinutes = parsed;
|
||||
|
||||
var awaitConfig = new AwaitEnrollmentConfigFile { TimeoutMinutes = timeoutMinutes };
|
||||
File.WriteAllText(awaitConfigPath, Newtonsoft.Json.JsonConvert.SerializeObject(awaitConfig));
|
||||
logger.Info($"Await-enrollment config persisted for Scheduled Task (timeout: {timeoutMinutes}min)");
|
||||
}
|
||||
|
||||
var taskName = Constants.ScheduledTaskName;
|
||||
var taskCommand = $"\"{targetExePath}\"";
|
||||
|
||||
|
||||
@@ -92,6 +92,7 @@ namespace AutopilotMonitor.Agent
|
||||
|
||||
logger.Info($"======================= Agent starting ({(consoleMode ? "console" : "background/SYSTEM")}) =======================");
|
||||
logger.Info($"Agent version: {agentVersion}");
|
||||
logger.Info($"Command line: {FormatArgsForLog(args)}");
|
||||
|
||||
// Check for enrollment complete marker (handles scheduled task cleanup retry)
|
||||
if (CheckEnrollmentCompleteMarker(config, logger, consoleMode))
|
||||
@@ -169,6 +170,23 @@ namespace AutopilotMonitor.Agent
|
||||
logger.Warning("Await-enrollment: MDM certificate found but TenantId not yet in registry");
|
||||
}
|
||||
}
|
||||
|
||||
// Remove persisted config so subsequent restarts proceed normally
|
||||
try
|
||||
{
|
||||
var awaitConfigPath = Path.Combine(
|
||||
Environment.ExpandEnvironmentVariables(Constants.AgentDataDirectory),
|
||||
"await-enrollment.json");
|
||||
if (File.Exists(awaitConfigPath))
|
||||
{
|
||||
File.Delete(awaitConfigPath);
|
||||
logger.Info("Await-enrollment: Config file removed — subsequent starts will proceed normally");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Warning($"Await-enrollment: Could not remove config file: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
using (var service = new MonitoringService(config, logger, agentVersion))
|
||||
@@ -256,6 +274,23 @@ namespace AutopilotMonitor.Agent
|
||||
Console.WriteLine(" --replay-speed-factor <FACTOR> Time compression factor (default: 50)");
|
||||
}
|
||||
|
||||
static string FormatArgsForLog(string[] args)
|
||||
{
|
||||
if (args == null || args.Length == 0)
|
||||
return "(none)";
|
||||
|
||||
var parts = new string[args.Length];
|
||||
for (int i = 0; i < args.Length; i++)
|
||||
{
|
||||
if (i > 0 && string.Equals(args[i - 1], "--bootstrap-token", StringComparison.OrdinalIgnoreCase))
|
||||
parts[i] = "***REDACTED***";
|
||||
else
|
||||
parts[i] = args[i];
|
||||
}
|
||||
|
||||
return string.Join(" ", parts);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Checks if another AutopilotMonitor.Agent.exe process is already running.
|
||||
/// </summary>
|
||||
@@ -287,4 +322,15 @@ namespace AutopilotMonitor.Agent
|
||||
public string BootstrapToken { get; set; }
|
||||
public string TenantId { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Persisted await-enrollment configuration.
|
||||
/// Saved to %ProgramData%\AutopilotMonitor\await-enrollment.json by RunInstallMode
|
||||
/// so the Scheduled Task enters await-enrollment mode on startup.
|
||||
/// Deleted after the MDM certificate is found.
|
||||
/// </summary>
|
||||
class AwaitEnrollmentConfigFile
|
||||
{
|
||||
public int TimeoutMinutes { get; set; } = 480;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
386
|
||||
388
|
||||
|
||||
Reference in New Issue
Block a user