SEBWIN-405: Implemented server settings and data mapping.
This commit is contained in:
parent
0911e23714
commit
261a331634
12 changed files with 268 additions and 3 deletions
|
@ -331,7 +331,7 @@ namespace SafeExamBrowser.Configuration.UnitTests
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Hack required for unit tests to be able to retrieve the <see cref="Assembly.GetEntryAssembly"/> while executing.
|
/// Required for unit tests to be able to retrieve the <see cref="Assembly.GetEntryAssembly"/> while executing.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void SetEntryAssembly()
|
public void SetEntryAssembly()
|
||||||
{
|
{
|
||||||
|
|
|
@ -19,6 +19,9 @@ namespace SafeExamBrowser.Configuration.ConfigurationData.DataMapping
|
||||||
case Keys.ConfigurationFile.ConfigurationPurpose:
|
case Keys.ConfigurationFile.ConfigurationPurpose:
|
||||||
MapConfigurationMode(settings, value);
|
MapConfigurationMode(settings, value);
|
||||||
break;
|
break;
|
||||||
|
case Keys.ConfigurationFile.SessionMode:
|
||||||
|
MapSessionMode(settings, value);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,5 +34,15 @@ namespace SafeExamBrowser.Configuration.ConfigurationData.DataMapping
|
||||||
settings.ConfigurationMode = mode == CONFIGURE_CLIENT ? ConfigurationMode.ConfigureClient : ConfigurationMode.Exam;
|
settings.ConfigurationMode = mode == CONFIGURE_CLIENT ? ConfigurationMode.ConfigureClient : ConfigurationMode.Exam;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void MapSessionMode(AppSettings settings, object value)
|
||||||
|
{
|
||||||
|
const int SERVER = 1;
|
||||||
|
|
||||||
|
if (value is int mode)
|
||||||
|
{
|
||||||
|
settings.SessionMode = mode == SERVER ? SessionMode.Server : SessionMode.Normal;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ namespace SafeExamBrowser.Configuration.ConfigurationData.DataMapping
|
||||||
{
|
{
|
||||||
switch (key)
|
switch (key)
|
||||||
{
|
{
|
||||||
case Keys.ConfigurationFile.AdminPasswordHash:
|
case Keys.Security.AdminPasswordHash:
|
||||||
MapAdminPasswordHash(settings, value);
|
MapAdminPasswordHash(settings, value);
|
||||||
break;
|
break;
|
||||||
case Keys.Security.AllowTermination:
|
case Keys.Security.AllowTermination:
|
||||||
|
|
|
@ -0,0 +1,118 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2020 ETH Zürich, Educational Development and Technology (LET)
|
||||||
|
*
|
||||||
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using SafeExamBrowser.Settings;
|
||||||
|
|
||||||
|
namespace SafeExamBrowser.Configuration.ConfigurationData.DataMapping
|
||||||
|
{
|
||||||
|
internal class ServerDataMapper : BaseDataMapper
|
||||||
|
{
|
||||||
|
internal override void Map(string key, object value, AppSettings settings)
|
||||||
|
{
|
||||||
|
switch (key)
|
||||||
|
{
|
||||||
|
case Keys.Server.Configuration:
|
||||||
|
MapConfiguration(settings, value);
|
||||||
|
break;
|
||||||
|
case Keys.Server.FallbackPasswordHash:
|
||||||
|
MapFallbackPasswordHash(settings, value);
|
||||||
|
break;
|
||||||
|
case Keys.Server.PerformFallback:
|
||||||
|
MapPerformFallback(settings, value);
|
||||||
|
break;
|
||||||
|
case Keys.Server.RequestAttempts:
|
||||||
|
MapRequestAttempts(settings, value);
|
||||||
|
break;
|
||||||
|
case Keys.Server.RequestAttemptInterval:
|
||||||
|
MapRequestAttemptInterval(settings, value);
|
||||||
|
break;
|
||||||
|
case Keys.Server.RequestTimeout:
|
||||||
|
MapRequestTimeout(settings, value);
|
||||||
|
break;
|
||||||
|
case Keys.Server.ServerUrl:
|
||||||
|
MapServerUrl(settings, value);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void MapConfiguration(AppSettings settings, object value)
|
||||||
|
{
|
||||||
|
if (value is IDictionary<string, object> configuration)
|
||||||
|
{
|
||||||
|
if (configuration.TryGetValue(Keys.Server.ApiUrl, out var v) && v is string url)
|
||||||
|
{
|
||||||
|
settings.Server.ApiUrl = url;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (configuration.TryGetValue(Keys.Server.ClientName, out v) && v is string name)
|
||||||
|
{
|
||||||
|
settings.Server.ClientName = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (configuration.TryGetValue(Keys.Server.ClientSecret, out v) && v is string secret)
|
||||||
|
{
|
||||||
|
settings.Server.ClientSecret = secret;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (configuration.TryGetValue(Keys.Server.Institution, out v) && v is string institution)
|
||||||
|
{
|
||||||
|
settings.Server.Institution = institution;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void MapFallbackPasswordHash(AppSettings settings, object value)
|
||||||
|
{
|
||||||
|
if (value is string hash)
|
||||||
|
{
|
||||||
|
settings.Server.FallbackPasswordHash = hash;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void MapPerformFallback(AppSettings settings, object value)
|
||||||
|
{
|
||||||
|
if (value is bool perform)
|
||||||
|
{
|
||||||
|
settings.Server.PerformFallback = perform;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void MapRequestAttempts(AppSettings settings, object value)
|
||||||
|
{
|
||||||
|
if (value is int attempts)
|
||||||
|
{
|
||||||
|
settings.Server.RequestAttempts = attempts;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void MapRequestAttemptInterval(AppSettings settings, object value)
|
||||||
|
{
|
||||||
|
if (value is int interval)
|
||||||
|
{
|
||||||
|
settings.Server.RequestAttemptInterval = interval;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void MapRequestTimeout(AppSettings settings, object value)
|
||||||
|
{
|
||||||
|
if (value is int timeout)
|
||||||
|
{
|
||||||
|
settings.Server.RequestTimeout = timeout;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void MapServerUrl(AppSettings settings, object value)
|
||||||
|
{
|
||||||
|
if (value is string url)
|
||||||
|
{
|
||||||
|
settings.Server.ServerUrl = url;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -172,6 +172,11 @@ namespace SafeExamBrowser.Configuration.ConfigurationData
|
||||||
settings.Security.KioskMode = KioskMode.CreateNewDesktop;
|
settings.Security.KioskMode = KioskMode.CreateNewDesktop;
|
||||||
settings.Security.VirtualMachinePolicy = VirtualMachinePolicy.Deny;
|
settings.Security.VirtualMachinePolicy = VirtualMachinePolicy.Deny;
|
||||||
|
|
||||||
|
settings.Server.RequestAttemptInterval = 2000;
|
||||||
|
settings.Server.RequestAttempts = 5;
|
||||||
|
settings.Server.RequestTimeout = 5000;
|
||||||
|
settings.Server.PerformFallback = false;
|
||||||
|
|
||||||
settings.Service.DisableChromeNotifications = true;
|
settings.Service.DisableChromeNotifications = true;
|
||||||
settings.Service.DisableEaseOfAccessOptions = true;
|
settings.Service.DisableEaseOfAccessOptions = true;
|
||||||
settings.Service.DisableNetworkOptions = true;
|
settings.Service.DisableNetworkOptions = true;
|
||||||
|
@ -188,6 +193,8 @@ namespace SafeExamBrowser.Configuration.ConfigurationData
|
||||||
settings.Service.Policy = ServicePolicy.Mandatory;
|
settings.Service.Policy = ServicePolicy.Mandatory;
|
||||||
settings.Service.SetVmwareConfiguration = false;
|
settings.Service.SetVmwareConfiguration = false;
|
||||||
|
|
||||||
|
settings.SessionMode = SessionMode.Normal;
|
||||||
|
|
||||||
settings.Taskbar.EnableTaskbar = true;
|
settings.Taskbar.EnableTaskbar = true;
|
||||||
settings.Taskbar.ShowApplicationInfo = false;
|
settings.Taskbar.ShowApplicationInfo = false;
|
||||||
settings.Taskbar.ShowApplicationLog = false;
|
settings.Taskbar.ShowApplicationLog = false;
|
||||||
|
|
|
@ -156,9 +156,9 @@ namespace SafeExamBrowser.Configuration.ConfigurationData
|
||||||
|
|
||||||
internal static class ConfigurationFile
|
internal static class ConfigurationFile
|
||||||
{
|
{
|
||||||
internal const string AdminPasswordHash = "hashedAdminPassword";
|
|
||||||
internal const string ConfigurationPurpose = "sebConfigPurpose";
|
internal const string ConfigurationPurpose = "sebConfigPurpose";
|
||||||
internal const string KeepClientConfigEncryption = "clientConfigKeepEncryption";
|
internal const string KeepClientConfigEncryption = "clientConfigKeepEncryption";
|
||||||
|
internal const string SessionMode = "sebMode";
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static class General
|
internal static class General
|
||||||
|
@ -207,6 +207,7 @@ namespace SafeExamBrowser.Configuration.ConfigurationData
|
||||||
|
|
||||||
internal static class Security
|
internal static class Security
|
||||||
{
|
{
|
||||||
|
internal const string AdminPasswordHash = "hashedAdminPassword";
|
||||||
internal const string AllowApplicationLog = "allowApplicationLog";
|
internal const string AllowApplicationLog = "allowApplicationLog";
|
||||||
internal const string AllowTermination = "allowQuit";
|
internal const string AllowTermination = "allowQuit";
|
||||||
internal const string AllowVirtualMachine = "allowVirtualMachine";
|
internal const string AllowVirtualMachine = "allowVirtualMachine";
|
||||||
|
@ -215,6 +216,21 @@ namespace SafeExamBrowser.Configuration.ConfigurationData
|
||||||
internal const string QuitPasswordHash = "hashedQuitPassword";
|
internal const string QuitPasswordHash = "hashedQuitPassword";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal static class Server
|
||||||
|
{
|
||||||
|
internal const string ApiUrl = "apiDiscovery";
|
||||||
|
internal const string ClientName = "clientName";
|
||||||
|
internal const string ClientSecret = "clientSecret";
|
||||||
|
internal const string Configuration = "sebServerConfiguration";
|
||||||
|
internal const string FallbackPasswordHash = "sebServerFallbackPasswordHash";
|
||||||
|
internal const string Institution = "institution";
|
||||||
|
internal const string PerformFallback = "sebServerFallback";
|
||||||
|
internal const string RequestAttempts = "sebServerFallbackAttempts";
|
||||||
|
internal const string RequestAttemptInterval = "sebServerFallbackAttemptInterval";
|
||||||
|
internal const string RequestTimeout = "sebServerFallbackTimeout";
|
||||||
|
internal const string ServerUrl = "sebServerURL";
|
||||||
|
}
|
||||||
|
|
||||||
internal static class Service
|
internal static class Service
|
||||||
{
|
{
|
||||||
internal const string EnableChromeNotifications = "enableChromeNotifications";
|
internal const string EnableChromeNotifications = "enableChromeNotifications";
|
||||||
|
|
|
@ -64,6 +64,7 @@
|
||||||
<Compile Include="ConfigurationData\DataMapping\BaseDataMapper.cs" />
|
<Compile Include="ConfigurationData\DataMapping\BaseDataMapper.cs" />
|
||||||
<Compile Include="ConfigurationData\DataMapping\InputDataMapper.cs" />
|
<Compile Include="ConfigurationData\DataMapping\InputDataMapper.cs" />
|
||||||
<Compile Include="ConfigurationData\DataMapping\SecurityDataMapper.cs" />
|
<Compile Include="ConfigurationData\DataMapping\SecurityDataMapper.cs" />
|
||||||
|
<Compile Include="ConfigurationData\DataMapping\ServerDataMapper.cs" />
|
||||||
<Compile Include="ConfigurationData\DataMapping\ServiceDataMapper.cs" />
|
<Compile Include="ConfigurationData\DataMapping\ServiceDataMapper.cs" />
|
||||||
<Compile Include="ConfigurationData\DataMapping\UserInterfaceDataMapper.cs" />
|
<Compile Include="ConfigurationData\DataMapping\UserInterfaceDataMapper.cs" />
|
||||||
<Compile Include="ConfigurationData\DataProcessor.cs" />
|
<Compile Include="ConfigurationData\DataProcessor.cs" />
|
||||||
|
|
|
@ -80,6 +80,7 @@ namespace SafeExamBrowser.Runtime
|
||||||
|
|
||||||
sessionOperations.Enqueue(new SessionInitializationOperation(configuration, logger, runtimeHost, sessionContext));
|
sessionOperations.Enqueue(new SessionInitializationOperation(configuration, logger, runtimeHost, sessionContext));
|
||||||
sessionOperations.Enqueue(new ConfigurationOperation(args, configuration, new FileSystem(), new HashAlgorithm(), logger, sessionContext));
|
sessionOperations.Enqueue(new ConfigurationOperation(args, configuration, new FileSystem(), new HashAlgorithm(), logger, sessionContext));
|
||||||
|
// TODO: sessionOperations.Enqueue(new ServerOperation());
|
||||||
sessionOperations.Enqueue(new VirtualMachineOperation(vmDetector, logger, sessionContext));
|
sessionOperations.Enqueue(new VirtualMachineOperation(vmDetector, logger, sessionContext));
|
||||||
sessionOperations.Enqueue(new ServiceOperation(logger, runtimeHost, serviceProxy, sessionContext, THIRTY_SECONDS, userInfo));
|
sessionOperations.Enqueue(new ServiceOperation(logger, runtimeHost, serviceProxy, sessionContext, THIRTY_SECONDS, userInfo));
|
||||||
sessionOperations.Enqueue(new ClientTerminationOperation(logger, processFactory, proxyFactory, runtimeHost, sessionContext, THIRTY_SECONDS));
|
sessionOperations.Enqueue(new ClientTerminationOperation(logger, processFactory, proxyFactory, runtimeHost, sessionContext, THIRTY_SECONDS));
|
||||||
|
|
|
@ -12,6 +12,7 @@ using SafeExamBrowser.Settings.Browser;
|
||||||
using SafeExamBrowser.Settings.Logging;
|
using SafeExamBrowser.Settings.Logging;
|
||||||
using SafeExamBrowser.Settings.Monitoring;
|
using SafeExamBrowser.Settings.Monitoring;
|
||||||
using SafeExamBrowser.Settings.Security;
|
using SafeExamBrowser.Settings.Security;
|
||||||
|
using SafeExamBrowser.Settings.Server;
|
||||||
using SafeExamBrowser.Settings.Service;
|
using SafeExamBrowser.Settings.Service;
|
||||||
using SafeExamBrowser.Settings.SystemComponents;
|
using SafeExamBrowser.Settings.SystemComponents;
|
||||||
using SafeExamBrowser.Settings.UserInterface;
|
using SafeExamBrowser.Settings.UserInterface;
|
||||||
|
@ -69,11 +70,21 @@ namespace SafeExamBrowser.Settings
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public SecuritySettings Security { get; set; }
|
public SecuritySettings Security { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// All server-related settings.
|
||||||
|
/// </summary>
|
||||||
|
public ServerSettings Server { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// All service-related settings.
|
/// All service-related settings.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public ServiceSettings Service { get; set; }
|
public ServiceSettings Service { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The mode which determines the session behaviour.
|
||||||
|
/// </summary>
|
||||||
|
public SessionMode SessionMode { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// All taskbar-related settings.
|
/// All taskbar-related settings.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -93,6 +104,7 @@ namespace SafeExamBrowser.Settings
|
||||||
Keyboard = new KeyboardSettings();
|
Keyboard = new KeyboardSettings();
|
||||||
Mouse = new MouseSettings();
|
Mouse = new MouseSettings();
|
||||||
Security = new SecuritySettings();
|
Security = new SecuritySettings();
|
||||||
|
Server = new ServerSettings();
|
||||||
Service = new ServiceSettings();
|
Service = new ServiceSettings();
|
||||||
Taskbar = new TaskbarSettings();
|
Taskbar = new TaskbarSettings();
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,6 +70,7 @@
|
||||||
<Compile Include="Browser\Proxy\ProxyProtocol.cs" />
|
<Compile Include="Browser\Proxy\ProxyProtocol.cs" />
|
||||||
<Compile Include="Browser\Proxy\ProxyConfiguration.cs" />
|
<Compile Include="Browser\Proxy\ProxyConfiguration.cs" />
|
||||||
<Compile Include="ConfigurationMode.cs" />
|
<Compile Include="ConfigurationMode.cs" />
|
||||||
|
<Compile Include="SessionMode.cs" />
|
||||||
<Compile Include="Security\KioskMode.cs" />
|
<Compile Include="Security\KioskMode.cs" />
|
||||||
<Compile Include="Logging\LogLevel.cs" />
|
<Compile Include="Logging\LogLevel.cs" />
|
||||||
<Compile Include="Monitoring\KeyboardSettings.cs" />
|
<Compile Include="Monitoring\KeyboardSettings.cs" />
|
||||||
|
@ -77,6 +78,7 @@
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="Security\SecuritySettings.cs" />
|
<Compile Include="Security\SecuritySettings.cs" />
|
||||||
<Compile Include="Security\VirtualMachinePolicy.cs" />
|
<Compile Include="Security\VirtualMachinePolicy.cs" />
|
||||||
|
<Compile Include="Server\ServerSettings.cs" />
|
||||||
<Compile Include="Service\ServicePolicy.cs" />
|
<Compile Include="Service\ServicePolicy.cs" />
|
||||||
<Compile Include="Service\ServiceSettings.cs" />
|
<Compile Include="Service\ServiceSettings.cs" />
|
||||||
<Compile Include="AppSettings.cs" />
|
<Compile Include="AppSettings.cs" />
|
||||||
|
|
69
SafeExamBrowser.Settings/Server/ServerSettings.cs
Normal file
69
SafeExamBrowser.Settings/Server/ServerSettings.cs
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2020 ETH Zürich, Educational Development and Technology (LET)
|
||||||
|
*
|
||||||
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace SafeExamBrowser.Settings.Server
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Defines all settings for a SEB server.
|
||||||
|
/// </summary>
|
||||||
|
[Serializable]
|
||||||
|
public class ServerSettings
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The discovery URL for the API of the server.
|
||||||
|
/// </summary>
|
||||||
|
public string ApiUrl { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The client name for initial authentication with the server.
|
||||||
|
/// </summary>
|
||||||
|
public string ClientName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The client secret for initial authentication with the server.
|
||||||
|
/// </summary>
|
||||||
|
public string ClientSecret { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The hash code of the password required to perform a fallback.
|
||||||
|
/// </summary>
|
||||||
|
public string FallbackPasswordHash { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The institution to be used for identification with the server.
|
||||||
|
/// </summary>
|
||||||
|
public string Institution { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Indicates whether SEB will fallback to the start URL in case no connection could be established with the server.
|
||||||
|
/// </summary>
|
||||||
|
public bool PerformFallback { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The number of attempts (e.g. when receiving an invalid server response) before performing a fallback or failing.
|
||||||
|
/// </summary>
|
||||||
|
public int RequestAttempts { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The time interval in milliseconds to be waited in between attempts.
|
||||||
|
/// </summary>
|
||||||
|
public int RequestAttemptInterval { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The timeout in milliseconds (e.g. to wait for a server response) before performing a fallback or failing.
|
||||||
|
/// </summary>
|
||||||
|
public int RequestTimeout { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The URL of the server.
|
||||||
|
/// </summary>
|
||||||
|
public string ServerUrl { get; set; }
|
||||||
|
}
|
||||||
|
}
|
26
SafeExamBrowser.Settings/SessionMode.cs
Normal file
26
SafeExamBrowser.Settings/SessionMode.cs
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2020 ETH Zürich, Educational Development and Technology (LET)
|
||||||
|
*
|
||||||
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace SafeExamBrowser.Settings
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Defines all possible session modes.
|
||||||
|
/// </summary>
|
||||||
|
public enum SessionMode
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// SEB will start a normal session without SEB server.
|
||||||
|
/// </summary>
|
||||||
|
Normal,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// SEB will start a session with SEB server.
|
||||||
|
/// </summary>
|
||||||
|
Server
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue