summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraltaf-creator <dev@altafcreator.com>2026-06-18 15:45:40 +0800
committeraltaf-creator <dev@altafcreator.com>2026-06-18 15:45:40 +0800
commit3525abf99fa3e6f41028cb7e93c8e58eb3f0a9c6 (patch)
tree65a0a1c003a39a6a6493801225ef3f52013f98ab
initial commit working
-rw-r--r--__pycache__/main.cpython-314.pycbin0 -> 2884 bytes
-rw-r--r--index.html19
-rw-r--r--main.py64
-rw-r--r--script.js0
-rw-r--r--style.css0
5 files changed, 83 insertions, 0 deletions
diff --git a/__pycache__/main.cpython-314.pyc b/__pycache__/main.cpython-314.pyc
new file mode 100644
index 0000000..933130a
--- /dev/null
+++ b/__pycache__/main.cpython-314.pyc
Binary files differ
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>
diff --git a/main.py b/main.py
new file mode 100644
index 0000000..dae6661
--- /dev/null
+++ b/main.py
@@ -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