private void EncryptEnvironmentConfig(string configFile) { var environment = _envProvider.GetEnvironmentFromFile(configFile); string environmentAsText = File.ReadAllText(configFile); var variablesToEncrypt = environment.Variables.Where(p => p.DoEncrypt).ToList(); foreach (var variable in variablesToEncrypt) { var regex = CreateRegexForVariable(variable.Name); var encryptedValue = AES.Encrypt(variable.Value, _aesKey); environmentAsText = regex.Replace(environmentAsText, @"<variable ${spaces_name}name=""" + variable.Name + @"""${spaces_value}value=""" + encryptedValue + @""" encrypted=""true"""); Log.InfoFormat("encrypting variable '{0}'", variable.Name); } File.WriteAllText(configFile, environmentAsText); }
public void Deserialize_Environment_With_Include() { using (var dir = new TestFolder()) { dir.AddFile("common.xml", @"<?xml version=""1.0""?> <environment name=""common"" description=""just a base""> <variable name=""firstname"" value=""jack"" /> <variable name=""lastname"" value=""bauer"" /> </environment>"); dir.AddFile("testenv.xml", @"<?xml version=""1.0""?> <environment name=""testenv"" description=""testenv which includes common.xml"" include=""common.xml""> <variable name=""lastname"" value=""zuercher"" /> </environment>"); var envprovider = new EnvironmentProvider(); var result = envprovider.GetEnvironmentFromFile(Path.Combine(dir.DirectoryInfo.FullName, "testenv.xml")); Assert.AreEqual(3, result.Variables.Count); Assert.AreEqual("TESTENV", result["env"].Value); Assert.AreEqual("jack", result["firstname"].Value); Assert.AreEqual("zuercher", result["lastname"].Value); } }
private EnvironmentVariablesDto GetEnvironment(string name, bool fetchVariables) { using (var session = DocumentStore.OpenSession()) { var environment = session.Query<Environment>().FirstOrDefault(e => e.Name == name); if (environment == null) { throw HttpError.NotFound("Environment {0} not found.".Fmt(name)); } using (var workspace = new Workspace(FileSystem, ServerSettings)) { var result = new EnvironmentVariablesDto() { Environment = environment.ToDto() }; if (fetchVariables) { workspace.UpdateSources(); var provider = new EnvironmentProvider(); try { var serializedEnvironment = provider.GetEnvironmentFromFile(Path.Combine(workspace.EnviornmentPath, name + ".xml")); var resolver = new VariableResolver(serializedEnvironment.Variables); result.Variables = new List<VariableDto>(); result.Variables.AddRange(serializedEnvironment.Variables.Select(v => new VariableDto() { Name = v.Name, Value = v.Value, Resolved = resolver.TransformVariables(v.Value) })); if (resolver.VariableUsageList.Any(v => v.IsMissingValue)) { result.MissingVariables = new List<string>(resolver.VariableUsageList.Where(v => v.IsMissingValue).Select(v => v.Variable.Name)); } } catch (FileNotFoundException e) { result.Variables = new List<VariableDto>(); result.Warning = "No xml file found for this environment!"; } } return result; } } }