From a606d9ed67b339a11b3941e01538adbae672ee94 Mon Sep 17 00:00:00 2001 From: Aevann Date: Wed, 3 May 2023 23:41:41 +0300 Subject: [PATCH] implement cloudflare caching instead of redis caching --- files/routes/allroutes.py | 21 +++++++++++++++++++++ files/routes/comments.py | 3 --- files/routes/login.py | 2 ++ files/routes/posts.py | 11 +---------- 4 files changed, 24 insertions(+), 13 deletions(-) diff --git a/files/routes/allroutes.py b/files/routes/allroutes.py index 41607bf4f..3e7dda748 100644 --- a/files/routes/allroutes.py +++ b/files/routes/allroutes.py @@ -61,6 +61,7 @@ def after_request(response:Response): if response.status_code < 400: if hasattr(g, 'v') and g.v: user_id = g.v.id + _set_cloudflare_cookie(response) _commit_and_close_db() if request.method == "POST" and not request.path.startswith('/casino/twentyone/'): @@ -76,6 +77,26 @@ def teardown_request(error): _rollback_and_close_db() stdout.flush() +def _set_cloudflare_cookie(response:Response) -> None: + if not g.desires_auth: return + if IS_LOCALHOST: return + logged_in = bool(getattr(g, 'v', None)) + + if not logged_in and request.cookies.get("logged_in"): + response.delete_cookie( + "logged_in", + domain=f'.{SITE}', + samesite="Lax", + ) + elif logged_in and not request.cookies.get("logged_in"): + response.set_cookie( + "logged_in", + "True", + max_age=SESSION_LIFETIME, + samesite="Lax", + domain=f'.{SITE}', + ) + def _commit_and_close_db() -> bool: if not getattr(g, 'db', None): return False g.db.commit() diff --git a/files/routes/comments.py b/files/routes/comments.py index b32f7b034..69e42b98d 100644 --- a/files/routes/comments.py +++ b/files/routes/comments.py @@ -387,9 +387,6 @@ def comment(v:User): g.db.flush() - if c.parent_submission: - cache.delete(f'post_{c.parent_submission}') - if v.client: return c.json(db=g.db) return {"comment": render_template("comments.html", v=v, comments=[c])} diff --git a/files/routes/login.py b/files/routes/login.py index 18117cd4c..1ea488c38 100644 --- a/files/routes/login.py +++ b/files/routes/login.py @@ -124,6 +124,7 @@ def log_failed_admin_login_attempt(account:User, type:str): def on_login(account, redir=None): session.permanent = True session["lo_user"] = account.id + g.v = new_user.id session["login_nonce"] = account.login_nonce check_for_alts(account, include_current_session=True) @@ -348,6 +349,7 @@ def sign_up_post(v:Optional[User]): session.permanent = True session["lo_user"] = new_user.id + g.v = new_user.id check_for_alts(new_user, include_current_session=True) send_notification(new_user.id, WELCOME_MSG) diff --git a/files/routes/posts.py b/files/routes/posts.py index 7df8949bd..c7e4a4261 100644 --- a/files/routes/posts.py +++ b/files/routes/posts.py @@ -95,10 +95,6 @@ def post_id(pid, anything=None, v=None, sub=None): if g.is_api_or_xhr: abort(451, "Must be 18+ to view") return render_template("errors/nsfw.html", v=v) - if not v and not request.values.get("sort"): - result = cache.get(f'post_{p.id}') - if result: return result - if p.new: defaultsortingcomments = 'new' elif v: defaultsortingcomments = v.defaultsortingcomments else: defaultsortingcomments = "hot" @@ -177,15 +173,10 @@ def post_id(pid, anything=None, v=None, sub=None): and not (v and (v.admin_level >= PERMS['POST_COMMENT_MODERATION'] or p.author_id == v.id)): template = "submission_banned.html" - result = render_template(template, v=v, p=p, ids=list(ids), + return render_template(template, v=v, p=p, ids=list(ids), sort=sort, render_replies=True, offset=offset, sub=p.subr, fart=get_setting('fart_mode')) - if not v and not request.values.get("sort"): - cache.set(f'post_{p.id}', result) - - return result - @app.get("/view_more///") @limiter.limit(DEFAULT_RATELIMIT) @auth_desired_with_logingate