SEBWIN-448: Added configuration scaffolding for remote proctoring.
This commit is contained in:
		
							parent
							
								
									b27bf24eea
								
							
						
					
					
						commit
						d113d59223
					
				
					 8 changed files with 90 additions and 7 deletions
				
			
		| 
						 | 
					@ -22,6 +22,7 @@ namespace SafeExamBrowser.Configuration.ConfigurationData
 | 
				
			||||||
			new ConfigurationFileDataMapper(),
 | 
								new ConfigurationFileDataMapper(),
 | 
				
			||||||
			new GeneralDataMapper(),
 | 
								new GeneralDataMapper(),
 | 
				
			||||||
			new InputDataMapper(),
 | 
								new InputDataMapper(),
 | 
				
			||||||
 | 
								new ProctoringDataMapper(),
 | 
				
			||||||
			new SecurityDataMapper(),
 | 
								new SecurityDataMapper(),
 | 
				
			||||||
			new ServerDataMapper(),
 | 
								new ServerDataMapper(),
 | 
				
			||||||
			new ServiceDataMapper(),
 | 
								new ServiceDataMapper(),
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,37 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright (c) 2021 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 ProctoringDataMapper : BaseDataMapper
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							internal override void Map(string key, object value, AppSettings settings)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								switch (key)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									// TODO
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							internal override void MapGlobal(IDictionary<string, object> rawData, AppSettings settings)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								MapProctoringEnabled(rawData, settings);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							private void MapProctoringEnabled(IDictionary<string, object> rawData, AppSettings settings)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								var jitsiEnabled = rawData.TryGetValue(Keys.Proctoring.JitsiMeet.Enabled, out var v) && v is bool b && b;
 | 
				
			||||||
 | 
								var zoomEnabled = rawData.TryGetValue(Keys.Proctoring.Zoom.Enabled, out v) && v is bool b2 && b2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								settings.Proctoring.Enabled = jitsiEnabled || zoomEnabled;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -214,18 +214,16 @@ namespace SafeExamBrowser.Configuration.ConfigurationData
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		internal static class RemoteProctoring
 | 
							internal static class Proctoring
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			internal const string Enabled = "jitsiMeetEnable";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			internal static class JitsiMeet
 | 
								internal static class JitsiMeet
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
 | 
									internal const string Enabled = "jitsiMeetEnable";
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			internal static class Zoom
 | 
								internal static class Zoom
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
 | 
									internal const string Enabled = "zoomEnable";
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -63,6 +63,7 @@
 | 
				
			||||||
    <Compile Include="ConfigurationData\DataMapping\GeneralDataMapper.cs" />
 | 
					    <Compile Include="ConfigurationData\DataMapping\GeneralDataMapper.cs" />
 | 
				
			||||||
    <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\ProctoringDataMapper.cs" />
 | 
				
			||||||
    <Compile Include="ConfigurationData\DataMapping\SecurityDataMapper.cs" />
 | 
					    <Compile Include="ConfigurationData\DataMapping\SecurityDataMapper.cs" />
 | 
				
			||||||
    <Compile Include="ConfigurationData\DataMapping\ServerDataMapper.cs" />
 | 
					    <Compile Include="ConfigurationData\DataMapping\ServerDataMapper.cs" />
 | 
				
			||||||
    <Compile Include="ConfigurationData\DataMapping\ServiceDataMapper.cs" />
 | 
					    <Compile Include="ConfigurationData\DataMapping\ServiceDataMapper.cs" />
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,12 +29,26 @@ namespace SafeExamBrowser.Runtime.Operations
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		public override OperationResult Perform()
 | 
							public override OperationResult Perform()
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			return ShowDisclaimer();
 | 
								if (Context.Next.Settings.Proctoring.Enabled)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									return ShowDisclaimer();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								logger.Info("Remote proctoring is disabled, skipping disclaimer.");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								return OperationResult.Success;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		public override OperationResult Repeat()
 | 
							public override OperationResult Repeat()
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			return ShowDisclaimer();
 | 
								if (Context.Next.Settings.Proctoring.Enabled)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									return ShowDisclaimer();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								logger.Info("Remote proctoring is disabled, skipping disclaimer.");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								return OperationResult.Success;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		public override OperationResult Revert()
 | 
							public override OperationResult Revert()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,6 +11,7 @@ using SafeExamBrowser.Settings.Applications;
 | 
				
			||||||
