diff --git a/SafeExamBrowser.Browser/Handlers/DownloadHandler.cs b/SafeExamBrowser.Browser/Handlers/DownloadHandler.cs index 6f843ec8..1590741f 100644 --- a/SafeExamBrowser.Browser/Handlers/DownloadHandler.cs +++ b/SafeExamBrowser.Browser/Handlers/DownloadHandler.cs @@ -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)); } diff --git a/SafeExamBrowser.Configuration.Contracts/AppConfig.cs b/SafeExamBrowser.Configuration.Contracts/AppConfig.cs index df81f47b..322527f8 100644 --- a/SafeExamBrowser.Configuration.Contracts/AppConfig.cs +++ b/SafeExamBrowser.Configuration.Contracts/AppConfig.cs @@ -91,6 +91,11 @@ namespace SafeExamBrowser.Configuration.Contracts /// public string ConfigurationFileExtension { get; set; } + /// + /// The MIME type of configuration files for the application. + /// + public string ConfigurationFileMimeType { get; set; } + /// /// The build version of the application. /// diff --git a/SafeExamBrowser.Configuration/ConfigurationData/DataValues.cs b/SafeExamBrowser.Configuration/ConfigurationData/DataValues.cs index b1ed4eee..07a3227d 100644 --- a/SafeExamBrowser.Configuration/ConfigurationData/DataValues.cs +++ b/SafeExamBrowser.Configuration/ConfigurationData/DataValues.cs @@ -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);