Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 35 additions & 17 deletions Installer/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -100,34 +100,52 @@ static async Task<int> Main(string[] args)
}
}

/*Parse encryption option (default: Mandatory)*/
var encryptArg = args.FirstOrDefault(a => a.StartsWith("--encrypt=", StringComparison.OrdinalIgnoreCase));
/*Parse encryption option (default: Mandatory)
Supports both --encrypt=optional and --encrypt optional */
string encryptionLevel = "Mandatory";
if (encryptArg != null)
var encryptEqualsArg = args.FirstOrDefault(a => a.StartsWith("--encrypt=", StringComparison.OrdinalIgnoreCase));
if (encryptEqualsArg != null)
{
string encryptValue = encryptArg.Substring("--encrypt=".Length).ToLowerInvariant();
string encryptValue = encryptEqualsArg.Substring("--encrypt=".Length).ToLowerInvariant();
encryptionLevel = encryptValue switch
{
"optional" => "Optional",
"strict" => "Strict",
_ => "Mandatory"
};
}
else
{
int encryptIndex = Array.FindIndex(args, a => a.Equals("--encrypt", StringComparison.OrdinalIgnoreCase));
if (encryptIndex >= 0 && encryptIndex + 1 < args.Length && !args[encryptIndex + 1].StartsWith("--", StringComparison.Ordinal))
{
encryptionLevel = args[encryptIndex + 1].ToLowerInvariant() switch
{
"optional" => "Optional",
"strict" => "Strict",
_ => "Mandatory"
};
}
}

/*Filter out option flags and --entra <email> to get positional arguments*/
var filteredArgsList = args
.Where(a => !a.Equals("--reinstall", StringComparison.OrdinalIgnoreCase))
.Where(a => !a.Equals("--uninstall", StringComparison.OrdinalIgnoreCase))
.Where(a => !a.Equals("--reset-schedule", StringComparison.OrdinalIgnoreCase))
.Where(a => !a.Equals("--trust-cert", StringComparison.OrdinalIgnoreCase))
.Where(a => !a.StartsWith("--encrypt=", StringComparison.OrdinalIgnoreCase))
.Where(a => !a.Equals("--entra", StringComparison.OrdinalIgnoreCase))
.ToList();

/*Remove the entra email from positional args if present*/
if (entraEmail != null)
/*Filter out all --flags and their trailing values to get positional arguments
(server, username, password). Flags like --entra <email> and --encrypt <level>
have a following value that must also be removed.*/
var filteredArgsList = new List<string>();
for (int i = 0; i < args.Length; i++)
{
filteredArgsList.Remove(entraEmail);
if (args[i].StartsWith("--", StringComparison.Ordinal))
{
/*Skip flags that take a trailing value (--entra <email>, --encrypt <level>)*/
if ((args[i].Equals("--entra", StringComparison.OrdinalIgnoreCase)
|| args[i].Equals("--encrypt", StringComparison.OrdinalIgnoreCase))
&& i + 1 < args.Length && !args[i + 1].StartsWith("--", StringComparison.Ordinal))
{
i++; /*skip the value too*/
}
continue;
}
filteredArgsList.Add(args[i]);
}

var filteredArgs = filteredArgsList.ToArray();
Expand Down
Loading