summaryrefslogtreecommitdiff
path: root/cleanup.py
diff options
context:
space:
mode:
authorEmi Simpson <emi@alchemi.dev>2022-11-22 16:15:50 -0500
committerMia Herkt <mia@0x0.st>2022-11-29 13:09:26 +0100
commitaf4b3b06c0d75a01c1fa59f1f6a4bae12e69daa5 (patch)
tree77c93c41a290e8c13dddc3daf0c7dc0773e32de1 /cleanup.py
parent00dba0e189125706528068459ec35a1895f20736 (diff)
Add support for expiring files
SUPPLEMENTALLY: - Add an `expiration` field to the `file` table of the database - Produce a migration for the above change - Overhaul the cleanup script, and integrate into fhost.py (now run using FLASK_APP=fhost flask prune) - Replace the old cleanup script with a deprecation notice - Add information about how to expire files to the index - Update the README with information about the new script Squashed commits: Add a note explaining that expired files aren't immediately removed Show correct times on the index page graph Improve the migration script, removing the need for --legacy Use automap in place of an explicit file map in migration Remove vestigial `touch()` Don't crash when upgrading a fresh database Remove vestigial warning about legacy files More efficiently filter to unexpired files when migrating https://git.0x0.st/mia/0x0/pulls/72#issuecomment-224 Coalesce updates to the database during migration https://git.0x0.st/mia/0x0/pulls/72#issuecomment-226 Remove vestigial database model https://git.0x0.st/mia/0x0/pulls/72#issuecomment-261 prune: Stream expired files from the database (as opposed to collecting them all first) config.example.py: Add min & max expiration + description
Diffstat (limited to 'cleanup.py')
-rwxr-xr-xcleanup.py48
1 files changed, 6 insertions, 42 deletions
diff --git a/cleanup.py b/cleanup.py
index 0f9a5ce..14fbc61 100755
--- a/cleanup.py
+++ b/cleanup.py
@@ -1,44 +1,8 @@
#!/usr/bin/env python3
-"""
- Copyright © 2020 Mia Herkt
- Licensed under the EUPL, Version 1.2 or - as soon as approved
- by the European Commission - subsequent versions of the EUPL
- (the "License");
- You may not use this work except in compliance with the License.
- You may obtain a copy of the license at:
-
- https://joinup.ec.europa.eu/software/page/eupl
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
- either express or implied.
- See the License for the specific language governing permissions
- and limitations under the License.
-"""
-
-import os
-import sys
-import time
-import datetime
-from fhost import app
-
-os.chdir(os.path.dirname(sys.argv[0]))
-os.chdir(app.config["FHOST_STORAGE_PATH"])
-
-files = [f for f in os.listdir(".")]
-
-maxs = app.config["MAX_CONTENT_LENGTH"]
-mind = 30
-maxd = 365
-
-for f in files:
- stat = os.stat(f)
- systime = time.time()
- age = datetime.timedelta(seconds=(systime - stat.st_mtime)).days
-
- maxage = mind + (-maxd + mind) * (stat.st_size / maxs - 1) ** 3
-
- if age >= maxage:
- os.remove(f)
+print("This script has been replaced!!")
+print("Instead, please run")
+print("")
+print(" $ FLASK_APP=fhost flask prune")
+print("")
+exit(1);