diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1806d68f1..52f9d5678 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -22,7 +22,7 @@ env: FRAMEWORK: net6.0 RAW_BRANCH_NAME: ${{ github.head_ref || github.ref_name }} SONARR_MAJOR_VERSION: 4 - VERSION: 4.0.13 + VERSION: 4.0.14 jobs: backend: diff --git a/src/NzbDrone.Core/Download/RejectedImportService.cs b/src/NzbDrone.Core/Download/RejectedImportService.cs index cf048f385..50ca29064 100644 --- a/src/NzbDrone.Core/Download/RejectedImportService.cs +++ b/src/NzbDrone.Core/Download/RejectedImportService.cs @@ -1,4 +1,5 @@ using System.Linq; +using NLog; using NzbDrone.Core.Download.TrackedDownloads; using NzbDrone.Core.Indexers; using NzbDrone.Core.MediaFiles.EpisodeImport; @@ -13,15 +14,17 @@ public interface IRejectedImportService public class RejectedImportService : IRejectedImportService { private readonly ICachedIndexerSettingsProvider _cachedIndexerSettingsProvider; + private readonly Logger _logger; - public RejectedImportService(ICachedIndexerSettingsProvider cachedIndexerSettingsProvider) + public RejectedImportService(ICachedIndexerSettingsProvider cachedIndexerSettingsProvider, Logger logger) { _cachedIndexerSettingsProvider = cachedIndexerSettingsProvider; + _logger = logger; } public bool Process(TrackedDownload trackedDownload, ImportResult importResult) { - if (importResult.Result != ImportResultType.Rejected || importResult.ImportDecision.LocalEpisode == null || trackedDownload.RemoteEpisode?.Release == null) + if (importResult.Result != ImportResultType.Rejected || trackedDownload.RemoteEpisode?.Release == null) { return false; } @@ -38,11 +41,13 @@ public class RejectedImportService : IRejectedImportService if (rejectionReason == ImportRejectionReason.DangerousFile && indexerSettings.FailDownloads.Contains(FailDownloads.PotentiallyDangerous)) { + _logger.Trace("Download '{0}' contains potentially dangerous file, marking as failed", trackedDownload.DownloadItem.Title); trackedDownload.Fail(); } else if (rejectionReason == ImportRejectionReason.ExecutableFile && indexerSettings.FailDownloads.Contains(FailDownloads.Executables)) { + _logger.Trace("Download '{0}' contains executable file, marking as failed", trackedDownload.DownloadItem.Title); trackedDownload.Fail(); } else diff --git a/src/NzbDrone.Core/Download/TrackedDownloads/TrackedDownload.cs b/src/NzbDrone.Core/Download/TrackedDownloads/TrackedDownload.cs index 3f0543b03..485f1ce47 100644 --- a/src/NzbDrone.Core/Download/TrackedDownloads/TrackedDownload.cs +++ b/src/NzbDrone.Core/Download/TrackedDownloads/TrackedDownload.cs @@ -40,6 +40,9 @@ namespace NzbDrone.Core.Download.TrackedDownloads { Status = TrackedDownloadStatus.Error; State = TrackedDownloadState.FailedPending; + + // Set CanBeRemoved to allow the failed item to be removed from the client + DownloadItem.CanBeRemoved = true; } } diff --git a/src/NzbDrone.Core/MediaFiles/FileExtensions.cs b/src/NzbDrone.Core/MediaFiles/FileExtensions.cs index dbd2efb9a..ee55e54b2 100644 --- a/src/NzbDrone.Core/MediaFiles/FileExtensions.cs +++ b/src/NzbDrone.Core/MediaFiles/FileExtensions.cs @@ -23,7 +23,9 @@ namespace NzbDrone.Core.MediaFiles private static List _dangerousExtensions = new List { + ".arj", ".lnk", + ".lzh", ".ps1", ".scr", ".vbs", diff --git a/src/NzbDrone.Core/Sonarr.Core.csproj b/src/NzbDrone.Core/Sonarr.Core.csproj index 2b2ec9042..d0c447caf 100644 --- a/src/NzbDrone.Core/Sonarr.Core.csproj +++ b/src/NzbDrone.Core/Sonarr.Core.csproj @@ -20,7 +20,7 @@ - +