private static void SetSecretAccessKey(Session session, Configuration config, DynamicDnsUpdaterClientType dnsClientType) { switch (dnsClientType) { case DynamicDnsUpdaterClientType.Route53: string secretAccessKey = session.CustomActionData["SECRETACCESSKEY"]; if (!string.IsNullOrWhiteSpace(secretAccessKey)) { bool encryptionEnabled = Convert.ToBoolean(config.AppSettings.Settings["EncryptionEnabled"].Value); if (encryptionEnabled) { var encryptionService = new EncryptionService(Convert.FromBase64String(Constants.EncryptionKey), Convert.FromBase64String(Constants.InitializationVector)); secretAccessKey = encryptionService.EncryptToBase64String(secretAccessKey); } config.AppSettings.Settings.Remove("AwsSecretAccessKey"); config.AppSettings.Settings.Add("AwsSecretAccessKey", secretAccessKey); } break; default: break; } }
private static void UpdateConfigSettings(string[] args) { string clientTypeIdString = string.Empty; string username = string.Empty; string password = string.Empty; string hostnames = string.Empty; string encryptionEnabled = string.Empty; string secretAccessKeyId = string.Empty; string secretAccessKey = string.Empty; foreach(var arg in args) { //we replace any spaces, as its possible that the user had added a space after the colon var param = arg.Replace(" ", string.Empty); if(param.ToLower().StartsWith("/clienttypeid:")) { clientTypeIdString = param.Substring(14, param.Length - 14); } else if(param.ToLower().StartsWith("/username:"******"/password:"******"/hostnames:")) { hostnames = param.Substring(11, param.Length - 11); } else if(param.ToLower().StartsWith("/encryptionenabled:")) { encryptionEnabled = param.Substring(19, param.Length - 19); } else if(param.ToLower().StartsWith("/secretaccesskeyid:")) { secretAccessKeyId = param.Substring(19, param.Length - 19); } else if(param.ToLower().StartsWith("/secretaccesskey:")) { secretAccessKey = param.Substring(17, param.Length - 17); } } if(string.IsNullOrWhiteSpace(clientTypeIdString)) { Console.WriteLine("ClientTypeId not specified."); return; } int clientTypeId = StringUtility.ConvertToInt(clientTypeIdString, -1); if (clientTypeId == -1) { Console.WriteLine("Invalid ClientTypeId specified."); } DynamicDnsUpdaterClientType clientType; try { clientType = (DynamicDnsUpdaterClientType)clientTypeId; } catch (Exception) { Console.WriteLine("Invalid ClientTypeId specified"); return; } if(!string.IsNullOrWhiteSpace(password) && encryptionEnabled == "true") { var encryptionService = new EncryptionService(Convert.FromBase64String(Bespoke.DynamicDnsUpdater.Common.Constants.EncryptionKey), Convert.FromBase64String(Bespoke.DynamicDnsUpdater.Common.Constants.InitializationVector)); password = encryptionService.EncryptToBase64String(password); } if(!string.IsNullOrWhiteSpace(secretAccessKey) && encryptionEnabled == "true") { var encryptionService = new EncryptionService(Convert.FromBase64String(Bespoke.DynamicDnsUpdater.Common.Constants.EncryptionKey), Convert.FromBase64String(Bespoke.DynamicDnsUpdater.Common.Constants.InitializationVector)); secretAccessKey = encryptionService.EncryptToBase64String(secretAccessKey); } var pathToApp = System.Reflection.Assembly.GetExecutingAssembly().Location; var config = ConfigurationManager.OpenExeConfiguration(pathToApp); switch(clientType) { case DynamicDnsUpdaterClientType.DnsOMatic: if (!string.IsNullOrWhiteSpace(username)) { config.AppSettings.Settings.Remove("DnsOMaticUsername"); config.AppSettings.Settings.Add("DnsOMaticUsername", username); } if (!string.IsNullOrWhiteSpace(password)) { config.AppSettings.Settings.Remove("DnsOMaticPassword"); config.AppSettings.Settings.Add("DnsOMaticPassword", password); } break; case DynamicDnsUpdaterClientType.Route53: if(!string.IsNullOrWhiteSpace(secretAccessKeyId)) { config.AppSettings.Settings.Remove("AwsAccessKeyId"); config.AppSettings.Settings.Add("AwsAccessKeyId", secretAccessKeyId); } if(!string.IsNullOrWhiteSpace(secretAccessKey)) { config.AppSettings.Settings.Remove("AwsSecretAccessKey"); config.AppSettings.Settings.Add("AwsSecretAccessKey", secretAccessKey); } break; case DynamicDnsUpdaterClientType.Dnsimple: if (!string.IsNullOrWhiteSpace(username)) { config.AppSettings.Settings.Remove("DnsimpleUsername"); config.AppSettings.Settings.Add("DnsimpleUsername", username); } if (!string.IsNullOrWhiteSpace(password)) { config.AppSettings.Settings.Remove("DnsimplePassword"); config.AppSettings.Settings.Add("DnsimplePassword", password); } break; } config.AppSettings.Settings.Remove("DynamicDnsUpdaterClientTypeId"); config.AppSettings.Settings.Add("DynamicDnsUpdaterClientTypeId", clientTypeIdString); if (!string.IsNullOrWhiteSpace(hostnames)) { config.AppSettings.Settings.Remove("HostnamesToUpdate"); config.AppSettings.Settings.Add("HostnamesToUpdate", hostnames); } if (encryptionEnabled != "true") encryptionEnabled = "false"; config.AppSettings.Settings.Remove("EncryptionEnabled"); config.AppSettings.Settings.Add("EncryptionEnabled", encryptionEnabled); config.Save(ConfigurationSaveMode.Modified); Console.WriteLine("Config settings updated."); }
private static void SetPassword(Session session, Configuration config, DynamicDnsUpdaterClientType dnsClientType) { string dnsClientPassword = session.CustomActionData["DNSCLIENTPASSWORD"]; if (!string.IsNullOrWhiteSpace(dnsClientPassword)) { bool encryptionEnabled = Convert.ToBoolean(config.AppSettings.Settings["EncryptionEnabled"].Value); string password = string.Empty; if (encryptionEnabled) { var encryptionService = new EncryptionService(Convert.FromBase64String(Common.Constants.EncryptionKey), Convert.FromBase64String(Common.Constants.InitializationVector)); password = encryptionService.EncryptToBase64String(dnsClientPassword); } else { password = dnsClientPassword; } switch (dnsClientType) { case DynamicDnsUpdaterClientType.DnsOMatic: config.AppSettings.Settings.Remove("DnsOMaticPassword"); config.AppSettings.Settings.Add("DnsOMaticPassword", password); break; case DynamicDnsUpdaterClientType.Dnsimple: config.AppSettings.Settings.Remove("DnsimplePassword"); config.AppSettings.Settings.Add("DnsimplePassword", password); break; default: break; } } }