diff --git a/crawler.py b/crawler.py
index ff425d8..d182043 100644
--- a/crawler.py
+++ b/crawler.py
@@ -12,7 +12,6 @@ from thumbnail import ThumbnailGenerator
from storage import Directory
import shutil
import config
-from ctypes import c_char_p
class RunningTask:
diff --git a/run.py b/run.py
index 4bfa00f..aa5a4ef 100644
--- a/run.py
+++ b/run.py
@@ -57,7 +57,6 @@ def login():
session["username"] = username
session["admin"] = storage.users()[username].admin
- print(session["admin"])
flash("Successfully logged in", "success")
else:
flash("Invalid username or password", "danger")
@@ -68,23 +67,31 @@ def login():
@app.route("/user")
def user_page():
- return render_template("user.html", users=storage.users())
+ if "admin" in session and session["admin"]:
+ return render_template("user.html", users=storage.users())
+ else:
+ flash("You are not authorized to access this page")
+ return redirect("/")
@app.route("/user/add", methods=['POST'])
def user_add():
- username = request.form["username"]
- password = bcrypt.hashpw(request.form["password"].encode("utf-8"), bcrypt.gensalt(config.bcrypt_rounds))
- is_admin = True if "is_admin" in request.form else False
+ if "admin" in session and session["admin"]:
+ username = request.form["username"]
+ password = bcrypt.hashpw(request.form["password"].encode("utf-8"), bcrypt.gensalt(config.bcrypt_rounds))
+ is_admin = True if "is_admin" in request.form else False
- try:
- storage.save_user(User(username, password, is_admin))
- flash("Created new user", "success")
- except DuplicateUserException:
- flash("Couldn't create user Make sure that the username is unique", "danger")
+ try:
+ storage.save_user(User(username, password, is_admin))
+ flash("Created new user", "success")
+ except DuplicateUserException:
+ flash("Couldn't create user Make sure that the username is unique", "danger")
- return redirect("/user")
+ return redirect("/user")
+ else:
+ flash("You are not authorized to access this page", "warning")
+ return redirect("/")
@app.route("/suggest")
@@ -220,183 +227,232 @@ def scroll_route():
@app.route("/directory")
def dir_list():
- return render_template("directory.html", directories=storage.dirs())
+ if "admin" in session and session["admin"]:
+ return render_template("directory.html", directories=storage.dirs())
+ else:
+ flash("You are not authorized to access this page", "warning")
+ return redirect("/")
@app.route("/directory/add")
def directory_add():
- path = request.args.get("path")
- name = request.args.get("name")
+ if "admin" in session and session["admin"]:
+ path = request.args.get("path")
+ name = request.args.get("name")
- if path is not None and name is not None:
- d = Directory(path, True, [], name)
+ if path is not None and name is not None:
+ d = Directory(path, True, [], name)
- try:
- d.set_default_options()
- storage.save_directory(d)
- flash("Created directory", "success")
- except DuplicateDirectoryException:
- flash("Couldn't create directory Make sure that the path is unique", "danger")
+ try:
+ d.set_default_options()
+ storage.save_directory(d)
+ flash("Created directory", "success")
+ except DuplicateDirectoryException:
+ flash("Couldn't create directory Make sure that the path is unique", "danger")
- return redirect("/directory")
+ return redirect("/directory")
+ else:
+ flash("You are not authorized to access this page", "warning")
+ return redirect("/")
@app.route("/directory/")
def directory_manage(dir_id):
- directory = storage.dirs()[dir_id]
- tn_size = get_dir_size("static/thumbnails/" + str(dir_id))
- tn_size_formatted = humanfriendly.format_size(tn_size)
+ if "admin" in session and session["admin"]:
+ directory = storage.dirs()[dir_id]
+ tn_size = get_dir_size("static/thumbnails/" + str(dir_id))
+ tn_size_formatted = humanfriendly.format_size(tn_size)
- return render_template("directory_manage.html", directory=directory, tn_size=tn_size,
- tn_size_formatted=tn_size_formatted)
+ return render_template("directory_manage.html", directory=directory, tn_size=tn_size,
+ tn_size_formatted=tn_size_formatted)
+ else:
+ flash("You are not authorized to access this page", "warning")
+ return redirect("/")
@app.route("/directory//update")
def directory_update(dir_id):
- directory = storage.dirs()[dir_id]
+ if "admin" in session and session["admin"]:
+ directory = storage.dirs()[dir_id]
- name = request.args.get("name")
- name = directory.name if name is None else name
+ name = request.args.get("name")
+ name = directory.name if name is None else name
- enabled = request.args.get("enabled")
- enabled = directory.enabled if enabled is None else int(enabled)
+ enabled = request.args.get("enabled")
+ enabled = directory.enabled if enabled is None else int(enabled)
- path = request.args.get("path")
- path = directory.path if path is None else path
+ path = request.args.get("path")
+ path = directory.path if path is None else path
- # Only name and enabled status can be updated
- updated_dir = Directory(path, enabled, directory.options, name)
- updated_dir.id = dir_id
+ # Only name and enabled status can be updated
+ updated_dir = Directory(path, enabled, directory.options, name)
+ updated_dir.id = dir_id
- try:
- storage.update_directory(updated_dir)
- flash("Updated directory", "success")
+ try:
+ storage.update_directory(updated_dir)
+ flash("Updated directory", "success")
- except DuplicateDirectoryException:
- flash("Couldn't update directory Make sure that the path is unique", "danger")
+ except DuplicateDirectoryException:
+ flash("Couldn't update directory Make sure that the path is unique", "danger")
- return redirect("/directory/" + str(dir_id))
+ return redirect("/directory/" + str(dir_id))
+ else:
+ flash("You are not authorized to access this page", "warning")
+ return redirect("/")
@app.route("/directory//update_opt")
def directory_update_opt(dir_id):
- opt_id = request.args.get("id")
- opt_key = request.args.get("key")
- opt_value = request.args.get("value")
+ if "admin" in session and session["admin"]:
+ opt_id = request.args.get("id")
+ opt_key = request.args.get("key")
+ opt_value = request.args.get("value")
- storage.update_option(Option(opt_key, opt_value, dir_id, opt_id))
+ storage.update_option(Option(opt_key, opt_value, dir_id, opt_id))
- return redirect("/directory/" + str(dir_id))
+ return redirect("/directory/" + str(dir_id))
+ else:
+ flash("You are not authorized to access this page", "warning")
+ return redirect("/")
@app.route("/directory//del")
def directory_del(dir_id):
+ if "admin" in session and session["admin"]:
+ search.delete_directory(dir_id)
+ if os.path.exists("static/thumbnails/" + str(dir_id)):
+ shutil.rmtree("static/thumbnails/" + str(dir_id))
- search.delete_directory(dir_id)
- if os.path.exists("static/thumbnails/" + str(dir_id)):
- shutil.rmtree("static/thumbnails/" + str(dir_id))
+ storage.remove_directory(dir_id)
+ flash("Deleted directory", "success")
- storage.remove_directory(dir_id)
- flash("Deleted directory", "success")
-
- return redirect("/directory")
+ return redirect("/directory")
+ else:
+ flash("You are not authorized to access this page", "warning")
+ return redirect("/")
@app.route("/directory//reset")
def directory_reset(dir_id):
- directory = storage.dirs()[dir_id]
- for opt in directory.options:
- storage.del_option(opt.id)
+ if "admin" in session and session["admin"]:
+ directory = storage.dirs()[dir_id]
- directory.set_default_options()
+ for opt in directory.options:
+ storage.del_option(opt.id)
- for opt in directory.options:
- opt.dir_id = dir_id
- storage.save_option(opt)
+ directory.set_default_options()
- storage.dir_cache_outdated = True
+ for opt in directory.options:
+ opt.dir_id = dir_id
+ storage.save_option(opt)
- search.delete_directory(dir_id)
+ storage.dir_cache_outdated = True
- flash("Reset directory options to default settings", "success")
- return redirect("directory/" + str(dir_id))
+ search.delete_directory(dir_id)
+
+ flash("Reset directory options to default settings", "success")
+ return redirect("directory/" + str(dir_id))
+ else:
+ flash("You are not authorized to access this page", "warning")
+ return redirect("/")
@app.route("/task")
def task():
-
- return render_template("task.html", tasks=storage.tasks(), directories=storage.dirs(),
- task_list=json.dumps(list(storage.tasks().keys())))
- # return render_template("task.html", tasks=storage.tasks(), directories=storage.dirs())
+ if "admin" in session and session["admin"]:
+ return render_template("task.html", tasks=storage.tasks(), directories=storage.dirs(),
+ task_list=json.dumps(list(storage.tasks().keys())))
+ else:
+ flash("You are not authorized to access this page", "warning")
+ return redirect("/")
@app.route("/task/current")
def get_current_task():
+ if "admin" in session and session["admin"]:
- if tm and tm.current_task:
- return tm.current_task.to_json()
+ if tm and tm.current_task:
+ return tm.current_task.to_json()
+ else:
+ return ""
else:
- return ""
+ flash("You are not authorized to access this page", "warning")
+ return redirect("/")
@app.route("/task/add")
def task_add():
- type = request.args.get("type")
- directory = request.args.get("directory")
+ if "admin" in session and session["admin"]:
+ task_type = request.args.get("type")
+ directory = request.args.get("directory")
- storage.save_task(Task(type, directory))
+ storage.save_task(Task(task_type, directory))
- return redirect("/task")
+ return redirect("/task")
+ else:
+ flash("You are not authorized to access this page", "warning")
+ return redirect("/")
@app.route("/task//del")
def task_del(task_id):
- storage.del_task(task_id)
+ if "admin" in session and session["admin"]:
+ storage.del_task(task_id)
- if tm.current_task is not None and task_id == tm.current_task.task.id:
- tm.cancel_task()
+ if tm.current_task is not None and task_id == tm.current_task.task.id:
+ tm.cancel_task()
- return redirect("/task")
+ return redirect("/task")
+ else:
+ flash("You are not authorized to access this page", "warning")
+ return redirect("/")
@app.route("/reset_es")
def reset_es():
+ if "admin" in session and session["admin"]:
+ flash("Elasticsearch index has been reset. Modifications made in config.py have been applied.", "success")
- flash("Elasticsearch index has been reset. Modifications made in config.py have been applied.", "success")
+ tm.indexer.init()
+ if os.path.exists("static/thumbnails"):
+ shutil.rmtree("static/thumbnails")
- tm.indexer.init()
- if os.path.exists("static/thumbnails"):
- shutil.rmtree("static/thumbnails")
-
- return redirect("/dashboard")
+ return redirect("/dashboard")
+ else:
+ flash("You are not authorized to access this page", "warning")
+ return redirect("/")
@app.route("/dashboard")
def dashboard():
+ if "admin" in session and session["admin"]:
+ tn_sizes = {}
+ tn_size_total = 0
+ for directory in storage.dirs():
+ tn_size = get_dir_size("static/thumbnails/" + str(directory))
+ tn_size_formatted = humanfriendly.format_size(tn_size)
- tn_sizes = {}
- tn_size_total = 0
- for directory in storage.dirs():
- tn_size = get_dir_size("static/thumbnails/" + str(directory))
- tn_size_formatted = humanfriendly.format_size(tn_size)
+ tn_sizes[directory] = tn_size_formatted
+ tn_size_total += tn_size
- tn_sizes[directory] = tn_size_formatted
- tn_size_total += tn_size
+ tn_size_total_formatted = humanfriendly.format_size(tn_size_total)
- tn_size_total_formatted = humanfriendly.format_size(tn_size_total)
+ return render_template("dashboard.html", version=config.VERSION, tn_sizes=tn_sizes,
+ tn_size_total=tn_size_total_formatted,
+ doc_size=humanfriendly.format_size(search.get_doc_size()),
+ doc_count=search.get_doc_count(),
+ db_path=config.db_path,
+ elasticsearch_url=config.elasticsearch_url,
+ index_size=humanfriendly.format_size(search.get_index_size()))
- return render_template("dashboard.html", version=config.VERSION, tn_sizes=tn_sizes,
- tn_size_total=tn_size_total_formatted,
- doc_size=humanfriendly.format_size(search.get_doc_size()),
- doc_count=search.get_doc_count(),
- db_path=config.db_path,
- elasticsearch_url=config.elasticsearch_url,
- index_size=humanfriendly.format_size(search.get_index_size()))
+ else:
+ flash("You are not authorized to access this page", "warning")
+ return redirect("/")
if __name__ == "__main__":
diff --git a/templates/dashboard.html b/templates/dashboard.html
index 5716451..74cb443 100644
--- a/templates/dashboard.html
+++ b/templates/dashboard.html
@@ -5,7 +5,7 @@
-
+
diff --git a/templates/user.html b/templates/user.html
index ee92f40..4ff73d6 100644
--- a/templates/user.html
+++ b/templates/user.html
@@ -44,7 +44,7 @@
{% for user in users %}
- {{ user }} |
+ {{ user }} |
|
Manage |