diff --git a/mRemoteNGTests/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsDeserializerMremotengFormatTests.cs b/mRemoteNGTests/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsDeserializerMremotengFormatTests.cs index 8dfeeebc..7eebe29b 100644 --- a/mRemoteNGTests/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsDeserializerMremotengFormatTests.cs +++ b/mRemoteNGTests/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsDeserializerMremotengFormatTests.cs @@ -112,6 +112,7 @@ namespace mRemoteNGTests.Config.Serializers.ConnectionSerializers.Csv RedirectPrinters = true, RedirectSmartCards = true, RedirectSound = RdpProtocol.RDPSounds.LeaveAtRemoteComputer, + RedirectAudioCapture = true, RedirectKeys = true, VNCCompression = ProtocolVNC.Compression.Comp4, VNCEncoding = ProtocolVNC.Encoding.EncRRE, diff --git a/mRemoteNGTests/TestHelpers/SerializableConnectionInfoAllPropertiesOfType.cs b/mRemoteNGTests/TestHelpers/SerializableConnectionInfoAllPropertiesOfType.cs index 61ca6f5d..325df49c 100644 --- a/mRemoteNGTests/TestHelpers/SerializableConnectionInfoAllPropertiesOfType.cs +++ b/mRemoteNGTests/TestHelpers/SerializableConnectionInfoAllPropertiesOfType.cs @@ -45,6 +45,7 @@ public TType RedirectSmartCards { get; set; } public TType RedirectSound { get; set; } public TType SoundQuality { get; set; } + public TType RedirectAudioCapture { get; set; } public TType PreExtApp { get; set; } public TType PostExtApp { get; set; } public TType MacAddress { get; set; } diff --git a/mRemoteNGTests/UI/Window/ConfigWindowTests/ConfigWindowGeneralTests.cs b/mRemoteNGTests/UI/Window/ConfigWindowTests/ConfigWindowGeneralTests.cs index 70ca4892..c4ee2a10 100644 --- a/mRemoteNGTests/UI/Window/ConfigWindowTests/ConfigWindowGeneralTests.cs +++ b/mRemoteNGTests/UI/Window/ConfigWindowTests/ConfigWindowGeneralTests.cs @@ -154,6 +154,7 @@ namespace mRemoteNGTests.UI.Window.ConfigWindowTests nameof(ConnectionInfo.RedirectPorts), nameof(ConnectionInfo.RedirectSmartCards), nameof(ConnectionInfo.RedirectSound), + nameof(ConnectionInfo.RedirectAudioCapture), }); break; case ProtocolType.VNC: diff --git a/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsDeserializerMremotengFormat.cs b/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsDeserializerMremotengFormat.cs index 93b2e385..5646f729 100644 --- a/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsDeserializerMremotengFormat.cs +++ b/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsDeserializerMremotengFormat.cs @@ -277,6 +277,13 @@ namespace mRemoteNG.Config.Serializers.Csv connectionRecord.RedirectSound = value; } + if (headers.Contains("RedirectAudioCapture")) + { + bool value; + if (bool.TryParse(connectionCsv[headers.IndexOf("RedirectAudioCapture")], out value)) + connectionRecord.RedirectAudioCapture = value; + } + if (headers.Contains("RedirectKeys")) { bool value; @@ -756,6 +763,13 @@ namespace mRemoteNG.Config.Serializers.Csv connectionRecord.Inheritance.SoundQuality = value; } + if (headers.Contains("InheritRedirectAudioCapture")) + { + bool value; + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritRedirectAudioCapture")], out value)) + connectionRecord.Inheritance.RedirectAudioCapture = value; + } + #endregion return connectionRecord; diff --git a/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsSerializerMremotengFormat.cs b/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsSerializerMremotengFormat.cs index 6bc4ddc9..5a259c0e 100644 --- a/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsSerializerMremotengFormat.cs +++ b/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsSerializerMremotengFormat.cs @@ -56,10 +56,10 @@ namespace mRemoteNG.Config.Serializers.Csv if (_saveFilter.SaveDomain) sb.Append("Domain;"); sb.Append( - "Hostname;Protocol;PuttySession;Port;ConnectToConsole;UseCredSsp;RenderingEngine;ICAEncryptionStrength;RDPAuthenticationLevel;LoadBalanceInfo;Colors;Resolution;AutomaticResize;DisplayWallpaper;DisplayThemes;EnableFontSmoothing;EnableDesktopComposition;CacheBitmaps;RedirectDiskDrives;RedirectPorts;RedirectPrinters;RedirectClipboard;RedirectSmartCards;RedirectSound;RedirectKeys;PreExtApp;PostExtApp;MacAddress;UserField;ExtApp;Favorite;VNCCompression;VNCEncoding;VNCAuthMode;VNCProxyType;VNCProxyIP;VNCProxyPort;VNCProxyUsername;VNCProxyPassword;VNCColors;VNCSmartSizeMode;VNCViewOnly;RDGatewayUsageMethod;RDGatewayHostname;RDGatewayUseConnectionCredentials;RDGatewayUsername;RDGatewayPassword;RDGatewayDomain;"); + "Hostname;Protocol;PuttySession;Port;ConnectToConsole;UseCredSsp;RenderingEngine;ICAEncryptionStrength;RDPAuthenticationLevel;LoadBalanceInfo;Colors;Resolution;AutomaticResize;DisplayWallpaper;DisplayThemes;EnableFontSmoothing;EnableDesktopComposition;CacheBitmaps;RedirectDiskDrives;RedirectPorts;RedirectPrinters;RedirectClipboard;RedirectSmartCards;RedirectSound;RedirectKeys;PreExtApp;PostExtApp;MacAddress;UserField;ExtApp;Favorite;VNCCompression;VNCEncoding;VNCAuthMode;VNCProxyType;VNCProxyIP;VNCProxyPort;VNCProxyUsername;VNCProxyPassword;VNCColors;VNCSmartSizeMode;VNCViewOnly;RDGatewayUsageMethod;RDGatewayHostname;RDGatewayUseConnectionCredentials;RDGatewayUsername;RDGatewayPassword;RDGatewayDomain;RedirectAudioCapture;"); if (_saveFilter.SaveInheritance) sb.Append( - "InheritCacheBitmaps;InheritColors;InheritDescription;InheritDisplayThemes;InheritDisplayWallpaper;InheritEnableFontSmoothing;InheritEnableDesktopComposition;InheritDomain;InheritIcon;InheritPanel;InheritPassword;InheritPort;InheritProtocol;InheritPuttySession;InheritRedirectDiskDrives;InheritRedirectKeys;InheritRedirectPorts;InheritRedirectPrinters;InheritRedirectClipboard;InheritRedirectSmartCards;InheritRedirectSound;InheritResolution;InheritAutomaticResize;InheritUseConsoleSession;InheritUseCredSsp;InheritRenderingEngine;InheritUsername;InheritICAEncryptionStrength;InheritRDPAuthenticationLevel;InheritLoadBalanceInfo;InheritPreExtApp;InheritPostExtApp;InheritMacAddress;InheritUserField;InheritFavorite;InheritExtApp;InheritVNCCompression;InheritVNCEncoding;InheritVNCAuthMode;InheritVNCProxyType;InheritVNCProxyIP;InheritVNCProxyPort;InheritVNCProxyUsername;InheritVNCProxyPassword;InheritVNCColors;InheritVNCSmartSizeMode;InheritVNCViewOnly;InheritRDGatewayUsageMethod;InheritRDGatewayHostname;InheritRDGatewayUseConnectionCredentials;InheritRDGatewayUsername;InheritRDGatewayPassword;InheritRDGatewayDomain;InheritRDPAlertIdleTimeout;InheritRDPMinutesToIdleTimeout;InheritSoundQuality"); + "InheritCacheBitmaps;InheritColors;InheritDescription;InheritDisplayThemes;InheritDisplayWallpaper;InheritEnableFontSmoothing;InheritEnableDesktopComposition;InheritDomain;InheritIcon;InheritPanel;InheritPassword;InheritPort;InheritProtocol;InheritPuttySession;InheritRedirectDiskDrives;InheritRedirectKeys;InheritRedirectPorts;InheritRedirectPrinters;InheritRedirectClipboard;InheritRedirectSmartCards;InheritRedirectSound;InheritResolution;InheritAutomaticResize;InheritUseConsoleSession;InheritUseCredSsp;InheritRenderingEngine;InheritUsername;InheritICAEncryptionStrength;InheritRDPAuthenticationLevel;InheritLoadBalanceInfo;InheritPreExtApp;InheritPostExtApp;InheritMacAddress;InheritUserField;InheritFavorite;InheritExtApp;InheritVNCCompression;InheritVNCEncoding;InheritVNCAuthMode;InheritVNCProxyType;InheritVNCProxyIP;InheritVNCProxyPort;InheritVNCProxyUsername;InheritVNCProxyPassword;InheritVNCColors;InheritVNCSmartSizeMode;InheritVNCViewOnly;InheritRDGatewayUsageMethod;InheritRDGatewayHostname;InheritRDGatewayUseConnectionCredentials;InheritRDGatewayUsername;InheritRDGatewayPassword;InheritRDGatewayDomain;InheritRDPAlertIdleTimeout;InheritRDPMinutesToIdleTimeout;InheritSoundQuality;InheritRedirectAudioCapture;"); } private void SerializeNodesRecursive(ConnectionInfo node, StringBuilder sb) @@ -147,7 +147,8 @@ namespace mRemoteNG.Config.Serializers.Csv .Append(FormatForCsv(con.RDGatewayUseConnectionCredentials)) .Append(FormatForCsv(con.RDGatewayUsername)) .Append(FormatForCsv(con.RDGatewayPassword)) - .Append(FormatForCsv(con.RDGatewayDomain)); + .Append(FormatForCsv(con.RDGatewayDomain)) + .Append(FormatForCsv(con.RedirectAudioCapture)); if (!_saveFilter.SaveInheritance) @@ -208,7 +209,8 @@ namespace mRemoteNG.Config.Serializers.Csv .Append(FormatForCsv(con.Inheritance.RDGatewayDomain)) .Append(FormatForCsv(con.Inheritance.RDPAlertIdleTimeout)) .Append(FormatForCsv(con.Inheritance.RDPMinutesToIdleTimeout)) - .Append(FormatForCsv(con.Inheritance.SoundQuality)); + .Append(FormatForCsv(con.Inheritance.SoundQuality)) + .Append(FormatForCsv(con.Inheritance.RedirectAudioCapture)); } private string FormatForCsv(object value) diff --git a/mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableDeserializer.cs b/mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableDeserializer.cs index d4edaeba..4d657a1d 100644 --- a/mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableDeserializer.cs +++ b/mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableDeserializer.cs @@ -125,6 +125,8 @@ namespace mRemoteNG.Config.Serializers.MsSql (RdpProtocol.RDPSounds)Enum.Parse(typeof(RdpProtocol.RDPSounds), (string)dataRow["RedirectSound"]); connectionInfo.SoundQuality = (RdpProtocol.RDPSoundQuality)Enum.Parse(typeof(RdpProtocol.RDPSoundQuality), (string)dataRow["SoundQuality"]); + connectionInfo.RedirectAudioCapture = (bool)dataRow["RedirectAudioCapture"]; + connectionInfo.RedirectKeys = (bool)dataRow["RedirectKeys"]; connectionInfo.PreExtApp = (string)dataRow["PreExtApp"]; connectionInfo.PostExtApp = (string)dataRow["PostExtApp"]; @@ -185,6 +187,7 @@ namespace mRemoteNG.Config.Serializers.MsSql connectionInfo.Inheritance.RedirectSmartCards = (bool)dataRow["InheritRedirectSmartCards"]; connectionInfo.Inheritance.RedirectSound = (bool)dataRow["InheritRedirectSound"]; connectionInfo.Inheritance.SoundQuality = (bool)dataRow["InheritSoundQuality"]; + connectionInfo.Inheritance.RedirectAudioCapture = (bool)dataRow["InheritRedirectAudioCapture"]; connectionInfo.Inheritance.Resolution = (bool)dataRow["InheritResolution"]; connectionInfo.Inheritance.AutomaticResize = (bool)dataRow["InheritAutomaticResize"]; connectionInfo.Inheritance.UseConsoleSession = (bool)dataRow["InheritUseConsoleSession"]; diff --git a/mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableSerializer.cs b/mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableSerializer.cs index 051b9c87..c335e446 100644 --- a/mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableSerializer.cs +++ b/mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableSerializer.cs @@ -103,6 +103,7 @@ namespace mRemoteNG.Config.Serializers.MsSql dataTable.Columns.Add("RedirectClipboard", typeof(bool)); dataTable.Columns.Add("RedirectSmartCards", typeof(bool)); dataTable.Columns.Add("RedirectSound", typeof(string)); + dataTable.Columns.Add("RedirectAudioCapture", typeof(bool)); dataTable.Columns.Add("RedirectKeys", typeof(bool)); dataTable.Columns.Add("Connected", typeof(bool)); dataTable.Columns.Add("PreExtApp", typeof(string)); @@ -148,6 +149,7 @@ namespace mRemoteNG.Config.Serializers.MsSql dataTable.Columns.Add("InheritRedirectClipboard", typeof(bool)); dataTable.Columns.Add("InheritRedirectSmartCards", typeof(bool)); dataTable.Columns.Add("InheritRedirectSound", typeof(bool)); + dataTable.Columns.Add("InheritRedirectAudioCapture", typeof(bool)); dataTable.Columns.Add("InheritResolution", typeof(bool)); dataTable.Columns.Add("InheritUseConsoleSession", typeof(bool)); dataTable.Columns.Add("InheritUseCredSsp", typeof(bool)); @@ -252,6 +254,7 @@ namespace mRemoteNG.Config.Serializers.MsSql dataRow["RedirectSmartCards"] = connectionInfo.RedirectSmartCards; dataRow["RedirectSound"] = connectionInfo.RedirectSound; dataRow["SoundQuality"] = connectionInfo.SoundQuality; + dataRow["RedirectAudioCapture"] = connectionInfo.RedirectAudioCapture; dataRow["RedirectKeys"] = connectionInfo.RedirectKeys; dataRow["Connected"] = false; // TODO: this column can eventually be removed. we now save this property locally @@ -302,6 +305,7 @@ namespace mRemoteNG.Config.Serializers.MsSql dataRow["InheritRedirectSmartCards"] = connectionInfo.Inheritance.RedirectSmartCards; dataRow["InheritRedirectSound"] = connectionInfo.Inheritance.RedirectSound; dataRow["InheritSoundQuality"] = connectionInfo.Inheritance.SoundQuality; + dataRow["InheritRedirectAudioCapture"] = connectionInfo.Inheritance.RedirectAudioCapture; dataRow["InheritResolution"] = connectionInfo.Inheritance.Resolution; dataRow["InheritAutomaticResize"] = connectionInfo.Inheritance.AutomaticResize; dataRow["InheritUseConsoleSession"] = connectionInfo.Inheritance.UseConsoleSession; @@ -361,6 +365,7 @@ namespace mRemoteNG.Config.Serializers.MsSql dataRow["InheritRedirectSmartCards"] = false; dataRow["InheritRedirectSound"] = false; dataRow["InheritSoundQuality"] = false; + dataRow["InheritRedirectAudioCapture"] = false; dataRow["InheritResolution"] = false; dataRow["InheritAutomaticResize"] = false; dataRow["InheritUseConsoleSession"] = false; diff --git a/mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionNodeSerializer27.cs b/mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionNodeSerializer27.cs index ef8ef893..ae82d60b 100644 --- a/mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionNodeSerializer27.cs +++ b/mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionNodeSerializer27.cs @@ -107,6 +107,7 @@ namespace mRemoteNG.Config.Serializers.Xml connectionInfo.RedirectSmartCards.ToString().ToLowerInvariant())); element.Add(new XAttribute("RedirectSound", connectionInfo.RedirectSound.ToString())); element.Add(new XAttribute("SoundQuality", connectionInfo.SoundQuality.ToString())); + element.Add(new XAttribute("RedirectAudioCapture", connectionInfo.RedirectAudioCapture.ToString().ToLowerInvariant())); element.Add(new XAttribute("RedirectKeys", connectionInfo.RedirectKeys.ToString().ToLowerInvariant())); element.Add(new XAttribute("Connected", (connectionInfo.OpenConnections.Count > 0).ToString().ToLowerInvariant())); @@ -210,6 +211,8 @@ namespace mRemoteNG.Config.Serializers.Xml connectionInfo.Inheritance.RedirectSound.ToString().ToLowerInvariant())); element.Add(new XAttribute("InheritSoundQuality", connectionInfo.Inheritance.SoundQuality.ToString().ToLowerInvariant())); + element.Add(new XAttribute("InheritRedirectAudioCapture", + connectionInfo.Inheritance.RedirectAudioCapture.ToString().ToLowerInvariant())); element.Add(new XAttribute("InheritResolution", connectionInfo.Inheritance.Resolution.ToString().ToLowerInvariant())); element.Add(new XAttribute("InheritAutomaticResize", @@ -311,6 +314,7 @@ namespace mRemoteNG.Config.Serializers.Xml element.Add(new XAttribute("InheritRedirectSmartCards", falseString)); element.Add(new XAttribute("InheritRedirectSound", falseString)); element.Add(new XAttribute("InheritSoundQuality", falseString)); + element.Add(new XAttribute("InheritRedirectAudioCapture", falseString)); element.Add(new XAttribute("InheritResolution", falseString)); element.Add(new XAttribute("InheritAutomaticResize", falseString)); element.Add(new XAttribute("InheritUseConsoleSession", falseString)); diff --git a/mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionsDeserializer.cs b/mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionsDeserializer.cs index d475f3e5..60212516 100644 --- a/mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionsDeserializer.cs +++ b/mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionsDeserializer.cs @@ -321,6 +321,7 @@ namespace mRemoteNG.Config.Serializers.Xml connectionInfo.Colors = xmlnode.GetAttributeAsEnum("Colors"); connectionInfo.Resolution = xmlnode.GetAttributeAsEnum("Resolution"); connectionInfo.RedirectSound = xmlnode.GetAttributeAsEnum("RedirectSound"); + connectionInfo.RedirectAudioCapture = xmlnode.GetAttributeAsBool("RedirectAudioCapture"); } else { @@ -346,6 +347,7 @@ namespace mRemoteNG.Config.Serializers.Xml } connectionInfo.RedirectSound = xmlnode.GetAttributeAsEnum("RedirectSound"); + connectionInfo.RedirectAudioCapture = xmlnode.GetAttributeAsBool("RedirectAudioCapture"); } if (_confVersion >= 1.3) @@ -368,6 +370,7 @@ namespace mRemoteNG.Config.Serializers.Xml connectionInfo.Inheritance.RedirectSmartCards = xmlnode.GetAttributeAsBool("InheritRedirectSmartCards"); connectionInfo.Inheritance.RedirectSound = xmlnode.GetAttributeAsBool("InheritRedirectSound"); + connectionInfo.Inheritance.RedirectAudioCapture = xmlnode.GetAttributeAsBool("RedirectAudioCapture"); connectionInfo.Inheritance.Resolution = xmlnode.GetAttributeAsBool("InheritResolution"); connectionInfo.Inheritance.UseConsoleSession = xmlnode.GetAttributeAsBool("InheritUseConsoleSession"); diff --git a/mRemoteV1/Config/Serializers/MiscSerializers/RemoteDesktopConnectionDeserializer.cs b/mRemoteV1/Config/Serializers/MiscSerializers/RemoteDesktopConnectionDeserializer.cs index 2b46466f..9980c626 100644 --- a/mRemoteV1/Config/Serializers/MiscSerializers/RemoteDesktopConnectionDeserializer.cs +++ b/mRemoteV1/Config/Serializers/MiscSerializers/RemoteDesktopConnectionDeserializer.cs @@ -128,6 +128,9 @@ namespace mRemoteNG.Config.Serializers break; } break; + case "redirectaudiocapture": + connectionInfo.RedirectAudioCapture = value == "1"; + break; case "loadbalanceinfo": connectionInfo.LoadBalanceInfo = value; break; diff --git a/mRemoteV1/Connection/AbstractConnectionRecord.cs b/mRemoteV1/Connection/AbstractConnectionRecord.cs index 92d403ad..f9a947f4 100644 --- a/mRemoteV1/Connection/AbstractConnectionRecord.cs +++ b/mRemoteV1/Connection/AbstractConnectionRecord.cs @@ -63,6 +63,7 @@ namespace mRemoteNG.Connection private bool _redirectSmartCards; private RdpProtocol.RDPSounds _redirectSound; private RdpProtocol.RDPSoundQuality _soundQuality; + private bool _redirectAudioCapture; private string _preExtApp; private string _postExtApp; @@ -482,6 +483,7 @@ namespace mRemoteNG.Connection set { SetField(ref _redirectClipboard, value, "RedirectClipboard"); } } + [LocalizedAttributes.LocalizedCategory("strCategoryRedirect", 6), LocalizedAttributes.LocalizedDisplayName("strPropertyNameRedirectPorts"), LocalizedAttributes.LocalizedDescription("strPropertyDescriptionRedirectPorts"), @@ -522,6 +524,16 @@ namespace mRemoteNG.Connection set => SetField(ref _soundQuality, value, "SoundQuality"); } + [LocalizedAttributes.LocalizedCategory("strCategoryRedirect", 6), + LocalizedAttributes.LocalizedDisplayName("strPropertyNameRedirectAudioCapture"), + LocalizedAttributes.LocalizedDescription("strPropertyDescriptionRedirectAudioCapture"), + TypeConverter(typeof(MiscTools.YesNoTypeConverter))] + public bool RedirectAudioCapture + { + get { return GetPropertyValue("RedirectAudioCapture", _redirectAudioCapture); } + set { SetField(ref _redirectAudioCapture, value, "RedirectAudioCapture"); } + } + #endregion #region Misc diff --git a/mRemoteV1/Connection/ConnectionInfo.cs b/mRemoteV1/Connection/ConnectionInfo.cs index 21e2906c..8c8d51b5 100644 --- a/mRemoteV1/Connection/ConnectionInfo.cs +++ b/mRemoteV1/Connection/ConnectionInfo.cs @@ -353,6 +353,7 @@ namespace mRemoteNG.Connection Settings.Default.ConDefaultRedirectSound); SoundQuality = (RdpProtocol.RDPSoundQuality)Enum.Parse(typeof(RdpProtocol.RDPSoundQuality), Settings.Default.ConDefaultSoundQuality); + RedirectAudioCapture = Settings.Default.ConDefaultRedirectAudioCapture; } private void SetMiscDefaults() diff --git a/mRemoteV1/Connection/ConnectionInfoInheritance.cs b/mRemoteV1/Connection/ConnectionInfoInheritance.cs index e73aa590..4f1e64c2 100644 --- a/mRemoteV1/Connection/ConnectionInfoInheritance.cs +++ b/mRemoteV1/Connection/ConnectionInfoInheritance.cs @@ -293,6 +293,12 @@ namespace mRemoteNG.Connection TypeConverter(typeof(MiscTools.YesNoTypeConverter))] public bool SoundQuality { get; set; } + [LocalizedAttributes.LocalizedCategory("strCategoryRedirect", 7), + LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameRedirectAudioCapture"), + LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionRedirectAudioCapture"), + TypeConverter(typeof(MiscTools.YesNoTypeConverter))] + public bool RedirectAudioCapture { get; set; } + #endregion #region Misc diff --git a/mRemoteV1/Connection/Protocol/ICA/IcaProtocol.cs b/mRemoteV1/Connection/Protocol/ICA/IcaProtocol.cs index fca5a617..88cfcbaf 100644 --- a/mRemoteV1/Connection/Protocol/ICA/IcaProtocol.cs +++ b/mRemoteV1/Connection/Protocol/ICA/IcaProtocol.cs @@ -1,4 +1,4 @@ -using AxWFICALib; +using AxWFICALib; using mRemoteNG.App; using mRemoteNG.Connection.Protocol.RDP; using mRemoteNG.Messages; diff --git a/mRemoteV1/Connection/Protocol/RDP/RdpProtocol.cs b/mRemoteV1/Connection/Protocol/RDP/RdpProtocol.cs index 2c3bebec..e6f6ed1a 100644 --- a/mRemoteV1/Connection/Protocol/RDP/RdpProtocol.cs +++ b/mRemoteV1/Connection/Protocol/RDP/RdpProtocol.cs @@ -151,7 +151,7 @@ namespace mRemoteNG.Connection.Protocol.RDP _rdpClient.AdvancedSettings2.keepAliveInterval = 60000; //in milliseconds (10,000 = 10 seconds) _rdpClient.AdvancedSettings5.AuthenticationLevel = 0; _rdpClient.AdvancedSettings2.EncryptionEnabled = 1; - + _rdpClient.AdvancedSettings2.overallConnectionTimeout = Settings.Default.ConRDPOverallConnectionTimeout; _rdpClient.AdvancedSettings2.BitmapPeristence = Convert.ToInt32(_connectionInfo.CacheBitmaps); @@ -635,6 +635,7 @@ namespace mRemoteNG.Connection.Protocol.RDP _rdpClient.AdvancedSettings2.RedirectSmartCards = _connectionInfo.RedirectSmartCards; _rdpClient.SecuredSettings2.AudioRedirectionMode = (int)_connectionInfo.RedirectSound; _rdpClient.AdvancedSettings.DisableRdpdr = _connectionInfo.RedirectClipboard ? 0 : 1; + _rdpClient.AdvancedSettings8.AudioCaptureRedirectionMode = _connectionInfo.RedirectAudioCapture; } catch (Exception ex) { @@ -860,7 +861,6 @@ namespace mRemoteNG.Connection.Protocol.RDP High = 2 } - private enum RDPPerformanceFlags { [Description("strRDPDisableWallpaper")] diff --git a/mRemoteV1/Properties/Settings.Designer.cs b/mRemoteV1/Properties/Settings.Designer.cs index 6e5328b1..1ebb21b1 100644 --- a/mRemoteV1/Properties/Settings.Designer.cs +++ b/mRemoteV1/Properties/Settings.Designer.cs @@ -611,6 +611,18 @@ namespace mRemoteNG { } } + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool ConDefaultRedirectAudioCapture { + get { + return ((bool)(this["ConDefaultRedirectAudioCapture"])); + } + set { + this["ConDefaultRedirectAudioCapture"] = value; + } + } + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("2")] @@ -1031,6 +1043,18 @@ namespace mRemoteNG { } } + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool InhDefaultRedirectAudioCapture { + get { + return ((bool)(this["InhDefaultRedirectAudioCapture"])); + } + set { + this["InhDefaultRedirectAudioCapture"] = value; + } + } + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] @@ -2818,8 +2842,8 @@ namespace mRemoteNG { this["InhDefaultFavorite"] = value; } } - - [global::System.Configuration.UserScopedSettingAttribute()] + + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("mssql")] public string SQLServerType { diff --git a/mRemoteV1/Properties/Settings.settings b/mRemoteV1/Properties/Settings.settings index 0166e608..e1dd398d 100644 --- a/mRemoteV1/Properties/Settings.settings +++ b/mRemoteV1/Properties/Settings.settings @@ -148,6 +148,9 @@ DoNotPlay + + + False 2 @@ -253,6 +256,9 @@ False + + + False False diff --git a/mRemoteV1/Resources/Help/MSSQLScript.txt b/mRemoteV1/Resources/Help/MSSQLScript.txt index f8c57773..dff03270 100644 --- a/mRemoteV1/Resources/Help/MSSQLScript.txt +++ b/mRemoteV1/Resources/Help/MSSQLScript.txt @@ -49,6 +49,7 @@ CREATE TABLE [dbo].[tblCons] ( [RedirectSmartCards] [bit] NOT NULL , [RedirectSound] [varchar] (64) NOT NULL , [SoundQuality] [varchar] (20) NOT NULL, + [RedirectAudioCapture] [bit] NOT NULL, [RedirectKeys] [bit] NOT NULL , [Connected] [bit] NOT NULL , [PreExtApp] [varchar] (256) NULL , @@ -94,6 +95,7 @@ CREATE TABLE [dbo].[tblCons] ( [InheritRedirectSmartCards] [bit] NOT NULL , [InheritRedirectSound] [bit] NOT NULL , [InheritSoundQuality] [bit] NOT NULL, + [InheritRedirectAudioCapture] [bit] NOT NULL, [InheritResolution] [bit] NOT NULL , [InheritUseConsoleSession] [bit] NOT NULL , [InheritUseCredSsp] [bit] NOT NULL , diff --git a/mRemoteV1/Resources/Help/MySQLScript.txt b/mRemoteV1/Resources/Help/MySQLScript.txt index a2a9767a..1af6b391 100644 --- a/mRemoteV1/Resources/Help/MySQLScript.txt +++ b/mRemoteV1/Resources/Help/MySQLScript.txt @@ -54,8 +54,9 @@ CREATE TABLE `tblCons` ( `RedirectPorts` tinyint(1) NOT NULL, `RedirectPrinters` tinyint(1) NOT NULL, `RedirectSmartCards` tinyint(1) NOT NULL, - `RedirectSound` varchar(64) NOT NULL, + `RedirectSound` varchar(64) NOT NULL, `SoundQuality` varchar(20) NOT NULL, + `RedirectAudioCapture` tinyint(1) NOT NULL, `RedirectKeys` tinyint(1) NOT NULL, `Connected` tinyint(1) NOT NULL, `PreExtApp` varchar(256) DEFAULT NULL, @@ -101,6 +102,7 @@ CREATE TABLE `tblCons` ( `InheritRedirectSmartCards` tinyint(1) NOT NULL, `InheritRedirectSound` tinyint(1) NOT NULL, `InheritSoundQuality` tinyint(1) NOT NULL, + `InheritRedirectAudioCapture` tinyint(1) NOT NULL, `InheritResolution` tinyint(1) NOT NULL, `InheritUseConsoleSession` tinyint(1) NOT NULL, `InheritUseCredSsp` tinyint(1) NOT NULL, diff --git a/mRemoteV1/Resources/Language/Language.Designer.cs b/mRemoteV1/Resources/Language/Language.Designer.cs index fa487fce..1110967f 100644 --- a/mRemoteV1/Resources/Language/Language.Designer.cs +++ b/mRemoteV1/Resources/Language/Language.Designer.cs @@ -5001,6 +5001,15 @@ namespace mRemoteNG { } } + /// + /// Looks up a localized string similar to Select how remote sound should be redirected.. + /// + internal static string strPropertyDescriptionRedirectAudioCapture { + get { + return ResourceManager.GetString("strPropertyDescriptionRedirectAudioCapture", resourceCulture); + } + } + /// /// Looks up a localized string similar to Select whether clipboard should be shared.. /// @@ -5523,6 +5532,15 @@ namespace mRemoteNG { } } + /// + /// Looks up a localized string similar to Audio Capture. + /// + internal static string strPropertyNameRedirectAudioCapture { + get { + return ResourceManager.GetString("strPropertyNameRedirectAudioCapture", resourceCulture); + } + } + /// /// Looks up a localized string similar to Clipboard. /// diff --git a/mRemoteV1/Resources/Language/Language.resx b/mRemoteV1/Resources/Language/Language.resx index 5ce0afe2..5a9c3d6d 100644 --- a/mRemoteV1/Resources/Language/Language.resx +++ b/mRemoteV1/Resources/Language/Language.resx @@ -1480,6 +1480,9 @@ If you run into such an error, please create a new connection file! Select how remote sound should be redirected. + + + Select how remote sound should be redirected. Select one of the available rendering engines that will be used to display HTML. @@ -1642,6 +1645,9 @@ If you run into such an error, please create a new connection file! Sounds + + + Audio Capture Rendering Engine diff --git a/mRemoteV1/Schemas/mremoteng_confcons_v2_7.xsd b/mRemoteV1/Schemas/mremoteng_confcons_v2_7.xsd index 114e4d66..111bb7cf 100644 --- a/mRemoteV1/Schemas/mremoteng_confcons_v2_7.xsd +++ b/mRemoteV1/Schemas/mremoteng_confcons_v2_7.xsd @@ -69,6 +69,7 @@ + @@ -117,6 +118,7 @@ + diff --git a/mRemoteV1/UI/Window/ConfigWindow.cs b/mRemoteV1/UI/Window/ConfigWindow.cs index 549dbf07..cc211435 100644 --- a/mRemoteV1/UI/Window/ConfigWindow.cs +++ b/mRemoteV1/UI/Window/ConfigWindow.cs @@ -836,6 +836,7 @@ namespace mRemoteNG.UI.Window strHide.Add("RedirectClipboard"); strHide.Add("RedirectSmartCards"); strHide.Add("RedirectSound"); + strHide.Add("RedirectAudioCapture"); strHide.Add("RenderingEngine"); strHide.Add("Resolution"); strHide.Add("AutomaticResize"); @@ -949,6 +950,7 @@ namespace mRemoteNG.UI.Window strHide.Add("RedirectClipboard"); strHide.Add("RedirectSmartCards"); strHide.Add("RedirectSound"); + strHide.Add("RedirectAudioCapture"); strHide.Add("RenderingEngine"); strHide.Add("Resolution"); strHide.Add("AutomaticResize"); @@ -997,6 +999,7 @@ namespace mRemoteNG.UI.Window strHide.Add("RedirectClipboard"); strHide.Add("RedirectSmartCards"); strHide.Add("RedirectSound"); + strHide.Add("RedirectAudioCapture"); strHide.Add("RenderingEngine"); strHide.Add("Resolution"); strHide.Add("AutomaticResize"); @@ -1042,6 +1045,7 @@ namespace mRemoteNG.UI.Window strHide.Add("RedirectClipboard"); strHide.Add("RedirectSmartCards"); strHide.Add("RedirectSound"); + strHide.Add("RedirectAudioCapture"); strHide.Add("RenderingEngine"); strHide.Add("Resolution"); strHide.Add("AutomaticResize"); @@ -1088,6 +1092,7 @@ namespace mRemoteNG.UI.Window strHide.Add("RedirectClipboard"); strHide.Add("RedirectSmartCards"); strHide.Add("RedirectSound"); + strHide.Add("RedirectAudioCapture"); strHide.Add("RenderingEngine"); strHide.Add("Resolution"); strHide.Add("AutomaticResize"); @@ -1135,6 +1140,7 @@ namespace mRemoteNG.UI.Window strHide.Add("RedirectClipboard"); strHide.Add("RedirectSmartCards"); strHide.Add("RedirectSound"); + strHide.Add("RedirectAudioCapture"); strHide.Add("RenderingEngine"); strHide.Add("Resolution"); strHide.Add("AutomaticResize"); @@ -1182,6 +1188,7 @@ namespace mRemoteNG.UI.Window strHide.Add("RedirectClipboard"); strHide.Add("RedirectSmartCards"); strHide.Add("RedirectSound"); + strHide.Add("RedirectAudioCapture"); strHide.Add("RenderingEngine"); strHide.Add("Resolution"); strHide.Add("AutomaticResize"); @@ -1230,6 +1237,7 @@ namespace mRemoteNG.UI.Window strHide.Add("RedirectClipboard"); strHide.Add("RedirectSmartCards"); strHide.Add("RedirectSound"); + strHide.Add("RedirectAudioCapture"); strHide.Add("Resolution"); strHide.Add("AutomaticResize"); strHide.Add("UseConsoleSession"); @@ -1272,6 +1280,7 @@ namespace mRemoteNG.UI.Window strHide.Add("RedirectClipboard"); strHide.Add("RedirectSmartCards"); strHide.Add("RedirectSound"); + strHide.Add("RedirectAudioCapture"); strHide.Add("RenderingEngine"); strHide.Add("AutomaticResize"); strHide.Add("UseConsoleSession"); @@ -1315,6 +1324,7 @@ namespace mRemoteNG.UI.Window strHide.Add("RedirectClipboard"); strHide.Add("RedirectSmartCards"); strHide.Add("RedirectSound"); + strHide.Add("RedirectAudioCapture"); strHide.Add("RenderingEngine"); strHide.Add("Resolution"); strHide.Add("AutomaticResize"); @@ -1377,6 +1387,8 @@ namespace mRemoteNG.UI.Window strHide.Add("RedirectSmartCards"); if (conI.Inheritance.RedirectSound) strHide.Add("RedirectSound"); + if (conI.Inheritance.RedirectAudioCapture) + strHide.Add("RedirectAudioCapture"); if (conI.Inheritance.Resolution) strHide.Add("Resolution"); if (conI.Inheritance.AutomaticResize) diff --git a/mRemoteV1/app.config b/mRemoteV1/app.config index abfe6c3d..bed2738a 100644 --- a/mRemoteV1/app.config +++ b/mRemoteV1/app.config @@ -195,6 +195,9 @@ DoNotPlay + + False + 2 @@ -300,6 +303,9 @@ False + + False + False @@ -735,8 +741,8 @@ False - - mssql + + mssql False