using SafeExamBrowser.Settings.Browser;
 | 
					using SafeExamBrowser.Settings.Browser;
 | 
				
			||||||
using SafeExamBrowser.Settings.Logging;
 | 
					using SafeExamBrowser.Settings.Logging;
 | 
				
			||||||
using SafeExamBrowser.Settings.Monitoring;
 | 
					using SafeExamBrowser.Settings.Monitoring;
 | 
				
			||||||
 | 
					using SafeExamBrowser.Settings.Proctoring;
 | 
				
			||||||
using SafeExamBrowser.Settings.Security;
 | 
					using SafeExamBrowser.Settings.Security;
 | 
				
			||||||
using SafeExamBrowser.Settings.Server;
 | 
					using SafeExamBrowser.Settings.Server;
 | 
				
			||||||
using SafeExamBrowser.Settings.Service;
 | 
					using SafeExamBrowser.Settings.Service;
 | 
				
			||||||
| 
						 | 
					@ -65,6 +66,11 @@ namespace SafeExamBrowser.Settings
 | 
				
			||||||
		/// </summary>
 | 
							/// </summary>
 | 
				
			||||||
		public MouseSettings Mouse { get; set; }
 | 
							public MouseSettings Mouse { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/// <summary>
 | 
				
			||||||
 | 
							/// All proctoring-related settings.
 | 
				
			||||||
 | 
							/// </summary>
 | 
				
			||||||
 | 
							public ProctoringSettings Proctoring { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		/// <summary>
 | 
							/// <summary>
 | 
				
			||||||
		/// All security-related settings.
 | 
							/// All security-related settings.
 | 
				
			||||||
		/// </summary>
 | 
							/// </summary>
 | 
				
			||||||
| 
						 | 
					@ -103,6 +109,7 @@ namespace SafeExamBrowser.Settings
 | 
				
			||||||
			Browser = new BrowserSettings();
 | 
								Browser = new BrowserSettings();
 | 
				
			||||||
			Keyboard = new KeyboardSettings();
 | 
								Keyboard = new KeyboardSettings();
 | 
				
			||||||
			Mouse = new MouseSettings();
 | 
								Mouse = new MouseSettings();
 | 
				
			||||||
 | 
								Proctoring = new ProctoringSettings();
 | 
				
			||||||
			Security = new SecuritySettings();
 | 
								Security = new SecuritySettings();
 | 
				
			||||||
			Server = new ServerSettings();
 | 
								Server = new ServerSettings();
 | 
				
			||||||
			Service = new ServiceSettings();
 | 
								Service = new ServiceSettings();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										24
									
								
								SafeExamBrowser.Settings/Proctoring/ProctoringSettings.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								SafeExamBrowser.Settings/Proctoring/ProctoringSettings.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,24 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright (c) 2021 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.Proctoring
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						/// <summary>
 | 
				
			||||||
 | 
						/// Defines all settings related to remote proctoring.
 | 
				
			||||||
 | 
						/// </summary>
 | 
				
			||||||
 | 
						[Serializable]
 | 
				
			||||||
 | 
						public class ProctoringSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							/// <summary>
 | 
				
			||||||
 | 
							/// Determines whether the entire remote proctoring feature is enabled.
 | 
				
			||||||
 | 
							/// </summary>
 | 
				
			||||||
 | 
							public bool Enabled { get; set; }
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -71,6 +71,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="Proctoring\ProctoringSettings.cs" />
 | 
				
			||||||
    <Compile Include="SessionMode.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" />
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue