/// <summary> /// Write connection settings to the connection-settings.json. /// </summary> /// <param name="connectionSettings"> /// The connection settings. /// </param> /// <returns> /// The connection settings. /// </returns> public static List <ConnectionSettings> ReadConnectionSettings() { if (!ConnectionSettingsFile.Exists) { return(new List <ConnectionSettings>()); } using (TextReader settingsReader = ConnectionSettingsFile.OpenText()) { JsonSerializer serializer = CreateStoreSerializer(); List <ConnectionSettings> connections = serializer.Deserialize <List <ConnectionSettings> >( reader: new JsonTextReader(settingsReader) ); DataProtection.Use(protector => { foreach (ConnectionSettings connection in connections) { if (String.IsNullOrWhiteSpace(connection.Password)) { continue; } connection.Password = protector.Unprotect(connection.Password); } }); return(connections); } }
/// <summary> /// Write connection settings to the connection-settings.json. /// </summary> /// <param name="connectionSettings"> /// The connection settings. /// </param> public static void WriteConnectionSettings(IEnumerable <ConnectionSettings> connectionSettings) { if (connectionSettings == null) { throw new ArgumentNullException(nameof(connectionSettings)); } EnsureSettingsDirectory(); ConnectionSettings[] connections = DataProtection.Use(protector => { return(connectionSettings.Select( connection => new ConnectionSettings { Name = connection.Name, Region = connection.Region, UserName = connection.UserName, Password = Convert.ToBase64String( protector.Protect( Encoding.Unicode.GetBytes(connection.Password) ) ), IsDefault = connection.IsDefault } ).ToArray()); }); if (ConnectionSettingsFile.Exists) { ConnectionSettingsFile.Delete(); } using (TextWriter settingsWriter = ConnectionSettingsFile.CreateText()) { JsonSerializer serializer = CreateStoreSerializer(); serializer.Serialize(settingsWriter, connections); settingsWriter.Flush(); } if (OS.IsMac || OS.IsLinux) { ConnectionSettingsFile.SetPosixPermissions( PosixPermissions.UserRead | PosixPermissions.UserWrite ); } }