add ID based delete and listing
This commit is contained in:
16
code/app.py
16
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/<token>", methods=["GET"])
|
||||
@app.route("/details/<token>/<name>", 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/<token>", methods=["GET"])
|
||||
@app.route("/delete/<token>/<name>", 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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user