public DropboxSender(ILogger <BackupCreatorService> logger, SecretsConfig secrets, DropboxConfig dropboxConfig) { _logger = logger; _secrets = secrets; _dropboxConfig = dropboxConfig; }
public OptionsController(IOptions <AppSettingsConfig> opt, IOptions <Data123Config> dat, IOptions <SecretsConfig> sec) { Options = opt.Value; Data = dat.Value; //user-secret.cmd set AzureKey ABC Secrets = sec.Value; }
private void ProcessSecret(KeyValuePair <string, string> secret, SecretsConfig secretsConfig, ref CodeWriter writer) { if (!secretsConfig.HasKey(secret.Key, out var valueConfig)) { return; } if (valueConfig is null) { valueConfig = GenerateValueConfig(secret, secretsConfig); if (secretsConfig.Properties is null) { // Sanity Check secretsConfig.Properties = new List <ValueConfig>(); } secretsConfig.Properties.Add(valueConfig); } var mapping = valueConfig.PropertyType.GetPropertyTypeMapping(); var accessibility = secretsConfig.Accessibility.ToString().ToLower(); var standardOutput = PropertyBuilder(secret, mapping.Type, mapping.Handler, valueConfig.IsArray, false, accessibility); var safeOutput = PropertyBuilder(secret, mapping.Type, mapping.Handler, valueConfig.IsArray, true, accessibility); writer.AppendAttribute(CompileGeneratedAttribute); writer.AppendLine(standardOutput, safeOutput); }
public WantedBusService(SecretsConfig config, LicensePlateRepository azureRepository, LicenseApiService licenseService) { _config = config; _connectionString = config.WantedConnectionString; _wantedTopic = config.WantedTopic; _subscriptionKey = config.SubscriptionKey; _licenseService = licenseService; _azureRepository = azureRepository; }
public HomeAssistantWebSocketConnector( ILogger <HomeAssistantWebSocketConnector> logger, IWebSocketConnector webSocketConnector, SecretsConfig secretsConfig, HomeAssistantConnector connector) { this.logger = logger; this.webSocketConnector = webSocketConnector; this.secretsConfig = secretsConfig; this.connector = connector; }
public TestBuildConfiguration() { ConfigHelper.SaveDefaultConfig("."); SecretsConfig = new SecretsConfig { ClassName = "Secrets", Delimiter = ";", Namespace = "Helpers", Prefix = "UNIT_TEST_", Properties = new List <ValueConfig>() }; }
public LicensePlateBusService(SecretsConfig config, LicenseApiService licenseService, LicensePlateRepository repo, FileRepository fileRepo, BlobRepository blob) { _config = config; _connectionString = config.ReadConnectionString; _readTopicName = config.ReadTopic; _subscriptionKey = config.SubscriptionKey; _licenseService = licenseService; _repo = repo; _blob = blob; _fileRepo = fileRepo; }
public void ProcessSecretHidesValueForSafeOutput(bool firstRun) { var value = "TestValue"; var pair = new KeyValuePair <string, JToken>(TestKey, value); var generator = GetGenerator(); var config = new SecretsConfig() { Properties = new List <ValueConfig> { new ValueConfig { Name = TestKey, PropertyType = PropertyType.String } } }; var output = generator.ProcessSecret(pair, config, firstRun, true); Assert.DoesNotContain(value, output); Assert.Contains("*****", output); }
public void ProcessSecretGeneratesIntegerValue(bool firstRun) { var key = "TestKey"; var value = 2; var pair = new KeyValuePair <string, JToken>(key, value); var generator = GetGenerator(); var config = new SecretsConfig() { Properties = new List <ValueConfig> { new ValueConfig { Name = TestKey, PropertyType = PropertyType.Int } } }; var output = generator.ProcessSecret(pair, config, firstRun); Assert.Contains($"const int {key}", output); }
public void ProcessSecretValue(bool firstRun, bool isArray, PropertyType type, string typeDeclaration, string value, string valueDeclaration) { var pair = new KeyValuePair <string, JToken>(TestKey, value); var generator = GetGenerator(); var valueConfig = new ValueConfig { Name = TestKey, PropertyType = type, IsArray = isArray }; var secretsConfig = new SecretsConfig { Properties = new List <ValueConfig> { valueConfig } }; var output = generator.ProcessSecret(pair, secretsConfig, firstRun); Assert.Contains($"{typeDeclaration} {TestKey}", output); Assert.Contains(valueDeclaration, output); }
public void ProcessSecretGeneratesIntegerValue(Accessibility accessibility, bool firstRun) { var key = "TestKey"; var value = "2"; var pair = new KeyValuePair <string, string>(key, value); var generator = GetGenerator(); var config = new SecretsConfig() { Accessibility = accessibility, Properties = new List <ValueConfig> { new ValueConfig { Name = TestKey, PropertyType = PropertyType.Int } } }; var output = generator.ProcessSecret(pair, config, firstRun); Assert.Contains($"{accessibility.ToString().ToLower()} const int {key}", output); }
internal string ProcessSecret(KeyValuePair <string, string> secret, SecretsConfig secretsConfig, bool saveOutput, bool safeOutput = false) { if (!secretsConfig.HasKey(secret.Key, out var valueConfig) && !saveOutput) { return(null); } if (valueConfig is null) { valueConfig = GenerateValueConfig(secret, secretsConfig); if (secretsConfig.Properties is null) { // Sanity Check secretsConfig.Properties = new List <ValueConfig>(); } secretsConfig.Properties.Add(valueConfig); } var mapping = valueConfig.PropertyType.GetPropertyTypeMapping(); var accessibility = secretsConfig.Accessibility.ToString().ToLower(); return(PropertyBuilder(secret, mapping.Type, mapping.Handler, valueConfig.IsArray, safeOutput, accessibility)); }
internal string ProcessSecret(KeyValuePair <string, JToken> secret, SecretsConfig secretsConfig, bool saveOutput, bool safeOutput = false) { //var valueConfig = secretsConfig.ContainsKey(secret.Key) ? secretsConfig[secret.Key] : null; if (!secretsConfig.HasKey(secret.Key, out var valueConfig) && !saveOutput) { return(null); } if (valueConfig is null) { valueConfig = GenerateValueConfig(secret, secretsConfig); if (secretsConfig.Properties is null) { // Sanity Check secretsConfig.Properties = new List <ValueConfig>(); } secretsConfig.Properties.Add(valueConfig); } var mapping = valueConfig.PropertyType.GetPropertyTypeMapping(); return(PropertyBuilder(secret, mapping.Type, mapping.Format, valueConfig.IsArray, safeOutput)); }
internal CodeWriter GenerateClass(SecretsConfig secretsConfig, IDictionary <string, string> secrets) { var writer = new CodeWriter(); writer.AppendLine("// ------------------------------------------------------------------------------"); writer.AppendLine("// <autogenerated>"); writer.AppendLine("// This code was generated by Mobile.BuildTools. For more information please visit"); writer.AppendLine("// https://mobilebuildtools.com or to file an issue please see"); writer.AppendLine("// https://github.com/dansiegel/Mobile.BuildTools"); writer.AppendLine("//"); writer.AppendLine("// Changes to this file may cause incorrect behavior and will be lost when"); writer.AppendLine("// the code is regenerated."); writer.AppendLine("//"); writer.AppendLine("// When I wrote this, only God and I understood what I was doing"); writer.AppendLine("// Now, God only knows."); writer.AppendLine("//"); writer.AppendLine("// NOTE: This file should be excluded from source control."); writer.AppendLine("// </autogenerated>"); writer.AppendLine("// ------------------------------------------------------------------------------"); writer.AppendLine(); writer.AppendLine("using System;"); writer.AppendLine("using GeneratedCodeAttribute = System.CodeDom.Compiler.GeneratedCodeAttribute;"); using (writer.Block($"namespace {GetNamespace(secretsConfig.Namespace)}")) { writer.AppendAttribute(CompileGeneratedAttribute); using (writer.Block($"{secretsConfig.Accessibility.ToString().ToLower()} static partial class {secretsConfig.ClassName}")) { foreach (var secret in secrets) { ProcessSecret(secret, secretsConfig, ref writer); writer.AppendLine(); } } } return(writer); }
protected override void ExecuteInternal() { var secrets = GetMergedSecrets(); var replacement = string.Empty; var safeReplacement = string.Empty; var secretsConfig = Build.GetSecretsConfig(); bool saveConfig = secretsConfig is null; if (saveConfig) { secretsConfig = new SecretsConfig() { ClassName = "Secrets", Namespace = "Helpers", Delimiter = ";", Prefix = "BuildTools_", Properties = new List <ValueConfig>() }; } foreach (var secret in secrets) { replacement += ProcessSecret(secret, secretsConfig, saveConfig); safeReplacement += ProcessSecret(secret, secretsConfig, false, true); } if (saveConfig) { if (Build.Configuration.ProjectSecrets is null) { Build.Configuration.ProjectSecrets = new Dictionary <string, SecretsConfig>(); } Build.Configuration.ProjectSecrets.Add(Build.ProjectName, secretsConfig); Build.SaveConfiguration(); } if (string.IsNullOrEmpty(secretsConfig.Namespace)) { secretsConfig.Namespace = "Helpers"; } if (string.IsNullOrEmpty(secretsConfig.ClassName)) { secretsConfig.ClassName = "Secrets"; } replacement = Regex.Replace(replacement, "\n\n$", ""); var secretsClass = GenerateClass(replacement, secretsConfig); Log.LogMessage(Build.Configuration.Debug ? secretsClass : GenerateClass(Regex.Replace(safeReplacement, "\n\n$", ""), secretsConfig)); var namespacePath = string.Join($"{Path.PathSeparator}", secretsConfig.Namespace.Split('.').Where(x => !string.IsNullOrEmpty(x))); var fileName = $"{secretsConfig.ClassName}.cs"; var projectFile = Path.Combine(namespacePath, fileName); var intermediateFile = Path.Combine(Build.IntermediateOutputPath, namespacePath, fileName); var outputFile = File.Exists(projectFile) ? projectFile : intermediateFile; Log.LogMessage($"Writing Secrets Class to: '{outputFile}'"); var generatedFile = new TaskItem(outputFile); generatedFile.SetMetadata("Visible", bool.TrueString); generatedFile.SetMetadata("Link", projectFile); Outputs = generatedFile; var parentDirectory = Directory.GetParent(outputFile); if (!Directory.Exists(parentDirectory.FullName)) { Directory.CreateDirectory(parentDirectory.FullName); } File.WriteAllText(outputFile, secretsClass); }
internal ValueConfig GenerateValueConfig(KeyValuePair <string, JToken> secret, SecretsConfig config) { var value = secret.Value.ToString(); var valueArray = Regex.Split(value, $"(?<!\\\\){config.Delimiter}").Select(x => x.Replace($"\\{config.Delimiter}", config.Delimiter)); bool isArray = false; if (valueArray.Count() > 1) { value = valueArray.FirstOrDefault(); } var type = PropertyType.String; if (bool.TryParse(value, out _)) { type = PropertyType.Bool; } else if (Regex.IsMatch(value, @"\d+\.\d+") && double.TryParse(value, out _)) { type = PropertyType.Double; } else if (int.TryParse(value, out _)) { type = PropertyType.Int; } return(new ValueConfig { Name = secret.Key, IsArray = isArray, PropertyType = type }); }
internal string GenerateClass(string replacement, SecretsConfig secretsConfig) => $"{AutoGeneratedMessage}\n\nusing System;\n\nnamespace {GetNamespace(secretsConfig.Namespace)}\n{{\n{TabSpace}internal static class {secretsConfig.ClassName}\n{TabSpace}{{\n{replacement}\n{TabSpace}}}\n}}\n";
public LicenseApiService(SecretsConfig config, HttpClient client) { _client = client; _config = config; }
protected override void ExecuteInternal() { if (!SecretsFileLocations.Any(x => File.Exists(x))) { Log.LogMessage("No secrets.json was found in either the Project or Solution Directory."); return; } var secrets = GetMergedSecrets(); var replacement = string.Empty; var safeReplacement = string.Empty; var secretsConfig = Build.GetSecretsConfig(); var saveConfig = secretsConfig is null; if (saveConfig) { secretsConfig = new SecretsConfig() { ClassName = "Secrets", Namespace = "Helpers", Delimiter = ";", Prefix = "BuildTools_", Properties = new List <ValueConfig>() }; } if (saveConfig) { if (Build.Configuration.ProjectSecrets is null) { Build.Configuration.ProjectSecrets = new Dictionary <string, SecretsConfig>(); } Build.Configuration.ProjectSecrets.Add(Build.ProjectName, secretsConfig); Build.SaveConfiguration(); } if (string.IsNullOrEmpty(secretsConfig.Namespace)) { secretsConfig.Namespace = "Helpers"; } if (string.IsNullOrEmpty(secretsConfig.ClassName)) { secretsConfig.ClassName = "Secrets"; } var writer = GenerateClass(secretsConfig, secrets); var secretsClass = writer.ToString(); Log.LogMessage(Build.Configuration.Debug ? secretsClass : writer.SafeOutput); var namespacePath = string.Join($"{Path.PathSeparator}", secretsConfig.Namespace.Split('.').Where(x => !string.IsNullOrEmpty(x))); var fileName = $"{secretsConfig.ClassName}.g.cs"; var projectFile = Path.Combine(namespacePath, fileName); var intermediateFile = Path.Combine(Build.IntermediateOutputPath, namespacePath, fileName); Log.LogMessage($"Writing Secrets Class to: '{intermediateFile}'"); var generatedFile = new TaskItem(intermediateFile); generatedFile.SetMetadata("Visible", bool.TrueString); generatedFile.SetMetadata("Link", projectFile); if (File.Exists(projectFile)) { generatedFile.SetMetadata("DependentUpon", $"{secretsConfig.ClassName}.cs"); } Outputs = generatedFile; var parentDirectory = Directory.GetParent(intermediateFile); if (!Directory.Exists(parentDirectory.FullName)) { Directory.CreateDirectory(parentDirectory.FullName); } File.WriteAllText(intermediateFile, secretsClass); }
public HomeAssistantHttpClientFactory(HomeAssistantConfiguration homeAssistantConfiguration, SecretsConfig secretsConfig) { this.homeAssistantConfiguration = homeAssistantConfiguration; this.secretsConfig = secretsConfig; }