protected override void ProcessRecord()
{
// We have to invoke this here because we *may not* invoke
// any Vault access but we do rely on Ext mechanism access.
Util.PoshHelper.BeforeExtAccess();
if (ReloadProviders)
{
ChallengeDecoderExtManager.Reload();
ChallengeHandlerExtManager.Reload();
}
else if (!string.IsNullOrEmpty(GetChallengeType))
{
WriteVerbose("Getting details of Challenge Type Decoder");
var tInfo = ChallengeDecoderExtManager.GetProviderInfo(GetChallengeType);
var t = ChallengeDecoderExtManager.GetProvider(GetChallengeType);
WriteObject(new {
ChallengeType = tInfo.Type,
tInfo.Label,
tInfo.SupportedType,
tInfo.Description,
});
}
else if (ListChallengeTypes)
{
WriteVerbose("Listing all Challenge Type Decoders");
WriteObject(ChallengeDecoderExtManager.GetProviderInfos().Select(_ => _.Name), true);
}
else if (!string.IsNullOrEmpty(GetChallengeHandler))
{
WriteVerbose("Getting details of Challenge Type Handler");
var pInfo = ChallengeHandlerExtManager.GetProviderInfo(GetChallengeHandler);
var p = ChallengeHandlerExtManager.GetProvider(GetChallengeHandler);
if (ParametersOnly)
{
WriteVerbose("Showing parameter details only");
WriteObject(p.DescribeParameters().Select(_ => new {
_.Name,
_.Label,
_.Type,
_.IsRequired,
_.IsMultiValued,
_.Description,
}), true);
}
else
{
WriteObject(new {
pInfo.Name,
pInfo.Label,
pInfo.SupportedTypes,
pInfo.Description,
Parameters = p.DescribeParameters().Select(_ => new {
_.Name,
_.Label,
_.Type,
_.IsRequired,
_.IsMultiValued,
_.Description,
}),
});
}
}
else if (ListChallengeHandlers)
{
WriteVerbose("Listing all Challenge Type Handlers");
WriteObject(ChallengeHandlerExtManager.GetProviderInfos().Select(_ => _.Name), true);
}
else
{
WriteVerbose("Getting details of preconfigured Challenge Handler Profile");
using (var vlt = Util.VaultHelper.GetVault(VaultProfile))
{
vlt.OpenStorage();
var v = vlt.LoadVault();
if (ListProfiles)
{
WriteObject(v.ProviderProfiles?.Values, true);
}
else
{
var ppi = v.ProviderProfiles?.GetByRef(ProfileRef, throwOnMissing: false);
if (ppi == null)
{
WriteObject(ppi);
}
else
{
var asset = vlt.GetAsset(Vault.VaultAssetType.ProviderConfigInfo,
ppi.Id.ToString());
using (var s = vlt.LoadAsset(asset))
{
WriteObject(JsonHelper.Load<ProviderProfile>(s), false);
}
}
}
}
}
}