SEBWIN-309: Extended detection mechanism for configuration file downloads.

This commit is contained in:
dbuechel 2020-02-06 11:10:22 +01:00
parent 7df1fe5f03
commit 92d22a8437
3 changed files with 14 additions and 3 deletions

View file

@ -44,12 +44,17 @@ namespace SafeExamBrowser.Browser.Handlers
public void OnBeforeDownload(IWebBrowser webBrowser, IBrowser browser, DownloadItem downloadItem, IBeforeDownloadCallback callback) public void OnBeforeDownload(IWebBrowser webBrowser, IBrowser browser, DownloadItem downloadItem, IBeforeDownloadCallback callback)
{ {
var uri = new Uri(downloadItem.Url); var uri = new Uri(downloadItem.Url);
var extension = Path.GetExtension(uri.AbsolutePath); var uriExtension = Path.GetExtension(uri.AbsolutePath);
var isConfigFile = String.Equals(extension, appConfig.ConfigurationFileExtension, StringComparison.OrdinalIgnoreCase); var fileExtension = Path.GetExtension(downloadItem.SuggestedFileName);
var isConfigurationFile = false;
isConfigurationFile |= string.Equals(appConfig.ConfigurationFileExtension, fileExtension, StringComparison.OrdinalIgnoreCase);
isConfigurationFile |= string.Equals(appConfig.ConfigurationFileExtension, uriExtension, StringComparison.OrdinalIgnoreCase);
isConfigurationFile |= string.Equals(appConfig.ConfigurationFileMimeType, downloadItem.MimeType, StringComparison.OrdinalIgnoreCase);
logger.Debug($"Detected download request for '{uri}'."); logger.Debug($"Detected download request for '{uri}'.");
if (isConfigFile) if (isConfigurationFile)
{ {
Task.Run(() => RequestConfigurationFileDownload(downloadItem, callback)); Task.Run(() => RequestConfigurationFileDownload(downloadItem, callback));
} }

View file

@ -91,6 +91,11 @@ namespace SafeExamBrowser.Configuration.Contracts
/// </summary> /// </summary>
public string ConfigurationFileExtension { get; set; } public string ConfigurationFileExtension { get; set; }
/// <summary>
/// The MIME type of configuration files for the application.
/// </summary>
public string ConfigurationFileMimeType { get; set; }
/// <summary> /// <summary>
/// The build version of the application. /// The build version of the application.
/// </summary> /// </summary>

View file

@ -68,6 +68,7 @@ namespace SafeExamBrowser.Configuration.ConfigurationData
appConfig.ClientExecutablePath = Path.Combine(Path.GetDirectoryName(executablePath), $"{nameof(SafeExamBrowser)}.Client.exe"); appConfig.ClientExecutablePath = Path.Combine(Path.GetDirectoryName(executablePath), $"{nameof(SafeExamBrowser)}.Client.exe");
appConfig.ClientLogFilePath = Path.Combine(logFolder, $"{logFilePrefix}_Client.log"); appConfig.ClientLogFilePath = Path.Combine(logFolder, $"{logFilePrefix}_Client.log");
appConfig.ConfigurationFileExtension = ".seb"; appConfig.ConfigurationFileExtension = ".seb";
appConfig.ConfigurationFileMimeType = "application/seb";
appConfig.ProgramBuildVersion = programBuild; appConfig.ProgramBuildVersion = programBuild;
appConfig.ProgramCopyright = programCopyright; appConfig.ProgramCopyright = programCopyright;
appConfig.ProgramDataFilePath = Path.Combine(programDataFolder, DEFAULT_CONFIGURATION_NAME); appConfig.ProgramDataFilePath = Path.Combine(programDataFolder, DEFAULT_CONFIGURATION_NAME);