Преглед на файлове

trim trailing slashes from path substitutions

Luke Pulverenti преди 11 години
родител
ревизия
57c92fa948
променени са 1 файла, в които са добавени 26 реда и са изтрити 0 реда
  1. 26 0
      MediaBrowser.Server.Implementations/Configuration/ServerConfigurationManager.cs

+ 26 - 0
MediaBrowser.Server.Implementations/Configuration/ServerConfigurationManager.cs

@@ -96,10 +96,36 @@ namespace MediaBrowser.Server.Implementations.Configuration
 
 
             ValidateItemByNamePath(newConfig);
             ValidateItemByNamePath(newConfig);
             ValidateTranscodingTempPath(newConfig);
             ValidateTranscodingTempPath(newConfig);
+            ValidatePathSubstitutions(newConfig);
 
 
             base.ReplaceConfiguration(newConfiguration);
             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");
+                }
+            }
+        }
+
         /// <summary>
         /// <summary>
         /// Replaces the item by name path.
         /// Replaces the item by name path.
         /// </summary>
         /// </summary>