mirror of
https://github.com/mRemoteNG/mRemoteNG.git
synced 2026-02-17 22:11:48 +08:00
639 lines
24 KiB
C#
639 lines
24 KiB
C#
using System;
|
|
using System.Data.Common;
|
|
using System.Globalization;
|
|
using System.Runtime.Versioning;
|
|
using System.Security;
|
|
using mRemoteNG.App;
|
|
using mRemoteNG.App.Info;
|
|
using mRemoteNG.Config.DatabaseConnectors;
|
|
using mRemoteNG.Messages;
|
|
using mRemoteNG.Security;
|
|
using mRemoteNG.Security.SymmetricEncryption;
|
|
using mRemoteNG.Tools;
|
|
using mRemoteNG.Tree.Root;
|
|
|
|
namespace mRemoteNG.Config.Serializers.ConnectionSerializers.Sql
|
|
{
|
|
[SupportedOSPlatform("windows")]
|
|
public class SqlDatabaseMetaDataRetriever
|
|
{
|
|
public SqlConnectionListMetaData GetDatabaseMetaData(IDatabaseConnector databaseConnector)
|
|
{
|
|
SqlConnectionListMetaData metaData;
|
|
DbDataReader dbDataReader = null;
|
|
|
|
try
|
|
{
|
|
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)
|
|
{
|
|
// assume new empty database
|
|
return null;
|
|
}
|
|
else
|
|
{
|
|
dbDataReader.Read();
|
|
}
|
|
|
|
metaData = new SqlConnectionListMetaData
|
|
{
|
|
Name = dbDataReader["Name"] as string ?? "",
|
|
Protected = dbDataReader["Protected"] as string ?? "",
|
|
Export = dbDataReader["Export"].Equals(1),
|
|
ConfVersion = new Version(Convert.ToString(dbDataReader["confVersion"], CultureInfo.InvariantCulture) ?? string.Empty)
|
|
};
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, $"Retrieving database version failed. {ex}");
|
|
throw;
|
|
}
|
|
finally
|
|
{
|
|
if (dbDataReader != null && !dbDataReader.IsClosed)
|
|
dbDataReader.Close();
|
|
}
|
|
|
|
return metaData;
|
|
}
|
|
|
|
public void WriteDatabaseMetaData(RootNodeInfo rootTreeNode, IDatabaseConnector databaseConnector)
|
|
{
|
|
// TODO: use transaction
|
|
|
|
LegacyRijndaelCryptographyProvider cryptographyProvider = new();
|
|
|
|
string strProtected;
|
|
|
|
if (rootTreeNode != null)
|
|
{
|
|
if (rootTreeNode.Password)
|
|
{
|
|
SecureString password = rootTreeNode.PasswordString.ConvertToSecureString();
|
|
|
|
strProtected = cryptographyProvider.Encrypt("ThisIsProtected", password);
|
|
}
|
|
else
|
|
{
|
|
strProtected = cryptographyProvider.Encrypt("ThisIsNotProtected", Runtime.EncryptionKey);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
strProtected = cryptographyProvider.Encrypt("ThisIsNotProtected", Runtime.EncryptionKey);
|
|
}
|
|
|
|
DbCommand cmd = databaseConnector.DbCommand("TRUNCATE TABLE tblRoot");
|
|
cmd.ExecuteNonQuery();
|
|
|
|
if (rootTreeNode != null)
|
|
{
|
|
cmd = databaseConnector.DbCommand(
|
|
"INSERT INTO tblRoot (Name, Export, Protected, ConfVersion) VALUES(@Name, 0, @Protected, @ConfVersion)");
|
|
|
|
DbParameter nameParam = cmd.CreateParameter();
|
|
nameParam.ParameterName = "@Name";
|
|
nameParam.Value = rootTreeNode.Name;
|
|
cmd.Parameters.Add(nameParam);
|
|
|
|
DbParameter protectedParam = cmd.CreateParameter();
|
|
protectedParam.ParameterName = "@Protected";
|
|
protectedParam.Value = strProtected;
|
|
cmd.Parameters.Add(protectedParam);
|
|
|
|
DbParameter confVersionParam = cmd.CreateParameter();
|
|
confVersionParam.ParameterName = "@ConfVersion";
|
|
confVersionParam.Value = ConnectionsFileInfo.ConnectionFileVersion.ToString();
|
|
cmd.Parameters.Add(confVersionParam);
|
|
|
|
cmd.ExecuteNonQuery();
|
|
}
|
|
else
|
|
{
|
|
Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, $"UpdateRootNodeTable: rootTreeNode was null. Could not insert!");
|
|
}
|
|
}
|
|
|
|
private bool IsValidTableName(string tableName)
|
|
{
|
|
// Table names should only contain alphanumeric characters and underscores
|
|
// This prevents SQL injection when table names must be used directly in queries
|
|
if (string.IsNullOrWhiteSpace(tableName))
|
|
return false;
|
|
|
|
foreach (char c in tableName)
|
|
{
|
|
if (!char.IsLetterOrDigit(c) && c != '_')
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
private bool DoesDbTableExist(IDatabaseConnector databaseConnector, string tableName)
|
|
{
|
|
bool exists;
|
|
|
|
try
|
|
{
|
|
// ANSI SQL way. Works in PostgreSQL, MSSQL, MySQL.
|
|
string database_name = Properties.OptionsDBsPage.Default.SQLDatabaseName;
|
|
DbCommand cmd = databaseConnector.DbCommand("select case when exists((select * from information_schema.tables where table_name = @TableName and table_schema = @DatabaseName)) then 1 else 0 end");
|
|
|
|
DbParameter tableNameParam = cmd.CreateParameter();
|
|
tableNameParam.ParameterName = "@TableName";
|
|
tableNameParam.Value = tableName;
|
|
cmd.Parameters.Add(tableNameParam);
|
|
|
|
DbParameter databaseNameParam = cmd.CreateParameter();
|
|
databaseNameParam.ParameterName = "@DatabaseName";
|
|
databaseNameParam.Value = database_name;
|
|
cmd.Parameters.Add(databaseNameParam);
|
|
|
|
short cmdResult = Convert.ToInt16(cmd.ExecuteScalar());
|
|
exists = (cmdResult == 1);
|
|
}
|
|
catch
|
|
{
|
|
try
|
|
{
|
|
// Other RDBMS. Graceful degradation
|
|
// Note: Table names cannot be parameterized in standard SQL.
|
|
// Validate tableName to prevent SQL injection
|
|
if (!IsValidTableName(tableName))
|
|
{
|
|
exists = false;
|
|
}
|
|
else
|
|
{
|
|
exists = true;
|
|
DbCommand cmdOthers = databaseConnector.DbCommand($"select 1 from {tableName} where 1 = 0");
|
|
cmdOthers.ExecuteNonQuery();
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
exists = false;
|
|
}
|
|
}
|
|
|
|
return exists;
|
|
}
|
|
|
|
private void InitializeDatabaseSchema(IDatabaseConnector databaseConnector)
|
|
{
|
|
string sql;
|
|
|
|
if (databaseConnector.GetType() == typeof(MSSqlDatabaseConnector))
|
|
{
|
|
// *********************************
|
|
// ********* MICROSOFT SQL *********
|
|
// *********************************
|
|
|
|
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] varchar(32) DEFAULT NULL,
|
|
[RedirectDiskDrivesCustom] varchar(32) DEFAULT NULL,
|
|
[RedirectKeys] bit NOT NULL,
|
|
[RedirectPorts] bit NOT NULL,
|
|
[RedirectPrinters] bit NOT NULL,
|
|
[RedirectSmartCards] bit NOT NULL,
|
|
[RedirectSound] varchar(64) NOT NULL,
|
|
[RenderingEngine] varchar(32) 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,
|
|
[InheritRedirectDiskDrivesCustom] 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,
|
|
[UserViaAPI] varchar(512) NOT 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))
|
|
{
|
|
// **************************
|
|
// ********* MY SQL *********
|
|
// **************************
|
|
|
|
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 NOT NULL,
|
|
`AutomaticResize` tinyint NOT NULL DEFAULT 1,
|
|
`CacheBitmaps` tinyint NOT NULL,
|
|
`Colors` varchar(32) NOT NULL,
|
|
`ConnectToConsole` tinyint NOT NULL,
|
|
`Connected` tinyint NOT NULL,
|
|
`Description` varchar(1024) DEFAULT NULL,
|
|
`DisableCursorBlinking` tinyint NOT NULL,
|
|
`DisableCursorShadow` tinyint NOT NULL,
|
|
`DisableFullWindowDrag` tinyint NOT NULL,
|
|
`DisableMenuAnimations` tinyint NOT NULL,
|
|
`DisplayThemes` tinyint NOT NULL,
|
|
`DisplayWallpaper` tinyint NOT NULL,
|
|
`Domain` varchar(512) DEFAULT NULL,
|
|
`EnableDesktopComposition` tinyint NOT NULL,
|
|
`EnableFontSmoothing` tinyint NOT NULL,
|
|
`ExtApp` varchar(256) DEFAULT NULL,
|
|
`Favorite` tinyint 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 NOT NULL,
|
|
`RDPAuthenticationLevel` varchar(32) NOT NULL,
|
|
`RDPMinutesToIdleTimeout` int(11) NOT NULL,
|
|
`RdpVersion` varchar(10) DEFAULT NULL,
|
|
`RedirectAudioCapture` tinyint NOT NULL,
|
|
`RedirectClipboard` tinyint NOT NULL,
|
|
`RedirectDiskDrives` varchar(32) DEFAULT NULL,
|
|
`RedirectDiskDrivesCustom` varchar(32) DEFAULT NULL,
|
|
`RedirectKeys` tinyint NOT NULL,
|
|
`RedirectPorts` tinyint NOT NULL,
|
|
`RedirectPrinters` tinyint NOT NULL,
|
|
`RedirectSmartCards` tinyint NOT NULL,
|
|
`RedirectSound` varchar(64) NOT NULL,
|
|
`RenderingEngine` varchar(32) DEFAULT NULL,
|
|
`Resolution` varchar(32) NOT NULL,
|
|
`SSHOptions` varchar(1024) NOT NULL,
|
|
`SSHTunnelConnectionName` varchar(128) NOT NULL,
|
|
`SoundQuality` varchar(20) NOT NULL,
|
|
`UseCredSsp` tinyint NOT NULL,
|
|
`UseEnhancedMode` tinyint NOT NULL,
|
|
`UseVmId` tinyint 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 NOT NULL,
|
|
`VmId` varchar(512) DEFAULT NULL,
|
|
`ICAEncryptionStrength` varchar(32) NOT NULL,
|
|
`InheritAutomaticResize` tinyint NOT NULL,
|
|
`InheritCacheBitmaps` tinyint NOT NULL,
|
|
`InheritColors` tinyint NOT NULL,
|
|
`InheritDescription` tinyint NOT NULL,
|
|
`InheritDisableCursorBlinking` tinyint NOT NULL,
|
|
`InheritDisableCursorShadow` tinyint NOT NULL,
|
|
`InheritDisableFullWindowDrag` tinyint NOT NULL,
|
|
`InheritDisableMenuAnimations` tinyint NOT NULL,
|
|
`InheritDisplayThemes` tinyint NOT NULL,
|
|
`InheritDisplayWallpaper` tinyint NOT NULL,
|
|
`InheritDomain` tinyint NOT NULL,
|
|
`InheritEnableDesktopComposition` tinyint NOT NULL,
|
|
`InheritEnableFontSmoothing` tinyint NOT NULL,
|
|
`InheritExtApp` tinyint NOT NULL,
|
|
`InheritFavorite` tinyint NOT NULL,
|
|
`InheritICAEncryptionStrength` tinyint NOT NULL,
|
|
`InheritIcon` tinyint NOT NULL,
|
|
`InheritLoadBalanceInfo` tinyint NOT NULL,
|
|
`InheritMacAddress` tinyint NOT NULL,
|
|
`InheritOpeningCommand` tinyint NOT NULL,
|
|
`InheritPanel` tinyint NOT NULL,
|
|
`InheritPassword` tinyint NOT NULL,
|
|
`InheritPort` tinyint NOT NULL,
|
|
`InheritPostExtApp` tinyint NOT NULL,
|
|
`InheritPreExtApp` tinyint NOT NULL,
|
|
`InheritProtocol` tinyint NOT NULL,
|
|
`InheritPuttySession` tinyint NOT NULL,
|
|
`InheritRDGatewayDomain` tinyint NOT NULL,
|
|
`InheritRDGatewayHostname` tinyint NOT NULL,
|
|
`InheritRDGatewayPassword` tinyint NOT NULL,
|
|
`InheritRDGatewayUsageMethod` tinyint NOT NULL,
|
|
`InheritRDGatewayUseConnectionCredentials` tinyint NOT NULL,
|
|
`InheritRDGatewayExternalCredentialProvider` tinyint NOT NULL,
|
|
`InheritRDGatewayUsername` tinyint NOT NULL,
|
|
`InheritRDGatewayUserViaAPI` tinyint NOT NULL,
|
|
`InheritRDPAlertIdleTimeout` tinyint NOT NULL,
|
|
`InheritRDPAuthenticationLevel` tinyint NOT NULL,
|
|
`InheritRDPMinutesToIdleTimeout` tinyint NOT NULL,
|
|
`InheritRdpVersion` tinyint NOT NULL,
|
|
`InheritRedirectAudioCapture` tinyint NOT NULL,
|
|
`InheritRedirectClipboard` tinyint NOT NULL,
|
|
`InheritRedirectDiskDrives` tinyint NOT NULL,
|
|
`InheritRedirectDiskDrivesCustom` tinyint NOT NULL,
|
|
`InheritRedirectKeys` tinyint NOT NULL,
|
|
`InheritRedirectPorts` tinyint NOT NULL,
|
|
`InheritRedirectPrinters` tinyint NOT NULL,
|
|
`InheritRedirectSmartCards` tinyint NOT NULL,
|
|
`InheritRedirectSound` tinyint NOT NULL,
|
|
`InheritRenderingEngine` tinyint NOT NULL,
|
|
`InheritResolution` tinyint NOT NULL,
|
|
`InheritSSHOptions` tinyint NOT NULL,
|
|
`InheritSSHTunnelConnectionName` tinyint NOT NULL,
|
|
`InheritSoundQuality` tinyint NOT NULL,
|
|
`InheritUseConsoleSession` tinyint NOT NULL,
|
|
`InheritUseCredSsp` tinyint NOT NULL,
|
|
`InheritUseRestrictedAdmin` tinyint NOT NULL,
|
|
`InheritUseRCG` tinyint NOT NULL,
|
|
`InheritExternalCredentialProvider` tinyint NOT NULL,
|
|
`InheritUserViaAPI` tinyint NOT NULL,
|
|
`UseRestrictedAdmin` tinyint NOT NULL,
|
|
`UseRCG` tinyint NOT NULL,
|
|
`InheritUseEnhancedMode` tinyint DEFAULT NULL,
|
|
`InheritUseVmId` tinyint DEFAULT NULL,
|
|
`InheritUserField` tinyint NOT NULL,
|
|
`InheritUsername` tinyint NOT NULL,
|
|
`InheritVNCAuthMode` tinyint NOT NULL,
|
|
`InheritVNCColors` tinyint NOT NULL,
|
|
`InheritVNCCompression` tinyint NOT NULL,
|
|
`InheritVNCEncoding` tinyint NOT NULL,
|
|
`InheritVNCProxyIP` tinyint NOT NULL,
|
|
`InheritVNCProxyPassword` tinyint NOT NULL,
|
|
`InheritVNCProxyPort` tinyint NOT NULL,
|
|
`InheritVNCProxyType` tinyint NOT NULL,
|
|
`InheritVNCProxyUsername` tinyint NOT NULL,
|
|
`InheritVNCSmartSizeMode` tinyint NOT NULL,
|
|
`InheritVNCViewOnly` tinyint NOT NULL,
|
|
`InheritVmId` tinyint 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,
|
|
`UserViaAPI` varchar(512) NOT 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 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();
|
|
}
|
|
|
|
}
|
|
}
|