Fixed: Filter mapped drives when running from service

This commit is contained in:
Qstick 2018-09-04 22:38:48 -04:00
commit 68aaa49e9f
6 changed files with 51 additions and 4 deletions

View file

@ -50,6 +50,7 @@ namespace Lidarr.Api.V1.Artist
IManageCommandQueue commandQueueManager,
IRootFolderService rootFolderService,
RootFolderValidator rootFolderValidator,
MappedNetworkDriveValidator mappedNetworkDriveValidator,
ArtistPathValidator artistPathValidator,
ArtistExistsValidator artistExistsValidator,
ArtistAncestorValidator artistAncestorValidator,
@ -83,6 +84,7 @@ namespace Lidarr.Api.V1.Artist
.Cascade(CascadeMode.StopOnFirstFailure)
.IsValidPath()
.SetValidator(rootFolderValidator)
.SetValidator(mappedNetworkDriveValidator)
.SetValidator(artistPathValidator)
.SetValidator(artistAncestorValidator)
.SetValidator(systemFolderValidator)

View file

@ -111,6 +111,10 @@
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Lidarr.Api.V1\Lidarr.Api.V1.csproj">
<Project>{7140ff1f-79be-492f-9188-b21a050bf708}</Project>
<Name>Lidarr.Api.V1</Name>
</ProjectReference>
<ProjectReference Include="..\NzbDrone.Common\NzbDrone.Common.csproj">
<Project>{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}</Project>
<Name>NzbDrone.Common</Name>

View file

@ -15,6 +15,7 @@ namespace NzbDrone.Common.Disk
public class FileSystemLookupService : IFileSystemLookupService
{
private readonly IDiskProvider _diskProvider;
private readonly IRuntimeInfo _runtimeInfo;
private readonly HashSet<string> _setToRemove = new HashSet<string>
{
@ -46,9 +47,10 @@ namespace NzbDrone.Common.Disk
"@eadir"
};
public FileSystemLookupService(IDiskProvider diskProvider)
public FileSystemLookupService(IDiskProvider diskProvider, IRuntimeInfo runtimeInfo)
{
_diskProvider = diskProvider;
_runtimeInfo = runtimeInfo;
}
public FileSystemResult LookupContents(string query, bool includeFiles, bool allowFoldersWithoutTrailingSlashes)
@ -88,6 +90,16 @@ namespace NzbDrone.Common.Disk
private List<FileSystemModel> GetDrives()
{
return _diskProvider.GetMounts()
.Where(d =>
{
// Fow Windows Services, exclude mapped network drives.
if (_runtimeInfo.IsWindowsService)
{
return d.DriveType != DriveType.Network;
}
return true;
})
.Select(d => new FileSystemModel
{
Type = FileSystemEntityType.Drive,