Integrated logging
This commit is contained in:
parent
511d371dba
commit
b2e2d340b7
8 changed files with 84 additions and 10 deletions
|
@ -45,3 +45,5 @@ MonoMod API documentation: [https://monomod.github.io/api/index.html](https://mo
|
|||
MonoMod step-by-step example implementation: [https://github.com/TROYTRON/ti-mods/blob/main/tutorials/MonoMod%20Guide.md](https://github.com/TROYTRON/ti-mods/blob/main/tutorials/MonoMod%20Guide.md)
|
||||
|
||||
dnSpy decomp/analysis tool: [https://github.com/dnSpyEx/dnSpy](https://github.com/dnSpyEx/dnSpy)
|
||||
|
||||
sandbox for testing modifications (if you cant host a seb server): [https://sandbox.moodledemo.net](https://sandbox.moodledemo.net)
|
||||
|
|
|
@ -72,5 +72,11 @@
|
|||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="patch_IntegrityModule.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\SEBPatcherUtils\SEBPatcherUtils.csproj">
|
||||
<Project>{82F861DC-D8C7-46F9-AA60-B67CF43712D5}</Project>
|
||||
<Name>SEBPatcherUtils</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
|
@ -1,11 +1,20 @@
|
|||
using System;
|
||||
using MonoMod;
|
||||
using SEBPatcherUtils;
|
||||
|
||||
namespace SafeExamBrowser.Configuration.Integrity
|
||||
{
|
||||
public class patch_IntegrityModule : IntegrityModule
|
||||
{
|
||||
public PatchLogger patchlogger;
|
||||
|
||||
[MonoModIgnore] public patch_IntegrityModule(Configuration.Contracts.AppConfig appConfig, SafeExamBrowser.Logging.Contracts.ILogger logger) : base(appConfig, logger) { }
|
||||
[MonoModOriginal] public extern void orig_IntegityModule(Configuration.Contracts.AppConfig appConfig, SafeExamBrowser.Logging.Contracts.ILogger logger);
|
||||
[MonoModConstructor] public void IntegrityModule(Configuration.Contracts.AppConfig appConfig, SafeExamBrowser.Logging.Contracts.ILogger logger)
|
||||
{
|
||||
orig_IntegityModule(appConfig, logger);
|
||||
patchlogger = new PatchLogger("Configuration.Integrity");
|
||||
}
|
||||
|
||||
[MonoModOriginal] public extern bool orig_TryVerifyCodeSignature(out bool isValid);
|
||||
#pragma warning disable CS0108 // Member hides inherited member; missing new keyword
|
||||
|
@ -13,6 +22,9 @@ namespace SafeExamBrowser.Configuration.Integrity
|
|||
#pragma warning restore CS0108 // Member hides inherited member; missing new keyword
|
||||
{
|
||||
bool result = orig_TryVerifyCodeSignature(out isValid);
|
||||
|
||||
patchlogger.Info($"SEB integrity check result: {result}");
|
||||
|
||||
isValid = true;
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
using System;
|
||||
using MonoMod;
|
||||
using MonoMod;
|
||||
using SEBPatcherUtils;
|
||||
using SafeExamBrowser.Logging.Contracts;
|
||||
using SafeExamBrowser.SystemComponents.Contracts;
|
||||
using SafeExamBrowser.Monitoring.Contracts.Display;
|
||||
|
@ -12,7 +12,15 @@ namespace SafeExamBrowser.Monitoring.Display
|
|||
public class patch_DisplayMonitor : DisplayMonitor
|
||||
#pragma warning restore IDE1006 // Naming Styles
|
||||
{
|
||||
public PatchLogger patchlogger;
|
||||
|
||||
[MonoModIgnore] public patch_DisplayMonitor(ILogger logger, INativeMethods nativeMethods, ISystemInfo systemInfo) : base(logger, nativeMethods, systemInfo) { }
|
||||
[MonoModOriginal] public extern void orig_DisplayMonitor(ILogger logger, INativeMethods nativeMethods, ISystemInfo systemInfo);
|
||||
[MonoModConstructor] public void DisplayMonitor(ILogger logger, INativeMethods nativeMethods, ISystemInfo systemInfo)
|
||||
{
|
||||
orig_DisplayMonitor(logger, nativeMethods, systemInfo);
|
||||
patchlogger = new PatchLogger("Monitoring.Display.DisplayMonitor");
|
||||
}
|
||||
|
||||
#pragma warning disable IDE1006 // Naming Styles
|
||||
[MonoModOriginal] public extern ValidationResult orig_ValidateConfiguration(DisplaySettings settings);
|
||||
|
@ -23,6 +31,8 @@ namespace SafeExamBrowser.Monitoring.Display
|
|||
{
|
||||
ValidationResult result = orig_ValidateConfiguration(settings);
|
||||
|
||||
patchlogger.Info($"SEB display validation result: {result}");
|
||||
|
||||
return new ValidationResult
|
||||
{
|
||||
ExternalDisplays = 0,
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using MonoMod;
|
||||
using SEBPatcherUtils;
|
||||
using SafeExamBrowser.Logging.Contracts;
|
||||
|
||||
namespace SafeExamBrowser.Monitoring
|
||||
|
@ -7,7 +8,15 @@ namespace SafeExamBrowser.Monitoring
|
|||
public class patch_Clipboard : Clipboard
|
||||
#pragma warning restore IDE1006 // Naming Styles
|
||||
{
|
||||
public PatchLogger patchlogger;
|
||||
|
||||
[MonoModIgnore] public patch_Clipboard(ILogger logger, SafeExamBrowser.WindowsApi.Contracts.INativeMethods nativeMethods, int timeout_ms = 50) : base(logger, nativeMethods, timeout_ms) { }
|
||||
[MonoModOriginal] public extern void orig_Clipboard(ILogger logger, SafeExamBrowser.WindowsApi.Contracts.INativeMethods nativeMethods, int timeout_ms = 50);
|
||||
[MonoModConstructor] public void Clipboard(ILogger logger, SafeExamBrowser.WindowsApi.Contracts.INativeMethods nativeMethods, int timeout_ms = 50)
|
||||
{
|
||||
orig_Clipboard(logger, nativeMethods, timeout_ms);
|
||||
patchlogger = new PatchLogger("Monitoring.Clipboard");
|
||||
}
|
||||
|
||||
#pragma warning disable IDE0044 // Add readonly modifier
|
||||
[MonoModIgnore] private ILogger logger;
|
||||
|
@ -18,6 +27,7 @@ namespace SafeExamBrowser.Monitoring
|
|||
#pragma warning restore CS0108 // Member hides inherited member; missing new keyword
|
||||
{
|
||||
this.logger.Info(string.Format("Initialized clipboard for policy '{0}'.", policy));
|
||||
patchlogger.Info($"SEB wants clipboard policy {policy} (won't get it though!)");
|
||||
}
|
||||
|
||||
#pragma warning disable CS0108 // Member hides inherited member; missing new keyword
|
||||
|
@ -25,6 +35,7 @@ namespace SafeExamBrowser.Monitoring
|
|||
#pragma warning restore CS0108 // Member hides inherited member; missing new keyword
|
||||
{
|
||||
this.logger.Info("Finalized clipboard");
|
||||
patchlogger.Info("Clipboard monitoring 'terminated' (didn't even exist in the first place ;D)");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
using System;
|
||||
using MonoMod;
|
||||
using MonoMod;
|
||||
using SEBPatcherUtils;
|
||||
using SafeExamBrowser.Logging.Contracts;
|
||||
|
||||
namespace SafeExamBrowser.Monitoring
|
||||
|
@ -8,7 +8,17 @@ namespace SafeExamBrowser.Monitoring
|
|||
public class patch_RemoteSessionDetector : RemoteSessionDetector
|
||||
#pragma warning restore IDE1006 // Naming Styles
|
||||
{
|
||||
public PatchLogger patchlogger;
|
||||
|
||||
[MonoModIgnore] public patch_RemoteSessionDetector(ILogger logger) : base(logger) { }
|
||||
#pragma warning disable IDE1006 // Naming Styles
|
||||
[MonoModOriginal] public extern void orig_RemoteSessionDetector(ILogger logger);
|
||||
#pragma warning restore IDE1006 // Naming Styles
|
||||
[MonoModConstructor] public void RemoteSessionDetector(ILogger logger)
|
||||
{
|
||||
orig_RemoteSessionDetector(logger);
|
||||
patchlogger = new PatchLogger("Monitoring.RemoteSessionDetector");
|
||||
}
|
||||
|
||||
#pragma warning disable IDE1006 // Naming Styles
|
||||
[MonoModOriginal] public extern bool orig_IsRemoteSession();
|
||||
|
@ -19,6 +29,15 @@ namespace SafeExamBrowser.Monitoring
|
|||
{
|
||||
bool isRemoteSession = orig_IsRemoteSession();
|
||||
|
||||
if (isRemoteSession)
|
||||
{
|
||||
patchlogger.Info("SEB detected remote session on host! (will be ignored, ofcourse ;D)");
|
||||
}
|
||||
else
|
||||
{
|
||||
patchlogger.Info("SEB did not detect remote session on host");
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,11 +10,16 @@ namespace SafeExamBrowser.Monitoring
|
|||
public class patch_VirtualMachineDetector : VirtualMachineDetector
|
||||
#pragma warning restore IDE1006 // Naming Styles
|
||||
{
|
||||
public PatchLogger patchlogger;
|
||||
|
||||
[MonoModIgnore] public patch_VirtualMachineDetector(ILogger logger, IRegistry registry, ISystemInfo systemInfo) : base(logger, registry, systemInfo) { }
|
||||
[MonoModOriginal] public extern void orig_VirtualMachineDetector();
|
||||
[MonoModConstructor] public void VirtualMachineDetector()
|
||||
#pragma warning disable IDE1006 // Naming Styles
|
||||
[MonoModOriginal] public extern void orig_VirtualMachineDetector(ILogger logger, IRegistry registry, ISystemInfo systemInfo);
|
||||
#pragma warning restore IDE1006 // Naming Styles
|
||||
[MonoModConstructor] public void VirtualMachineDetector(ILogger logger, IRegistry registry, ISystemInfo systemInfo)
|
||||
{
|
||||
orig_VirtualMachineDetector();
|
||||
orig_VirtualMachineDetector(logger, registry, systemInfo);
|
||||
patchlogger = new PatchLogger("MonitoringVirtualMachineDetector");
|
||||
}
|
||||
|
||||
#pragma warning disable IDE1006 // Naming Styles
|
||||
|
@ -26,6 +31,15 @@ namespace SafeExamBrowser.Monitoring
|
|||
{
|
||||
bool isVirtualMachine = orig_IsVirtualMachine();
|
||||
|
||||
if (isVirtualMachine)
|
||||
{
|
||||
patchlogger.Info("SEB detected host as virtual machine! (will be ignored, ofcourse ;D)");
|
||||
}
|
||||
else
|
||||
{
|
||||
patchlogger.Info("SEB did not detect host as virtual machine.");
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,9 +8,9 @@ namespace SEBPatcherUtils
|
|||
private readonly string _logFilePath;
|
||||
private readonly string _logModule;
|
||||
|
||||
public PatchLogger(string logModule, string logFilePath)
|
||||
public PatchLogger(string logModule)
|
||||
{
|
||||
_logFilePath = logFilePath;
|
||||
_logFilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "SafeExamBrowser", "SEBPatcher.log");
|
||||
_logModule = logModule;
|
||||
}
|
||||
|
||||
|
@ -40,7 +40,7 @@ namespace SEBPatcherUtils
|
|||
Log(message, "DEBUG");
|
||||
}
|
||||
|
||||
public void AppendToFile(string logEntry)
|
||||
private void AppendToFile(string logEntry)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue