diff --git a/MediaBrowser.Server.Implementations/Configuration/ServerConfigurationManager.cs b/MediaBrowser.Server.Implementations/Configuration/ServerConfigurationManager.cs index 5ae3af5e2..db839a66e 100644 --- a/MediaBrowser.Server.Implementations/Configuration/ServerConfigurationManager.cs +++ b/MediaBrowser.Server.Implementations/Configuration/ServerConfigurationManager.cs @@ -96,10 +96,36 @@ namespace MediaBrowser.Server.Implementations.Configuration ValidateItemByNamePath(newConfig); ValidateTranscodingTempPath(newConfig); + ValidatePathSubstitutions(newConfig); base.ReplaceConfiguration(newConfiguration); } + private void ValidatePathSubstitutions(ServerConfiguration newConfig) + { + foreach (var map in newConfig.PathSubstitutions) + { + if (string.IsNullOrWhiteSpace(map.From) || string.IsNullOrWhiteSpace(map.To)) + { + throw new ArgumentException("Invalid path substitution"); + } + + if (!map.From.EndsWith(":\\") && !map.From.EndsWith(":/")) + { + map.From = map.From.TrimEnd('/').TrimEnd('\\'); + } + if (!map.To.EndsWith(":\\") && !map.To.EndsWith(":/")) + { + map.To = map.To.TrimEnd('/').TrimEnd('\\'); + } + + if (string.IsNullOrWhiteSpace(map.From) || string.IsNullOrWhiteSpace(map.To)) + { + throw new ArgumentException("Invalid path substitution"); + } + } + } + /// /// Replaces the item by name path. ///