returnnewHealthCheck(GetType(),HealthCheckResult.Warning,string.Format("Download client {0} places downloads in the root folder {1}. You should not download to a root folder.",client.Definition.Name,folder.FullPath),"#downloads_in_root_folder");
returnnewHealthCheck(GetType(),HealthCheckResult.Error,"All download clients are unavailable due to failures","#download-clients-are-unavailable-due-to-failures");
returnnewHealthCheck(GetType(),HealthCheckResult.Warning,string.Format("Download clients unavailable due to failures: {0}",string.Join(", ",backOffProviders.Select(v=>v.Provider.Definition.Name))),"#download-clients-are-unavailable-due-to-failures");
returnnewHealthCheck(GetType(),HealthCheckResult.Error,"All import lists are unavailable due to failures","#import-lists-are-unavailable-due-to-failures");
returnnewHealthCheck(GetType(),HealthCheckResult.Warning,string.Format("Import lists unavailable due to failures: {0}",string.Join(", ",backOffProviders.Select(v=>v.ImportList.Definition.Name))),"#import-lsits-are-unavailable-due-to-failures");
returnnewHealthCheck(GetType(),HealthCheckResult.Error,"No indexers available with RSS sync enabled, Lidarr will not grab new releases automatically");
returnnewHealthCheck(GetType(),HealthCheckResult.Warning,"No indexers available with Automatic Search enabled, Lidarr will not provide any automatic search results");
returnnewHealthCheck(GetType(),HealthCheckResult.Warning,"No indexers available with Interactive Search enabled, Lidarr will not provide any interactive search results");
returnnewHealthCheck(GetType(),HealthCheckResult.Warning,string.Format("Indexers unavailable due to failures: {0}",string.Join(", ",backOffProviders.Select(v=>v.Provider.Definition.Name))),"#indexers-are-unavailable-due-to-failures");
returnnewHealthCheck(GetType(),HealthCheckResult.Error,"Mount containing a artist path is mounted read-only: "+string.Join(",",mounts.Select(m=>m.Name)),"#artist-mount-ro");
returnnewHealthCheck(GetType(),HealthCheckResult.Error,string.Format("Failed to resolve the IP Address for the Configured Proxy Host {0}",_configService.ProxyHostname));
returnnewHealthCheck(GetType(),HealthCheckResult.Warning,"You have set up Redacted as a Gazelle indexer, please reconfigure using the Redacted indexer setting");
returnnewHealthCheck(GetType(),HealthCheckResult.Warning,"You have set up Redacted as a Gazelle indexer, please reconfigure using the Redacted indexer setting");
returnnewHealthCheck(GetType(),HealthCheckResult.Error,$"Remote download client {client.Definition.Name} places downloads in {folder.FullPath} but this is not a valid {_osInfo.Name} path. Review your remote path mappings and download client settings.","#bad-remote-path-mapping");
returnnewHealthCheck(GetType(),HealthCheckResult.Error,$"You are using docker; download client {client.Definition.Name} places downloads in {folder.FullPath} but this is not a valid {_osInfo.Name} path. Review your remote path mappings and download client settings.","#docker-bad-remote-path-mapping");
returnnewHealthCheck(GetType(),HealthCheckResult.Error,$"Local download client {client.Definition.Name} places downloads in {folder.FullPath} but this is not a valid {_osInfo.Name} path. Review your download client settings.","#bad-download-client-settings");
returnnewHealthCheck(GetType(),HealthCheckResult.Error,$"You are using docker; download client {client.Definition.Name} places downloads in {folder.FullPath} but this directory does not appear to exist inside the container. Review your remote path mappings and container volume settings.","#docker-bad-remote-path-mapping");
returnnewHealthCheck(GetType(),HealthCheckResult.Error,$"Remote download client {client.Definition.Name} places downloads in {folder.FullPath} but this directory does not appear to exist. Likely missing or incorrect remote path mapping.","#bad-remote-path-mapping");
returnnewHealthCheck(GetType(),HealthCheckResult.Error,$"Download client {client.Definition.Name} places downloads in {folder.FullPath} but Lidarr cannot see this directory. You may need to adjust the folder's permissions.","#permissions-error");
returnnewHealthCheck(GetType(),HealthCheckResult.Error,$"Lidarr can see but not access downloaded track {trackPath}. Likely permissions error.","#permissions-error");
returnnewHealthCheck(GetType(),HealthCheckResult.Error,$"Remote download client {client.Definition.Name} reported files in {dlpath} but this is not a valid {_osInfo.Name} path. Review your remote path mappings and download client settings.","#bad-remote-path-mapping");
returnnewHealthCheck(GetType(),HealthCheckResult.Error,$"You are using docker; download client {client.Definition.Name} reported files in {dlpath} but this is not a valid {_osInfo.Name} path. Review your remote path mappings and download client settings.","#docker-bad-remote-path-mapping");
returnnewHealthCheck(GetType(),HealthCheckResult.Error,$"Local download client {client.Definition.Name} reported files in {dlpath} but this is not a valid {_osInfo.Name} path. Review your download client settings.","#bad-download-client-settings");
returnnewHealthCheck(GetType(),HealthCheckResult.Error,$"Lidarr can see but not access download directory {dlpath}. Likely permissions error.","#permissions-error");
// if it's a remote client/docker, likely missing path mappings
// if it's a remote client/docker, likely missing path mappings
if(_osInfo.IsDocker)
if(_osInfo.IsDocker)
{
{
returnnewHealthCheck(GetType(),HealthCheckResult.Error,$"You are using docker; download client {client.Definition.Name} reported files in {dlpath} but this directory does not appear to exist inside the container. Review your remote path mappings and container volume settings.","#docker-bad-remote-path-mapping");
returnnewHealthCheck(GetType(),HealthCheckResult.Error,$"Remote download client {client.Definition.Name} reported files in {dlpath} but this directory does not appear to exist. Likely missing remote path mapping.","#bad-remote-path-mapping");
// path mappings shouldn't be needed locally so probably a permissions issue
// path mappings shouldn't be needed locally so probably a permissions issue
returnnewHealthCheck(GetType(),HealthCheckResult.Error,$"Download client {client.Definition.Name} reported files in {dlpath} but Lidarr cannot see this directory. You may need to adjust the folder's permissions.","#permissions-error");
_logger.Error("System time mismatch. SystemTime: {0} Expected Time: {1}. Update system time",systemTime,result.DateTimeUtc);
_logger.Error("System time mismatch. SystemTime: {0} Expected Time: {1}. Update system time",systemTime,result.DateTimeUtc);
returnnewHealthCheck(GetType(),HealthCheckResult.Error,$"System time is off by more than 1 day. Scheduled tasks may not run correctly until the time is corrected");
"IndexerDownloadClientHelpText":"Specify which download client is used for grabs from this indexer",
"IndexerDownloadClientHelpText":"Specify which download client is used for grabs from this indexer",
"IndexerIdHelpText":"Specify what indexer the profile applies to",
"IndexerIdHelpText":"Specify what indexer the profile applies to",
"IndexerIdHelpTextWarning":"Using a specific indexer with preferred words can lead to duplicate releases being grabbed",
"IndexerIdHelpTextWarning":"Using a specific indexer with preferred words can lead to duplicate releases being grabbed",
"IndexerJackettAll":"Indexers using the unsupported Jackett 'all' endpoint: {0}",
"IndexerLongTermStatusCheckAllClientMessage":"All indexers are unavailable due to failures for more than 6 hours",
"IndexerLongTermStatusCheckSingleClientMessage":"Indexers unavailable due to failures for more than 6 hours: {0}",
"IndexerPriority":"Indexer Priority",
"IndexerPriority":"Indexer Priority",
"IndexerRssHealthCheckNoAvailableIndexers":"All rss-capable indexers are temporarily unavailable due to recent indexer errors",
"IndexerRssHealthCheckNoIndexers":"No indexers available with RSS sync enabled, Lidarr will not grab new releases automatically",
"IndexerSearchCheckNoAutomaticMessage":"No indexers available with Automatic Search enabled, Lidarr will not provide any automatic search results",
"IndexerSearchCheckNoAvailableIndexersMessage":"All search-capable indexers are temporarily unavailable due to recent indexer errors",
"IndexerSearchCheckNoInteractiveMessage":"No indexers available with Interactive Search enabled, Lidarr will not provide any interactive search results",
"IndexerSettings":"Indexer Settings",
"IndexerSettings":"Indexer Settings",
"IndexerStatusCheckAllClientMessage":"All indexers are unavailable due to failures",
"IndexerStatusCheckSingleClientMessage":"Indexers unavailable due to failures: {0}",
"IndexerTagHelpText":"Only use this indexer for artist with at least one matching tag. Leave blank to use with all artists.",
"IndexerTagHelpText":"Only use this indexer for artist with at least one matching tag. Leave blank to use with all artists.",
"Indexers":"Indexers",
"Indexers":"Indexers",
"Info":"Info",
"Info":"Info",
@ -500,6 +519,7 @@
"MonitoringOptions":"Monitoring Options",
"MonitoringOptions":"Monitoring Options",
"MonitoringOptionsHelpText":"Which albums should be monitored after the artist is added (one-time adjustment)",
"MonitoringOptionsHelpText":"Which albums should be monitored after the artist is added (one-time adjustment)",
"MoreInfo":"More Info",
"MoreInfo":"More Info",
"MountCheckMessage":"Mount containing a movie path is mounted read-only: ",
"MoveAutomatically":"Move Automatically",
"MoveAutomatically":"Move Automatically",
"MoveFiles":"Move Files",
"MoveFiles":"Move Files",
"MultiDiscTrackFormat":"Multi Disc Track Format",
"MultiDiscTrackFormat":"Multi Disc Track Format",
@ -600,6 +620,9 @@
"ProtocolHelpText":"Choose which protocol(s) to use and which one is preferred when choosing between otherwise equal releases",
"ProtocolHelpText":"Choose which protocol(s) to use and which one is preferred when choosing between otherwise equal releases",
"Proxy":"Proxy",
"Proxy":"Proxy",
"ProxyBypassFilterHelpText":"Use ',' as a separator, and '*.' as a wildcard for subdomains",
"ProxyBypassFilterHelpText":"Use ',' as a separator, and '*.' as a wildcard for subdomains",
"ProxyCheckBadRequestMessage":"Failed to test proxy. StatusCode: {0}",
"ProxyCheckFailedToTestMessage":"Failed to test proxy: {0}",
"ProxyCheckResolveIpMessage":"Failed to resolve the IP Address for the Configured Proxy Host {0}",
"ProxyPasswordHelpText":"You only need to enter a username and password if one is required. Leave them blank otherwise.",
"ProxyPasswordHelpText":"You only need to enter a username and password if one is required. Leave them blank otherwise.",
"ProxyType":"Proxy Type",
"ProxyType":"Proxy Type",
"ProxyUsernameHelpText":"You only need to enter a username and password if one is required. Leave them blank otherwise.",
"ProxyUsernameHelpText":"You only need to enter a username and password if one is required. Leave them blank otherwise.",
@ -644,6 +667,21 @@
"Reload":"Reload",
"Reload":"Reload",
"RemotePath":"Remote Path",
"RemotePath":"Remote Path",
"RemotePathHelpText":"Root path to the directory that the Download Client accesses",
"RemotePathHelpText":"Root path to the directory that the Download Client accesses",
"RemotePathMappingCheckBadDockerPath":"You are using docker; download client {0} places downloads in {1} but this is not a valid {2} path. Review your remote path mappings and download client settings.",
"RemotePathMappingCheckDockerFolderMissing":"You are using docker; download client {0} places downloads in {1} but this directory does not appear to exist inside the container. Review your remote path mappings and container volume settings.",
"RemotePathMappingCheckDownloadPermissions":"Lidarr can see but not access downloaded movie {0}. Likely permissions error.",
"RemotePathMappingCheckFileRemoved":"File {0} was removed part way through processing.",
"RemotePathMappingCheckFilesBadDockerPath":"You are using docker; download client {0} reported files in {1} but this is not a valid {2} path. Review your remote path mappings and download client settings.",
"RemotePathMappingCheckFilesGenericPermissions":"Download client {0} reported files in {1} but Lidarr cannot see this directory. You may need to adjust the folder's permissions.",
"RemotePathMappingCheckFilesLocalWrongOSPath":"Local download client {0} reported files in {1} but this is not a valid {2} path. Review your download client settings.",
"RemotePathMappingCheckFilesWrongOSPath":"Remote download client {0} reported files in {1} but this is not a valid {2} path. Review your remote path mappings and download client settings.",
"RemotePathMappingCheckFolderPermissions":"Lidarr can see but not access download directory {0}. Likely permissions error.",
"RemotePathMappingCheckGenericPermissions":"Download client {0} places downloads in {1} but Lidarr cannot see this directory. You may need to adjust the folder's permissions.",
"RemotePathMappingCheckImportFailed":"Lidarr failed to import a movie. Check your logs for details.",
"RemotePathMappingCheckLocalFolderMissing":"Remote download client {0} places downloads in {1} but this directory does not appear to exist. Likely missing or incorrect remote path mapping.",
"RemotePathMappingCheckLocalWrongOSPath":"Local download client {0} places downloads in {1} but this is not a valid {2} path. Review your download client settings.",
"RemotePathMappingCheckRemoteDownloadClient":"Remote download client {0} reported files in {1} but this directory does not appear to exist. Likely missing remote path mapping.",
"RemotePathMappingCheckWrongOSPath":"Remote download client {0} places downloads in {1} but this is not a valid {2} path. Review your remote path mappings and download client settings.",
"RemotePathMappings":"Remote Path Mappings",
"RemotePathMappings":"Remote Path Mappings",
"Remove":"Remove",
"Remove":"Remove",
"RemoveCompleted":"Remove Completed",
"RemoveCompleted":"Remove Completed",
@ -695,6 +733,8 @@
"RetentionHelpText":"Usenet only: Set to zero to set for unlimited retention",
"RetentionHelpText":"Usenet only: Set to zero to set for unlimited retention",
"RetryingDownloadInterp":"Retrying download {0} at {1}",
"RetryingDownloadInterp":"Retrying download {0} at {1}",
"RootFolder":"Root Folder",
"RootFolder":"Root Folder",
"RootFolderCheckMultipleMessage":"Multiple root folders are missing: {0}",
"RootFolderPathHelpText":"Root Folder list items will be added to",
"RootFolderPathHelpText":"Root Folder list items will be added to",
"RootFolders":"Root Folders",
"RootFolders":"Root Folders",
@ -799,6 +839,7 @@
"SupportsSearchvalueWillBeUsedWhenAutomaticSearchesArePerformedViaTheUIOrByLidarr":"Will be used when automatic searches are performed via the UI or by Lidarr",
"SupportsSearchvalueWillBeUsedWhenAutomaticSearchesArePerformedViaTheUIOrByLidarr":"Will be used when automatic searches are performed via the UI or by Lidarr",
"SupportsSearchvalueWillBeUsedWhenInteractiveSearchIsUsed":"Will be used when interactive search is used",
"SupportsSearchvalueWillBeUsedWhenInteractiveSearchIsUsed":"Will be used when interactive search is used",
"System":"System",
"System":"System",
"SystemTimeCheckMessage":"System time is off by more than 1 day. Scheduled tasks may not run correctly until the time is corrected",
"TBA":"TBA",
"TBA":"TBA",
"TagAudioFilesWithMetadata":"Tag Audio Files with Metadata",
"TagAudioFilesWithMetadata":"Tag Audio Files with Metadata",
"TagIsNotUsedAndCanBeDeleted":"Tag is not used and can be deleted",
"TagIsNotUsedAndCanBeDeleted":"Tag is not used and can be deleted",
@ -897,6 +938,10 @@
"UnmonitoredOnly":"Unmonitored Only",
"UnmonitoredOnly":"Unmonitored Only",
"UpdateAll":"Update all",
"UpdateAll":"Update all",
"UpdateAutomaticallyHelpText":"Automatically download and install updates. You will still be able to install from System: Updates",
"UpdateAutomaticallyHelpText":"Automatically download and install updates. You will still be able to install from System: Updates",
"UpdateAvailable":"New update is available",
"UpdateCheckStartupNotWritableMessage":"Cannot install update because startup folder '{0}' is not writable by the user '{1}'.",
"UpdateCheckStartupTranslocationMessage":"Cannot install update because startup folder '{0}' is in an App Translocation folder.",
"UpdateCheckUINotWritableMessage":"Cannot install update because UI folder '{0}' is not writable by the user '{1}'.",
"UpdateMechanismHelpText":"Use Lidarr's built-in updater or a script",
"UpdateMechanismHelpText":"Use Lidarr's built-in updater or a script",
"UpdateScriptPathHelpText":"Path to a custom script that takes an extracted update package and handle the remainder of the update process",
"UpdateScriptPathHelpText":"Path to a custom script that takes an extracted update package and handle the remainder of the update process",