From 5023dadc4efe79d897a42066a6825e0fcf879ad1 Mon Sep 17 00:00:00 2001 From: "Dominik V. Salonen" Date: Wed, 23 Dec 2015 22:45:40 +0100 Subject: [PATCH] Here comes my trump card --- Hyozan/db.py | 13 +++++++++++++ conf.py.sample | 3 +++ run.py | 14 ++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/Hyozan/db.py b/Hyozan/db.py index a0a7231..0ccab49 100644 --- a/Hyozan/db.py +++ b/Hyozan/db.py @@ -25,6 +25,19 @@ def add_b2(filename, file_id): db.commit() db.close() +def get_old_files(targetTime): + db = connect('files.db') + cur = db.execute('SELECT file FROM files WHERE accessed <= ?', [targetTime,]) + rv = cur.fetchall() + db.close() + return [dict(file=row[0]) for row in rv] + +def delete_entry(file): + db = connect('files.db') + db.execute('DELETE FROM files WHERE file = ?', [file,]) + db.commit() + db.close() + def check_value(column, value): db = connect('files.db') cur = db.execute('SELECT EXISTS(SELECT 1 FROM files WHERE ? = ?)', [column, value]) diff --git a/conf.py.sample b/conf.py.sample index a7bb6b4..ae12ba9 100644 --- a/conf.py.sample +++ b/conf.py.sample @@ -18,6 +18,9 @@ config["KEY"] = "" # File settings config["UPLOAD_FOLDER"] = './data' config["ALLOWED_EXTENSIONS"] = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif']) +# If this is set to true, old files will be deleted. TIME is how far behind (in seconds) the last accessed time can be before files get deleted +config["DELETE_FILES"] = True +config["TIME"] = 30 # Site info displayed to the user config["SITE_DATA"] = { diff --git a/run.py b/run.py index b1d14b5..931d769 100755 --- a/run.py +++ b/run.py @@ -28,6 +28,18 @@ log = logging.getLogger('werkzeug') log.setLevel(logging.ERROR) +def delete_old(): + targetTime = time.time() - config["TIME"] + old = db.get_old_files(targetTime) + for file in old: + try: + os.remove(os.path.join(config["UPLOAD_FOLDER"], file["file"])) + except Exception: + pass + db.delete_entry(file["file"]) + print_log('Notice', 'Removed old file "' + file["file"] + '"') + + def auth(key): if config["KEY"] == "": return True @@ -78,8 +90,10 @@ def upload_file(): @app.route('/', methods=['GET']) def get_file(filename): print_log('Main', 'Hit "' + filename + '" - ' + time_to_string(time.time())) + db.update_file(filename) return send_from_directory(config['UPLOAD_FOLDER'], filename) +delete_old() if __name__ == '__main__': app.run(