diff options
-rw-r--r-- | backend/main.py | 53 |
1 files changed, 26 insertions, 27 deletions
diff --git a/backend/main.py b/backend/main.py index 1cf577d..d1042d8 100644 --- a/backend/main.py +++ b/backend/main.py @@ -11,36 +11,36 @@ def playout(filename, content = "text/html"): def redirect(target): return ["", [('Content-Type','text/html'), ("Location", target)], "302 Redirect"] -def target_filename_internal(session, filename): - target = session["path"] + "/" +def target_filename_internal(alias, filename): + target = alias["path"] + "/" if filename: target += filename if config.user_subdirs: - target = session["user"] + "/" + target + target = alias["user"] + "/" + target return target -def target_filename(session, file): - return config.fileroot + target_filename_internal(session, file) +def target_filename(alias, file): + return config.fileroot + target_filename_internal(alias, file) def resolve_alias(alias): - session = None + resolved = None db = sqlite3.connect(config.database, check_same_thread = False) cursor = db.cursor() cursor.execute("SELECT user, real, access, storage, display FROM aliases WHERE alias=:alias", {"alias": alias}) data = cursor.fetchone() if data: - session = {"user": data[0], "path": data[1], "access": data[2], "limit": data[3], "display": data[4]} + resolved = {"user": data[0], "path": data[1], "access": data[2], "limit": data[3], "display": data[4]} else: print("Unknown alias " + alias) db.close() - return session + return resolved -def listing(session): - listing = {"total": 0, "files": [], "access": session["access"], "display": session["display"]} +def listing(alias): + listing = {"total": 0, "files": [], "access": alias["access"], "display": alias["display"]} # TODO make sorting configurable - if 'r' in session["access"]: - directory = target_filename(session, None) + if 'r' in alias["access"]: + directory = target_filename(alias, None) files = sorted(os.listdir(directory)) for filename in files: @@ -51,11 +51,11 @@ def listing(session): return [json.dumps(listing), [('Content-Type','application/json')], "200 OK"] -def upload(session, post): - if 'c' not in session["access"]: +def upload(alias, post): + if 'c' not in alias["access"]: return ["", [('Content-Type','text/html')], "403 No"] if post["file"].filename: - target = target_filename(session, os.path.basename(post["file"].filename)) + target = target_filename(alias, os.path.basename(post["file"].filename)) while os.path.isfile(target): target += "_dup" @@ -71,31 +71,31 @@ def upload(session, post): print("Upload failed") return ["", [('Content-Type','text/html')], "500 Error"] -def route(path, env, session, post): +def route(path, env, post): # Get mapped user/path/limits - session = resolve_alias(path[0]) + alias = resolve_alias(path[0]) - if not session: + if not alias: return redirect(config.homepage) - #print(json.dumps(session)) + #print(json.dumps(alias)) # Redirect if no slash after alias if len(path) == 1: return redirect(path[0] + "/"); if len(path) > 1 and path[1] == "upload": - return upload(session, post) + return upload(alias, post) if len(path) > 1 and path[1] == "listing": - return listing(session) + return listing(alias) if len(path) > 1 and path[1] == "file": - print("/data/" + target_filename_internal(session, path[2])) - return playout("/data/" + target_filename_internal(session, path[2]), mimetypes.guess_type(path[2])[0]) + print("/data/" + target_filename_internal(alias, path[2])) + return playout("/data/" + target_filename_internal(alias, path[2]), mimetypes.guess_type(path[2])[0]) - if len(path) > 1 and path[1] == "preview" and session["display"] == "gallery": - return playout("/data/" + target_filename_internal(session, "preview/" + path[2]), mimetypes.guess_type(path[2])[0]) + if len(path) > 1 and path[1] == "preview" and alias["display"] == "gallery": + return playout("/data/" + target_filename_internal(alias, "preview/" + path[2]), mimetypes.guess_type(path[2])[0]) return playout("/interface/listing.htm") @@ -103,7 +103,6 @@ def handle_request(env, response): path = env.get('PATH_INFO', '').lstrip('/').split('/') post = None headers = [] - session = None # Read POST data try: @@ -117,7 +116,7 @@ def handle_request(env, response): post = None # Route request - data, addtl_headers, code = route(path, env, session, post) + data, addtl_headers, code = route(path, env, post) headers.extend(addtl_headers) response(code if code else "200 OK", headers) return [bytes(data, "utf-8")] |