mirror of
https://gitlab.com/sbrl/GalleryShare.git
synced 2018-06-12 22:45:16 +00:00
Escape paths sent to the browser to avoid awkward pathing issues.
This commit is contained in:
parent
d777ada143
commit
b443508c42
2 changed files with 5 additions and 4 deletions
|
@ -24,7 +24,7 @@ namespace GalleryShare
|
||||||
|
|
||||||
Dictionary<string, string> pathReplacements = new Dictionary<string, string>()
|
Dictionary<string, string> pathReplacements = new Dictionary<string, string>()
|
||||||
{
|
{
|
||||||
{ "%20", " " }
|
["%20"] = " "
|
||||||
};
|
};
|
||||||
|
|
||||||
public int Port { get { return port; } }
|
public int Port { get { return port; } }
|
||||||
|
@ -118,6 +118,7 @@ namespace GalleryShare
|
||||||
string result = Path.GetFullPath(Path.Combine(servingDirectory, "." + rawUrl));
|
string result = Path.GetFullPath(Path.Combine(servingDirectory, "." + rawUrl));
|
||||||
if(result.IndexOf("?") != -1)
|
if(result.IndexOf("?") != -1)
|
||||||
result = result.Substring(0, result.IndexOf("?"));
|
result = result.Substring(0, result.IndexOf("?"));
|
||||||
|
result = Uri.UnescapeDataString(result);
|
||||||
foreach (KeyValuePair<string, string> replacePair in pathReplacements)
|
foreach (KeyValuePair<string, string> replacePair in pathReplacements)
|
||||||
result = result.Replace(replacePair.Key, replacePair.Value);
|
result = result.Replace(replacePair.Key, replacePair.Value);
|
||||||
return result;
|
return result;
|
||||||
|
|
|
@ -46,7 +46,7 @@ namespace GalleryShare.RequestRouter
|
||||||
await xmlData.WriteStartDocumentAsync();
|
await xmlData.WriteStartDocumentAsync();
|
||||||
await xmlData.WriteProcessingInstructionAsync("xml-stylesheet", "type=\"text/xsl\" href=\"/!Transform-DirListing.xslt\"");
|
await xmlData.WriteProcessingInstructionAsync("xml-stylesheet", "type=\"text/xsl\" href=\"/!Transform-DirListing.xslt\"");
|
||||||
await xmlData.WriteStartElementAsync(null, "DirectoryListing", null);
|
await xmlData.WriteStartElementAsync(null, "DirectoryListing", null);
|
||||||
await xmlData.WriteElementStringAsync(null, "CurrentDirectory", null, cycle.Request.RawUrl);
|
await xmlData.WriteElementStringAsync(null, "CurrentDirectory", null, Uri.EscapeDataString(cycle.Request.RawUrl));
|
||||||
await xmlData.WriteStartElementAsync(null, "Contents", null);
|
await xmlData.WriteStartElementAsync(null, "Contents", null);
|
||||||
|
|
||||||
foreach (string directoryName in dirDirectories)
|
foreach (string directoryName in dirDirectories)
|
||||||
|
@ -54,7 +54,7 @@ namespace GalleryShare.RequestRouter
|
||||||
await xmlData.WriteStartElementAsync(null, "ListingEntry", null);
|
await xmlData.WriteStartElementAsync(null, "ListingEntry", null);
|
||||||
await xmlData.WriteAttributeStringAsync(null, "Type", null, "Directory");
|
await xmlData.WriteAttributeStringAsync(null, "Type", null, "Directory");
|
||||||
|
|
||||||
await xmlData.WriteElementStringAsync(null, "Name", null, "/" + directoryName.Substring(parentServer.ServingDirectory.Length));
|
await xmlData.WriteElementStringAsync(null, "Name", null, Uri.EscapeDataString("/" + directoryName.Substring(parentServer.ServingDirectory.Length)));
|
||||||
await xmlData.WriteElementStringAsync(null, "ItemCount", null, Directory.GetFileSystemEntries(directoryName).Length.ToString());
|
await xmlData.WriteElementStringAsync(null, "ItemCount", null, Directory.GetFileSystemEntries(directoryName).Length.ToString());
|
||||||
|
|
||||||
await xmlData.WriteEndElementAsync();
|
await xmlData.WriteEndElementAsync();
|
||||||
|
@ -64,7 +64,7 @@ namespace GalleryShare.RequestRouter
|
||||||
await xmlData.WriteStartElementAsync(null, "ListingEntry", null);
|
await xmlData.WriteStartElementAsync(null, "ListingEntry", null);
|
||||||
await xmlData.WriteAttributeStringAsync(null, "Type", null, "File");
|
await xmlData.WriteAttributeStringAsync(null, "Type", null, "File");
|
||||||
|
|
||||||
await xmlData.WriteElementStringAsync(null, "Name", null, "/" + filename.Substring(parentServer.ServingDirectory.Length));
|
await xmlData.WriteElementStringAsync(null, "Name", null, Uri.EscapeDataString("/" + filename.Substring(parentServer.ServingDirectory.Length)));
|
||||||
|
|
||||||
await xmlData.WriteEndElementAsync();
|
await xmlData.WriteEndElementAsync();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue