From b6173215297cc0d971c9b1474dd934af6e49e5a8 Mon Sep 17 00:00:00 2001 From: Aevann1 Date: Fri, 8 Jul 2022 18:21:13 +0200 Subject: [PATCH] move all env-getting to .const --- files/classes/award.py | 1 - files/classes/badges.py | 1 - files/classes/comment.py | 1 - files/classes/mod_logs.py | 1 - files/classes/sub.py | 6 +---- files/classes/submission.py | 1 - files/classes/user.py | 17 +++++--------- files/helpers/const.py | 30 +++++++++++++++++++++++++ files/helpers/discord.py | 25 ++++++++------------- files/helpers/jinja2.py | 2 +- files/helpers/regex.py | 2 +- files/helpers/security.py | 4 ++-- files/mail/__init__.py | 6 ++--- files/routes/discord.py | 22 +++++++----------- files/routes/front.py | 6 ++--- files/routes/giphy.py | 4 +--- files/routes/login.py | 4 ++-- files/routes/settings.py | 14 ------------ files/routes/votes.py | 5 ++--- files/templates/comments.html | 6 ++--- files/templates/home.html | 4 ++-- files/templates/submission.html | 8 +++---- files/templates/submission_listing.html | 14 ++++++------ 23 files changed, 83 insertions(+), 101 deletions(-) diff --git a/files/classes/award.py b/files/classes/award.py index 48f2a9dcc..b338516d2 100644 --- a/files/classes/award.py +++ b/files/classes/award.py @@ -1,7 +1,6 @@ from sqlalchemy import * from sqlalchemy.orm import relationship from files.__main__ import Base -from os import environ from files.helpers.lazy import lazy from files.helpers.const import * diff --git a/files/classes/badges.py b/files/classes/badges.py index fb28c6749..e298869f3 100644 --- a/files/classes/badges.py +++ b/files/classes/badges.py @@ -1,7 +1,6 @@ from sqlalchemy import * from sqlalchemy.orm import relationship from files.__main__ import Base, app -from os import environ from files.helpers.lazy import lazy from files.helpers.const import * from datetime import datetime diff --git a/files/classes/comment.py b/files/classes/comment.py index 38f074c9d..0deb50740 100644 --- a/files/classes/comment.py +++ b/files/classes/comment.py @@ -1,4 +1,3 @@ -from os import environ import re import time from urllib.parse import urlencode, urlparse, parse_qs diff --git a/files/classes/mod_logs.py b/files/classes/mod_logs.py index 9738bb032..c4cb9e60c 100644 --- a/files/classes/mod_logs.py +++ b/files/classes/mod_logs.py @@ -3,7 +3,6 @@ from sqlalchemy.orm import relationship from files.__main__ import Base import time from files.helpers.lazy import lazy -from os import environ from copy import deepcopy from files.helpers.const import * diff --git a/files/classes/sub.py b/files/classes/sub.py index ca65feee2..9342b396e 100644 --- a/files/classes/sub.py +++ b/files/classes/sub.py @@ -2,13 +2,9 @@ from sqlalchemy import * from sqlalchemy.orm import relationship from files.__main__ import Base from files.helpers.lazy import lazy -from os import environ +from files.helpers.const import * from .sub_block import * -SITE_NAME = environ.get("SITE_NAME", '').strip() -SITE = environ.get("DOMAIN", '').strip() -if SITE == "localhost": SITE_FULL = 'http://' + SITE -else: SITE_FULL = 'https://' + SITE class Sub(Base): __tablename__ = "subs" diff --git a/files/classes/submission.py b/files/classes/submission.py index bf267192b..d97125811 100644 --- a/files/classes/submission.py +++ b/files/classes/submission.py @@ -1,4 +1,3 @@ -from os import environ import random import re import time diff --git a/files/classes/user.py b/files/classes/user.py index 58f9c2cd2..cf8027b12 100644 --- a/files/classes/user.py +++ b/files/classes/user.py @@ -22,14 +22,7 @@ from files.__main__ import Base, cache from files.helpers.security import * from copy import deepcopy import random -from os import environ, remove, path - -defaulttheme = environ.get("DEFAULT_THEME", "midnight").strip() -defaulttimefilter = environ.get("DEFAULT_TIME_FILTER", "all").strip() -cardview = bool(int(environ.get("CARD_VIEW", 1))) - -if SITE_NAME in ('Cringetopia', 'WPD'): patron_default = 7 -else: patron_default = 0 +from os import remove, path class User(Base): __tablename__ = "users" @@ -45,15 +38,15 @@ class User(Base): customtitle = Column(String) customtitleplain = deferred(Column(String)) titlecolor = Column(String, default=DEFAULT_COLOR) - theme = Column(String, default=defaulttheme) + theme = Column(String, default=DEFAULT_THEME) themecolor = Column(String, default=DEFAULT_COLOR) - cardview = Column(Boolean, default=cardview) + cardview = Column(Boolean, default=CARD_VIEW) song = Column(String) highres = Column(String) profileurl = Column(String) bannerurl = Column(String) house = Column(String) - patron = Column(Integer, default=patron_default) + patron = Column(Integer, default=PATRON_DEFAULT) patron_utc = Column(Integer, default=0) verified = Column(String) verifiedcolor = Column(String) @@ -123,7 +116,7 @@ class User(Base): stored_subscriber_count = Column(Integer, default=0) defaultsortingcomments = Column(String, default="top") defaultsorting = Column(String, default="hot") - defaulttime = Column(String, default=defaulttimefilter) + defaulttime = Column(String, default=DEFAULT_TIME_FILTER) is_nofollow = Column(Boolean, default=False) custom_filter_list = Column(String) discord_id = Column(String) diff --git a/files/helpers/const.py b/files/helpers/const.py index 75cb0db77..efb8992ab 100644 --- a/files/helpers/const.py +++ b/files/helpers/const.py @@ -946,6 +946,36 @@ SPAM_SIMILAR_COUNT_THRESHOLD = int(environ.get("SPAM_SIMILAR_COUNT_THRESHOLD", 1 COMMENT_SPAM_SIMILAR_THRESHOLD = float(environ.get("COMMENT_SPAM_SIMILAR_THRESHOLD", 0.5)) COMMENT_SPAM_COUNT_THRESHOLD = int(environ.get("COMMENT_SPAM_COUNT_THRESHOLD", 10)) DESCRIPTION = environ.get("DESCRIPTION", "rdrama.net caters to drama in all forms such as: Real life, videos, photos, gossip, rumors, news sites, Reddit, and Beyond™. There isn't drama we won't touch, and we want it all!").strip() +GUMROAD_TOKEN = environ.get("GUMROAD_TOKEN", "").strip() +GUMROAD_ID = environ.get("GUMROAD_ID", "tfcvri").strip() +DEFAULT_THEME = environ.get("DEFAULT_THEME", "midnight").strip() +DEFAULT_TIME_FILTER = environ.get("DEFAULT_TIME_FILTER", "all").strip() +CARD_VIEW = bool(int(environ.get("CARD_VIEW", 1))) +DISABLE_DOWNVOTES = bool(int(environ.get("CARD_VIEW", 0))) +DISCORD_SERVER_ID = environ.get("DISCORD_SERVER_ID",'').strip() +DISCORD_CLIENT_ID = environ.get("DISCORD_CLIENT_ID",'').strip() +DISCORD_CLIENT_SECRET = environ.get("DISCORD_CLIENT_SECRET",'').strip() +DISCORD_BOT_TOKEN = environ.get("DISCORD_BOT_TOKEN",'').strip() +DISCORD_AUTH = environ.get("DISCORD_AUTH",'').strip() +GIPHY_KEY = environ.get('GIPHY_KEY').strip() +MASTER_KEY = environ.get("MASTER_KEY") +FP = environ.get("FP") + +if SITE_NAME in ('Cringetopia', 'WPD'): PATRON_DEFAULT = 7 +else: PATRON_DEFAULT = 0 + +tiers={ + "(Paypig)": 1, + "(Renthog)": 2, + "(Landchad)": 3, + "(Terminally online turboautist)": 4, + "(Marsey's Sugar Daddy)": 5, + "(JIDF Bankroller)": 6, + "(Rich Bich)": 7, + "(LlamaBean)": 1, + } + +DISCORD_WELCOME_CHANNEL = "846509313941700618" has_sidebar = path.exists(f'files/templates/sidebar_{SITE_NAME}.html') has_logo = path.exists(f'files/assets/images/{SITE_NAME}/logo.webp') diff --git a/files/helpers/discord.py b/files/helpers/discord.py index e8ac3df00..3088444be 100644 --- a/files/helpers/discord.py +++ b/files/helpers/discord.py @@ -1,14 +1,7 @@ -from os import environ import requests import threading from .const import * -SERVER_ID = environ.get("DISCORD_SERVER_ID",'').strip() -CLIENT_ID = environ.get("DISCORD_CLIENT_ID",'').strip() -CLIENT_SECRET = environ.get("DISCORD_CLIENT_SECRET",'').strip() -BOT_TOKEN = environ.get("DISCORD_BOT_TOKEN",'').strip() -AUTH = environ.get("DISCORD_AUTH",'').strip() - def discord_wrap(f): def wrapper(*args, **kwargs): @@ -29,32 +22,32 @@ def discord_wrap(f): @discord_wrap def add_role(user, role_name): role_id = ROLES[role_name] - url = f"https://discordapp.com/api/guilds/{SERVER_ID}/members/{user.discord_id}/roles/{role_id}" - headers = {"Authorization": f"Bot {BOT_TOKEN}"} + url = f"https://discordapp.com/api/guilds/{DISCORD_SERVER_ID}/members/{user.discord_id}/roles/{role_id}" + headers = {"Authorization": f"Bot {DISCORD_BOT_TOKEN}"} requests.put(url, headers=headers, timeout=5) @discord_wrap def remove_role(user, role_name): role_id = ROLES[role_name] - url = f"https://discordapp.com/api/guilds/{SERVER_ID}/members/{user.discord_id}/roles/{role_id}" - headers = {"Authorization": f"Bot {BOT_TOKEN}"} + url = f"https://discordapp.com/api/guilds/{DISCORD_SERVER_ID}/members/{user.discord_id}/roles/{role_id}" + headers = {"Authorization": f"Bot {DISCORD_BOT_TOKEN}"} requests.delete(url, headers=headers, timeout=5) @discord_wrap def remove_user(user): - url=f"https://discordapp.com/api/guilds/{SERVER_ID}/members/{user.discord_id}" - headers = {"Authorization": f"Bot {BOT_TOKEN}"} + url=f"https://discordapp.com/api/guilds/{DISCORD_SERVER_ID}/members/{user.discord_id}" + headers = {"Authorization": f"Bot {DISCORD_BOT_TOKEN}"} requests.delete(url, headers=headers, timeout=5) @discord_wrap def set_nick(user, nick): - url=f"https://discordapp.com/api/guilds/{SERVER_ID}/members/{user.discord_id}" - headers = {"Authorization": f"Bot {BOT_TOKEN}"} + url=f"https://discordapp.com/api/guilds/{DISCORD_SERVER_ID}/members/{user.discord_id}" + headers = {"Authorization": f"Bot {DISCORD_BOT_TOKEN}"} data={"nick": nick} requests.patch(url, headers=headers, json=data, timeout=5) def send_discord_message(message): - headers = {"Authorization": f"Bot {BOT_TOKEN}"} + headers = {"Authorization": f"Bot {DISCORD_BOT_TOKEN}"} data={"content": message} requests.post("https://discordapp.com/api/channels/924485611715452940/messages", headers=headers, data=data, timeout=5) requests.post("https://discordapp.com/api/channels/924486091795484732/messages", headers=headers, data=data, timeout=5) \ No newline at end of file diff --git a/files/helpers/jinja2.py b/files/helpers/jinja2.py index 7aa0a6d12..3bc62b8d4 100644 --- a/files/helpers/jinja2.py +++ b/files/helpers/jinja2.py @@ -58,4 +58,4 @@ def inject_constants(): "HOLE_NAME": HOLE_NAME, "HOLE_STYLE_FLAIR": HOLE_STYLE_FLAIR, "HOLE_REQUIRED": HOLE_REQUIRED, "LOTTERY_ENABLED": LOTTERY_ENABLED, "GUMROAD_LINK": GUMROAD_LINK, "DEFAULT_THEME": DEFAULT_THEME, "DESCRIPTION": DESCRIPTION, "PERMS": PERMS, - "PROCOINS_ENABLED": PROCOINS_ENABLED, "has_sidebar": has_sidebar, "has_logo": has_logo} + "PROCOINS_ENABLED": PROCOINS_ENABLED, "has_sidebar": has_sidebar, "has_logo": has_logo, "FP": FP} diff --git a/files/helpers/regex.py b/files/helpers/regex.py index 4e31dbf35..44a2cbbae 100644 --- a/files/helpers/regex.py +++ b/files/helpers/regex.py @@ -1,5 +1,5 @@ import re -from files.helpers.const import * +from .const import * if SITE_NAME == 'PCM': valid_username_chars = 'a-zA-Z0-9_\-А-я' diff --git a/files/helpers/security.py b/files/helpers/security.py index f921b805d..257bb9544 100644 --- a/files/helpers/security.py +++ b/files/helpers/security.py @@ -1,12 +1,12 @@ from werkzeug.security import * -from os import environ +from .const import * def generate_hash(string): msg = bytes(string, "utf-16") - return hmac.new(key=bytes(environ.get("MASTER_KEY"), "utf-16"), + return hmac.new(key=bytes(MASTER_KEY, "utf-16"), msg=msg, digestmod='md5' ).hexdigest() diff --git a/files/mail/__init__.py b/files/mail/__init__.py index aab0942bd..4152b0d91 100644 --- a/files/mail/__init__.py +++ b/files/mail/__init__.py @@ -1,4 +1,3 @@ -from os import environ import time from flask import * from urllib.parse import quote @@ -12,11 +11,10 @@ from files.classes import * from files.__main__ import app, mail, limiter from flask_mail import Message -name = environ.get("SITE_NAME").strip() def send_mail(to_address, subject, html): - msg = Message(html=html, subject=subject, sender=f"{name}@{SITE}", recipients=[to_address]) + msg = Message(html=html, subject=subject, sender=f"{SITE_NAME}@{SITE}", recipients=[to_address]) mail.send(msg) @@ -37,7 +35,7 @@ def send_verification_email(user, email=None): html=render_template("email/email_verify.html", action_url=link, v=user), - subject=f"Validate your {name} account email." + subject=f"Validate your {SITE_NAME} account email." ) diff --git a/files/routes/discord.py b/files/routes/discord.py index a4b577a26..379345a30 100644 --- a/files/routes/discord.py +++ b/files/routes/discord.py @@ -4,12 +4,6 @@ from files.helpers.discord import add_role from files.__main__ import app import requests -SERVER_ID = environ.get("DISCORD_SERVER_ID",'').strip() -CLIENT_ID = environ.get("DISCORD_CLIENT_ID",'').strip() -CLIENT_SECRET = environ.get("DISCORD_CLIENT_SECRET",'').strip() -BOT_TOKEN = environ.get("DISCORD_BOT_TOKEN").strip() -DISCORD_ENDPOINT = "https://discordapp.com/api/v6" -WELCOME_CHANNEL="846509313941700618" @app.get("/discord") @is_not_permabanned @@ -23,7 +17,7 @@ def join_discord(v): state=f"{now}.{state}" - return redirect(f"https://discord.com/api/oauth2/authorize?client_id={CLIENT_ID}&redirect_uri=https%3A%2F%2F{SITE}%2Fdiscord_redirect&response_type=code&scope=identify%20guilds.join&state={state}") + return redirect(f"https://discord.com/api/oauth2/authorize?client_id={DISCORD_CLIENT_ID}&redirect_uri=https%3A%2F%2F{SITE}%2Fdiscord_redirect&response_type=code&scope=identify%20guilds.join&state={state}") @app.get("/discord_redirect") @@ -49,8 +43,8 @@ def discord_redirect(v): abort(400) data={ - "client_id":CLIENT_ID, - 'client_secret': CLIENT_SECRET, + "client_id": DISCORD_CLIENT_ID, + 'client_secret': DISCORD_CLIENT_SECRET, 'grant_type': 'authorization_code', 'code': code, 'redirect_uri': f"https://{SITE}/discord_redirect", @@ -80,12 +74,12 @@ def discord_redirect(v): headers={ - 'Authorization': f"Bot {BOT_TOKEN}", + 'Authorization': f"Bot {DISCORD_BOT_TOKEN}", 'Content-Type': "application/json" } if v.discord_id and v.discord_id != x['id']: - url=f"https://discord.com/api/guilds/{SERVER_ID}/members/{v.discord_id}" + url=f"https://discord.com/api/guilds/{DISCORD_SERVER_ID}/members/{v.discord_id}" requests.delete(url, headers=headers, timeout=5) if g.db.query(User).filter(User.id!=v.id, User.discord_id==x["id"]).one_or_none(): @@ -94,7 +88,7 @@ def discord_redirect(v): v.discord_id=x["id"] g.db.add(v) - url=f"https://discord.com/api/guilds/{SERVER_ID}/members/{x['id']}" + url=f"https://discord.com/api/guilds/{DISCORD_SERVER_ID}/members/{x['id']}" name=v.username @@ -133,7 +127,7 @@ def discord_redirect(v): if x.status_code==204: - url=f"https://discord.com/api/guilds/{SERVER_ID}/members/{v.discord_id}" + url=f"https://discord.com/api/guilds/{DISCORD_SERVER_ID}/members/{v.discord_id}" data={ "nick": name } @@ -141,4 +135,4 @@ def discord_redirect(v): requests.patch(url, headers=headers, json=data, timeout=5) - return redirect(f"https://discord.com/channels/{SERVER_ID}/{WELCOME_CHANNEL}") \ No newline at end of file + return redirect(f"https://discord.com/channels/{DISCORD_SERVER_ID}/{DISCORD_WELCOME_CHANNEL}") \ No newline at end of file diff --git a/files/routes/front.py b/files/routes/front.py index 2bf8fb63a..e579308f4 100644 --- a/files/routes/front.py +++ b/files/routes/front.py @@ -1,11 +1,11 @@ from files.helpers.wrappers import * from files.helpers.get import * from files.helpers.discord import * +from files.helpers.const import * from files.__main__ import app, cache, limiter from files.classes.submission import Submission from files.helpers.awards import award_timers -defaulttimefilter = environ.get("DEFAULT_TIME_FILTER", "all").strip() @app.post("/clear") @auth_required @@ -207,7 +207,7 @@ def front_all(v, sub=None, subdomain=None): else: defaultsorting = "hot" if sub or SITE_NAME != 'rDrama': defaulttime = 'all' - else: defaulttime = defaulttimefilter + else: defaulttime = DEFAULT_TIME_FILTER sort=request.values.get("sort", defaultsorting) t=request.values.get('t', defaulttime) @@ -431,7 +431,7 @@ def all_comments(v): except: page = 1 sort=request.values.get("sort", "new") - t=request.values.get("t", defaulttimefilter) + t=request.values.get("t", DEFAULT_TIME_FILTER) try: gt=int(request.values.get("after", 0)) except: gt=0 diff --git a/files/routes/giphy.py b/files/routes/giphy.py index e89951689..11142c6a1 100644 --- a/files/routes/giphy.py +++ b/files/routes/giphy.py @@ -1,12 +1,10 @@ from flask import * -from os import environ import requests from files.helpers.wrappers import * +from files.helpers.const import * from files.__main__ import app -GIPHY_KEY = environ.get('GIPHY_KEY').rstrip() - @app.get("/giphy") @app.get("/giphy") diff --git a/files/routes/login.py b/files/routes/login.py index 718c8a4d2..1e1485f81 100644 --- a/files/routes/login.py +++ b/files/routes/login.py @@ -201,7 +201,7 @@ def sign_up_get(v): formkey_hashstr = str(now) + token + g.agent - formkey = hmac.new(key=bytes(environ.get("MASTER_KEY"), "utf-16"), + formkey = hmac.new(key=bytes(MASTER_KEY, "utf-16"), msg=bytes(formkey_hashstr, "utf-16"), digestmod='md5' ).hexdigest() @@ -234,7 +234,7 @@ def sign_up_post(v): correct_formkey_hashstr = form_timestamp + submitted_token + g.agent - correct_formkey = hmac.new(key=bytes(environ.get("MASTER_KEY"), "utf-16"), + correct_formkey = hmac.new(key=bytes(MASTER_KEY, "utf-16"), msg=bytes(correct_formkey_hashstr, "utf-16"), digestmod='md5' ).hexdigest() diff --git a/files/routes/settings.py b/files/routes/settings.py index ec4256bb0..ab95150d6 100644 --- a/files/routes/settings.py +++ b/files/routes/settings.py @@ -17,20 +17,6 @@ from shutil import copyfile import requests import tldextract -GUMROAD_TOKEN = environ.get("GUMROAD_TOKEN", "").strip() -GUMROAD_ID = environ.get("GUMROAD_ID", "tfcvri").strip() - -tiers={ - "(Paypig)": 1, - "(Renthog)": 2, - "(Landchad)": 3, - "(Terminally online turboautist)": 4, - "(Marsey's Sugar Daddy)": 5, - "(JIDF Bankroller)": 6, - "(Rich Bich)": 7, - "(LlamaBean)": 1, - } - @app.post("/settings/removebackground") @limiter.limit("1/second;30/minute;200/hour;1000/day") @limiter.limit("1/second;30/minute;200/hour;1000/day", key_func=lambda:f'{request.host}-{session.get("lo_user")}') diff --git a/files/routes/votes.py b/files/routes/votes.py index 232b2f0e4..5c6f12c12 100644 --- a/files/routes/votes.py +++ b/files/routes/votes.py @@ -4,7 +4,6 @@ from files.helpers.const import * from files.classes import * from flask import * from files.__main__ import app, limiter, cache -from os import environ @app.get("/votes/") @auth_required @@ -64,7 +63,7 @@ def vote_info_get(v, link): @is_not_permabanned def api_vote_post(post_id, new, v): - if new == "-1" and environ.get('DISABLE_DOWNVOTES') == '1': return {"error": "forbidden."}, 403 + if new == "-1" and DISABLE_DOWNVOTES: return {"error": "forbidden."}, 403 if new not in ["-1", "0", "1"]: abort(400) @@ -134,7 +133,7 @@ def api_vote_post(post_id, new, v): @is_not_permabanned def api_vote_comment(comment_id, new, v): - if new == "-1" and environ.get('DISABLE_DOWNVOTES') == '1': return {"error": "forbidden."}, 403 + if new == "-1" and DISABLE_DOWNVOTES: return {"error": "forbidden."}, 403 if new not in ["-1", "0", "1"]: abort(400) diff --git a/files/templates/comments.html b/files/templates/comments.html index 77838d91d..3d2053b78 100644 --- a/files/templates/comments.html +++ b/files/templates/comments.html @@ -373,7 +373,7 @@ {{score}} - + @@ -426,11 +426,11 @@
  • {% endif %} {% elif v %} - + {% else %} - + {% endif %} diff --git a/files/templates/home.html b/files/templates/home.html index 8a291c4ed..6b1e98ff5 100644 --- a/files/templates/home.html +++ b/files/templates/home.html @@ -10,7 +10,7 @@ {% endif %} -{% if v and environ.get("FP") %} +{% if v and FP %} {% if not v.fp %}