mirror of
https://github.com/mRemoteNG/mRemoteNG.git
synced 2026-02-17 22:11:48 +08:00
# Conflicts: # mRemoteV1/App/Export.cs # mRemoteV1/App/Initialization/CredsAndConsSetup.cs # mRemoteV1/App/Runtime.cs # mRemoteV1/Config/Connections/ConnectionsLoadedEventArgs.cs # mRemoteV1/Config/Connections/ConnectionsSavedEventArgs.cs # mRemoteV1/Config/Connections/CsvConnectionsSaver.cs # mRemoteV1/Config/Connections/SaveConnectionsOnEdit.cs # mRemoteV1/Config/CredentialHarvester.cs # mRemoteV1/Config/CredentialRepositoryListLoader.cs # mRemoteV1/Config/CredentialRepositoryListSaver.cs # mRemoteV1/Config/DataProviders/FileDataProvider.cs # mRemoteV1/Config/Import/MRemoteNGCsvImporter.cs # mRemoteV1/Config/Import/MRemoteNGXmlImporter.cs # mRemoteV1/Config/Import/RemoteDesktopConnectionImporter.cs # mRemoteV1/Config/Putty/PuttySessionsRegistryProvider.cs # mRemoteV1/Config/Putty/PuttySessionsXmingProvider.cs # mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsDeserializerMremotengFormat.cs # mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsSerializerMremotengFormat.cs # mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableDeserializer.cs # mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableSerializer.cs # mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionNodeSerializer27.cs # mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionsDeserializer.cs # mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionsSerializer.cs # mRemoteV1/Config/Serializers/CredentialProviderSerializer/CredentialRepositoryListDeserializer.cs # mRemoteV1/Config/Serializers/MiscSerializers/PuttyConnectionManagerDeserializer.cs # mRemoteV1/Config/Serializers/MiscSerializers/RemoteDesktopConnectionDeserializer.cs # mRemoteV1/Config/Serializers/MiscSerializers/RemoteDesktopConnectionManagerDeserializer.cs # mRemoteV1/Connection/AbstractConnectionRecord.cs # mRemoteV1/Connection/ConnectionInfo.cs # mRemoteV1/Connection/ConnectionInfoInheritance.cs # mRemoteV1/Connection/ConnectionInitiator.cs # mRemoteV1/Connection/ConnectionsService.cs # mRemoteV1/Connection/DefaultConnectionInfo.cs # mRemoteV1/Connection/Protocol/Http/Connection.Protocol.HTTPBase.cs # mRemoteV1/Connection/Protocol/ICA/IcaProtocol.cs # mRemoteV1/Connection/Protocol/IntegratedProgram.cs # mRemoteV1/Connection/Protocol/ProtocolBase.cs # mRemoteV1/Connection/Protocol/PuttyBase.cs # mRemoteV1/Connection/Protocol/RDP/RdpProtocol.cs # mRemoteV1/Connection/Protocol/VNC/Connection.Protocol.VNC.cs # mRemoteV1/Connection/PuttySessionInfo.cs # mRemoteV1/Credential/CredentialRecordTypeConverter.cs # mRemoteV1/Credential/CredentialServiceFacade.cs # mRemoteV1/Credential/CredentialServiceFactory.cs # mRemoteV1/Credential/Records/UnavailableCredentialRecord.cs # mRemoteV1/Credential/Repositories/XmlCredentialRepository.cs # mRemoteV1/Credential/Repositories/XmlCredentialRepositoryFactory.cs # mRemoteV1/Properties/Settings.settings # mRemoteV1/Schemas/mremoteng_confcons_v2_7.xsd # mRemoteV1/Tools/CustomCollections/FullyObservableCollection.cs # mRemoteV1/Tools/Extensions.cs # mRemoteV1/Tools/ExternalTool.cs # mRemoteV1/Tools/ExternalToolArgumentParser.cs # mRemoteV1/UI/Controls/Base/NGComboBox.cs # mRemoteV1/UI/Controls/ConnectionTree/ConnectionTree.cs # mRemoteV1/UI/Controls/CredentialRecordListBox.cs # mRemoteV1/UI/Controls/QuickConnectToolStrip.cs # mRemoteV1/UI/Forms/OptionsPages/CredentialsPage.cs # mRemoteV1/UI/Forms/OptionsPages/SqlServerPage.cs # mRemoteV1/UI/Forms/frmMain.cs # mRemoteV1/UI/Forms/frmOptions.cs # mRemoteV1/UI/Menu/ToolsMenu.cs # mRemoteV1/UI/Window/ConfigWindow.cs # mRemoteV1/UI/Window/ConnectionTreeWindow.Designer.cs # mRemoteV1/UI/Window/ConnectionTreeWindow.cs # mRemoteV1/UI/Window/ConnectionWindow.cs # mRemoteV1/app.config
71 lines
2.0 KiB
C#
71 lines
2.0 KiB
C#
using System;
|
|
using System.IO;
|
|
using mRemoteNG.App;
|
|
using mRemoteNG.Messages;
|
|
|
|
namespace mRemoteNG.Config.DataProviders
|
|
{
|
|
public class FileDataProvider : IDataProvider<string>
|
|
{
|
|
public string FilePath { get; set; }
|
|
|
|
public FileDataProvider(string filePath)
|
|
{
|
|
FilePath = filePath;
|
|
}
|
|
|
|
public virtual string Load()
|
|
{
|
|
var fileContents = "";
|
|
try
|
|
{
|
|
fileContents = File.ReadAllText(FilePath);
|
|
}
|
|
catch (FileNotFoundException ex)
|
|
{
|
|
Runtime.MessageCollector.AddExceptionStackTrace(
|
|
$"Could not load file. File does not exist '{FilePath}'",
|
|
ex);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Runtime.MessageCollector.AddExceptionStackTrace($"Failed to load file {FilePath}", ex);
|
|
}
|
|
|
|
return fileContents;
|
|
}
|
|
|
|
public virtual void Save(string content)
|
|
{
|
|
try
|
|
{
|
|
CreateMissingDirectories();
|
|
File.WriteAllText(FilePath, content);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Runtime.MessageCollector.AddExceptionStackTrace($"Failed to save file {FilePath}", ex);
|
|
}
|
|
}
|
|
|
|
public virtual void MoveTo(string newPath)
|
|
{
|
|
try
|
|
{
|
|
File.Move(FilePath, newPath);
|
|
FilePath = newPath;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Runtime.MessageCollector.AddExceptionStackTrace($"Failed to move file {FilePath} to {newPath}", ex);
|
|
}
|
|
}
|
|
|
|
private void CreateMissingDirectories()
|
|
{
|
|
var dirname = Path.GetDirectoryName(FilePath);
|
|
if (dirname == null) return;
|
|
Directory.CreateDirectory(dirname);
|
|
}
|
|
}
|
|
} |