diff options
| -rw-r--r-- | __pycache__/main.cpython-314.pyc | bin | 0 -> 2884 bytes | |||
| -rw-r--r-- | index.html | 19 | ||||
| -rw-r--r-- | main.py | 64 | ||||
| -rw-r--r-- | script.js | 0 | ||||
| -rw-r--r-- | style.css | 0 |
5 files changed, 83 insertions, 0 deletions
diff --git a/__pycache__/main.cpython-314.pyc b/__pycache__/main.cpython-314.pyc Binary files differnew file mode 100644 index 0000000..933130a --- /dev/null +++ b/__pycache__/main.cpython-314.pyc diff --git a/index.html b/index.html new file mode 100644 index 0000000..8736890 --- /dev/null +++ b/index.html @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="UTF-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <link rel="stylesheet" href="/style.css"> + <title>altaf-files</title> +</head> +<body> + <div class="sidebar"> + <a href="/"><img class="sidebar-img" src="" alt=""></a> + <span class="sidebar-text">altaf-files</span> + </div> + <div class="content"> + {{content}} + </div> +</body> +</html> @@ -0,0 +1,64 @@ +import fastapi +from fastapi.middleware.cors import CORSMiddleware +import fastapi.staticfiles +import fastapi.responses +from pydantic import BaseModel +from pathlib import Path +import os +import html + +print("Hello, world!") + +FOLDER_PATH = Path("/Users/altaf/").resolve() +# FOLDER_PATH = "/var/files" + +app = fastapi.FastAPI(title="altaf-files", decscription="altaf-files backend", version="1.0") + +origins = [ + "http://localhost", + "http://localhost:9092", + "https://files.altafcreator.com", +] + +app.add_middleware( + CORSMiddleware, + allow_origins=origins, + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], +) + + +@app.get("/{path:path}") +def folder(path: str): + target_path = (FOLDER_PATH / path).resolve() + + if FOLDER_PATH not in target_path.parents and target_path != FOLDER_PATH: + return fastapi.responses.Response(status_code=403, content="Access denied.") + + is_file = False + + if target_path.is_file(): + is_file = True + return fastapi.responses.FileResponse(target_path) + elif not target_path.is_dir(): + return fastapi.responses.Response(status_code=404) + + content = f"<p>/{path}</p><a href='..'>../</a><br>" + + for item in sorted(target_path.iterdir()): + safe_child_path = html.escape(item.name) + + href_path = "" + if path == "": + href_path = f"/{safe_child_path}" + else: + href_path = f"/{path.rstrip('/')}/{safe_child_path}" + + filetype_string = "📂" + if (target_path / safe_child_path).resolve().is_file(): + filetype_string = "📄" + + content += f"<a href='{href_path}'>{filetype_string} {safe_child_path}</a><br>" + + return fastapi.responses.Response(content=content, media_type="text/html", status_code=200) diff --git a/script.js b/script.js new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/script.js diff --git a/style.css b/style.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/style.css |
