diff --git a/ExternalConnectors/ExternalConnectors.csproj b/ExternalConnectors/ExternalConnectors.csproj
index 3fb78698..7e1cdd06 100644
--- a/ExternalConnectors/ExternalConnectors.csproj
+++ b/ExternalConnectors/ExternalConnectors.csproj
@@ -11,8 +11,8 @@
-
-
+
+
diff --git a/mRemoteNG/Config/Serializers/ConnectionSerializers/MsSql/DataTableSerializer.cs b/mRemoteNG/Config/Serializers/ConnectionSerializers/MsSql/DataTableSerializer.cs
index 5fe9c260..27b2f59f 100644
--- a/mRemoteNG/Config/Serializers/ConnectionSerializers/MsSql/DataTableSerializer.cs
+++ b/mRemoteNG/Config/Serializers/ConnectionSerializers/MsSql/DataTableSerializer.cs
@@ -371,9 +371,9 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.MsSql
dataRow["RDGatewayUsageMethod"].Equals(connectionInfo.RDGatewayUsageMethod.ToString()) &&
dataRow["RDGatewayHostname"].Equals(connectionInfo.RDGatewayHostname) &&
dataRow["RDGatewayUseConnectionCredentials"].Equals(connectionInfo.RDGatewayUseConnectionCredentials.ToString()) &&
+ dataRow["RDGatewayExternalCredentialProvider"].Equals(connectionInfo.RDGatewayExternalCredentialProvider) &&
dataRow["RDGatewayUsername"].Equals(connectionInfo.RDGatewayUsername) &&
dataRow["RDGatewayDomain"].Equals(connectionInfo.RDGatewayDomain) &&
- dataRow["RDGatewayExternalCredentialProvider"].Equals(connectionInfo.RDGatewayExternalCredentialProvider) &&
dataRow["RDGatewayUserViaAPI"].Equals(connectionInfo.RDGatewayUserViaAPI) &&
dataRow["RdpVersion"].Equals(connectionInfo.RdpVersion.ToString());
@@ -391,14 +391,14 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.MsSql
dataRow["InheritDisableMenuAnimations"].Equals(connectionInfo.Inheritance.DisableMenuAnimations) &&
dataRow["InheritDisableCursorShadow"].Equals(connectionInfo.Inheritance.DisableCursorShadow) &&
dataRow["InheritDisableCursorBlinking"].Equals(connectionInfo.Inheritance.DisableCursorBlinking) &&
- dataRow["InheritExternalCredentialProvider"].Equals(connectionInfo.Inheritance.ExternalCredentialProvider) &&
- dataRow["InheritUserViaAPI"].Equals(connectionInfo.Inheritance.UserViaAPI) &&
dataRow["InheritDomain"].Equals(connectionInfo.Inheritance.Domain) &&
dataRow["InheritIcon"].Equals(connectionInfo.Inheritance.Icon) &&
dataRow["InheritPanel"].Equals(connectionInfo.Inheritance.Panel) &&
dataRow["InheritPassword"].Equals(connectionInfo.Inheritance.Password) &&
dataRow["InheritPort"].Equals(connectionInfo.Inheritance.Port) &&
dataRow["InheritProtocol"].Equals(connectionInfo.Inheritance.Protocol) &&
+ dataRow["InheritExternalCredentialProvider"].Equals(connectionInfo.Inheritance.ExternalCredentialProvider) &&
+ dataRow["InheritUserViaAPI"].Equals(connectionInfo.Inheritance.UserViaAPI) &&
dataRow["InheritPuttySession"].Equals(connectionInfo.Inheritance.PuttySession) &&
dataRow["InheritRedirectDiskDrives"].Equals(connectionInfo.Inheritance.RedirectDiskDrives) &&
dataRow["InheritRedirectKeys"].Equals(connectionInfo.Inheritance.RedirectKeys) &&
@@ -444,10 +444,10 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.MsSql
dataRow["InheritRDGatewayUsageMethod"].Equals(connectionInfo.Inheritance.RDGatewayUsageMethod) &&
dataRow["InheritRDGatewayHostname"].Equals(connectionInfo.Inheritance.RDGatewayHostname) &&
dataRow["InheritRDGatewayUseConnectionCredentials"].Equals(connectionInfo.Inheritance.RDGatewayUseConnectionCredentials) &&
+ dataRow["InheritRDGatewayExternalCredentialProvider"].Equals(connectionInfo.Inheritance.RDGatewayExternalCredentialProvider) &&
dataRow["InheritRDGatewayUsername"].Equals(connectionInfo.Inheritance.RDGatewayUsername) &&
dataRow["InheritRDGatewayPassword"].Equals(connectionInfo.Inheritance.RDGatewayPassword) &&
dataRow["InheritRDGatewayDomain"].Equals(connectionInfo.Inheritance.RDGatewayDomain) &&
- dataRow["InheritRDGatewayExternalCredentialProvider"].Equals(connectionInfo.Inheritance.RDGatewayExternalCredentialProvider) &&
dataRow["InheritRDGatewayUserViaAPI"].Equals(connectionInfo.Inheritance.RDGatewayUserViaAPI) &&
dataRow["InheritRdpVersion"].Equals(connectionInfo.Inheritance.RdpVersion));
}
@@ -470,6 +470,8 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.MsSql
dataRow["InheritPassword"].Equals(false) &&
dataRow["InheritPort"].Equals(false) &&
dataRow["InheritProtocol"].Equals(false) &&
+ dataRow["InheritExternalCredentialProvider"].Equals(false) &&
+ dataRow["InheritUserViaAPI"].Equals(false) &&
dataRow["InheritPuttySession"].Equals(false) &&
dataRow["InheritRedirectDiskDrives"].Equals(false) &&
dataRow["InheritRedirectKeys"].Equals(false) &&
@@ -512,9 +514,11 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.MsSql
dataRow["InheritRDGatewayUsageMethod"].Equals(false) &&
dataRow["InheritRDGatewayHostname"].Equals(false) &&
dataRow["InheritRDGatewayUseConnectionCredentials"].Equals(false) &&
+ dataRow["InheritRDGatewayExternalCredentialProvider"].Equals(connectionInfo.Inheritance.RDGatewayExternalCredentialProvider) &&
dataRow["InheritRDGatewayUsername"].Equals(false) &&
dataRow["InheritRDGatewayPassword"].Equals(false) &&
dataRow["InheritRDGatewayDomain"].Equals(false) &&
+ dataRow["InheritRDGatewayUserViaAPI"].Equals(false) &&
dataRow["InheritRdpVersion"].Equals(false));
}
@@ -648,6 +652,8 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.MsSql
dataRow["InheritPassword"] = connectionInfo.Inheritance.Password;
dataRow["InheritPort"] = connectionInfo.Inheritance.Port;
dataRow["InheritProtocol"] = connectionInfo.Inheritance.Protocol;
+ dataRow["InheritExternalCredentialProvider"] = connectionInfo.Inheritance.ExternalCredentialProvider;
+ dataRow["InheritUserViaAPI"] = connectionInfo.Inheritance.UserViaAPI;
dataRow["InheritSSHTunnelConnectionName"] = connectionInfo.Inheritance.SSHTunnelConnectionName;
dataRow["InheritOpeningCommand"] = connectionInfo.Inheritance.OpeningCommand;
dataRow["InheritSSHOptions"] = connectionInfo.Inheritance.SSHOptions;
@@ -696,9 +702,11 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.MsSql
dataRow["InheritRDGatewayUsageMethod"] = connectionInfo.Inheritance.RDGatewayUsageMethod;
dataRow["InheritRDGatewayHostname"] = connectionInfo.Inheritance.RDGatewayHostname;
dataRow["InheritRDGatewayUseConnectionCredentials"] = connectionInfo.Inheritance.RDGatewayUseConnectionCredentials;
+ dataRow["InheritRDGatewayExternalCredentialProvider"] = connectionInfo.Inheritance.RDGatewayExternalCredentialProvider;
dataRow["InheritRDGatewayUsername"] = connectionInfo.Inheritance.RDGatewayUsername;
dataRow["InheritRDGatewayPassword"] = connectionInfo.Inheritance.RDGatewayPassword;
dataRow["InheritRDGatewayDomain"] = connectionInfo.Inheritance.RDGatewayDomain;
+ dataRow["InheritRDGatewayUserViaAPI"] = connectionInfo.Inheritance.RDGatewayUserViaAPI;
dataRow["InheritRdpVersion"] = connectionInfo.Inheritance.RdpVersion;
dataRow["InheritFavorite"] = connectionInfo.Inheritance.Favorite;
dataRow["InheritICAEncryptionStrength"] = false;
@@ -722,6 +730,8 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.MsSql
dataRow["InheritPassword"] = false;
dataRow["InheritPort"] = false;
dataRow["InheritProtocol"] = false;
+ dataRow["InheritExternalCredentialProvider"] = false;
+ dataRow["InheritUserViaAPI"] = false;
dataRow["InheritSSHTunnelConnectionName"] = false;
dataRow["InheritSSHOptions"] = false;
dataRow["InheritPuttySession"] = false;
@@ -766,9 +776,11 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.MsSql
dataRow["InheritRDGatewayUsageMethod"] = false;
dataRow["InheritRDGatewayHostname"] = false;
dataRow["InheritRDGatewayUseConnectionCredentials"] = false;
+ dataRow["InheritRDGatewayExternalCredentialProvider"] = false;
dataRow["InheritRDGatewayUsername"] = false;
dataRow["InheritRDGatewayPassword"] = false;
dataRow["InheritRDGatewayDomain"] = false;
+ dataRow["InheritRDGatewayUserViaAPI"] = false;
dataRow["InheritRdpVersion"] = false;
dataRow["InheritFavorite"] = false;
dataRow["InheritICAEncryptionStrength"] = false;
diff --git a/mRemoteNG/Config/Serializers/ConnectionSerializers/MsSql/SqlDatabaseMetaDataRetriever.cs b/mRemoteNG/Config/Serializers/ConnectionSerializers/MsSql/SqlDatabaseMetaDataRetriever.cs
index 1252fb28..c62179ee 100644
--- a/mRemoteNG/Config/Serializers/ConnectionSerializers/MsSql/SqlDatabaseMetaDataRetriever.cs
+++ b/mRemoteNG/Config/Serializers/ConnectionSerializers/MsSql/SqlDatabaseMetaDataRetriever.cs
@@ -21,22 +21,33 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.MsSql
try
{
- var dbCommand = databaseConnector.DbCommand("SELECT * FROM tblRoot");
if (!databaseConnector.IsConnected)
databaseConnector.Connect();
+
+ if (!DoesDbTableExist(databaseConnector, "tblRoot"))
+ {
+ // database exists but is empty, initialize it with the schema
+ InitializeDatabaseSchema(databaseConnector);
+ }
+
+ DbCommand dbCommand = databaseConnector.DbCommand("SELECT * FROM tblRoot");
dbDataReader = dbCommand.ExecuteReader();
if (!dbDataReader.HasRows)
- return null; // assume new empty database
+ {
+ // assume new empty database
+ return null;
+ }
else
+ {
dbDataReader.Read();
+ }
metaData = new SqlConnectionListMetaData
{
Name = dbDataReader["Name"] as string ?? "",
Protected = dbDataReader["Protected"] as string ?? "",
Export = (bool)dbDataReader["Export"],
- ConfVersion =
- new Version(Convert.ToString(dbDataReader["confVersion"], CultureInfo.InvariantCulture))
+ ConfVersion = new Version(Convert.ToString(dbDataReader["confVersion"], CultureInfo.InvariantCulture) ?? string.Empty)
};
}
catch (Exception ex)
@@ -55,40 +66,506 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.MsSql
public void WriteDatabaseMetaData(RootNodeInfo rootTreeNode, IDatabaseConnector databaseConnector)
{
- var cryptographyProvider = new LegacyRijndaelCryptographyProvider();
- string strProtected;
- if (rootTreeNode != null)
- {
- if (rootTreeNode.Password)
- {
- var password = rootTreeNode.PasswordString.ConvertToSecureString();
- strProtected = cryptographyProvider.Encrypt("ThisIsProtected", password);
- }
- else
- {
- strProtected = cryptographyProvider.Encrypt("ThisIsNotProtected", Runtime.EncryptionKey);
- }
- }
- else
- {
- strProtected = cryptographyProvider.Encrypt("ThisIsNotProtected", Runtime.EncryptionKey);
- }
+ var cryptographyProvider = new LegacyRijndaelCryptographyProvider();
+ string strProtected;
+ if (rootTreeNode != null)
+ {
+ if (rootTreeNode.Password)
+ {
+ var password = rootTreeNode.PasswordString.ConvertToSecureString();
+ strProtected = cryptographyProvider.Encrypt("ThisIsProtected", password);
+ }
+ else
+ {
+ strProtected = cryptographyProvider.Encrypt("ThisIsNotProtected", Runtime.EncryptionKey);
+ }
+ }
+ else
+ {
+ strProtected = cryptographyProvider.Encrypt("ThisIsNotProtected", Runtime.EncryptionKey);
+ }
var cmd = databaseConnector.DbCommand("DELETE FROM tblRoot");
cmd.ExecuteNonQuery();
- if (rootTreeNode != null)
- {
- cmd = databaseConnector.DbCommand(
+ if (rootTreeNode != null)
+ {
+ cmd = databaseConnector.DbCommand(
"INSERT INTO tblRoot (Name, Export, Protected, ConfVersion) VALUES('" +
- MiscTools.PrepareValueForDB(rootTreeNode.Name) + "', 0, '" + strProtected + "','" +
- ConnectionsFileInfo.ConnectionFileVersion.ToString() + "')");
- cmd.ExecuteNonQuery();
- }
- else
- {
- Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, $"UpdateRootNodeTable: rootTreeNode was null. Could not insert!");
- }
- }
+ MiscTools.PrepareValueForDB(rootTreeNode.Name) + "', 0, '" + strProtected + "','" +
+ ConnectionsFileInfo.ConnectionFileVersion.ToString() + "')");
+ cmd.ExecuteNonQuery();
+ }
+ else
+ {
+ Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, $"UpdateRootNodeTable: rootTreeNode was null. Could not insert!");
+ }
+ }
+
+ private bool DoesDbTableExist(IDatabaseConnector databaseConnector, string tableName)
+ {
+ bool exists;
+
+ try
+ {
+ // ANSI SQL way. Works in PostgreSQL, MSSQL, MySQL.
+ var cmd = databaseConnector.DbCommand("select case when exists((select * from information_schema.tables where table_name = '" + tableName + "')) then 1 else 0 end");
+ cmd.ExecuteNonQuery();
+ exists = (int)cmd.ExecuteScalar()! == 1;
+ }
+ catch
+ {
+ try
+ {
+ // Other RDBMS. Graceful degradation
+ exists = true;
+ var cmdOthers = databaseConnector.DbCommand("select 1 from " + tableName + " where 1 = 0");
+ cmdOthers.ExecuteNonQuery();
+ }
+ catch
+ {
+ exists = false;
+ }
+ }
+
+ return exists;
+ }
+
+ private void InitializeDatabaseSchema(IDatabaseConnector databaseConnector)
+ {
+ string sql;
+
+ var t = databaseConnector.GetType();
+
+ if (databaseConnector.GetType() == typeof(MSSqlDatabaseConnector))
+ {
+ sql = @"
+if exists (select * from dbo.sysobjects
+ where id = object_id(N'[dbo].[tblCons]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
+drop table [dbo].[tblCons]
+
+if exists (select * from dbo.sysobjects
+ where id = object_id(N'[dbo].[tblRoot]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
+drop table [dbo].[tblRoot]
+
+if exists (select * from dbo.sysobjects
+ where id = object_id(N'[dbo].[tblUpdate]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
+drop table [dbo].[tblUpdate]
+
+CREATE TABLE [dbo].[tblCons] (
+ [ID] int NOT NULL IDENTITY(1,1),
+ [ConstantID] varchar(128) NOT NULL PRIMARY KEY,
+ [PositionID] int NOT NULL,
+ [ParentID] varchar(128),
+ [LastChange] datetime NOT NULL,
+ [Name] varchar(128) NOT NULL,
+ [Type] varchar(32) NOT NULL,
+ [Expanded] bit NOT NULL,
+ [AutomaticResize] bit NOT NULL DEFAULT ((1)),
+ [CacheBitmaps] bit NOT NULL,
+ [Colors] varchar(32) NOT NULL,
+ [ConnectToConsole] bit NOT NULL,
+ [Connected] bit NOT NULL,
+ [Description] varchar(1024),
+ [DisableCursorBlinking] bit NOT NULL,
+ [DisableCursorShadow] bit NOT NULL,
+ [DisableFullWindowDrag] bit NOT NULL,
+ [DisableMenuAnimations] bit NOT NULL,
+ [DisplayThemes] bit NOT NULL,
+ [DisplayWallpaper] bit NOT NULL,
+ [Domain] varchar(512),
+ [EnableDesktopComposition] bit NOT NULL,
+ [EnableFontSmoothing] bit NOT NULL,
+ [ExtApp] varchar(256),
+ [Favorite] tinyint NOT NULL,
+ [Hostname] varchar(512),
+ [Icon] varchar(128) NOT NULL,
+ [LoadBalanceInfo] varchar(1024),
+ [MacAddress] varchar(32),
+ [OpeningCommand] varchar(512),
+ [Panel] varchar(128) NOT NULL,
+ [Password] varchar(1024),
+ [Port] int NOT NULL,
+ [PostExtApp] varchar(256),
+ [PreExtApp] varchar(256),
+ [Protocol] varchar(32) NOT NULL,
+ [PuttySession] varchar(128),
+ [RDGatewayDomain] varchar(512),
+ [RDGatewayHostname] varchar(512),
+ [RDGatewayPassword] varchar(1024),
+ [RDGatewayUsageMethod] varchar(32) NOT NULL,
+ [RDGatewayUseConnectionCredentials] varchar(32) NOT NULL,
+ [RDGatewayUsername] varchar(512),
+ [RDPAlertIdleTimeout] bit NOT NULL,
+ [RDPAuthenticationLevel] varchar(32) NOT NULL,
+ [RDPMinutesToIdleTimeout] int NOT NULL,
+ [RdpVersion] varchar(10) NULL,
+ [RedirectAudioCapture] bit NOT NULL,
+ [RedirectClipboard] bit NOT NULL,
+ [RedirectDiskDrives] bit NOT NULL,
+ [RedirectKeys] bit NOT NULL,
+ [RedirectPorts] bit NOT NULL,
+ [RedirectPrinters] bit NOT NULL,
+ [RedirectSmartCards] bit NOT NULL,
+ [RedirectSound] varchar(64) NOT NULL,
+ [RenderingEngine] varchar(16) NULL,
+ [Resolution] varchar(32) NOT NULL,
+ [SSHOptions] varchar(1024) NOT NULL,
+ [SSHTunnelConnectionName] varchar(128) NOT NULL,
+ [SoundQuality] varchar(20) NOT NULL,
+ [UseCredSsp] bit NOT NULL,
+ [UseEnhancedMode] bit NOT NULL,
+ [UseVmId] bit NOT NULL,
+ [UserField] varchar(256) NULL,
+ [Username] varchar(512) NULL,
+ [VNCAuthMode] varchar(10) NULL,
+ [VNCColors] varchar(10) NULL,
+ [VNCCompression] varchar(10) NULL,
+ [VNCEncoding] varchar(20) NULL,
+ [VNCProxyIP] varchar(128) NULL,
+ [VNCProxyPassword] varchar(1024) NULL,
+ [VNCProxyPort] int NULL,
+ [VNCProxyType] varchar(20) NULL,
+ [VNCProxyUsername] varchar(512) NULL,
+ [VNCSmartSizeMode] varchar(20) NULL,
+ [VNCViewOnly] bit NOT NULL,
+ [VmId] varchar(100) NULL,
+ [ICAEncryptionStrength] varchar(32) NOT NULL,
+ [InheritAutomaticResize] bit NOT NULL,
+ [InheritCacheBitmaps] bit NOT NULL,
+ [InheritColors] bit NOT NULL,
+ [InheritDescription] bit NOT NULL,
+ [InheritDisableCursorBlinking] bit NOT NULL,
+ [InheritDisableCursorShadow] bit NOT NULL,
+ [InheritDisableFullWindowDrag] bit NOT NULL,
+ [InheritDisableMenuAnimations] bit NOT NULL,
+ [InheritDisplayThemes] bit NOT NULL,
+ [InheritDisplayWallpaper] bit NOT NULL,
+ [InheritDomain] bit NOT NULL,
+ [InheritEnableDesktopComposition] bit NOT NULL,
+ [InheritEnableFontSmoothing] bit NOT NULL,
+ [InheritExtApp] bit NOT NULL,
+ [InheritFavorite] bit NOT NULL,
+ [InheritICAEncryptionStrength] bit NOT NULL,
+ [InheritIcon] bit NOT NULL,
+ [InheritLoadBalanceInfo] bit NOT NULL,
+ [InheritMacAddress] bit NOT NULL,
+ [InheritOpeningCommand] bit NOT NULL,
+ [InheritPanel] bit NOT NULL,
+ [InheritPassword] bit NOT NULL,
+ [InheritPort] bit NOT NULL,
+ [InheritPostExtApp] bit NOT NULL,
+ [InheritPreExtApp] bit NOT NULL,
+ [InheritProtocol] bit NOT NULL,
+ [InheritPuttySession] bit NOT NULL,
+ [InheritRDGatewayDomain] bit NOT NULL,
+ [InheritRDGatewayHostname] bit NOT NULL,
+ [InheritRDGatewayPassword] bit NOT NULL,
+ [InheritRDGatewayUsageMethod] bit NOT NULL,
+ [InheritRDGatewayUseConnectionCredentials] bit NOT NULL,
+ [InheritRDGatewayExternalCredentialProvider] bit NOT NULL,
+ [InheritRDGatewayUsername] bit NOT NULL,
+ [InheritRDGatewayUserViaAPI] bit NOT NULL,
+ [InheritRDPAlertIdleTimeout] bit NOT NULL,
+ [InheritRDPAuthenticationLevel] bit NOT NULL,
+ [InheritRDPMinutesToIdleTimeout] bit NOT NULL,
+ [InheritRdpVersion] bit NOT NULL,
+ [InheritRedirectAudioCapture] bit NOT NULL,
+ [InheritRedirectClipboard] bit NOT NULL,
+ [InheritRedirectDiskDrives] bit NOT NULL,
+ [InheritRedirectKeys] bit NOT NULL,
+ [InheritRedirectPorts] bit NOT NULL,
+ [InheritRedirectPrinters] bit NOT NULL,
+ [InheritRedirectSmartCards] bit NOT NULL,
+ [InheritRedirectSound] bit NOT NULL,
+ [InheritRenderingEngine] bit NOT NULL,
+ [InheritResolution] bit NOT NULL,
+ [InheritSSHOptions] bit NOT NULL,
+ [InheritSSHTunnelConnectionName] bit NOT NULL,
+ [InheritSoundQuality] bit NOT NULL,
+ [InheritUseConsoleSession] bit NOT NULL,
+ [InheritUseCredSsp] bit NOT NULL,
+ [InheritUseRestrictedAdmin] bit NOT NULL,
+ [InheritUseRCG] bit NOT NULL,
+ [InheritExternalCredentialProvider] bit NOT NULL,
+ [InheritUserViaAPI] bit NOT NULL,
+ [UseRestrictedAdmin] bit NOT NULL,
+ [UseRCG] bit NOT NULL,
+ [InheritUseEnhancedMode] bit NOT NULL,
+ [InheritUseVmId] bit,
+ [InheritUserField] bit NOT NULL,
+ [InheritUsername] bit NOT NULL,
+ [InheritVNCAuthMode] bit NOT NULL,
+ [InheritVNCColors] bit NOT NULL,
+ [InheritVNCCompression] bit NOT NULL,
+ [InheritVNCEncoding] bit NOT NULL,
+ [InheritVNCProxyIP] bit NOT NULL,
+ [InheritVNCProxyPassword] bit NOT NULL,
+ [InheritVNCProxyPort] bit NOT NULL,
+ [InheritVNCProxyType] bit NOT NULL,
+ [InheritVNCProxyUsername] bit NOT NULL,
+ [InheritVNCSmartSizeMode] bit NOT NULL,
+ [InheritVNCViewOnly] bit NOT NULL,
+ [InheritVmId] bit NOT NULL,
+ [StartProgram] varchar(512) NULL,
+ [StartProgramWorkDir] varchar(512) NULL,
+ [EC2Region] varchar(32) NULL,
+ [EC2InstanceId] varchar(32) NULL,
+ [ExternalCredentialProvider] varchar(256) NULL,
+ [ExternalAddressProvider] varchar(256) NULL,
+) ON [PRIMARY]
+
+CREATE TABLE [dbo].[tblRoot] (
+ [Name] [varchar] (2048) NOT NULL,
+ [Export] [bit] NOT NULL,
+ [Protected] [varchar] (4048) NOT NULL,
+ [ConfVersion] [varchar] (15) NOT NULL
+) ON [PRIMARY]
+
+CREATE TABLE [dbo].[tblUpdate] (
+ [LastUpdate] [datetime] NULL
+) ON [PRIMARY]
+";
+ }
+ else if (databaseConnector.GetType() == typeof(MySqlDatabaseConnector))
+ {
+ sql = @"
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Table structure for table `tblCons`
+--
+
+DROP TABLE IF EXISTS `tblCons`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `tblCons` (
+ `ID` int NOT NULL AUTO_INCREMENT,
+ `ConstantID` varchar(128) NOT NULL,
+ `PositionID` int NOT NULL,
+ `ParentID` varchar(128) DEFAULT NULL,
+ `LastChange` datetime NOT NULL,
+ `Name` varchar(128) NOT NULL,
+ `Type` varchar(32) NOT NULL,
+ `Expanded` tinyint(1) NOT NULL,
+ `AutomaticResize` tinyint(1) NOT NULL DEFAULT 1,
+ `CacheBitmaps` tinyint(1) NOT NULL,
+ `Colors` varchar(32) NOT NULL,
+ `ConnectToConsole` tinyint(1) NOT NULL,
+ `Connected` tinyint(1) NOT NULL,
+ `Description` varchar(1024) DEFAULT NULL,
+ `DisableCursorBlinking` tinyint(1) NOT NULL,
+ `DisableCursorShadow` tinyint(1) NOT NULL,
+ `DisableFullWindowDrag` tinyint(1) NOT NULL,
+ `DisableMenuAnimations` tinyint(1) NOT NULL,
+ `DisplayThemes` tinyint(1) NOT NULL,
+ `DisplayWallpaper` tinyint(1) NOT NULL,
+ `Domain` varchar(512) DEFAULT NULL,
+ `EnableDesktopComposition` tinyint(1) NOT NULL,
+ `EnableFontSmoothing` tinyint(1) NOT NULL,
+ `ExtApp` varchar(256) DEFAULT NULL,
+ `Favorite` tinyint(1) NOT NULL,
+ `Hostname` varchar(512) DEFAULT NULL,
+ `Icon` varchar(128) NOT NULL,
+ `LoadBalanceInfo` varchar(1024) DEFAULT NULL,
+ `MacAddress` varchar(32) DEFAULT NULL,
+ `OpeningCommand` varchar(512) DEFAULT NULL,
+ `Panel` varchar(128) NOT NULL,
+ `Password` varchar(1024) DEFAULT NULL,
+ `Port` int NOT NULL,
+ `PostExtApp` varchar(256) DEFAULT NULL,
+ `PreExtApp` varchar(256) DEFAULT NULL,
+ `Protocol` varchar(32) NOT NULL,
+ `PuttySession` varchar(128) DEFAULT NULL,
+ `RDGatewayDomain` varchar(512) DEFAULT NULL,
+ `RDGatewayHostname` varchar(512) DEFAULT NULL,
+ `RDGatewayPassword` varchar(1024) DEFAULT NULL,
+ `RDGatewayUsageMethod` varchar(32) NOT NULL,
+ `RDGatewayUseConnectionCredentials` varchar(32) NOT NULL,
+ `RDGatewayUsername` varchar(512) DEFAULT NULL,
+ `RDPAlertIdleTimeout` tinyint(1) NOT NULL,
+ `RDPAuthenticationLevel` varchar(32) NOT NULL,
+ `RDPMinutesToIdleTimeout` int(11) NOT NULL,
+ `RdpVersion` varchar(10) DEFAULT NULL,
+ `RedirectAudioCapture` tinyint(1) NOT NULL,
+ `RedirectClipboard` tinyint(1) NOT NULL,
+ `RedirectDiskDrives` tinyint(1) NOT NULL,
+ `RedirectKeys` tinyint(1) NOT NULL,
+ `RedirectPorts` tinyint(1) NOT NULL,
+ `RedirectPrinters` tinyint(1) NOT NULL,
+ `RedirectSmartCards` tinyint(1) NOT NULL,
+ `RedirectSound` varchar(64) NOT NULL,
+ `RenderingEngine` varchar(16) DEFAULT NULL,
+ `Resolution` varchar(32) NOT NULL,
+ `SSHOptions` varchar(1024) NOT NULL,
+ `SSHTunnelConnectionName` varchar(128) NOT NULL,
+ `SoundQuality` varchar(20) NOT NULL,
+ `UseCredSsp` tinyint(1) NOT NULL,
+ `UseEnhancedMode` tinyint(1) NOT NULL,
+ `UseVmId` tinyint(1) NOT NULL,
+ `UserField` varchar(256) DEFAULT NULL,
+ `Username` varchar(512) DEFAULT NULL,
+ `VNCAuthMode` varchar(10) DEFAULT NULL,
+ `VNCColors` varchar(10) DEFAULT NULL,
+ `VNCCompression` varchar(10) DEFAULT NULL,
+ `VNCEncoding` varchar(20) DEFAULT NULL,
+ `VNCProxyIP` varchar(128) DEFAULT NULL,
+ `VNCProxyPassword` varchar(1024) DEFAULT NULL,
+ `VNCProxyPort` int DEFAULT NULL,
+ `VNCProxyType` varchar(20) DEFAULT NULL,
+ `VNCProxyUsername` varchar(512) DEFAULT NULL,
+ `VNCSmartSizeMode` varchar(20) DEFAULT NULL,
+ `VNCViewOnly` tinyint(1) NOT NULL,
+ `VmId` varchar(512) DEFAULT NULL,
+ `ICAEncryptionStrength` varchar(32) NOT NULL,
+ `InheritAutomaticResize` tinyint(1) NOT NULL,
+ `InheritCacheBitmaps` tinyint(1) NOT NULL,
+ `InheritColors` tinyint(1) NOT NULL,
+ `InheritDescription` tinyint(1) NOT NULL,
+ `InheritDisableCursorBlinking` tinyint(1) NOT NULL,
+ `InheritDisableCursorShadow` tinyint(1) NOT NULL,
+ `InheritDisableFullWindowDrag` tinyint(1) NOT NULL,
+ `InheritDisableMenuAnimations` tinyint(1) NOT NULL,
+ `InheritDisplayThemes` tinyint(1) NOT NULL,
+ `InheritDisplayWallpaper` tinyint(1) NOT NULL,
+ `InheritDomain` tinyint(1) NOT NULL,
+ `InheritEnableDesktopComposition` tinyint(1) NOT NULL,
+ `InheritEnableFontSmoothing` tinyint(1) NOT NULL,
+ `InheritExtApp` tinyint(1) NOT NULL,
+ `InheritFavorite` tinyint(1) NOT NULL,
+ `InheritICAEncryptionStrength` tinyint(1) NOT NULL,
+ `InheritIcon` tinyint(1) NOT NULL,
+ `InheritLoadBalanceInfo` tinyint(1) NOT NULL,
+ `InheritMacAddress` tinyint(1) NOT NULL,
+ `InheritOpeningCommand` tinyint(1) NOT NULL,
+ `InheritPanel` tinyint(1) NOT NULL,
+ `InheritPassword` tinyint(1) NOT NULL,
+ `InheritPort` tinyint(1) NOT NULL,
+ `InheritPostExtApp` tinyint(1) NOT NULL,
+ `InheritPreExtApp` tinyint(1) NOT NULL,
+ `InheritProtocol` tinyint(1) NOT NULL,
+ `InheritPuttySession` tinyint(1) NOT NULL,
+ `InheritRDGatewayDomain` tinyint(1) NOT NULL,
+ `InheritRDGatewayHostname` tinyint(1) NOT NULL,
+ `InheritRDGatewayPassword` tinyint(1) NOT NULL,
+ `InheritRDGatewayUsageMethod` tinyint(1) NOT NULL,
+ `InheritRDGatewayUseConnectionCredentials` tinyint(1) NOT NULL,
+ `InheritRDGatewayExternalCredentialProvider` tinyint(1) NOT NULL,
+ `InheritRDGatewayUsername` tinyint(1) NOT NULL,
+ `InheritRDGatewayUserViaAPI` tinyint(1) NOT NULL,
+ `InheritRDPAlertIdleTimeout` tinyint(1) NOT NULL,
+ `InheritRDPAuthenticationLevel` tinyint(1) NOT NULL,
+ `InheritRDPMinutesToIdleTimeout` tinyint(1) NOT NULL,
+ `InheritRdpVersion` tinyint(1) NOT NULL,
+ `InheritRedirectAudioCapture` tinyint(1) NOT NULL,
+ `InheritRedirectClipboard` tinyint(1) NOT NULL,
+ `InheritRedirectDiskDrives` tinyint(1) NOT NULL,
+ `InheritRedirectKeys` tinyint(1) NOT NULL,
+ `InheritRedirectPorts` tinyint(1) NOT NULL,
+ `InheritRedirectPrinters` tinyint(1) NOT NULL,
+ `InheritRedirectSmartCards` tinyint(1) NOT NULL,
+ `InheritRedirectSound` tinyint(1) NOT NULL,
+ `InheritRenderingEngine` tinyint(1) NOT NULL,
+ `InheritResolution` tinyint(1) NOT NULL,
+ `InheritSSHOptions` tinyint(1) NOT NULL,
+ `InheritSSHTunnelConnectionName` tinyint(1) NOT NULL,
+ `InheritSoundQuality` tinyint(1) NOT NULL,
+ `InheritUseConsoleSession` tinyint(1) NOT NULL,
+ `InheritUseCredSsp` tinyint(1) NOT NULL,
+ `InheritUseRestrictedAdmin` tinyint(1) NOT NULL,
+ `InheritUseRCG` tinyint(1) NOT NULL,
+ `InheritExternalCredentialProvider` tinyint(1) NOT NULL,
+ `InheritUserViaAPI` tinyint(1) NOT NULL,
+ `UseRestrictedAdmin` tinyint(1) NOT NULL,
+ `UseRCG` tinyint(1) NOT NULL,
+ `InheritUseEnhancedMode` tinyint(1) DEFAULT NULL,
+ `InheritUseVmId` tinyint(1) DEFAULT NULL,
+ `InheritUserField` tinyint(1) NOT NULL,
+ `InheritUsername` tinyint(1) NOT NULL,
+ `InheritVNCAuthMode` tinyint(1) NOT NULL,
+ `InheritVNCColors` tinyint(1) NOT NULL,
+ `InheritVNCCompression` tinyint(1) NOT NULL,
+ `InheritVNCEncoding` tinyint(1) NOT NULL,
+ `InheritVNCProxyIP` tinyint(1) NOT NULL,
+ `InheritVNCProxyPassword` tinyint(1) NOT NULL,
+ `InheritVNCProxyPort` tinyint(1) NOT NULL,
+ `InheritVNCProxyType` tinyint(1) NOT NULL,
+ `InheritVNCProxyUsername` tinyint(1) NOT NULL,
+ `InheritVNCSmartSizeMode` tinyint(1) NOT NULL,
+ `InheritVNCViewOnly` tinyint(1) NOT NULL,
+ `InheritVmId` tinyint(1) NOT NULL,
+ `StartProgram` varchar(512) DEFAULT NULL,
+ `StartProgramWorkDir` varchar(512) DEFAULT NULL,
+ `EC2Region` varchar(32) DEFAULT NULL,
+ `EC2InstanceId` varchar(32) DEFAULT NULL,
+ `ExternalCredentialProvider` varchar(256) DEFAULT NULL,
+ `ExternalAddressProvider` varchar(256) DEFAULT NULL,
+ PRIMARY KEY (`ConstantID`),
+ UNIQUE KEY `ID_UNIQUE` (`ID`),
+ UNIQUE KEY `ConstantID_UNIQUE` (`ConstantID`)
+) ENGINE=InnoDB AUTO_INCREMENT=3324 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `tblRoot`
+--
+
+DROP TABLE IF EXISTS `tblRoot`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `tblRoot` (
+ `Name` varchar(2048) NOT NULL,
+ `Export` tinyint(1) NOT NULL,
+ `Protected` varchar(4048) NOT NULL,
+ `ConfVersion` varchar(15) NOT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `tblUpdate`
+--
+
+DROP TABLE IF EXISTS `tblUpdate`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `tblUpdate` (
+ `LastUpdate` datetime(3) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+";
+ }
+ else
+ {
+ throw new Exception("Unknown database backend");
+ }
+
+ DbCommand cmd = databaseConnector.DbCommand(sql);
+ cmd.ExecuteNonQuery();
+ }
+
}
-}
\ No newline at end of file
+}
+
+//// MySql.Data.MySqlClient.MySqlException: 'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(`ConstantID`),
+//UNIQUE(`ID`)
+// ) ENGINE = InnoDB AUTO_INCREMENT = 3324 DEFAULT ' at line 156'
\ No newline at end of file
diff --git a/mRemoteNG/Config/Serializers/Versioning/SqlDatabaseVersionVerifier.cs b/mRemoteNG/Config/Serializers/Versioning/SqlDatabaseVersionVerifier.cs
index 84081be0..a4587a93 100644
--- a/mRemoteNG/Config/Serializers/Versioning/SqlDatabaseVersionVerifier.cs
+++ b/mRemoteNG/Config/Serializers/Versioning/SqlDatabaseVersionVerifier.cs
@@ -1,75 +1,75 @@
-using mRemoteNG.App;
-using mRemoteNG.App.Info;
-using mRemoteNG.Config.DatabaseConnectors;
-using mRemoteNG.Messages;
-using mRemoteNG.Resources.Language;
-using System;
-
-namespace mRemoteNG.Config.Serializers.Versioning
-{
- public class SqlDatabaseVersionVerifier
+using mRemoteNG.App;
+using mRemoteNG.App.Info;
+using mRemoteNG.Config.DatabaseConnectors;
+using mRemoteNG.Messages;
+using mRemoteNG.Resources.Language;
+using System;
+
+namespace mRemoteNG.Config.Serializers.Versioning
+{
+ public class SqlDatabaseVersionVerifier
{
protected readonly Version currentSupportedVersion = new Version(2, 9);
-
- private readonly IDatabaseConnector _databaseConnector;
-
- public SqlDatabaseVersionVerifier(IDatabaseConnector DatabaseConnector)
- {
- if (DatabaseConnector == null)
- throw new ArgumentNullException(nameof(DatabaseConnector));
-
- _databaseConnector = DatabaseConnector;
- }
-
- public bool VerifyDatabaseVersion(Version dbVersion)
- {
- var isVerified = false;
- try
- {
- var databaseVersion = dbVersion;
-
- if (databaseVersion.Equals(new Version()))
- {
- return true;
- }
-
- var dbUpgraders = new IVersionUpgrader[]
- {
- new SqlVersion22To23Upgrader(_databaseConnector),
- new SqlVersion23To24Upgrader(_databaseConnector),
- new SqlVersion24To25Upgrader(_databaseConnector),
- new SqlVersion25To26Upgrader(_databaseConnector),
- new SqlVersion26To27Upgrader(_databaseConnector),
- new SqlVersion27To28Upgrader(_databaseConnector),
- new SqlVersion28To29Upgrader(_databaseConnector),
- };
-
- foreach (var upgrader in dbUpgraders)
- {
- if (upgrader.CanUpgrade(databaseVersion))
- {
- databaseVersion = upgrader.Upgrade();
- }
- }
-
- // DB is at the highest current supported version
- if (databaseVersion.CompareTo(currentSupportedVersion) == 0)
- isVerified = true;
-
- if (isVerified == false)
- Runtime.MessageCollector.AddMessage(MessageClass.WarningMsg,
- string.Format(Language.ErrorBadDatabaseVersion,
- databaseVersion,
- GeneralAppInfo.ProductName));
- }
- catch (Exception ex)
- {
- Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg,
- string.Format(Language.ErrorVerifyDatabaseVersionFailed,
- ex.Message));
- }
-
- return isVerified;
- }
- }
+
+ private readonly IDatabaseConnector _databaseConnector;
+
+ public SqlDatabaseVersionVerifier(IDatabaseConnector DatabaseConnector)
+ {
+ if (DatabaseConnector == null)
+ throw new ArgumentNullException(nameof(DatabaseConnector));
+
+ _databaseConnector = DatabaseConnector;
+ }
+
+ public bool VerifyDatabaseVersion(Version dbVersion)
+ {
+ var isVerified = false;
+ try
+ {
+ var databaseVersion = dbVersion;
+
+ if (databaseVersion.Equals(new Version()))
+ {
+ return true;
+ }
+
+ var dbUpgraders = new IVersionUpgrader[]
+ {
+ new SqlVersion22To23Upgrader(_databaseConnector),
+ new SqlVersion23To24Upgrader(_databaseConnector),
+ new SqlVersion24To25Upgrader(_databaseConnector),
+ new SqlVersion25To26Upgrader(_databaseConnector),
+ new SqlVersion26To27Upgrader(_databaseConnector),
+ new SqlVersion27To28Upgrader(_databaseConnector),
+ new SqlVersion28To29Upgrader(_databaseConnector),
+ };
+
+ foreach (var upgrader in dbUpgraders)
+ {
+ if (upgrader.CanUpgrade(databaseVersion))
+ {
+ databaseVersion = upgrader.Upgrade();
+ }
+ }
+
+ // DB is at the highest current supported version
+ if (databaseVersion.CompareTo(currentSupportedVersion) == 0)
+ isVerified = true;
+
+ if (isVerified == false)
+ Runtime.MessageCollector.AddMessage(MessageClass.WarningMsg,
+ string.Format(Language.ErrorBadDatabaseVersion,
+ databaseVersion,
+ GeneralAppInfo.ProductName));
+ }
+ catch (Exception ex)
+ {
+ Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg,
+ string.Format(Language.ErrorVerifyDatabaseVersionFailed,
+ ex.Message));
+ }
+
+ return isVerified;
+ }
+ }
}
\ No newline at end of file
diff --git a/mRemoteNG/Config/Serializers/Versioning/SqlVersion26To27Upgrader.cs b/mRemoteNG/Config/Serializers/Versioning/SqlVersion26To27Upgrader.cs
index 9d078b93..ced9e8bd 100644
--- a/mRemoteNG/Config/Serializers/Versioning/SqlVersion26To27Upgrader.cs
+++ b/mRemoteNG/Config/Serializers/Versioning/SqlVersion26To27Upgrader.cs
@@ -2,6 +2,7 @@
using mRemoteNG.Config.DatabaseConnectors;
using mRemoteNG.Messages;
using System;
+using System.Data.SqlClient;
namespace mRemoteNG.Config.Serializers.Versioning
{
@@ -23,24 +24,31 @@ namespace mRemoteNG.Config.Serializers.Versioning
{
Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg,
"Upgrading database from version 2.6 to version 2.7.");
- const string sqlText = @"
+ try
+ {
+ const string sqlText = @"
ALTER TABLE tblCons
-ADD RedirectClipboard bit NOT NULL DEFAULT 0,
- InheritRedirectClipboard bit NOT NULL DEFAULT 0,
- VmId varchar NOT NULL DEFAULT '',
- UseVmId bit NOT NULL DEFAULT 0,
- UseEnhancedMode bit NOT NULL DEFAULT 0,
- InheritVmId bit NOT NULL DEFAULT 0,
- InheritUseVmId bit NOT NULL DEFAULT 0,
- SSHTunnelConnectionName varchar NOT NULL DEFAULT '',
- InheritSSHTunnelConnectionName bit NOT NULL DEFAULT 0,
- SSHOptions varchar NOT NULL DEFAULT '',
- InheritSSHOptions bit NOT NULL DEFAULT 0,
- InheritUseEnhancedMode bit NOT NULL DEFAULT 0;
+ADD RedirectClipboard bit NOT NULL,
+ InheritRedirectClipboard bit NOT NULL,
+ VmId varchar NOT NULL DEFAULT NULL,
+ UseVmId bit NOT NULL,
+ UseEnhancedMode bit NOT NULL,
+ InheritVmId bit NOT NULL,
+ InheritUseVmId bit NOT NULL,
+ SSHTunnelConnectionName varchar NOT NULL DEFAULT NULL,
+ InheritSSHTunnelConnectionName bit NOT NULL,
+ SSHOptions varchar NOT NULL DEFAULT NULL,
+ InheritSSHOptions bit NOT NULL,
+ InheritUseEnhancedMode bit NOT NULL;
UPDATE tblRoot
SET ConfVersion='2.7'";
- var dbCommand = _databaseConnector.DbCommand(sqlText);
- dbCommand.ExecuteNonQuery();
+ var dbCommand = _databaseConnector.DbCommand(sqlText);
+ dbCommand.ExecuteNonQuery();
+ }
+ catch (SqlException)
+ {
+ // no-op
+ }
return new Version(2, 7);
}
diff --git a/mRemoteNG/Config/Serializers/Versioning/SqlVersion27To28Upgrader.cs b/mRemoteNG/Config/Serializers/Versioning/SqlVersion27To28Upgrader.cs
index 7f850bd8..97d27607 100644
--- a/mRemoteNG/Config/Serializers/Versioning/SqlVersion27To28Upgrader.cs
+++ b/mRemoteNG/Config/Serializers/Versioning/SqlVersion27To28Upgrader.cs
@@ -3,6 +3,7 @@ using mRemoteNG.Config.DatabaseConnectors;
using mRemoteNG.Messages;
using System;
using System.Data.Common;
+using System.Data.SqlClient;
namespace mRemoteNG.Config.Serializers.Versioning
{
@@ -25,39 +26,44 @@ namespace mRemoteNG.Config.Serializers.Versioning
Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg,
"Upgrading database from version 2.7 to version 2.8.");
- const string mySqlText = @"
+ try
+ {
+ const string mySqlText1 = @"
ALTER TABLE tblCons MODIFY COLUMN ID INT;
ALTER TABLE tblCons DROP PRIMARY KEY, ADD PRIMARY KEY (ConstantID);
ALTER TABLE tblCons ADD INDEX `id` (ID), MODIFY ID int auto_increment;
ALTER TABLE tblCons MODIFY COLUMN ID INT AUTO_INCREMENT, ADD UNIQUE(ID);
UPDATE tblRoot SET ConfVersion='2.8'";
- const string msSqlText1 = @"
-ALTER TABLE tblCons ADD DEFAULT 0 FOR UseEnhancedMode;
-ALTER TABLE tblCons ADD DEFAULT 0 FOR InheritUseEnhancedMode;
+
+ const string msSqlText1 = @"
UPDATE tblCons SET UseEnhancedMode = 0 WHERE UseEnhancedMode IS NULL;
UPDATE tblCons SET InheritUseEnhancedMode = 0 WHERE InheritUseEnhancedMode IS NULL;
ALTER TABLE tblCons ALTER COLUMN ConstantID varchar(128) NOT NULL;";
- const string msSqlText2 = @"
+ const string msSqlText2 = @"
ALTER TABLE tblCons ADD CONSTRAINT PK_tblCons PRIMARY KEY (ConstantID);
UPDATE tblRoot SET ConfVersion='2.8';";
- DbCommand dbCommand;
- if (_databaseConnector.GetType() == typeof(MSSqlDatabaseConnector))
- {
- dbCommand = _databaseConnector.DbCommand(msSqlText1);
+ DbCommand dbCommand;
+
+ if (_databaseConnector.GetType() == typeof(MSSqlDatabaseConnector))
+ {
+ dbCommand = _databaseConnector.DbCommand(msSqlText1);
+ dbCommand.ExecuteNonQuery();
+ dbCommand = _databaseConnector.DbCommand(msSqlText2);
+ } else if (_databaseConnector.GetType() == typeof(MySqlDatabaseConnector))
+ {
+ dbCommand = _databaseConnector.DbCommand(mySqlText1);
+ } else
+ {
+ throw new Exception("Unknown database backend");
+ }
+
dbCommand.ExecuteNonQuery();
- dbCommand = _databaseConnector.DbCommand(msSqlText2);
- } else if (_databaseConnector.GetType() == typeof(MySqlDatabaseConnector))
- {
- dbCommand = _databaseConnector.DbCommand(mySqlText);
- } else
- {
- throw new Exception("Unknow database backend");
}
-
-
-
- dbCommand.ExecuteNonQuery();
+ catch (SqlException)
+ {
+ // no-op
+ }
return new Version(2, 8);
}
}
diff --git a/mRemoteNG/Config/Serializers/Versioning/SqlVersion28To29Upgrader.cs b/mRemoteNG/Config/Serializers/Versioning/SqlVersion28To29Upgrader.cs
index ff84b912..2f85ae35 100644
--- a/mRemoteNG/Config/Serializers/Versioning/SqlVersion28To29Upgrader.cs
+++ b/mRemoteNG/Config/Serializers/Versioning/SqlVersion28To29Upgrader.cs
@@ -27,20 +27,68 @@ namespace mRemoteNG.Config.Serializers.Versioning
public Version Upgrade()
{
Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg,
- string.Format("Upgrading database to version {0}.", version));
+ $"Upgrading database to version {version}.");
+ // MYSQL
const string mySqlAlter = @"
-ALTER TABLE tblCons ADD COLUMN StartProgram varchar(512) DEFAULT NULL;
-ALTER TABLE tblCons ADD COLUMN StartProgramWorkDir varchar(512) DEFAULT NULL;
-ALTER TABLE tblRoot CHANGE COLUMN ConfVersion ConfVersion VARCHAR(15) NOT NULL;";
+ALTER TABLE tblCons ADD COLUMN `InheritUseRestrictedAdmin` tinyint(1) NOT NULL;
+ALTER TABLE tblCons ADD COLUMN `UseRCG` tinyint(1) NOT NULL;
+ALTER TABLE tblCons ADD COLUMN `UseRestrictedAdmin` tinyint(1) NOT NULL;
+ALTER TABLE tblCons ADD COLUMN `InheritUseRCG` tinyint(1) NOT NULL;
+ALTER TABLE tblCons ADD COLUMN `InheritRDGatewayExternalCredentialProvider` tinyint(1) NOT NULL;
+ALTER TABLE tblCons ADD COLUMN `InheritRDGatewayUserViaAPI` tinyint(1) NOT NULL;
+ALTER TABLE tblCons ADD COLUMN `InheritExternalCredentialProvider` tinyint(1) NOT NULL;
+ALTER TABLE tblCons ADD COLUMN `InheritUserViaAPI` tinyint(1) NOT NULL;
+ALTER TABLE tblCons ADD COLUMN `EC2Region` varchar(32) DEFAULT NULL;
+ALTER TABLE tblCons ADD COLUMN `EC2InstanceId` varchar(32) DEFAULT NULL;
+ALTER TABLE tblCons ADD COLUMN `ExternalCredentialProvider` varchar(256) DEFAULT NULL;
+ALTER TABLE tblCons ADD COLUMN `ExternalAddressProvider` varchar(256) DEFAULT NULL;
+SET SQL_SAFE_UPDATES=0;
+UPDATE tblCons SET InheritUseEnhancedMode = 0 WHERE InheritUseEnhancedMode IS NULL;
+ALTER TABLE tblCons MODIFY COLUMN InheritUseEnhancedMode tinyint(1) NOT NULL;
+UPDATE tblCons SET UseEnhancedMode = 0 WHERE UseEnhancedMode IS NULL;
+ALTER TABLE tblCons MODIFY COLUMN UseEnhancedMode tinyint(1) NOT NULL;
+UPDATE tblCons SET InheritVmId = 0 WHERE InheritVmId IS NULL;
+ALTER TABLE tblCons MODIFY COLUMN InheritVmId tinyint(1) NOT NULL;
+UPDATE tblCons SET InheritUseVmId = 0 WHERE InheritUseVmId IS NULL;
+ALTER TABLE tblCons MODIFY COLUMN InheritUseVmId tinyint(1) NOT NULL;
+UPDATE tblCons SET UseVmId = 0 WHERE UseVmId IS NULL;
+ALTER TABLE tblCons MODIFY COLUMN UseVmId tinyint(1) NOT NULL;
+SET SQL_SAFE_UPDATES=1;
+ALTER TABLE tblRoot ALTER COLUMN ConfVersion VARCHAR(15) NOT NULL;
+";
+
const string mySqlUpdate = @"UPDATE tblRoot SET ConfVersion=?;";
+
+ // MS-SQL
const string msSqlAlter = @"
-IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID(N'[dbo].[tblCons]') AND name = 'StartProgram')
-BEGIN
- ALTER TABLE tblCons ADD StartProgram varchar(512), StartProgramWorkDir varchar(512);
-END;GO;
-ALTER TABLE tblRoot MODIFY COLUMN ConfVersion varchar(15);GO;";
+ALTER TABLE tblCons ADD InheritUseRestrictedAdmin bit NOT NULL;
+ALTER TABLE tblCons ADD UseRCG bit NOT NULL;
+ALTER TABLE tblCons ADD UseRestrictedAdmin bit NOT NULL;
+ALTER TABLE tblCons ADD InheritUseRCG bit NOT NULL;
+ALTER TABLE tblCons ADD InheritRDGatewayExternalCredentialProvider bit NOT NULL;
+ALTER TABLE tblCons ADD InheritRDGatewayUserViaAPI bit NOT NULL;
+ALTER TABLE tblCons ADD InheritExternalCredentialProvider bit NOT NULL;
+ALTER TABLE tblCons ADD InheritUserViaAPI bit NOT NULL;
+ALTER TABLE tblCons ADD EC2Region varchar(32) NULL;
+ALTER TABLE tblCons ADD EC2InstanceId varchar(32) NULL;
+ALTER TABLE tblCons ADD ExternalCredentialProvider varchar(256) NULL;
+ALTER TABLE tblCons ADD ExternalAddressProvider varchar(256) NULL;
+UPDATE tblCons SET InheritUseEnhancedMode = 0 WHERE InheritUseEnhancedMode IS NULL;
+ALTER TABLE tblCons ALTER COLUMN InheritUseEnhancedMode bit NOT NULL;
+UPDATE tblCons SET UseEnhancedMode = 0 WHERE UseEnhancedMode IS NULL;
+ALTER TABLE tblCons ALTER COLUMN UseEnhancedMode bit NOT NULL;
+UPDATE tblCons SET InheritVmId = 0 WHERE InheritVmId IS NULL;
+ALTER TABLE tblCons ALTER COLUMN InheritVmId bit NOT NULL;
+UPDATE tblCons SET InheritUseVmId = 0 WHERE InheritUseVmId IS NULL;
+ALTER TABLE tblCons ALTER COLUMN InheritUseVmId bit NOT NULL;
+UPDATE tblCons SET UseVmId = 0 WHERE UseVmId IS NULL;
+ALTER TABLE tblCons ALTER COLUMN UseVmId bit NOT NULL;
+ALTER TABLE tblRoot ALTER COLUMN [ConfVersion] VARCHAR(15) NOT NULL;
+";
+
const string msSqlUpdate = @"UPDATE tblRoot SET ConfVersion=@confVersion;";
+
using (var sqlTran = _databaseConnector.DbConnection().BeginTransaction(System.Data.IsolationLevel.Serializable))
{
DbCommand dbCommand;
diff --git a/mRemoteNGDocumentation/mssql_db_setup.sql b/mRemoteNGDocumentation/mssql_db_setup.sql
deleted file mode 100644
index 994b0378..00000000
--- a/mRemoteNGDocumentation/mssql_db_setup.sql
+++ /dev/null
@@ -1,179 +0,0 @@
-if exists (select * from dbo.sysobjects
- where id = object_id(N'[dbo].[tblCons]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
-drop table [dbo].[tblCons]
-GO
-
-if exists (select * from dbo.sysobjects
- where id = object_id(N'[dbo].[tblRoot]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
-drop table [dbo].[tblRoot]
-GO
-
-if exists (select * from dbo.sysobjects
- where id = object_id(N'[dbo].[tblUpdate]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
-drop table [dbo].[tblUpdate]
-GO
-
-CREATE TABLE [dbo].[tblCons] (
- [ID] int NOT NULL IDENTITY(1,1),
- [ConstantID] varchar(128) NOT NULL PRIMARY KEY,
- [PositionID] int NOT NULL,
- [ParentID] varchar(128),
- [LastChange] datetime NOT NULL,
- [Name] varchar(128) NOT NULL,
- [Type] varchar(32) NOT NULL,
- [Expanded] bit NOT NULL,
- [AutomaticResize] bit DEFAULT ((1)) NOT NULL,
- [CacheBitmaps] bit NOT NULL,
- [Colors] varchar(32) NOT NULL,
- [ConnectToConsole] bit NOT NULL,
- [Connected] bit NOT NULL,
- [Description] varchar(1024),
- [DisableCursorBlinking] bit NOT NULL,
- [DisableCursorShadow] bit NOT NULL,
- [DisableFullWindowDrag] bit NOT NULL,
- [DisableMenuAnimations] bit NOT NULL,
- [DisplayThemes] bit NOT NULL,
- [DisplayWallpaper] bit NOT NULL,
- [Domain] varchar(512),
- [EnableDesktopComposition] bit NOT NULL,
- [EnableFontSmoothing] bit NOT NULL,
- [ExtApp] varchar(256),
- [Favorite] tinyint NOT NULL,
- [Hostname] varchar(512),
- [ICAEncryptionStrength] varchar(32) NOT NULL,
- [Icon] varchar(128) NOT NULL,
- [LoadBalanceInfo] varchar(1024),
- [MacAddress] varchar(32),
- [OpeningCommand] varchar(512),
- [Panel] varchar(128) NOT NULL,
- [Password] varchar(1024),
- [Port] int NOT NULL,
- [PostExtApp] varchar(256),
- [PreExtApp] varchar(256),
- [Protocol] varchar(32) NOT NULL,
- [PuttySession] varchar(128),
- [RDGatewayDomain] varchar(512),
- [RDGatewayHostname] varchar(512),
- [RDGatewayPassword] varchar(1024),
- [RDGatewayUsageMethod] varchar(32) NOT NULL,
- [RDGatewayUseConnectionCredentials] varchar(32) NOT NULL,
- [RDGatewayUsername] varchar(512),
- [RDPAlertIdleTimeout] bit NOT NULL,
- [RDPAuthenticationLevel] varchar(32) NOT NULL,
- [RDPMinutesToIdleTimeout] int NOT NULL,
- [RdpVersion] varchar(10),
- [RedirectAudioCapture] bit DEFAULT ((0)) NOT NULL,
- [RedirectClipboard] bit DEFAULT ((0)) NOT NULL,
- [RedirectDiskDrives] bit NOT NULL,
- [RedirectKeys] bit NOT NULL,
- [RedirectPorts] bit NOT NULL,
- [RedirectPrinters] bit NOT NULL,
- [RedirectSmartCards] bit NOT NULL,
- [RedirectSound] varchar(64) NOT NULL,
- [RenderingEngine] varchar(16),
- [Resolution] varchar(32) NOT NULL,
- [SSHOptions] varchar(1024) NOT NULL,
- [SSHTunnelConnectionName] varchar(128) NOT NULL,
- [SoundQuality] varchar(20) NOT NULL,
- [UseCredSsp] bit NOT NULL,
- [UseEnhancedMode] bit DEFAULT ((0)),
- [UseVmId] bit,
- [UserField] varchar(256),
- [Username] varchar(512),
- [VNCAuthMode] varchar(10),
- [VNCColors] varchar(10),
- [VNCCompression] varchar(10),
- [VNCEncoding] varchar(20),
- [VNCProxyIP] varchar(128),
- [VNCProxyPassword] varchar(1024),
- [VNCProxyPort] int,
- [VNCProxyType] varchar(20),
- [VNCProxyUsername] varchar(512),
- [VNCSmartSizeMode] varchar(20),
- [VNCViewOnly] bit NOT NULL,
- [VmId] varchar(100),
- [InheritAutomaticResize] bit DEFAULT ((0)) NOT NULL,
- [InheritCacheBitmaps] bit NOT NULL,
- [InheritColors] bit NOT NULL,
- [InheritDescription] bit NOT NULL,
- [InheritDisableCursorBlinking] bit NOT NULL,
- [InheritDisableCursorShadow] bit NOT NULL,
- [InheritDisableFullWindowDrag] bit NOT NULL,
- [InheritDisableMenuAnimations] bit NOT NULL,
- [InheritDisplayThemes] bit NOT NULL,
- [InheritDisplayWallpaper] bit NOT NULL,
- [InheritDomain] bit NOT NULL,
- [InheritEnableDesktopComposition] bit NOT NULL,
- [InheritEnableFontSmoothing] bit NOT NULL,
- [InheritExtApp] bit NOT NULL,
- [InheritFavorite] bit NOT NULL,
- [InheritICAEncryptionStrength] bit NOT NULL,
- [InheritIcon] bit NOT NULL,
- [InheritLoadBalanceInfo] bit DEFAULT ((0)) NOT NULL,
- [InheritMacAddress] bit NOT NULL,
- [InheritOpeningCommand] bit NOT NULL,
- [InheritPanel] bit NOT NULL,
- [InheritPassword] bit NOT NULL,
- [InheritPort] bit NOT NULL,
- [InheritPostExtApp] bit NOT NULL,
- [InheritPreExtApp] bit NOT NULL,
- [InheritProtocol] bit NOT NULL,
- [InheritPuttySession] bit NOT NULL,
- [InheritRDGatewayDomain] bit NOT NULL,
- [InheritRDGatewayHostname] bit NOT NULL,
- [InheritRDGatewayPassword] bit NOT NULL,
- [InheritRDGatewayUsageMethod] bit NOT NULL,
- [InheritRDGatewayUseConnectionCredentials] bit NOT NULL,
- [InheritRDGatewayUsername] bit NOT NULL,
- [InheritRDPAlertIdleTimeout] bit NOT NULL,
- [InheritRDPAuthenticationLevel] bit NOT NULL,
- [InheritRDPMinutesToIdleTimeout] bit NOT NULL,
- [InheritRdpVersion] bit DEFAULT ((0)) NOT NULL,
- [InheritRedirectAudioCapture] bit DEFAULT ((0)) NOT NULL,
- [InheritRedirectClipboard] bit DEFAULT ((0)) NOT NULL,
- [InheritRedirectDiskDrives] bit NOT NULL,
- [InheritRedirectKeys] bit NOT NULL,
- [InheritRedirectPorts] bit NOT NULL,
- [InheritRedirectPrinters] bit NOT NULL,
- [InheritRedirectSmartCards] bit NOT NULL,
- [InheritRedirectSound] bit NOT NULL,
- [InheritRenderingEngine] bit NOT NULL,
- [InheritResolution] bit NOT NULL,
- [InheritSSHOptions] bit NOT NULL,
- [InheritSSHTunnelConnectionName] bit NOT NULL,
- [InheritSoundQuality] bit NOT NULL,
- [InheritUseConsoleSession] bit NOT NULL,
- [InheritUseCredSsp] bit NOT NULL,
- [InheritUseEnhancedMode] bit DEFAULT ((0)),
- [InheritUseVmId] bit,
- [InheritUserField] bit NOT NULL,
- [InheritUsername] bit NOT NULL,
- [InheritVNCAuthMode] bit NOT NULL,
- [InheritVNCColors] bit NOT NULL,
- [InheritVNCCompression] bit NOT NULL,
- [InheritVNCEncoding] bit NOT NULL,
- [InheritVNCProxyIP] bit NOT NULL,
- [InheritVNCProxyPassword] bit NOT NULL,
- [InheritVNCProxyPort] bit NOT NULL,
- [InheritVNCProxyType] bit NOT NULL,
- [InheritVNCProxyUsername] bit NOT NULL,
- [InheritVNCSmartSizeMode] bit NOT NULL,
- [InheritVNCViewOnly] bit NOT NULL,
- [InheritVmId] bit,
- [StartProgram] varchar(512),
- [StartProgramWorkDir] varchar(512)
-) ON [PRIMARY]
-GO
-
-CREATE TABLE [dbo].[tblRoot] (
- [Name] [varchar] (2048) NOT NULL ,
- [Export] [bit] NOT NULL ,
- [Protected] [varchar] (4048) NOT NULL ,
- [ConfVersion] [varchar] (15) NOT NULL
-) ON [PRIMARY]
-GO
-
-CREATE TABLE [dbo].[tblUpdate] (
- [LastUpdate] [datetime] NULL
-) ON [PRIMARY]
-GO
\ No newline at end of file
diff --git a/mRemoteNGDocumentation/mysql_db_setup.sql b/mRemoteNGDocumentation/mysql_db_setup.sql
deleted file mode 100644
index 297904d5..00000000
--- a/mRemoteNGDocumentation/mysql_db_setup.sql
+++ /dev/null
@@ -1,213 +0,0 @@
-/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
-/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
-/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
-/*!40101 SET NAMES utf8 */;
-/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
-/*!40103 SET TIME_ZONE='+00:00' */;
-/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
-/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
-/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
-/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
-
---
--- Table structure for table `tblCons`
---
-
-DROP TABLE IF EXISTS `tblCons`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `tblCons` (
- `ID` int(11) NOT NULL AUTO_INCREMENT,
- `ConstantID` varchar(128) NOT NULL,
- `PositionID` int(11) NOT NULL,
- `ParentID` varchar(128) DEFAULT NULL,
- `LastChange` datetime NOT NULL,
- `Name` varchar(128) NOT NULL,
- `Type` varchar(32) NOT NULL,
- `Expanded` tinyint(1) NOT NULL,
- `AutomaticResize` tinyint(1) NOT NULL DEFAULT 1,
- `CacheBitmaps` tinyint(1) NOT NULL,
- `Colors` varchar(32) NOT NULL,
- `ConnectToConsole` tinyint(1) NOT NULL,
- `Connected` tinyint(1) NOT NULL,
- `Description` varchar(1024) DEFAULT NULL,
- `DisableCursorBlinking` tinyint(1) NOT NULL,
- `DisableCursorShadow` tinyint(1) NOT NULL,
- `DisableFullWindowDrag` tinyint(1) NOT NULL,
- `DisableMenuAnimations` tinyint(1) NOT NULL,
- `DisplayThemes` tinyint(1) NOT NULL,
- `DisplayWallpaper` tinyint(1) NOT NULL,
- `Domain` varchar(512) DEFAULT NULL,
- `EnableDesktopComposition` tinyint(1) NOT NULL,
- `EnableFontSmoothing` tinyint(1) NOT NULL,
- `ExtApp` varchar(256) DEFAULT NULL,
- `Favorite` tinyint(1) NOT NULL,
- `Hostname` varchar(512) DEFAULT NULL,
- `LoadBalanceInfo` varchar(1024) DEFAULT NULL,
- `MacAddress` varchar(32) DEFAULT NULL,
- `OpeningCommand` varchar(512) DEFAULT NULL,
- `Panel` varchar(128) NOT NULL,
- `Password` varchar(1024) DEFAULT NULL,
- `Port` int(11) NOT NULL,
- `PostExtApp` varchar(256) DEFAULT NULL,
- `PreExtApp` varchar(256) DEFAULT NULL,
- `Protocol` varchar(32) NOT NULL,
- `PuttySession` varchar(128) DEFAULT NULL,
- `RDGatewayDomain` varchar(512) DEFAULT NULL,
- `RDGatewayHostname` varchar(512) DEFAULT NULL,
- `RDGatewayPassword` varchar(1024) DEFAULT NULL,
- `RDGatewayUsageMethod` varchar(32) NOT NULL,
- `RDGatewayUseConnectionCredentials` varchar(32) NOT NULL,
- `RDGatewayUsername` varchar(512) DEFAULT NULL,
- `RDPAlertIdleTimeout` tinyint(1) NOT NULL,
- `RDPAuthenticationLevel` varchar(32) NOT NULL,
- `RDPMinutesToIdleTimeout` int(11) NOT NULL,
- `RdpVersion` varchar(10) DEFAULT NULL,
- `RedirectAudioCapture` tinyint(1) NOT NULL DEFAULT 0,
- `RedirectClipboard` tinyint(1) NOT NULL DEFAULT 0,
- `RedirectDiskDrives` tinyint(1) NOT NULL,
- `RedirectKeys` tinyint(1) NOT NULL,
- `RedirectPorts` tinyint(1) NOT NULL,
- `RedirectPrinters` tinyint(1) NOT NULL,
- `RedirectSmartCards` tinyint(1) NOT NULL,
- `RedirectSound` varchar(64) NOT NULL,
- `RenderingEngine` varchar(16) DEFAULT NULL,
- `Resolution` varchar(32) NOT NULL,
- `SSHOptions` varchar(1024) NOT NULL,
- `SSHTunnelConnectionName` varchar(128) NOT NULL,
- `SoundQuality` varchar(20) NOT NULL,
- `UseCredSsp` tinyint(1) NOT NULL,
- `UseEnhancedMode` tinyint(1) DEFAULT NULL,
- `UseVmId` tinyint(1) DEFAULT NULL,
- `UserField` varchar(256) DEFAULT NULL,
- `Username` varchar(512) DEFAULT NULL,
- `VNCAuthMode` varchar(10) DEFAULT NULL,
- `VNCColors` varchar(10) DEFAULT NULL,
- `VNCCompression` varchar(10) DEFAULT NULL,
- `VNCEncoding` varchar(20) DEFAULT NULL,
- `VNCProxyIP` varchar(128) DEFAULT NULL,
- `VNCProxyPassword` varchar(1024) DEFAULT NULL,
- `VNCProxyPort` int(11) DEFAULT NULL,
- `VNCProxyType` varchar(20) DEFAULT NULL,
- `VNCProxyUsername` varchar(512) DEFAULT NULL,
- `VNCSmartSizeMode` varchar(20) DEFAULT NULL,
- `VNCViewOnly` tinyint(1) NOT NULL,
- `VmId` varchar(512) DEFAULT NULL,
- `ICAEncryptionStrength` varchar(32) NOT NULL,
- `Icon` varchar(128) NOT NULL,
- `InheritAutomaticResize` tinyint(1) NOT NULL DEFAULT 0,
- `InheritCacheBitmaps` tinyint(1) NOT NULL,
- `InheritColors` tinyint(1) NOT NULL,
- `InheritDescription` tinyint(1) NOT NULL,
- `InheritDisableCursorBlinking` tinyint(1) NOT NULL,
- `InheritDisableCursorShadow` tinyint(1) NOT NULL,
- `InheritDisableFullWindowDrag` tinyint(1) NOT NULL,
- `InheritDisableMenuAnimations` tinyint(1) NOT NULL,
- `InheritDisplayThemes` tinyint(1) NOT NULL,
- `InheritDisplayWallpaper` tinyint(1) NOT NULL,
- `InheritDomain` tinyint(1) NOT NULL,
- `InheritEnableDesktopComposition` tinyint(1) NOT NULL,
- `InheritEnableFontSmoothing` tinyint(1) NOT NULL,
- `InheritExtApp` tinyint(1) NOT NULL,
- `InheritFavorite` tinyint(1) NOT NULL,
- `InheritICAEncryptionStrength` tinyint(1) NOT NULL,
- `InheritIcon` tinyint(1) NOT NULL,
- `InheritLoadBalanceInfo` tinyint(1) NOT NULL DEFAULT 0,
- `InheritMacAddress` tinyint(1) NOT NULL,
- `InheritOpeningCommand` tinyint(1) NOT NULL,
- `InheritPanel` tinyint(1) NOT NULL,
- `InheritPassword` tinyint(1) NOT NULL,
- `InheritPort` tinyint(1) NOT NULL,
- `InheritPostExtApp` tinyint(1) NOT NULL,
- `InheritPreExtApp` tinyint(1) NOT NULL,
- `InheritProtocol` tinyint(1) NOT NULL,
- `InheritPuttySession` tinyint(1) NOT NULL,
- `InheritRDGatewayDomain` tinyint(1) NOT NULL,
- `InheritRDGatewayHostname` tinyint(1) NOT NULL,
- `InheritRDGatewayPassword` tinyint(1) NOT NULL,
- `InheritRDGatewayUsageMethod` tinyint(1) NOT NULL,
- `InheritRDGatewayUseConnectionCredentials` tinyint(1) NOT NULL,
- `InheritRDGatewayUsername` tinyint(1) NOT NULL,
- `InheritRDPAlertIdleTimeout` tinyint(1) NOT NULL,
- `InheritRDPAuthenticationLevel` tinyint(1) NOT NULL,
- `InheritRDPMinutesToIdleTimeout` tinyint(1) NOT NULL,
- `InheritRdpVersion` tinyint(1) NOT NULL DEFAULT 0,
- `InheritRedirectAudioCapture` tinyint(1) NOT NULL DEFAULT 0,
- `InheritRedirectClipboard` tinyint(1) NOT NULL DEFAULT 0,
- `InheritRedirectDiskDrives` tinyint(1) NOT NULL,
- `InheritRedirectKeys` tinyint(1) NOT NULL,
- `InheritRedirectPorts` tinyint(1) NOT NULL,
- `InheritRedirectPrinters` tinyint(1) NOT NULL,
- `InheritRedirectSmartCards` tinyint(1) NOT NULL,
- `InheritRedirectSound` tinyint(1) NOT NULL,
- `InheritRenderingEngine` tinyint(1) NOT NULL,
- `InheritResolution` tinyint(1) NOT NULL,
- `InheritSSHOptions` tinyint(1) NOT NULL,
- `InheritSSHTunnelConnectionName` tinyint(1) NOT NULL,
- `InheritSoundQuality` tinyint(1) NOT NULL,
- `InheritUseConsoleSession` tinyint(1) NOT NULL,
- `InheritUseCredSsp` tinyint(1) NOT NULL,
- `InheritUseRestrictedAdmin` tinyint(1) NOT NULL,
- `InheritUseRCG` tinyint(1) NOT NULL,
- `UseRestrictedAdmin` tinyint(1) NOT NULL,
- `UseRCG` tinyint(1) NOT NULL,
- `InheritUseEnhancedMode` tinyint(1) DEFAULT NULL,
- `InheritUseVmId` tinyint(1) DEFAULT NULL,
- `InheritUserField` tinyint(1) NOT NULL,
- `InheritUsername` tinyint(1) NOT NULL,
- `InheritVNCAuthMode` tinyint(1) NOT NULL,
- `InheritVNCColors` tinyint(1) NOT NULL,
- `InheritVNCCompression` tinyint(1) NOT NULL,
- `InheritVNCEncoding` tinyint(1) NOT NULL,
- `InheritVNCProxyIP` tinyint(1) NOT NULL,
- `InheritVNCProxyPassword` tinyint(1) NOT NULL,
- `InheritVNCProxyPort` tinyint(1) NOT NULL,
- `InheritVNCProxyType` tinyint(1) NOT NULL,
- `InheritVNCProxyUsername` tinyint(1) NOT NULL,
- `InheritVNCSmartSizeMode` tinyint(1) NOT NULL,
- `InheritVNCViewOnly` tinyint(1) NOT NULL,
- `InheritVmId` tinyint(1) DEFAULT NULL,
- `StartProgram` varchar(512) DEFAULT NULL,
- `StartProgramWorkDir` varchar(512) DEFAULT NULL,
- PRIMARY KEY (`ConstantID`),
- UNIQUE (`ID`)
-) ENGINE=InnoDB AUTO_INCREMENT=3324 DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `tblRoot`
---
-
-DROP TABLE IF EXISTS `tblRoot`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `tblRoot` (
- `Name` varchar(2048) NOT NULL,
- `Export` tinyint(1) NOT NULL,
- `Protected` varchar(4048) NOT NULL,
- `ConfVersion` varchar(15) NOT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `tblUpdate`
---
-
-DROP TABLE IF EXISTS `tblUpdate`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `tblUpdate` (
- `LastUpdate` datetime(3) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
-
-/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
-
-/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
-/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
-/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
-/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
-/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
-/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
-/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
diff --git a/mRemoteNGDocumentation/sql_configuration.rst b/mRemoteNGDocumentation/sql_configuration.rst
index 67d8fb87..6ac8ef69 100644
--- a/mRemoteNGDocumentation/sql_configuration.rst
+++ b/mRemoteNGDocumentation/sql_configuration.rst
@@ -32,19 +32,3 @@ Steps to configure mRemoteNG for SQL
- Click OK to apply the changes. The main window title should now change to "mRemoteNG | SQL Server".
- Now click on File - Save to update the tables on your SQL Server with the data from the loaded connections xml file. (Do not click File - New, this doesn't work yet)
- You should now be able to do everything you were able to do with the XML storage plus see the changes live on another mRemoteNG instance that is connected to the same Database.
-
-SQL Table creation Scripts
-==========================
-
-MSSQL
------
-
-.. include:: mssql_db_setup.sql
- :code: sql
-
-
-MYSQL
------
-
-.. include:: mysql_db_setup.sql
- :code: sql
diff --git a/mRemoteNGSpecs/mRemoteNGSpecs.csproj b/mRemoteNGSpecs/mRemoteNGSpecs.csproj
index 54dc042a..310c2b18 100644
--- a/mRemoteNGSpecs/mRemoteNGSpecs.csproj
+++ b/mRemoteNGSpecs/mRemoteNGSpecs.csproj
@@ -22,7 +22,7 @@
-
+
diff --git a/mRemoteNGTests/mRemoteNGTests.csproj b/mRemoteNGTests/mRemoteNGTests.csproj
index 7d514eb5..7093f31b 100644
--- a/mRemoteNGTests/mRemoteNGTests.csproj
+++ b/mRemoteNGTests/mRemoteNGTests.csproj
@@ -20,7 +20,7 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive