Beispiel #1
0
        /// <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);
            }
        }
Beispiel #2
0
        /// <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
                    );
            }
        }