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)
{
var uri = new Uri(downloadItem.Url);
var extension = Path.GetExtension(uri.AbsolutePath);
var isConfigFile = String.Equals(extension, appConfig.ConfigurationFileExtension, StringComparison.OrdinalIgnoreCase);
var uriExtension = Path.GetExtension(uri.AbsolutePath);
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}'.");
if (isConfigFile)
if (isConfigurationFile)
{
Task.Run(() => RequestConfigurationFileDownload(downloadItem, callback));
}

View file

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

View file

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