diff options
Diffstat (limited to 'backend')
-rw-r--r-- | backend/main.py | 31 |
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: |