Compare commits

..

1 Commits

Author SHA1 Message Date
Trevor Payne
6988da08bf Merge 8643ed2caf into b455e1af21 2021-04-16 00:14:31 +00:00
4 changed files with 41 additions and 99 deletions

View File

@@ -93,8 +93,7 @@ namespace PepperDash.Essentials.Core
{
if (prop.Name.ToLower() == "secret")
{
var secret = GetSecret(prop.Children().First().ToObject<SecretsPropertiesConfig>());
//var secret = GetSecret(JsonConvert.DeserializeObject<SecretsPropertiesConfig>(prop.Children().First().ToString()));
var secret = GetSecret(JsonConvert.DeserializeObject<SecretsPropertiesConfig>(prop.Children().First().ToString()));
prop.Parent.Replace(secret);
}
var recurseProp = prop.Value as JObject;
@@ -112,7 +111,7 @@ namespace PepperDash.Essentials.Core
Debug.Console(1,
"Unable to retrieve secret {0}{1} - Make sure you've added it to the secrets provider",
data.Provider, data.Key);
return String.Empty;
return null;
}
@@ -122,7 +121,8 @@ namespace PepperDash.Essentials.Core
/// </summary>
/// <param name="dc"></param>
/// <returns></returns>
public static IKeyed GetDevice(DeviceConfig dc)
public static
IKeyed GetDevice(DeviceConfig dc)
{
try
{
@@ -153,9 +153,7 @@ namespace PepperDash.Essentials.Core
}
catch (Exception ex)
{
Debug.Console(0, Debug.ErrorLogLevel.Error, "Exception occurred while creating device {0}: {1}", dc.Key, ex.Message);
Debug.Console(2, "{0}", ex.StackTrace);
Debug.Console(2, "Issue with getting device - {0}", ex.Message);
return null;
}
}

View File

@@ -10,22 +10,19 @@ namespace PepperDash.Essentials.Core
{
public string Key { get; set; }
//Added for reference
private static readonly bool SecureSupported;
//private readonly bool _secureSupported;
public CrestronSecretsProvider(string key)
{
Key = key;
}
static CrestronSecretsProvider()
{
//Added for future encrypted reference
SecureSupported = CrestronSecureStorage.Supported;
//_secureSupported = CrestronSecureStorage.Supported;
//if (_secureSupported)
//{
// return;
//}
CrestronDataStoreStatic.InitCrestronDataStore();
if (SecureSupported)
{
//doThingsFuture
}
}
/// <summary>
@@ -33,23 +30,23 @@ namespace PepperDash.Essentials.Core
/// </summary>
/// <param name="key">Secret Key</param>
/// <param name="value">Secret Value</param>
public bool SetSecret(string key, object value)
public void SetSecret(string key, object value)
{
var secret = value as string;
if (String.IsNullOrEmpty(secret))
{
Debug.Console(2, this, "Unable to set secret for {0}:{1} - value is empty.", Key, key);
return false;
return;
}
var setErrorCode = CrestronDataStoreStatic.SetLocalStringValue(key, secret);
switch (setErrorCode)
{
case CrestronDataStore.CDS_ERROR.CDS_SUCCESS:
Debug.Console(1, this,"Secret Successfully Set for {0}:{1}", Key, key);
return true;
Debug.Console(2, this,"Secret Successfully Set for {0}:{1}", Key, key);
break;
default:
Debug.Console(2, this, Debug.ErrorLogLevel.Notice, "Unable to set secret for {0}:{1} - {2}", Key, key, setErrorCode.ToString());
return false;
break;
}
}
@@ -71,7 +68,7 @@ namespace PepperDash.Essentials.Core
default:
Debug.Console(0, this, Debug.ErrorLogLevel.Notice, "Unable to retrieve secret for {0}:{1} - {2}",
Key, key, getErrorCode.ToString());
return null;
return new CrestronSecret(key, String.Empty, this);
}
}
}

View File

@@ -7,7 +7,7 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface ISecretProvider : IKeyed
{
bool SetSecret(string key, object value);
void SetSecret(string key, object value);
ISecret GetSecret(string key);
}

View File

@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Crestron.SimplSharp;
using PepperDash.Core;
@@ -8,16 +9,15 @@ namespace PepperDash.Essentials.Core
{
public static class SecretsManager
{
public static Dictionary<string, ISecretProvider> Secrets { get; private set; }
public static List<ISecretProvider> Secrets { get; set; }
/// <summary>
/// Initialize the SecretsManager
/// </summary>
public static void Initialize()
{
AddSecretProvider("default", new CrestronSecretsProvider("default"));
Secrets = new List<ISecretProvider> {new CrestronSecretsProvider("default")};
CrestronConsole.AddNewConsoleCommand(SetSecretProcess, "setsecret",
"Adds secrets to secret provider",
ConsoleAccessLevelEnum.AccessOperator);
@@ -29,24 +29,18 @@ namespace PepperDash.Essentials.Core
CrestronConsole.AddNewConsoleCommand(DeleteSecretProcess, "deletesecret",
"Deletes secrets in secret provider",
ConsoleAccessLevelEnum.AccessAdministrator);
}
static SecretsManager()
{
Secrets = new Dictionary<string, ISecretProvider>();
}
/// <summary>
/// Get Secret Provider from dictionary by key
/// Method to return a ISecretProvider to Set, Get, and Delete Secrets
/// </summary>
/// <param name="key">Dictionary Key for provider</param>
/// <returns>ISecretProvider</returns>
/// <param name="key">Secret Provider Key</param>
/// <returns></returns>
public static ISecretProvider GetSecretProviderByKey(string key)
{
ISecretProvider secret;
Secrets.TryGetValue(key, out secret);
var secret = Secrets.FirstOrDefault(o => o.Key == key);
if (secret == null)
{
Debug.Console(1, "SecretsManager unable to retrieve SecretProvider with the key '{0}'", key);
@@ -54,44 +48,6 @@ namespace PepperDash.Essentials.Core
return secret;
}
/// <summary>
/// Add secret provider to secrets dictionary
/// </summary>
/// <param name="key">Key of new entry</param>
/// <param name="provider">New Provider Entry</param>
public static void AddSecretProvider(string key, ISecretProvider provider)
{
if (!Secrets.ContainsKey(key))
{
Secrets.Add(key, provider);
Debug.Console(1, "Secrets provider '{0}' added to SecretsManager", key);
}
Debug.Console(0, Debug.ErrorLogLevel.Notice, "Unable to add Provider '{0}' to Secrets. Provider with that key already exists", key );
}
/// <summary>
/// Add secret provider to secrets dictionary, with optional overwrite parameter
/// </summary>
/// <param name="key">Key of new entry</param>
/// <param name="provider">New provider entry</param>
/// <param name="overwrite">true to overwrite any existing providers in the dictionary</param>
public static void AddSecretProvider(string key, ISecretProvider provider, bool overwrite)
{
if (!Secrets.ContainsKey(key))
{
Secrets.Add(key, provider);
Debug.Console(1, "Secrets provider '{0}' added to SecretsManager", key);
}
if (overwrite)
{
Secrets.Add(key, provider);
Debug.Console(1, Debug.ErrorLogLevel.Notice, "Provider with the key '{0}' already exists in secrets. Overwriting with new secrets provider.", key);
}
Debug.Console(0, Debug.ErrorLogLevel.Notice, "Unable to add Provider '{0}' to Secrets. Provider with that key already exists", key);
}
private static void SetSecretProcess(string cmd)
{
string response;
@@ -120,7 +76,7 @@ namespace PepperDash.Essentials.Core
}
var provider = GetSecretProviderByKey(args[0]);
var provider = Secrets.FirstOrDefault(o => o.Key == args[0]);
if (provider == null)
{
@@ -136,14 +92,11 @@ namespace PepperDash.Essentials.Core
if (provider.GetSecret(key) == null)
{
response = provider.SetSecret(key, secret)
? String.Format(
provider.SetSecret(key, secret);
response =
String.Format(
"Secret successfully set for {0}:{1}",
provider.Key, key)
: String.Format(
"Unable to set secret for {0}:{1}",
provider.Key, key);
provider.Key, key);
CrestronConsole.ConsoleCommandResponse(response);
return;
}
@@ -184,7 +137,7 @@ namespace PepperDash.Essentials.Core
}
var provider = GetSecretProviderByKey(args[0]);
var provider = Secrets.FirstOrDefault(o => o.Key == args[0]);
if (provider == null)
{
@@ -200,12 +153,10 @@ namespace PepperDash.Essentials.Core
if (provider.GetSecret(key) != null)
{
response = provider.SetSecret(key, secret)
? String.Format(
"Secret successfully set for {0}:{1}",
provider.Key, key)
: String.Format(
"Unable to set secret for {0}:{1}",
provider.SetSecret(key, secret);
response =
String.Format(
"Secret successfully updated for {0}:{1}",
provider.Key, key);
CrestronConsole.ConsoleCommandResponse(response);
return;
@@ -248,7 +199,7 @@ namespace PepperDash.Essentials.Core
}
var provider = GetSecretProviderByKey(args[0]);
var provider = Secrets.FirstOrDefault(o => o.Key == args[0]);
if (provider == null)
{
@@ -263,15 +214,11 @@ namespace PepperDash.Essentials.Core
provider.SetSecret(key, "");
response = provider.SetSecret(key, "")
? String.Format(
response =
String.Format(
"Secret successfully deleted for {0}:{1}",
provider.Key, key)
: String.Format(
"Unable to delete secret for {0}:{1}",
provider.Key, key);
CrestronConsole.ConsoleCommandResponse(response);
return;
}