diff --git a/mRemoteNG/Config/Serializers/MiscSerializers/PortScanDeserializer.cs b/mRemoteNG/Config/Serializers/MiscSerializers/PortScanDeserializer.cs index f80081b8e..4fc09ae24 100644 --- a/mRemoteNG/Config/Serializers/MiscSerializers/PortScanDeserializer.cs +++ b/mRemoteNG/Config/Serializers/MiscSerializers/PortScanDeserializer.cs @@ -61,6 +61,10 @@ namespace mRemoteNG.Config.Serializers.MiscSerializers if (host.Vnc) finalProtocol = ProtocolType.VNC; break; + case ProtocolType.ARD: + if (host.Vnc) + finalProtocol = ProtocolType.ARD; + break; default: protocolValid = false; break; diff --git a/mRemoteNG/Connection/AbstractConnectionRecord.cs b/mRemoteNG/Connection/AbstractConnectionRecord.cs index c16b0ec60..995f7931b 100644 --- a/mRemoteNG/Connection/AbstractConnectionRecord.cs +++ b/mRemoteNG/Connection/AbstractConnectionRecord.cs @@ -920,7 +920,7 @@ namespace mRemoteNG.Connection LocalizedAttributes.LocalizedDisplayName(nameof(Language.Compression)), LocalizedAttributes.LocalizedDescription(nameof(Language.PropertyDescriptionCompression)), TypeConverter(typeof(MiscTools.EnumTypeConverter)), - AttributeUsedInProtocol(ProtocolType.VNC), + AttributeUsedInProtocol(ProtocolType.VNC, ProtocolType.ARD), Browsable(false)] public ProtocolVNC.Compression VNCCompression { @@ -932,7 +932,7 @@ namespace mRemoteNG.Connection LocalizedAttributes.LocalizedDisplayName(nameof(Language.Encoding)), LocalizedAttributes.LocalizedDescription(nameof(Language.PropertyDescriptionEncoding)), TypeConverter(typeof(MiscTools.EnumTypeConverter)), - AttributeUsedInProtocol(ProtocolType.VNC), + AttributeUsedInProtocol(ProtocolType.VNC, ProtocolType.ARD), Browsable(false)] public ProtocolVNC.Encoding VNCEncoding { @@ -944,7 +944,7 @@ namespace mRemoteNG.Connection LocalizedAttributes.LocalizedDisplayName(nameof(Language.AuthenticationMode)), LocalizedAttributes.LocalizedDescription(nameof(Language.PropertyDescriptionAuthenticationMode)), TypeConverter(typeof(MiscTools.EnumTypeConverter)), - AttributeUsedInProtocol(ProtocolType.VNC), + AttributeUsedInProtocol(ProtocolType.VNC, ProtocolType.ARD), Browsable(false)] public ProtocolVNC.AuthMode VNCAuthMode { @@ -956,7 +956,7 @@ namespace mRemoteNG.Connection LocalizedAttributes.LocalizedDisplayName(nameof(Language.ProxyType)), LocalizedAttributes.LocalizedDescription(nameof(Language.PropertyDescriptionVNCProxyType)), TypeConverter(typeof(MiscTools.EnumTypeConverter)), - AttributeUsedInProtocol(ProtocolType.VNC), + AttributeUsedInProtocol(ProtocolType.VNC, ProtocolType.ARD), Browsable(false)] public ProtocolVNC.ProxyType VNCProxyType { @@ -967,7 +967,7 @@ namespace mRemoteNG.Connection [LocalizedAttributes.LocalizedCategory(nameof(Language.Proxy), 7), LocalizedAttributes.LocalizedDisplayName(nameof(Language.ProxyAddress)), LocalizedAttributes.LocalizedDescription(nameof(Language.PropertyDescriptionVNCProxyAddress)), - AttributeUsedInProtocol(ProtocolType.VNC), + AttributeUsedInProtocol(ProtocolType.VNC, ProtocolType.ARD), Browsable(false)] public string VNCProxyIP { @@ -978,7 +978,7 @@ namespace mRemoteNG.Connection [LocalizedAttributes.LocalizedCategory(nameof(Language.Proxy), 7), LocalizedAttributes.LocalizedDisplayName(nameof(Language.ProxyPort)), LocalizedAttributes.LocalizedDescription(nameof(Language.PropertyDescriptionVNCProxyPort)), - AttributeUsedInProtocol(ProtocolType.VNC), + AttributeUsedInProtocol(ProtocolType.VNC, ProtocolType.ARD), Browsable(false)] public int VNCProxyPort { @@ -989,7 +989,7 @@ namespace mRemoteNG.Connection [LocalizedAttributes.LocalizedCategory(nameof(Language.Proxy), 7), LocalizedAttributes.LocalizedDisplayName(nameof(Language.ProxyUsername)), LocalizedAttributes.LocalizedDescription(nameof(Language.PropertyDescriptionVNCProxyUsername)), - AttributeUsedInProtocol(ProtocolType.VNC), + AttributeUsedInProtocol(ProtocolType.VNC, ProtocolType.ARD), Browsable(false)] public string VNCProxyUsername { @@ -1001,7 +1001,7 @@ namespace mRemoteNG.Connection LocalizedAttributes.LocalizedDisplayName(nameof(Language.ProxyPassword)), LocalizedAttributes.LocalizedDescription(nameof(Language.PropertyDescriptionVNCProxyPassword)), PasswordPropertyText(true), - AttributeUsedInProtocol(ProtocolType.VNC), + AttributeUsedInProtocol(ProtocolType.VNC, ProtocolType.ARD), Browsable(false)] public string VNCProxyPassword { @@ -1013,7 +1013,7 @@ namespace mRemoteNG.Connection LocalizedAttributes.LocalizedDisplayName(nameof(Language.Colors)), LocalizedAttributes.LocalizedDescription(nameof(Language.PropertyDescriptionColors)), TypeConverter(typeof(MiscTools.EnumTypeConverter)), - AttributeUsedInProtocol(ProtocolType.VNC), + AttributeUsedInProtocol(ProtocolType.VNC, ProtocolType.ARD), Browsable(false)] public ProtocolVNC.Colors VNCColors { @@ -1025,7 +1025,7 @@ namespace mRemoteNG.Connection LocalizedAttributes.LocalizedDisplayName(nameof(Language.SmartSizeMode)), LocalizedAttributes.LocalizedDescription(nameof(Language.PropertyDescriptionSmartSizeMode)), TypeConverter(typeof(MiscTools.EnumTypeConverter)), - AttributeUsedInProtocol(ProtocolType.VNC)] + AttributeUsedInProtocol(ProtocolType.VNC, ProtocolType.ARD)] public ProtocolVNC.SmartSizeMode VNCSmartSizeMode { get => GetPropertyValue("VNCSmartSizeMode", _vncSmartSizeMode); @@ -1036,7 +1036,7 @@ namespace mRemoteNG.Connection LocalizedAttributes.LocalizedDisplayName(nameof(Language.ViewOnly)), LocalizedAttributes.LocalizedDescription(nameof(Language.PropertyDescriptionViewOnly)), TypeConverter(typeof(MiscTools.YesNoTypeConverter)), - AttributeUsedInProtocol(ProtocolType.VNC)] + AttributeUsedInProtocol(ProtocolType.VNC, ProtocolType.ARD)] public bool VNCViewOnly { get => GetPropertyValue("VNCViewOnly", _vncViewOnly); diff --git a/mRemoteNG/Connection/ConnectionInfo.cs b/mRemoteNG/Connection/ConnectionInfo.cs index 0e02383a8..13d0ad246 100644 --- a/mRemoteNG/Connection/ConnectionInfo.cs +++ b/mRemoteNG/Connection/ConnectionInfo.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Reflection; using mRemoteNG.App; using mRemoteNG.Connection.Protocol; +using mRemoteNG.Connection.Protocol.ARD; using mRemoteNG.Connection.Protocol.Http; using mRemoteNG.Connection.Protocol.PowerShell; using mRemoteNG.Connection.Protocol.RAW; @@ -254,6 +255,8 @@ namespace mRemoteNG.Connection return (int)RdpProtocol.Defaults.Port; case ProtocolType.VNC: return (int)ProtocolVNC.Defaults.Port; + case ProtocolType.ARD: + return (int)ProtocolARD.Defaults.Port; case ProtocolType.SSH1: return (int)ProtocolSSH1.Defaults.Port; case ProtocolType.SSH2: diff --git a/mRemoteNG/Connection/Protocol/ARD/ProtocolARD.cs b/mRemoteNG/Connection/Protocol/ARD/ProtocolARD.cs new file mode 100644 index 000000000..d10a7ff9c --- /dev/null +++ b/mRemoteNG/Connection/Protocol/ARD/ProtocolARD.cs @@ -0,0 +1,19 @@ +using System; +using System.Runtime.Versioning; +using mRemoteNG.Connection.Protocol.VNC; + +namespace mRemoteNG.Connection.Protocol.ARD +{ + [SupportedOSPlatform("windows")] + public class ProtocolARD : ProtocolVNC + { + public ProtocolARD() + { + } + + public new enum Defaults + { + Port = 5900 + } + } +} diff --git a/mRemoteNG/Connection/Protocol/ProtocolFactory.cs b/mRemoteNG/Connection/Protocol/ProtocolFactory.cs index 820724f89..b6d7fbbad 100644 --- a/mRemoteNG/Connection/Protocol/ProtocolFactory.cs +++ b/mRemoteNG/Connection/Protocol/ProtocolFactory.cs @@ -5,6 +5,7 @@ using mRemoteNG.Connection.Protocol.Rlogin; using mRemoteNG.Connection.Protocol.SSH; using mRemoteNG.Connection.Protocol.Telnet; using mRemoteNG.Connection.Protocol.VNC; +using mRemoteNG.Connection.Protocol.ARD; using System; using mRemoteNG.Connection.Protocol.PowerShell; using mRemoteNG.Resources.Language; @@ -28,6 +29,8 @@ namespace mRemoteNG.Connection.Protocol return rdp; case ProtocolType.VNC: return new ProtocolVNC(); + case ProtocolType.ARD: + return new ProtocolARD(); case ProtocolType.SSH1: return new ProtocolSSH1(); case ProtocolType.SSH2: diff --git a/mRemoteNG/Connection/Protocol/ProtocolType.cs b/mRemoteNG/Connection/Protocol/ProtocolType.cs index f4e1bd47e..c795cd8e6 100644 --- a/mRemoteNG/Connection/Protocol/ProtocolType.cs +++ b/mRemoteNG/Connection/Protocol/ProtocolType.cs @@ -35,6 +35,9 @@ namespace mRemoteNG.Connection.Protocol [LocalizedAttributes.LocalizedDescription(nameof(Language.PowerShell))] PowerShell = 10, + [LocalizedAttributes.LocalizedDescription(nameof(Language.Ard))] + ARD = 11, + [LocalizedAttributes.LocalizedDescription(nameof(Language.ExternalTool))] IntApp = 20 } diff --git a/mRemoteNG/Language/Language.resx b/mRemoteNG/Language/Language.resx index f4297a933..9a51b4b84 100644 --- a/mRemoteNG/Language/Language.resx +++ b/mRemoteNG/Language/Language.resx @@ -159,6 +159,9 @@ Automatic update settings + + ARD (Apple Remote Desktop) + Aspect diff --git a/mRemoteNG/UI/Controls/ConnectionInfoPropertyGrid/ConnectionInfoPropertyGrid.cs b/mRemoteNG/UI/Controls/ConnectionInfoPropertyGrid/ConnectionInfoPropertyGrid.cs index fb53dd2cb..241c19d8e 100644 --- a/mRemoteNG/UI/Controls/ConnectionInfoPropertyGrid/ConnectionInfoPropertyGrid.cs +++ b/mRemoteNG/UI/Controls/ConnectionInfoPropertyGrid/ConnectionInfoPropertyGrid.cs @@ -168,6 +168,7 @@ namespace mRemoteNG.UI.Controls.ConnectionInfoPropertyGrid strHide.AddRange(SpecialRdpExclusions()); break; case ProtocolType.VNC: + case ProtocolType.ARD: strHide.AddRange(SpecialVncExclusions()); break; } diff --git a/mRemoteNGTests/Connection/ConnectionInfoTests.cs b/mRemoteNGTests/Connection/ConnectionInfoTests.cs index 681f772d6..6f8eeffe4 100644 --- a/mRemoteNGTests/Connection/ConnectionInfoTests.cs +++ b/mRemoteNGTests/Connection/ConnectionInfoTests.cs @@ -115,6 +115,7 @@ namespace mRemoteNGTests.Connection [TestCase(ProtocolType.SSH2, ExpectedResult = 22)] [TestCase(ProtocolType.Telnet, ExpectedResult = 23)] [TestCase(ProtocolType.VNC, ExpectedResult = 5900)] + [TestCase(ProtocolType.ARD, ExpectedResult = 5900)] public int GetDefaultPortReturnsCorrectPortForProtocol(ProtocolType protocolType) { _connectionInfo.Protocol = protocolType;