diff --git a/.gitignore b/.gitignore index 3e759b7..b7735f2 100644 --- a/.gitignore +++ b/.gitignore @@ -328,3 +328,5 @@ ASALocalRun/ # MFractors (Xamarin productivity tool) working folder .mfractor/ +.claude/settings.local.json +sample change.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d35e57..8742947 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,2 +1,5 @@ +# v1.0.1 +* SaaS Containerization Fixes, added enabled flag cleaned up some log messages + # v1.0.0 * Initial Release. Sync, Enroll, and Revocation. diff --git a/HydrantCAProxy/HydrantIdCAPlugin.cs b/HydrantCAProxy/HydrantIdCAPlugin.cs index 192f092..ad510da 100644 --- a/HydrantCAProxy/HydrantIdCAPlugin.cs +++ b/HydrantCAProxy/HydrantIdCAPlugin.cs @@ -29,6 +29,7 @@ public class HydrantIdCAPlugin : IAnyCAPlugin private RequestManager _requestManager; private IAnyCAPluginConfigProvider Config { get; set; } private ICertificateDataReader certDataReader; + private HydrantIdCAPluginConfig.Config _config; public void Initialize(IAnyCAPluginConfigProvider configProvider, ICertificateDataReader certificateDataReader) { @@ -37,10 +38,13 @@ public void Initialize(IAnyCAPluginConfigProvider configProvider, ICertificateDa { certDataReader = certificateDataReader; Config = configProvider; + var rawData = JsonConvert.SerializeObject(configProvider.CAConnectionData); + _config = JsonConvert.DeserializeObject(rawData); + _logger.LogTrace($"Initialize - Enabled: {_config.Enabled}"); } catch (Exception ex) { - _logger.LogError($"Failed to initialize GCP CAS CAPlugin: {ex}"); + _logger.LogError($"Failed to initialize HydrantId CAPlugin: {ex}"); } } @@ -58,23 +62,39 @@ private static List CheckRequiredValues(Dictionary conne public async Task Ping() { - + _logger.MethodEntry(); + if (!_config.Enabled) + { + _logger.LogWarning($"The CA is currently in the Disabled state. It must be Enabled to perform operations. Skipping connectivity test..."); + _logger.MethodExit(LogLevel.Trace); + return; + } + _logger.LogDebug("Pinging HydrantId to validate connection"); + _logger.MethodExit(); } public Task ValidateCAConnectionInfo(Dictionary connectionInfo) { _logger.MethodEntry(); - _logger.LogDebug($"Validating GCP CAS CA Connection properties"); + _logger.LogDebug($"Validating HydrantId CA Connection properties"); var rawData = JsonConvert.SerializeObject(connectionInfo); - HydrantIdCAPluginConfig.Config config = JsonConvert.DeserializeObject(rawData); + _config = JsonConvert.DeserializeObject(rawData); - _logger.LogTrace($"HydrantIdClientFromCAConnectionData - HydrantIdBaseUrl: {config.HydrantIdBaseUrl}"); + _logger.LogTrace($"HydrantIdClientFromCAConnectionData - HydrantIdBaseUrl: {_config.HydrantIdBaseUrl}"); + _logger.LogTrace($"HydrantIdClientFromCAConnectionData - Enabled: {_config.Enabled}"); + + if (!_config.Enabled) + { + _logger.LogWarning($"The CA is currently in the Disabled state. It must be Enabled to perform operations. Skipping config validation..."); + _logger.MethodExit(); + return Task.CompletedTask; + } List missingFields = new List(); - if (string.IsNullOrEmpty(config.HydrantIdBaseUrl)) missingFields.Add(nameof(config.HydrantIdBaseUrl)); - if (string.IsNullOrEmpty(config.HydrantIdAuthId)) missingFields.Add(nameof(config.HydrantIdAuthId)); - if (string.IsNullOrEmpty(config.HydrantIdAuthKey)) missingFields.Add(nameof(config.HydrantIdAuthKey)); + if (string.IsNullOrEmpty(_config.HydrantIdBaseUrl)) missingFields.Add(nameof(_config.HydrantIdBaseUrl)); + if (string.IsNullOrEmpty(_config.HydrantIdAuthId)) missingFields.Add(nameof(_config.HydrantIdAuthId)); + if (string.IsNullOrEmpty(_config.HydrantIdAuthKey)) missingFields.Add(nameof(_config.HydrantIdAuthKey)); if (missingFields.Count > 0) { diff --git a/HydrantCAProxy/HydrantIdCAPluginConfig.cs b/HydrantCAProxy/HydrantIdCAPluginConfig.cs index 10a5c28..adcebcc 100644 --- a/HydrantCAProxy/HydrantIdCAPluginConfig.cs +++ b/HydrantCAProxy/HydrantIdCAPluginConfig.cs @@ -28,6 +28,7 @@ public class ConfigConstants public static string HydrantIdAuthId = "HydrantIdAuthId"; public static string HydrantIdAuthKey = "HydrantIdAuthKey"; public static string DefaultPageSize = "DefaultPageSize"; + public static string Enabled = "Enabled"; } public class Config @@ -35,6 +36,7 @@ public class Config public string HydrantIdBaseUrl { get; set; } public string HydrantIdAuthId { get; set; } public string HydrantIdAuthKey { get; set; } + public bool Enabled { get; set; } } public static class EnrollmentParametersConstants @@ -68,6 +70,13 @@ public static Dictionary GetPluginAnnotations() Hidden = true, DefaultValue = "", Type = "Secret" + }, + [ConfigConstants.Enabled] = new PropertyConfigInfo() + { + Comments = "Flag to Enable or Disable the CA connector.", + Hidden = false, + DefaultValue = true, + Type = "Bool" } }; } diff --git a/README.md b/README.md index de674de..2fa1217 100644 --- a/README.md +++ b/README.md @@ -260,6 +260,7 @@ The plugin supports the following standard CRL revocation reasons: * **HydrantIdBaseUrl** - The Base URL For the HydrantId Endpoint similar to https://acm-stage.hydrantid.com. Get this from HydrantId. * **HydrantIdAuthId** - The AuthId Obtained from HydrantId. * **HydrantIdAuthKey** - The AuthKey Obtained from HydrantId. + * **Enabled** - Flag to Enable or Disable the CA connector. 2. ### Template (Product) Configuration diff --git a/integration-manifest.json b/integration-manifest.json index e859acb..c8b6e47 100644 --- a/integration-manifest.json +++ b/integration-manifest.json @@ -24,6 +24,10 @@ { "name": "HydrantIdAuthKey", "description": "The AuthKey Obtained from HydrantId." + }, + { + "name": "Enabled", + "description": "Flag to Enable or Disable the CA connector." } ], "enrollment_config": [