aboutsummaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
Diffstat (limited to 'backend')
-rw-r--r--backend/main.py31
1 files changed, 21 insertions, 10 deletions
diff --git a/backend/main.py b/backend/main.py
index 716ca13..592b7a3 100644
--- a/backend/main.py
+++ b/backend/main.py
@@ -11,14 +11,13 @@ def playout(filename, content = "text/html"):
def home():
return ["", [('Content-Type','text/html'), ("Location", config.homepage)], "302 Home"]
-def target_filename_internal(session, file):
- target = ""
- if not file:
- file = ""
+def target_filename_internal(session, filename):
+ target = session["path"] + "/"
+ if filename:
+ target += filename
if config.user_subdirs:
- target = session["user"] + "/"
- return target + session["path"] + "/" + file
-
+ target = session["user"] + "/" + target
+ return target
def target_filename(session, file):
return config.fileroot + target_filename_internal(session, file)
@@ -37,11 +36,23 @@ def resolve_alias(alias):
return session
def listing(session):
- target = target_filename(session, None)
- files = os.listdir(target)
- return [json.dumps(files), [('Content-Type','application/json')], "200 OK"]
+ listing = {"total": 0, "files": []}
+ if 'r' not in session["access"]:
+ return ["", [('Content-Type','text/html')], "403 No"]
+
+ directory = target_filename(session, None)
+ files = os.listdir(directory)
+
+ for filename in files:
+ size = os.path.getsize(directory + filename)
+ listing["files"].append({"name": filename, "size": size})
+ listing["total"] += size
+
+ return [json.dumps(listing), [('Content-Type','application/json')], "200 OK"]
def upload(session, post):
+ if 'c' not in session["access"]:
+ return ["", [('Content-Type','text/html')], "403 No"]
if post["file"].filename:
target = target_filename(session, os.path.basename(post["file"].filename))
try: