From 7fcf30a68a2bcc86fa5f7447d3fcb15cc731188c Mon Sep 17 00:00:00 2001 From: q Date: Tue, 28 Jan 2025 11:51:19 +0200 Subject: [PATCH] add ID based delete and listing --- code/app.py | 16 +++++++++++----- code/utils/files.py | 18 +++++++++++++++--- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/code/app.py b/code/app.py index c7083ca..4cafefa 100644 --- a/code/app.py +++ b/code/app.py @@ -20,6 +20,7 @@ from utils.files import ( db_add_download, db_delete_file, db_get_file, + db_get_name, db_maintenance, db_store_file, file_details, @@ -45,7 +46,7 @@ logging.basicConfig( format=f"[%(asctime)s] [%(levelname)s] %(message)s", ) -__VERSION__ = "20250123.0" +__VERSION__ = "20250128.0" app = Flask(__name__) app.config.from_object(__name__) app.config.from_prefixed_env() @@ -195,9 +196,9 @@ def upload_token(): token = new_upload_token(expires) return token, 200 - +@app.route("/details/", methods=["GET"]) @app.route("/details//", methods=["GET"]) -def details(token, name): +def details(token, name=None): """ Get JSON of file details. Size, added date, download times, etc. @@ -209,6 +210,8 @@ def details(token, name): secret = request.headers.get("Secret", "") if secret != app.config["ACCESS_TOKEN"]: return "Error", 401 + if name is None: + name = db_get_name(token)[0] details = file_details(token, name) if details["allowed_ip"] is not None: if not is_ip_allowed( @@ -218,17 +221,20 @@ def details(token, name): return jsonify(details), 200 +@app.route("/delete/", methods=["GET"]) @app.route("/delete//", methods=["GET"]) -def delete_file(name, token): +def delete_file(token,name=None): """ Delete a file from the system """ secret = request.headers.get("Secret", "") if secret != app.config["ACCESS_TOKEN"]: return "Error", 401 - + if name is None: + name = db_get_name(token)[0] try: os.remove(os.path.join(app.config["DATAFOLDER"], token, name)) + os.rmdir(os.path.join(app.config["DATAFOLDER"], token)) except Exception: pass db_delete_file(token, name) diff --git a/code/utils/files.py b/code/utils/files.py index bc8ab8a..5ce8e67 100644 --- a/code/utils/files.py +++ b/code/utils/files.py @@ -35,11 +35,23 @@ def db_get_file(token, name): """ SELECT added,expires,downloads,max_downloads,passhash,hidden,allowed_ip FROM files WHERE token = ? AND name = ? - """, + """, (token, name), ).fetchone() +def db_get_name(token): + db, c = get_db() + return db.execute( + """ + SELECT name + FROM files WHERE token = ? + """, + (token,), + ).fetchone() + + + def db_get_files(): db, c = get_db() return db.execute( @@ -212,7 +224,7 @@ def file_full_url(token, name): def file_list(): details = [] - details.append(" Added/Expiry DL/MaxDL URL") + details.append(" Added/Expiry DL/MaxDL ID URL") details.append("=" * 75) for file in db_get_files(): url = file_full_url(file[0], file[1]) @@ -221,7 +233,7 @@ def file_list(): pw = " (PW)" if file[6] else "" ips = f" [{file[7]}]" if file[7] else "" - details.append(f"{added}/{expiry} {file[4]:4d}/{file[5]:4d} {url}{pw}{ips}") + details.append(f"{added}/{expiry} {file[4]:4d}/{file[5]:4d} {file[0]} {url}{pw}{ips}") return details