New: Don't allow remote path to start with space

(cherry picked from commit 5ba3ff598770fdf9e5a53d490c8bcbdd6a59c4cc)
This commit is contained in:
Stevie Robinson 2025-05-22 02:56:15 +02:00 committed by Bogdan
parent 09cfdc3fa2
commit ac2d92007e
2 changed files with 18 additions and 2 deletions

View file

@ -96,6 +96,11 @@ private void ValidateMapping(List<RemotePathMapping> existing, RemotePathMapping
throw new ArgumentException("Invalid Host");
}
if (mapping.RemotePath.StartsWith(" "))
{
throw new ArgumentException("Remote Path must not start with a space");
}
var remotePath = new OsPath(mapping.RemotePath);
var localPath = new OsPath(mapping.LocalPath);

View file

@ -1,7 +1,9 @@
using System.Collections.Generic;
using FluentValidation;
using Microsoft.AspNetCore.Mvc;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.RemotePathMappings;
using NzbDrone.Core.Validation;
using NzbDrone.Core.Validation.Paths;
using Radarr.Http;
using Radarr.Http.REST;
@ -21,11 +23,20 @@ public RemotePathMappingController(IRemotePathMappingService remotePathMappingSe
_remotePathMappingService = remotePathMappingService;
SharedValidator.RuleFor(c => c.Host)
.NotEmpty();
.NotEmpty();
// We cannot use IsValidPath here, because it's a remote path, possibly other OS.
SharedValidator.RuleFor(c => c.RemotePath)
.NotEmpty();
.NotEmpty();
SharedValidator.RuleFor(c => c.RemotePath)
.Must(remotePath => !remotePath.IsNotNullOrWhiteSpace() && !remotePath.StartsWith(" "))
.WithMessage("Remote Path must not start with a space");
SharedValidator.RuleFor(c => c.RemotePath)
.Must(remotePath => !remotePath.IsNotNullOrWhiteSpace() && !remotePath.EndsWith(" "))
.WithMessage("Remote Path probably should not end with a space")
.AsWarning();
SharedValidator.RuleFor(c => c.LocalPath)
.Cascade(CascadeMode.Stop)