From be53772337a25146aa671916f333cef8c48037bb Mon Sep 17 00:00:00 2001
From: _ <>
Date: Sat, 31 Oct 2020 15:46:24 +0000
Subject: [PATCH] :tada: Add parent directory link.
I was way overthinking this one.
---
ptth_handlebars/file_server_dir.html | 2 +-
src/server/file_server.rs | 11 ++++++++---
todo.md | 1 -
3 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/ptth_handlebars/file_server_dir.html b/ptth_handlebars/file_server_dir.html
index d95a06b..831d079 100644
--- a/ptth_handlebars/file_server_dir.html
+++ b/ptth_handlebars/file_server_dir.html
@@ -22,7 +22,7 @@
{{#each entries}}
diff --git a/src/server/file_server.rs b/src/server/file_server.rs
index 7b4723b..2e2e30c 100644
--- a/src/server/file_server.rs
+++ b/src/server/file_server.rs
@@ -257,13 +257,18 @@ pub async fn serve_all (
let encoded_path = &parts.uri [1..];
- let path = percent_decode (encoded_path.as_bytes ()).decode_utf8 ().unwrap ();
+ let path_s = percent_decode (encoded_path.as_bytes ()).decode_utf8 ().unwrap ();
+ let path = Path::new (&*path_s);
let mut full_path = PathBuf::from (root);
- full_path.push (&*path);
+ full_path.push (path);
if let Ok (dir) = read_dir (&full_path).await {
- serve_dir (handlebars, full_path.to_string_lossy (), dir).await
+ serve_dir (
+ handlebars,
+ full_path.to_string_lossy (),
+ dir
+ ).await
}
else if let Ok (file) = File::open (&full_path).await {
serve_file (
diff --git a/todo.md b/todo.md
index 6e11ad8..118e840 100644
--- a/todo.md
+++ b/todo.md
@@ -1,4 +1,3 @@
-- Add ".." for parent directory
- Prevent directory traversal attacks
- Set up tokens or something so clients can't trivially
impersonate servers