Wikijs Links

pull/67/head
Qstick 3 years ago
parent f25998959e
commit 8b0a8e82b5

@ -2,7 +2,7 @@
[![Build Status](https://dev.azure.com/Prowlarr/Prowlarr/_apis/build/status/Prowlarr.Prowlarr?branchName=develop)](https://dev.azure.com/Prowlarr/Prowlarr/_build/latest?definitionId=1&branchName=develop) [![Build Status](https://dev.azure.com/Prowlarr/Prowlarr/_apis/build/status/Prowlarr.Prowlarr?branchName=develop)](https://dev.azure.com/Prowlarr/Prowlarr/_build/latest?definitionId=1&branchName=develop)
[![Translated](https://translate.servarr.com/widgets/servarr/-/prowlarr/svg-badge.svg)](https://translate.servarr.com/engage/prowlarr/?utm_source=widget) [![Translated](https://translate.servarr.com/widgets/servarr/-/prowlarr/svg-badge.svg)](https://translate.servarr.com/engage/prowlarr/?utm_source=widget)
[![Docker Pulls](https://img.shields.io/docker/pulls/hotio/prowlarr.svg)](https://wiki.servarr.com/Prowlarr_Installation#Docker) [![Docker Pulls](https://img.shields.io/docker/pulls/hotio/prowlarr.svg)](https://wikijs.servarr.com/prowlarr/installation#docker)
![Github Downloads](https://img.shields.io/github/downloads/Prowlarr/Prowlarr/total.svg) ![Github Downloads](https://img.shields.io/github/downloads/Prowlarr/Prowlarr/total.svg)
[![Backers on Open Collective](https://opencollective.com/Prowlarr/backers/badge.svg)](#backers) [![Backers on Open Collective](https://opencollective.com/Prowlarr/backers/badge.svg)](#backers)
[![Sponsors on Open Collective](https://opencollective.com/Prowlarr/sponsors/badge.svg)](#sponsors) [![Sponsors on Open Collective](https://opencollective.com/Prowlarr/sponsors/badge.svg)](#sponsors)
@ -23,7 +23,7 @@ Note: Prowlarr is currently early in life, thus bugs should be expected
[![Discord](https://img.shields.io/badge/discord-chat-7289DA.svg?maxAge=60)](https://prowlarr.com/discord) [![Discord](https://img.shields.io/badge/discord-chat-7289DA.svg?maxAge=60)](https://prowlarr.com/discord)
[![Reddit](https://img.shields.io/badge/reddit-discussion-FF4500.svg?maxAge=60)](https://www.reddit.com/r/Prowlarr) [![Reddit](https://img.shields.io/badge/reddit-discussion-FF4500.svg?maxAge=60)](https://www.reddit.com/r/Prowlarr)
[![GitHub - Bugs and Feature Requests Only](https://img.shields.io/badge/github-issues-red.svg?maxAge=60)](https://github.com/Prowlarr/Prowlarr/issues) [![GitHub - Bugs and Feature Requests Only](https://img.shields.io/badge/github-issues-red.svg?maxAge=60)](https://github.com/Prowlarr/Prowlarr/issues)
[![Wiki](https://img.shields.io/badge/servarr-wiki-181717.svg?maxAge=60)](https://wiki.servarr.com/Prowlarr) [![Wiki](https://img.shields.io/badge/servarr-wiki-181717.svg?maxAge=60)](https://wikijs.servarr.com/prowlarr)
## Feature Requests ## Feature Requests

@ -129,7 +129,7 @@ class FileBrowserModalContent extends Component {
className={styles.mappedDrivesWarning} className={styles.mappedDrivesWarning}
kind={kinds.WARNING} kind={kinds.WARNING}
> >
<Link to="https://wiki.servarr.com/Prowlarr_FAQ#Why_cant_Prowlarr_see_my_files_on_a_remote_server"> <Link to="https://wikijs.servarr.com/prowlarr/faq#why-cant-prowlarr-see-my-files-on-a-remote-server">
{translate('MappedDrivesRunningAsService')} {translate('MappedDrivesRunningAsService')}
</Link> </Link>
</Alert> </Alert>

@ -55,7 +55,7 @@ function UpdateSettings(props) {
type={inputTypes.TEXT} type={inputTypes.TEXT}
name="branch" name="branch"
helpText={usingExternalUpdateMechanism ? translate('BranchUpdateMechanism') : translate('BranchUpdate')} helpText={usingExternalUpdateMechanism ? translate('BranchUpdateMechanism') : translate('BranchUpdate')}
helpLink="https://wiki.servarr.com/Prowlarr_Settings#Updates" helpLink="https://wikijs.servarr.com/prowlarr/settings#updates"
{...branch} {...branch}
onChange={onInputChange} onChange={onInputChange}
readOnly={usingExternalUpdateMechanism} readOnly={usingExternalUpdateMechanism}
@ -92,7 +92,7 @@ function UpdateSettings(props) {
name="updateMechanism" name="updateMechanism"
values={updateOptions} values={updateOptions}
helpText={translate('UpdateMechanismHelpText')} helpText={translate('UpdateMechanismHelpText')}
helpLink="https://wiki.servarr.com/Prowlarr_Settings#Updates" helpLink="https://wikijs.servarr.com/prowlarr/settings#updates"
onChange={onInputChange} onChange={onInputChange}
{...updateMechanism} {...updateMechanism}
/> />

@ -26,7 +26,7 @@ function NotificationEventItems(props) {
<div> <div>
<FormInputHelpText <FormInputHelpText
text={translate('NotifcationTriggersHelpText')} text={translate('NotifcationTriggersHelpText')}
link="https://wiki.servarr.com/Prowlarr_Settings#Connections" link="https://wikijs.servarr.com/prowlarr/settings#connections"
/> />
<div className={styles.events}> <div className={styles.events}>
<div> <div>

@ -13,7 +13,7 @@ function createHealthCheckSelector() {
source: 'UI', source: 'UI',
type: 'warning', type: 'warning',
message: translate('CouldNotConnectSignalR'), message: translate('CouldNotConnectSignalR'),
wikiUrl: 'https://wiki.servarr.com/Prowlarr_System#Could_not_connect_to_signalR' wikiUrl: 'https://wikijs.servarr.com/prowlarr/system#could-not-connect-to-signalr'
}); });
} }

@ -27,7 +27,7 @@ class MoreInfo extends Component {
<DescriptionListItemTitle>Wiki</DescriptionListItemTitle> <DescriptionListItemTitle>Wiki</DescriptionListItemTitle>
<DescriptionListItemDescription> <DescriptionListItemDescription>
<Link to="https://wiki.servarr.com/Prowlarr">wiki.servarr.com/Prowlarr</Link> <Link to="https://wikijs.servarr.com/prowlarr">wikijs.servarr.com/prowlarr</Link>
</DescriptionListItemDescription> </DescriptionListItemDescription>
<DescriptionListItemTitle>Donations</DescriptionListItemTitle> <DescriptionListItemTitle>Donations</DescriptionListItemTitle>

@ -252,7 +252,7 @@
</span> </span>
<a <a
href="https://wiki.servarr.com/Prowlarr_FAQ#Help_I_have_locked_my_self_out_of_Prowlarr_and_do_not_know_the_password" href="https://wikijs.servarr.com/prowlarr/faq#help-i-have-locked-myself-out"
class="forgot-password" class="forgot-password"
>Forgot your password?</a >Forgot your password?</a
> >

@ -1,4 +1,4 @@
using FluentAssertions; using FluentAssertions;
using NUnit.Framework; using NUnit.Framework;
using NzbDrone.Core.HealthCheck; using NzbDrone.Core.HealthCheck;
using NzbDrone.Core.Test.Framework; using NzbDrone.Core.Test.Framework;
@ -8,11 +8,11 @@ namespace NzbDrone.Core.Test.HealthCheck
[TestFixture] [TestFixture]
public class HealthCheckFixture : CoreTest public class HealthCheckFixture : CoreTest
{ {
private const string WikiRoot = "https://wiki.servarr.com/"; private const string WikiRoot = "https://wikijs.servarr.com/";
[TestCase("I blew up because of some weird user mistake", null, WikiRoot + "Prowlarr_System#i_blew_up_because_of_some_weird_user_mistake")] [TestCase("I blew up because of some weird user mistake", null, WikiRoot + "prowlarr/system#i-blew-up-because-of-some-weird-user-mistake")]
[TestCase("I blew up because of some weird user mistake", "#my_health_check", WikiRoot + "Prowlarr_System#my_health_check")] [TestCase("I blew up because of some weird user mistake", "#my-health-check", WikiRoot + "prowlarr/system#my-health-check")]
[TestCase("I blew up because of some weird user mistake", "Custom-Page#my_health_check", WikiRoot + "Custom-Page#my_health_check")] [TestCase("I blew up because of some weird user mistake", "custom-page#my-health-check", WikiRoot + "prowlarr/custom-page#my-health-check")]
public void should_format_wiki_url(string message, string wikiFragment, string expectedUrl) public void should_format_wiki_url(string message, string wikiFragment, string expectedUrl)
{ {
var subject = new NzbDrone.Core.HealthCheck.HealthCheck(typeof(HealthCheckBase), HealthCheckResult.Warning, message, wikiFragment); var subject = new NzbDrone.Core.HealthCheck.HealthCheck(typeof(HealthCheckBase), HealthCheckResult.Warning, message, wikiFragment);

@ -108,10 +108,10 @@ namespace NzbDrone.Core.Datastore
if (OsInfo.IsOsx) if (OsInfo.IsOsx)
{ {
throw new CorruptDatabaseException("Database file: {0} is corrupt, restore from backup if available. See: https://wiki.servarr.com/Prowlarr_FAQ#I_use_Prowlarr_on_a_Mac_and_it_suddenly_stopped_working_What_happened", e, fileName); throw new CorruptDatabaseException("Database file: {0} is corrupt, restore from backup if available. See: https://wikijs.servarr.com/prowlarr/faq#i-use-prowlarr-on-a-mac-and-it-suddenly-stopped-working-what-happened", e, fileName);
} }
throw new CorruptDatabaseException("Database file: {0} is corrupt, restore from backup if available. See: https://wiki.servarr.com/Prowlarr_FAQ#I_am_getting_an_error_Database_disk_image_is_malformed", e, fileName); throw new CorruptDatabaseException("Database file: {0} is corrupt, restore from backup if available. See: https://wikijs.servarr.com/prowlarr/faq#i-am-getting-an-error-database-disk-image-is-malformed", e, fileName);
} }
catch (Exception e) catch (Exception e)
{ {

@ -44,14 +44,14 @@ namespace NzbDrone.Core.HealthCheck.Checks
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Error, HealthCheckResult.Error,
_localizationService.GetLocalizedString("ApplicationStatusCheckAllClientMessage"), _localizationService.GetLocalizedString("ApplicationStatusCheckAllClientMessage"),
"#applications_are_unavailable_due_to_failures"); "#applications-are-unavailable-due-to-failures");
} }
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Warning, HealthCheckResult.Warning,
string.Format(_localizationService.GetLocalizedString("ApplicationStatusCheckSingleClientMessage"), string.Format(_localizationService.GetLocalizedString("ApplicationStatusCheckSingleClientMessage"),
string.Join(", ", backOffProviders.Select(v => v.Provider.Definition.Name))), string.Join(", ", backOffProviders.Select(v => v.Provider.Definition.Name))),
"#applications_are_unavailable_due_to_failures"); "#applications-are-unavailable-due-to-failures");
} }
} }
} }

@ -37,10 +37,10 @@ namespace NzbDrone.Core.HealthCheck.Checks
if (backOffProviders.Count == enabledProviders.Count) if (backOffProviders.Count == enabledProviders.Count)
{ {
return new HealthCheck(GetType(), HealthCheckResult.Error, _localizationService.GetLocalizedString("DownloadClientStatusCheckAllClientMessage"), "#download_clients_are_unavailable_due_to_failures"); return new HealthCheck(GetType(), HealthCheckResult.Error, _localizationService.GetLocalizedString("DownloadClientStatusCheckAllClientMessage"), "#download-clients-are-unavailable-due-to-failures");
} }
return new HealthCheck(GetType(), HealthCheckResult.Warning, string.Format(_localizationService.GetLocalizedString("DownloadClientStatusCheckSingleClientMessage"), string.Join(", ", backOffProviders.Select(v => v.Provider.Definition.Name))), "#download_clients_are_unavailable_due_to_failures"); return new HealthCheck(GetType(), HealthCheckResult.Warning, string.Format(_localizationService.GetLocalizedString("DownloadClientStatusCheckSingleClientMessage"), string.Join(", ", backOffProviders.Select(v => v.Provider.Definition.Name))), "#download-clients-are-unavailable-due-to-failures");
} }
} }
} }

@ -46,14 +46,14 @@ namespace NzbDrone.Core.HealthCheck.Checks
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Error, HealthCheckResult.Error,
_localizationService.GetLocalizedString("IndexerLongTermStatusCheckAllClientMessage"), _localizationService.GetLocalizedString("IndexerLongTermStatusCheckAllClientMessage"),
"#indexers_are_unavailable_due_to_failures"); "#indexers-are-unavailable-due-to-failures");
} }
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Warning, HealthCheckResult.Warning,
string.Format(_localizationService.GetLocalizedString("IndexerLongTermStatusCheckSingleClientMessage"), string.Format(_localizationService.GetLocalizedString("IndexerLongTermStatusCheckSingleClientMessage"),
string.Join(", ", backOffProviders.Select(v => v.Provider.Definition.Name))), string.Join(", ", backOffProviders.Select(v => v.Provider.Definition.Name))),
"#indexers_are_unavailable_due_to_failures"); "#indexers-are-unavailable-due-to-failures");
} }
} }
} }

@ -44,14 +44,14 @@ namespace NzbDrone.Core.HealthCheck.Checks
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Error, HealthCheckResult.Error,
_localizationService.GetLocalizedString("IndexerStatusCheckAllClientMessage"), _localizationService.GetLocalizedString("IndexerStatusCheckAllClientMessage"),
"#indexers_are_unavailable_due_to_failures"); "#indexers-are-unavailable-due-to-failures");
} }
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Warning, HealthCheckResult.Warning,
string.Format(_localizationService.GetLocalizedString("IndexerStatusCheckSingleClientMessage"), string.Format(_localizationService.GetLocalizedString("IndexerStatusCheckSingleClientMessage"),
string.Join(", ", backOffProviders.Select(v => v.Provider.Definition.Name))), string.Join(", ", backOffProviders.Select(v => v.Provider.Definition.Name))),
"#indexers_are_unavailable_due_to_failures"); "#indexers-are-unavailable-due-to-failures");
} }
} }
} }

@ -55,7 +55,7 @@ namespace NzbDrone.Core.HealthCheck.Checks
HealthCheckResult.Warning, HealthCheckResult.Warning,
string.Format(_localizationService.GetLocalizedString("NewznabVipCheckExpiringClientMessage"), string.Format(_localizationService.GetLocalizedString("NewznabVipCheckExpiringClientMessage"),
string.Join(", ", expiringProviders.Select(v => v.Definition.Name))), string.Join(", ", expiringProviders.Select(v => v.Definition.Name))),
"#newznab_vip_expiring"); "#newznab-vip-expiring");
} }
if (!expiredProviders.Empty()) if (!expiredProviders.Empty())
@ -64,7 +64,7 @@ namespace NzbDrone.Core.HealthCheck.Checks
HealthCheckResult.Warning, HealthCheckResult.Warning,
string.Format(_localizationService.GetLocalizedString("NewznabVipCheckExpiredClientMessage"), string.Format(_localizationService.GetLocalizedString("NewznabVipCheckExpiredClientMessage"),
string.Join(", ", expiredProviders.Select(v => v.Definition.Name))), string.Join(", ", expiredProviders.Select(v => v.Definition.Name))),
"#newznab_vip_expired"); "#newznab-vip-expired");
} }
return new HealthCheck(GetType()); return new HealthCheck(GetType());

@ -38,7 +38,7 @@ namespace NzbDrone.Core.HealthCheck.Checks
HealthCheckResult.Warning, HealthCheckResult.Warning,
string.Format(_localizationService.GetLocalizedString("IndexerObsoleteCheckMessage"), string.Format(_localizationService.GetLocalizedString("IndexerObsoleteCheckMessage"),
string.Join(", ", oldIndexers.Select(v => v.Name))), string.Join(", ", oldIndexers.Select(v => v.Name))),
"#indexers_are_obsolete"); "#indexers-are-obsolete");
} }
public override bool CheckOnSchedule => false; public override bool CheckOnSchedule => false;

@ -25,10 +25,10 @@ namespace NzbDrone.Core.HealthCheck.Checks
{ {
if (currentBranch == "develop") if (currentBranch == "develop")
{ {
return new HealthCheck(GetType(), HealthCheckResult.Error, string.Format(_localizationService.GetLocalizedString("ReleaseBranchCheckPreviousVersionMessage"), _configFileService.Branch), "#branch_is_for_a_previous_version"); return new HealthCheck(GetType(), HealthCheckResult.Error, string.Format(_localizationService.GetLocalizedString("ReleaseBranchCheckPreviousVersionMessage"), _configFileService.Branch), "#branch-is-for-a-previous-version");
} }
return new HealthCheck(GetType(), HealthCheckResult.Warning, string.Format(_localizationService.GetLocalizedString("ReleaseBranchCheckOfficialBranchMessage"), _configFileService.Branch), "#branch_is_not_a_valid_release_branch"); return new HealthCheck(GetType(), HealthCheckResult.Warning, string.Format(_localizationService.GetLocalizedString("ReleaseBranchCheckOfficialBranchMessage"), _configFileService.Branch), "#branch-is-not-a-valid-release-branch");
} }
return new HealthCheck(GetType()); return new HealthCheck(GetType());

@ -48,7 +48,7 @@ namespace NzbDrone.Core.HealthCheck.Checks
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Error, HealthCheckResult.Error,
string.Format(_localizationService.GetLocalizedString("UpdateCheckStartupTranslocationMessage"), startupFolder), string.Format(_localizationService.GetLocalizedString("UpdateCheckStartupTranslocationMessage"), startupFolder),
"#cannot_install_update_because_startup_folder_is_in_an_app_translocation_folder."); "#cannot-install-update-because-startup-folder-is-in-an-app-translocation-folder.");
} }
if (!_diskProvider.FolderWritable(startupFolder)) if (!_diskProvider.FolderWritable(startupFolder))
@ -56,7 +56,7 @@ namespace NzbDrone.Core.HealthCheck.Checks
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Error, HealthCheckResult.Error,
string.Format(_localizationService.GetLocalizedString("UpdateCheckStartupNotWritableMessage"), startupFolder, Environment.UserName), string.Format(_localizationService.GetLocalizedString("UpdateCheckStartupNotWritableMessage"), startupFolder, Environment.UserName),
"#cannot_install_update_because_startup_folder_is_not_writable_by_the_user"); "#cannot-install-update-because-startup-folder-is-not-writable-by-the-user");
} }
if (!_diskProvider.FolderWritable(uiFolder)) if (!_diskProvider.FolderWritable(uiFolder))
@ -64,7 +64,7 @@ namespace NzbDrone.Core.HealthCheck.Checks
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Error, HealthCheckResult.Error,
string.Format(_localizationService.GetLocalizedString("UpdateCheckUINotWritableMessage"), uiFolder, Environment.UserName), string.Format(_localizationService.GetLocalizedString("UpdateCheckUINotWritableMessage"), uiFolder, Environment.UserName),
"#cannot_install_update_because_ui_folder_is_not_writable_by_the_user"); "#cannot-install-update-because-ui-folder-is-not-writable-by-the-user");
} }
} }

@ -34,12 +34,12 @@ namespace NzbDrone.Core.HealthCheck
private static string MakeWikiFragment(string message) private static string MakeWikiFragment(string message)
{ {
return "#" + CleanFragmentRegex.Replace(message.ToLower(), string.Empty).Replace(' ', '_'); return "#" + CleanFragmentRegex.Replace(message.ToLower(), string.Empty).Replace(' ', '-');
} }
private static HttpUri MakeWikiUrl(string fragment) private static HttpUri MakeWikiUrl(string fragment)
{ {
return new HttpUri("https://wiki.servarr.com/Prowlarr_System#") + new HttpUri(fragment); return new HttpUri("https://wikijs.servarr.com/prowlarr/system#") + new HttpUri(fragment);
} }
} }

@ -27,7 +27,7 @@ namespace NzbDrone.Core.Notifications.CustomScript
public override string Name => "Custom Script"; public override string Name => "Custom Script";
public override string Link => "https://wiki.servarr.com/Prowlarr_Settings#Connections"; public override string Link => "https://wikijs.servarr.com/prowlarr/settings#connections";
public override ProviderMessage Message => new ProviderMessage("Testing will execute the script with the EventType set to Test, ensure your script handles this correctly", ProviderMessageType.Warning); public override ProviderMessage Message => new ProviderMessage("Testing will execute the script with the EventType set to Test, ensure your script handles this correctly", ProviderMessageType.Warning);

@ -38,10 +38,10 @@ namespace NzbDrone.Core.Notifications.Twitter
AuthorizeNotification = "startOAuth"; AuthorizeNotification = "startOAuth";
} }
[FieldDefinition(0, Label = "Consumer Key", Privacy = PrivacyLevel.ApiKey, HelpText = "Consumer key from a Twitter application", HelpLink = "https://wiki.servarr.com/Useful_Tools#Twitter_Connect")] [FieldDefinition(0, Label = "Consumer Key", Privacy = PrivacyLevel.ApiKey, HelpText = "Consumer key from a Twitter application", HelpLink = "https://wikijs.servarr.com/useful-tools#twitter-connect")]
public string ConsumerKey { get; set; } public string ConsumerKey { get; set; }
[FieldDefinition(1, Label = "Consumer Secret", Privacy = PrivacyLevel.ApiKey, HelpText = "Consumer secret from a Twitter application", HelpLink = "https://wiki.servarr.com/Useful_Tools#Twitter_Connect")] [FieldDefinition(1, Label = "Consumer Secret", Privacy = PrivacyLevel.ApiKey, HelpText = "Consumer secret from a Twitter application", HelpLink = "https://wikijs.servarr.com/useful-tools#twitter-connect")]
public string ConsumerSecret { get; set; } public string ConsumerSecret { get; set; }
[FieldDefinition(2, Label = "Access Token", Privacy = PrivacyLevel.ApiKey, Advanced = true)] [FieldDefinition(2, Label = "Access Token", Privacy = PrivacyLevel.ApiKey, Advanced = true)]

@ -14,7 +14,7 @@ namespace NzbDrone.Core.Notifications.Webhook
_proxy = proxy; _proxy = proxy;
} }
public override string Link => "https://wiki.servarr.com/Prowlarr_Settings#Connect"; public override string Link => "https://wikijs.servarr.com/prowlarr/settings#connect";
public override void OnHealthIssue(HealthCheck.HealthCheck healthCheck) public override void OnHealthIssue(HealthCheck.HealthCheck healthCheck)
{ {

@ -39,7 +39,7 @@ namespace Prowlarr.Api.V1
Fields = SchemaBuilder.ToSchema(definition.Settings), Fields = SchemaBuilder.ToSchema(definition.Settings),
//Radarr_Supported_{0} are custom build redirect pages; if passing a new var, create a new redirect //Radarr_Supported_{0} are custom build redirect pages; if passing a new var, create a new redirect
InfoLink = string.Format("https://wiki.servarr.com/Prowlarr_Supported_{0}", InfoLink = string.Format("https://wikijs.servarr.com/prowlarr/supported_{0}",
definition.Implementation.ToLower()) definition.Implementation.ToLower())
}; };
} }

@ -766,13 +766,13 @@
"source": "ImportMechanismCheck", "source": "ImportMechanismCheck",
"type": "warning", "type": "warning",
"message": "Enable Completed Download Handling", "message": "Enable Completed Download Handling",
"wikiUrl": "https://wiki.servarr.com/Prowlarr_System#Completed.2FFailed_Download_Handling" "wikiUrl": "https://wikijs.servarr.com/prowlarr/system#completed.2FFailed_Download_Handling"
}, },
{ {
"source": "DownloadClientCheck", "source": "DownloadClientCheck",
"type": "error", "type": "error",
"message": "Unable to communicate with qBittorrent. Failed to connect to qBittorrent, check your settings.", "message": "Unable to communicate with qBittorrent. Failed to connect to qBittorrent, check your settings.",
"wikiUrl": "https://wiki.servarr.com/Prowlarr_System#Download_Clients" "wikiUrl": "https://wikijs.servarr.com/prowlarr/system#download-clients"
} }
] ]
} }

Loading…
Cancel
Save