summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMia Herkt <mia@0x0.st>2020-12-29 05:03:20 +0100
committerMia Herkt <mia@0x0.st>2021-05-23 19:13:51 +0200
commit493119fc68b75c2b44d6c5a27b6f4cf0533b35a5 (patch)
tree63e4a87b4f468c6b68be26c0032ceaafe3dafe77
parent59a0439c1a308138cee7936c4d60f1edae2ffd50 (diff)
Drop Flask-Manager
-rwxr-xr-xfhost.py124
1 files changed, 1 insertions, 123 deletions
diff --git a/fhost.py b/fhost.py
index fbdc44c..f8f35a6 100755
--- a/fhost.py
+++ b/fhost.py
@@ -21,8 +21,7 @@
from flask import Flask, abort, make_response, redirect, request, send_from_directory, url_for, Response, render_template
from flask_sqlalchemy import SQLAlchemy
-from flask_script import Manager
-from flask_migrate import Migrate, MigrateCommand
+from flask_migrate import Migrate
from jinja2.exceptions import *
from hashlib import sha256
from magic import Magic
@@ -88,9 +87,6 @@ if not os.path.exists(app.config["FHOST_STORAGE_PATH"]):
db = SQLAlchemy(app)
migrate = Migrate(app, db)
-manager = Manager(app)
-manager.add_command("db", MigrateCommand)
-
su = UrlEncoder(alphabet=app.config["URL_ALPHABET"], block_size=16)
class URL(db.Model):
@@ -133,14 +129,6 @@ class File(db.Model):
else:
return url_for("get", path=n, _external=True) + "\n"
- def pprint(self):
- print("url: {}".format(self.getname()))
- vals = vars(self)
-
- for v in vals:
- if not v.startswith("_sa"):
- print("{}: {}".format(v, vals[v]))
-
def getpath(fn):
return os.path.join(app.config["FHOST_STORAGE_PATH"], fn)
@@ -350,113 +338,3 @@ def ehandler(e):
return render_template(f"{e.code}.html", id=id), e.code
except TemplateNotFound:
return "Segmentation fault\n", e.code
-def debug():
- app.config["FHOST_USE_X_ACCEL_REDIRECT"] = False
- app.run(debug=True, port=4562,host="0.0.0.0")
-
-@manager.command
-def permadelete(name):
- id = su.debase(name)
- f = File.query.get(id)
-
- if f:
- if os.path.exists(getpath(f.sha256)):
- os.remove(getpath(f.sha256))
- f.removed = True
- db.session.commit()
-
-@manager.command
-def query(name):
- id = su.debase(name)
- f = File.query.get(id)
-
- if f:
- f.pprint()
-
-@manager.command
-def queryhash(h):
- f = File.query.filter_by(sha256=h).first()
-
- if f:
- f.pprint()
-
-@manager.command
-def queryaddr(a, nsfw=False, removed=False):
- res = File.query.filter_by(addr=a)
-
- if not removed:
- res = res.filter(File.removed != True)
-
- if nsfw:
- res = res.filter(File.nsfw_score > app.config["NSFW_THRESHOLD"])
-
- for f in res:
- f.pprint()
-
-@manager.command
-def deladdr(a):
- res = File.query.filter_by(addr=a).filter(File.removed != True)
-
- for f in res:
- if os.path.exists(getpath(f.sha256)):
- os.remove(getpath(f.sha256))
- f.removed = True
-
- db.session.commit()
-
-def nsfw_detect(f):
- try:
- open(f["path"], 'r').close()
- f["nsfw_score"] = nsfw.detect(f["path"])
- return f
- except:
- return None
-
-@manager.command
-def update_nsfw():
- if not app.config["NSFW_DETECT"]:
- print("NSFW detection is disabled in app config")
- return 1
-
- from multiprocessing import Pool
- import tqdm
-
- res = File.query.filter_by(nsfw_score=None, removed=False)
-
- with Pool() as p:
- results = []
- work = [{ "path" : getpath(f.sha256), "id" : f.id} for f in res]
-
- for r in tqdm.tqdm(p.imap_unordered(nsfw_detect, work), total=len(work)):
- if r:
- results.append({"id": r["id"], "nsfw_score" : r["nsfw_score"]})
-
- db.session.bulk_update_mappings(File, results)
- db.session.commit()
-
-
-@manager.command
-def querybl(nsfw=False, removed=False):
- blist = []
- if os.path.isfile(app.config["FHOST_UPLOAD_BLACKLIST"]):
- with open(app.config["FHOST_UPLOAD_BLACKLIST"], "r") as bl:
- for l in bl.readlines():
- if not l.startswith("#"):
- if not ":" in l:
- blist.append("::ffff:" + l.rstrip())
- else:
- blist.append(l.strip())
-
- res = File.query.filter(File.addr.in_(blist))
-
- if not removed:
- res = res.filter(File.removed != True)
-
- if nsfw:
- res = res.filter(File.nsfw_score > app.config["NSFW_THRESHOLD"])
-
- for f in res:
- f.pprint()
-
-if __name__ == "__main__":
- manager.run()