Skip to content

Commit

Permalink
support of enhanced mode for Hyper-V VM direct connection
Browse files Browse the repository at this point in the history
see CHANGELOG
  • Loading branch information
cedrozor committed Aug 14, 2018
1 parent deef506 commit 257d38e
Show file tree
Hide file tree
Showing 28 changed files with 197 additions and 58 deletions.
10 changes: 9 additions & 1 deletion CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
2018-08-06 Version 2.1.0 (stable)
2018-08-14 Version 2.1.1 (stable)
Resynced FreeRDP (2.0.0-dev4)
Hyper-V VM direct connection is now labelled "RDP over VM bus" into the login screen as a distinct host type
login form inputs are shown/hidden depending of the selected host type
added support of enhanced mode for Hyper-V VM direct connection (faster rendering and remote clipboard/printer are available) (thanks jol64)
added the name of the connected user into the toolbar (in addition to the connected server) when it's possible to retrieve it (standard rdp connection and non interactive logon)
updated documentation

2018-08-06 Version 2.1.0 (stable)
support of Hyper-V VM direct connection (extension of the RDP protocol; doesn't require remote desktop access to be enabled on the guest VM) (thanks jol64)
updated documentation for usage and limitations of the Hyper-V connection
fixed a potential inversion of arrows and numbers keys (whatever the numlock status)
Expand Down
6 changes: 3 additions & 3 deletions DOCUMENTATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -262,11 +262,11 @@ If you wish to create your own enterprise adapter (with a different authenticati

- Keyboard is mapped to english/US (latin QWERTY) layout by default. If you have troubles with some characters/keys not working as expected, try to add that keyboard layout to your server (and select it when connected).

- To connect an Hyper-V VM, you have to enter the Hyper-V host as server (hostname or address), the guest VM GUID (https://www.petri.com/get-hyper-v-virtual-machine-process-id-and-guid) and a valid user/password on that host (no domain user). The user must be member of the **"Hyper-V Administrators"** group on the host.
- To connect an Hyper-V VM, you have to enter the Hyper-V host as server (hostname or address), the guest VM GUID (https://www.petri.com/get-hyper-v-virtual-machine-process-id-and-guid) and a valid user/password on the Hyper-V host (authentication is done locally). The user must be member of the **"Hyper-V Administrators"** group or granted access to the VM with the **Grant-VMConnectAccess** cmdlet (https://docs.microsoft.com/en-us/powershell/module/hyper-v/grant-vmconnectaccess?view=win10-ps). The VM will then request authentication on its own (and you will be able to use a domain user, if needed).

- When connecting an Hyper-V VM, the display is limited to the VM resolution (default 1024 x 768) whatever the client (browser) resolution. You can change that resolution into the advanced display settings of the VM (even directly within the session).
- When connecting an Hyper-V VM, the display is limited to the VM resolution (default 1024 x 768) whatever the client (browser) resolution. You can change that resolution into the advanced display settings of the VM (even directly within the session, if the connected user have enough privileges).

- The remote clipboard and the "Myrtille PDF" virtual printer are disabled into an Hyper-V VM connection because the RDP virtual channels aren't available in that mode.
- If enhanced mode is not supported by the VM, or disabled, the remote clipboard and the "Myrtille PDF" virtual printer are not available into the session. See https://www.tenforums.com/tutorials/57136-turn-off-hyper-v-enhanced-session-mode-windows-10-a.html for Windows 10 and http://www.systemcentercentral.com/what-is-enhanced-session-mode-in-windows-server-2012-r2-hyper-v-and-when-should-i-use-it/ for others versions.

- The "Start program from url" feature doesn't work with an Hyper-V VM connection.

Expand Down
4 changes: 2 additions & 2 deletions Myrtille.Common/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,5 @@
//
// Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de révision et de build par défaut
// en utilisant '*', comme indiqué ci-dessous :
[assembly: AssemblyVersion("2.1.0.0")]
[assembly: AssemblyFileVersion("2.1.0.0")]
[assembly: AssemblyVersion("2.1.1.0")]
[assembly: AssemblyFileVersion("2.1.1.0")]
9 changes: 9 additions & 0 deletions Myrtille.Enterprise/ActiveDirectory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,7 @@ public void Logout(string sessionID)
HostName = editHost.HostName,
HostAddress = editHost.HostAddress,
VMGuid = editHost.VMGuid,
VMEnhancedMode = editHost.VMEnhancedMode,
Protocol = editHost.Protocol,
HostType = editHost.HostType,
StartRemoteProgram = editHost.StartRemoteProgram,
Expand Down Expand Up @@ -275,6 +276,7 @@ public EnterpriseHostEdit GetHost(long hostID, string sessionID)
HostName = host.HostName,
HostAddress = host.HostAddress,
VMGuid = host.VMGuid,
VMEnhancedMode = host.VMEnhancedMode,
DirectoryGroups = directoryGroups.ToString(),
Protocol = host.Protocol,
HostType = host.HostType,
Expand All @@ -301,6 +303,7 @@ public bool UpdateHost(EnterpriseHostEdit editHost, string sessionID)
host.HostName = editHost.HostName;
host.HostAddress = editHost.HostAddress;
host.VMGuid = editHost.VMGuid;
host.VMEnhancedMode = editHost.VMEnhancedMode;
host.Protocol = editHost.Protocol;
host.StartRemoteProgram = editHost.StartRemoteProgram;
host.PromptForCredentials = editHost.PromptForCredentials;
Expand Down Expand Up @@ -420,6 +423,7 @@ from h in db.Host
HostName = h.HostName,
HostAddress = h.HostAddress,
VMGuid = h.VMGuid,
VMEnhancedMode = h.VMEnhancedMode,
HostType = h.HostType,
StartRemoteProgram = h.StartRemoteProgram,
PromptForCredentials = h.PromptForCredentials
Expand All @@ -442,6 +446,7 @@ join h in db.Host on hag.HostID equals h.ID
HostName = h.HostName,
HostAddress = h.HostAddress,
VMGuid = h.VMGuid,
VMEnhancedMode = h.VMEnhancedMode,
HostType = h.HostType,
StartRemoteProgram = h.StartRemoteProgram,
PromptForCredentials = h.PromptForCredentials
Expand Down Expand Up @@ -494,6 +499,8 @@ from h in db.Host
,
VMGuid = h.VMGuid
,
VMEnhancedMode = h.VMEnhancedMode
,
HostType = h.HostType
,
Username = s.Username
Expand Down Expand Up @@ -527,6 +534,8 @@ from sc in scl.DefaultIfEmpty()
,
VMGuid = h.VMGuid
,
VMEnhancedMode = h.VMEnhancedMode
,
HostType = h.HostType
,
Username = (h.PromptForCredentials ? sc.Username : s.Username)
Expand Down
2 changes: 2 additions & 0 deletions Myrtille.Enterprise/Data/Host.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ public class Host

public string VMGuid { get; set; }

public bool VMEnhancedMode { get; set; }

public SecurityProtocolEnum Protocol { get; set; }

public HostTypeEnum HostType { get; set; }
Expand Down
4 changes: 2 additions & 2 deletions Myrtille.Enterprise/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,5 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.1.0.0")]
[assembly: AssemblyFileVersion("2.1.0.0")]
[assembly: AssemblyVersion("2.1.1.0")]
[assembly: AssemblyFileVersion("2.1.1.0")]
4 changes: 2 additions & 2 deletions Myrtille.MFAProviders/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,5 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.1.0.0")]
[assembly: AssemblyFileVersion("2.1.0.0")]
[assembly: AssemblyVersion("2.1.1.0")]
[assembly: AssemblyFileVersion("2.1.1.0")]
4 changes: 2 additions & 2 deletions Myrtille.Printer/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,5 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.1.0.0")]
[assembly: AssemblyFileVersion("2.1.0.0")]
[assembly: AssemblyVersion("2.1.1.0")]
[assembly: AssemblyFileVersion("2.1.1.0")]
4 changes: 2 additions & 2 deletions Myrtille.SSH/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,5 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.1.0.0")]
[assembly: AssemblyFileVersion("2.1.0.0")]
[assembly: AssemblyVersion("2.1.1.0")]
[assembly: AssemblyFileVersion("2.1.1.0")]
1 change: 1 addition & 0 deletions Myrtille.Services.Contracts/Models/EnterpriseHost.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ public class EnterpriseHost
public string HostName { get; set; }
public string HostAddress { get; set; }
public string VMGuid { get; set; }
public bool VMEnhancedMode { get; set; }
public SecurityProtocolEnum Protocol { get; set; }
public HostTypeEnum HostType { get; set; }
public string StartRemoteProgram { get; set; }
Expand Down
1 change: 1 addition & 0 deletions Myrtille.Services.Contracts/Models/EnterpriseHostEdit.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ public class EnterpriseHostEdit
public string HostName { get; set; }
public string HostAddress { get; set; }
public string VMGuid { get; set; }
public bool VMEnhancedMode { get; set; }
public string DirectoryGroups { get; set; }
public SecurityProtocolEnum Protocol { get; set; }
public HostTypeEnum HostType { get; set; }
Expand Down
1 change: 1 addition & 0 deletions Myrtille.Services.Contracts/Models/EnterpriseSession.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ namespace Myrtille.Services.Contracts
{
public class EnterpriseSession
{
public string UserName { get; set; }
public bool IsAdmin { get; set; }
public string SessionID { get; set; }
public string SessionKey { get; set; }
Expand Down
4 changes: 2 additions & 2 deletions Myrtille.Services.Contracts/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,5 @@
// Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de build et de révision par défaut
// en utilisant '*', comme indiqué ci-dessous :
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.1.0.0")]
[assembly: AssemblyFileVersion("2.1.0.0")]
[assembly: AssemblyVersion("2.1.1.0")]
[assembly: AssemblyFileVersion("2.1.1.0")]
7 changes: 6 additions & 1 deletion Myrtille.Services/EnterpriseService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,12 @@ public EnterpriseSession Authenticate(string username, string password)
try
{
Trace.TraceInformation("Requesting authentication of user {0}", username);
return Program._enterpriseAdapter.Authenticate(username, password, Program._adminGroup, Program._enterpriseDomain);
var result = Program._enterpriseAdapter.Authenticate(username, password, Program._adminGroup, Program._enterpriseDomain);
if (result != null)
{
result.UserName = username;
}
return result;
}
catch (Exception ex)
{
Expand Down
4 changes: 2 additions & 2 deletions Myrtille.Services/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,5 @@
// Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de build et de révision par défaut
// en utilisant '*', comme indiqué ci-dessous :
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.1.0.0")]
[assembly: AssemblyFileVersion("2.1.0.0")]
[assembly: AssemblyVersion("2.1.1.0")]
[assembly: AssemblyFileVersion("2.1.1.0")]
14 changes: 7 additions & 7 deletions Myrtille.Setup/Myrtille.Setup.vdproj
Original file line number Diff line number Diff line change
Expand Up @@ -883,7 +883,7 @@
{
"AssemblyRegister" = "3:1"
"AssemblyIsInGAC" = "11:FALSE"
"AssemblyAsmDisplayName" = "8:Myrtille.Enterprise, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL"
"AssemblyAsmDisplayName" = "8:Myrtille.Enterprise, Version=2.1.1.0, Culture=neutral, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_35221A90623266B7A9FDC425BE944432"
Expand Down Expand Up @@ -1511,7 +1511,7 @@
{
"AssemblyRegister" = "3:1"
"AssemblyIsInGAC" = "11:FALSE"
"AssemblyAsmDisplayName" = "8:Myrtille.MFAProviders, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL"
"AssemblyAsmDisplayName" = "8:Myrtille.MFAProviders, Version=2.1.1.0, Culture=neutral, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_BCACB0C36170310E57FF172BDA1E5104"
Expand Down Expand Up @@ -1664,7 +1664,7 @@
{
"AssemblyRegister" = "3:1"
"AssemblyIsInGAC" = "11:FALSE"
"AssemblyAsmDisplayName" = "8:Myrtille.Services.Contracts, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL"
"AssemblyAsmDisplayName" = "8:Myrtille.Services.Contracts, Version=2.1.1.0, Culture=neutral, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_DB3716D500DD1600AC6CD10FDF44E26E"
Expand Down Expand Up @@ -1786,7 +1786,7 @@
{
"AssemblyRegister" = "3:1"
"AssemblyIsInGAC" = "11:FALSE"
"AssemblyAsmDisplayName" = "8:Myrtille.Common, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL"
"AssemblyAsmDisplayName" = "8:Myrtille.Common, Version=2.1.1.0, Culture=neutral, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_FC34657BE58E0A644718274D2D0E6F7F"
Expand Down Expand Up @@ -1936,22 +1936,22 @@
"Name" = "8:Microsoft Visual Studio"
"ProductName" = "8:Myrtille"
"ProductCode" = "8:{B00BCC6F-3958-4726-9D99-DBAC78513C26}"
"PackageCode" = "8:{F588C1C7-B189-4FF6-BABC-4D018C98E908}"
"PackageCode" = "8:{D0747F04-918C-47A1-9824-0E798F4D817C}"
"UpgradeCode" = "8:{86A6145E-11DB-4EE7-9CE0-53F997050716}"
"AspNetVersion" = "8:4.0.30319.0"
"RestartWWWService" = "11:FALSE"
"RemovePreviousVersions" = "11:TRUE"
"DetectNewerInstalledVersion" = "11:TRUE"
"InstallAllUsers" = "11:TRUE"
"ProductVersion" = "8:2.1.0"
"ProductVersion" = "8:2.1.1"
"Manufacturer" = "8:Cedric Coste"
"ARPHELPTELEPHONE" = "8:"
"ARPHELPLINK" = "8:http://cedrozor.github.io/myrtille"
"Title" = "8:Myrtille"
"Subject" = "8:"
"ARPCONTACT" = "8:Cedric Coste"
"Keywords" = "8:"
"ARPCOMMENTS" = "8:A native HTML4/5 Remote Desktop and SSH Protocol client"
"ARPCOMMENTS" = "8:A native HTML4/5 Remote Desktop Protocol and SSH client"
"ARPURLINFOABOUT" = "8:http://cedrozor.github.io/myrtille"
"ARPPRODUCTICON" = "8:_6A00A4B5E0C64F48AF08EC529C41D062"
"ARPIconIndex" = "3:32512"
Expand Down
Loading

0 comments on commit 257d38e

Please sign in to comment.