Skip to content

Commit

Permalink
enterprise mode data folder is now created by the installer (thanks hac)
Browse files Browse the repository at this point in the history
fixed installer error 1001 regarding CERTENROLLLib.CX509PrivateKey
updated openssl to version 1.0.2o
added an error message if the remote connection fails or is closed unexpectedly
  • Loading branch information
cedrozor committed Apr 2, 2018
1 parent 7954eed commit 28a6b65
Show file tree
Hide file tree
Showing 20 changed files with 561 additions and 387 deletions.
8 changes: 7 additions & 1 deletion CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
2018-03-29 Version 1.8.0 (beta)
2018-04-02 Version 1.8.1 (beta)
enterprise mode data folder is now created by the installer (thanks hac)
fixed installer error 1001 regarding CERTENROLLLib.CX509PrivateKey
updated openssl to version 1.0.2o
added an error message if the remote connection fails or is closed unexpectedly

2018-03-29 Version 1.8.0 (beta)
resynced FreeRDP with master repository (fixes the NLA issue introduced with Windows updates KB4088776, KB4088787, KB4088876, KB4088875)
added support for MFA (one time password and one time host session url) (thanks Paul Oliver). Refer to documentation for activation
added enterprise mode (AD pre-authentication and hosts list management) (thanks Paul Oliver). Refer to documentation for activation
Expand Down
3 changes: 2 additions & 1 deletion DOCUMENTATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,7 @@ If you wish to create your own MFA adapter, `Myrtille.Services.Contracts` contai

## Enterprise Mode
When enabled, the enterprise mode authenticates users against a domain and allows administrators to create hosts connections which can be restricted to the security groups the authenticated users belongs to.
**CAUTION** This requires the myrtille machine to have joined the domain or be able to resolve the domain controller FQDN or IP.

The enterprise mode provides the following additional features:
- Authenticate users against a domain/active directory instead of a host they wish to connect to
Expand All @@ -200,7 +201,7 @@ The enterprise mode provides the following additional features:
To enable enterprise mode, edit the app.config file of Myrtille.Services and uncomment the following appSettings:
- `EnterpriseAdapter`, this is the adapter to use for enterprise mode
- `EnterpriseAdminGroup`, this is the security group which will define a user as an administrator who can create, edit, delete hosts, define access to hosts and create single use sessions
- `EnterpriseDomain`, this is the NETBIOS name (i.e. MYDOMAIN) or FQDN (i.e. mydomain.local) of your domain
- `EnterpriseDomain`, this is the name of your domain (i.e. MYDOMAIN or mydomain.local) if myrtille is part of it or the domain controller FQDN or IP otherwise
- Restart Myrtille.Services windows service to use the new settings

If you wish to create your own enterprise adapter (with a different authentication, database or behavior), `Myrtille.Services.Contracts` contains the interfaces you need.
Expand Down
Binary file added Myrtille.Common/CertEnroll_Interop.dll
Binary file not shown.
2 changes: 1 addition & 1 deletion Myrtille.Common/Helpers/CertificateHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ limitations under the License.
using System;
using System.Diagnostics;
using System.Security.Cryptography.X509Certificates;
using CERTENROLLLib;
using CertEnroll_Interop;

namespace Myrtille.Helpers
{
Expand Down
14 changes: 5 additions & 9 deletions Myrtille.Common/Myrtille.Common.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,11 @@
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="CertEnroll_Interop, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>.\CertEnroll_Interop.dll</HintPath>
<SpecificVersion>False</SpecificVersion>
<EmbedInteropTypes>False</EmbedInteropTypes>
</Reference>
<Reference Include="log4net, Version=2.0.8.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
<HintPath>..\packages\log4net.2.0.8\lib\net45-full\log4net.dll</HintPath>
<Private>True</Private>
Expand Down Expand Up @@ -132,15 +137,6 @@
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<COMReference Include="CERTENROLLLib">
<Guid>{728AB348-217D-11DA-B2A4-000E7BBB2B09}</Guid>
<VersionMajor>1</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>tlbimp</WrapperTool>
<Isolated>False</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
<COMReference Include="NetFwTypeLib">
<Guid>{58FBCF7C-E7A9-467C-80B3-FC65E8FCCA08}</Guid>
<VersionMajor>1</VersionMajor>
Expand Down
2 changes: 1 addition & 1 deletion 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("1.8.0.0")]
[assembly: AssemblyVersion("1.8.1.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
2 changes: 1 addition & 1 deletion 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("1.8.0.0")]
[assembly: AssemblyVersion("1.8.1.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
2 changes: 1 addition & 1 deletion 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("1.8.0.0")]
[assembly: AssemblyVersion("1.8.1.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
2 changes: 1 addition & 1 deletion Myrtille.Services.Contracts/IRemoteSessionProcess.cs
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,6 @@ public interface IRemoteSessionProcessCallback
/// process exited callback
/// </summary>
[OperationContract]
void ProcessExited();
void ProcessExited(int exitCode);
}
}
2 changes: 1 addition & 1 deletion 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("1.8.0.0")]
[assembly: AssemblyVersion("1.8.1.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
2 changes: 1 addition & 1 deletion 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("1.8.0.0")]
[assembly: AssemblyVersion("1.8.1.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
33 changes: 18 additions & 15 deletions Myrtille.Services/RemoteSessionProcess.cs
Original file line number Diff line number Diff line change
Expand Up @@ -263,23 +263,26 @@ private void ProcessExited(
// also interesting to note, it's possible to set a MaxConnectionTime for the rdp session (registry: HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp, "MaxConnectionTime" (DWORD, value in msecs))
// an alternative to alter the registry directly (which impact the whole server) is to define group policies strategies (GPOs) into the Active Directory; it's a bit more complicated to handle, but proper...

Trace.TraceInformation("Disconnected remote session {0}", _remoteSessionId);

try
{
// notify the remote session manager of the process exit
_callback.ProcessExited();
}
catch (Exception exc)
{
Trace.TraceError("Failed to notify rdp client process exit (MyrtilleAppPool down?), remote session {0} ({1})", _remoteSessionId, exc);
}
finally
if (_process != null && _process.HasExited)
{
if (_process != null)
Trace.TraceInformation("Disconnected remote session {0}, exit code {1}", _remoteSessionId, _process.ExitCode);

try
{
// notify the remote session manager of the process exit
_callback.ProcessExited(_process.ExitCode);
}
catch (Exception exc)
{
_process.Dispose();
_process = null;
Trace.TraceError("Failed to notify rdp client process exit (MyrtilleAppPool down?), remote session {0} ({1})", _remoteSessionId, exc);
}
finally
{
if (_process != null)
{
_process.Dispose();
_process = null;
}
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion Myrtille.Services/app.config
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@
<!--
<add key="EnterpriseAdapter" value="Myrtille.Enterprise.ActiveDirectory, Myrtille.Enterprise"/>
<add key="EnterpriseAdminGroup" value="a domain group who can administer hosts"/>
<add key="EnterpriseDomain" value="the name of your domain (i.e. MYDOMAIN or mydomain.local)"/>
<add key="EnterpriseDomain" value="the name of your domain (i.e. MYDOMAIN or mydomain.local) or the domain controller FQDN or IP"/>
-->

<!-- FreeRDP params below. CAUTION! changing most of these settings will hinder performance! -->
Expand Down
Loading

0 comments on commit 28a6b65

Please sign in to comment.