public void Save(ConnectionTreeModel connectionTreeModel, string propertyNameTrigger = "")
        {
            try
            {
                var cryptographyProvider     = new CryptoProviderFactoryFromSettings().Build();
                var connectionNodeSerializer = new XmlConnectionNodeSerializer27(
                    cryptographyProvider,
                    connectionTreeModel
                    .RootNodes.OfType <RootNodeInfo>()
                    .First().PasswordString
                    .ConvertToSecureString(),
                    _saveFilter);
                var xmlConnectionsSerializer =
                    new XmlConnectionsSerializer(cryptographyProvider, connectionNodeSerializer)
                {
                    UseFullEncryption = mRemoteNG.Settings.Default.EncryptCompleteConnectionsFile
                };
                var xml = xmlConnectionsSerializer.Serialize(connectionTreeModel);

                var fileDataProvider = new FileDataProviderWithRollingBackup(_connectionFileName);
                fileDataProvider.Save(xml);
            }
            catch (Exception ex)
            {
                Runtime.MessageCollector?.AddExceptionStackTrace("SaveToXml failed", ex);
            }
        }
Beispiel #2
0
        private static void SaveExportFile(string fileName,
                                           SaveFormat saveFormat,
                                           SaveFilter saveFilter,
                                           ConnectionInfo exportTarget)
        {
            try
            {
                ISerializer <ConnectionInfo, string> serializer;
                switch (saveFormat)
                {
                case SaveFormat.mRXML:
                    var cryptographyProvider     = new CryptoProviderFactoryFromSettings().Build();
                    var rootNode                 = exportTarget.GetRootParent() as RootNodeInfo;
                    var connectionNodeSerializer = new XmlConnectionNodeSerializer27(
                        cryptographyProvider,
                        rootNode?.PasswordString
                        .ConvertToSecureString() ??
                        new RootNodeInfo(RootNodeType
                                         .Connection)
                        .PasswordString
                        .ConvertToSecureString(),
                        saveFilter);
                    serializer = new XmlConnectionsSerializer(cryptographyProvider, connectionNodeSerializer);
                    break;

                case SaveFormat.mRCSV:
                    serializer =
                        new CsvConnectionsSerializerMremotengFormat(saveFilter, Runtime.CredentialProviderCatalog);
                    break;

                default:
                    throw new ArgumentOutOfRangeException(nameof(saveFormat), saveFormat, null);
                }

                var serializedData   = serializer.Serialize(exportTarget);
                var fileDataProvider = new FileDataProvider(fileName);
                fileDataProvider.Save(serializedData);
            }
            catch (Exception ex)
            {
                Runtime.MessageCollector.AddExceptionStackTrace($"Export.SaveExportFile(\"{fileName}\") failed.", ex);
            }
            finally
            {
                Runtime.ConnectionsService.RemoteConnectionsSyncronizer?.Enable();
            }
        }
        // When we get a true CompositionRoot we can move this to that class. We should only require 1 instance of this service at a time
        public CredentialServiceFacade Build()
        {
            var cryptoFromSettings = new CryptoProviderFactoryFromSettings();
            var credRepoSerializer = new XmlCredentialPasswordEncryptorDecorator(
                cryptoFromSettings.Build(),
                new XmlCredentialRecordSerializer());
            var credRepoDeserializer = new XmlCredentialPasswordDecryptorDecorator(new XmlCredentialRecordDeserializer());

            var credentialRepoListPath = Path.Combine(SettingsFileInfo.SettingsPath, "credentialRepositories.xml");
            var repoListDataProvider   = new FileDataProvider(credentialRepoListPath);
            var repoListLoader         = new CredentialRepositoryListLoader(
                repoListDataProvider,
                new CredentialRepositoryListDeserializer(credRepoSerializer, credRepoDeserializer));
            var repoListSaver = new CredentialRepositoryListSaver(repoListDataProvider);

            return(new CredentialServiceFacade(Runtime.CredentialProviderCatalog, repoListLoader, repoListSaver));
        }