107 lines
4.2 KiB
Python
107 lines
4.2 KiB
Python
'''
|
|
Environment data. Please don't use `files.helpers.config.const` for things that
|
|
aren't constants. If it's an environment configuration, it should go in here.
|
|
'''
|
|
|
|
from os import environ
|
|
|
|
from files.helpers.strings import bool_from_string
|
|
|
|
SITE = environ.get("DOMAIN", '').strip()
|
|
SITE_ID = environ.get("SITE_ID").strip()
|
|
SITE_TITLE = environ.get("SITE_TITLE").strip()
|
|
SCHEME = environ.get('SCHEME', 'http' if 'localhost' in SITE else 'https')
|
|
|
|
if "localhost" in SITE:
|
|
SITE_FULL = 'http://' + SITE
|
|
else:
|
|
SITE_FULL = 'https://' + SITE
|
|
|
|
WELCOME_MSG = (
|
|
f"Welcome to {SITE_TITLE}! Please read [the rules](/rules) first. "
|
|
"Then [read some of our current conversations](/) and feel free to comment "
|
|
"or post!\n"
|
|
"We encourage people to comment even if they aren't sure they fit in; as "
|
|
"long as your comment follows [community rules](/rules), we are happy to "
|
|
"have posters from all backgrounds, education levels, and specialties."
|
|
)
|
|
|
|
SQLALCHEMY_TRACK_MODIFICATIONS = False
|
|
DATABASE_URL = environ.get("DATABASE_URL", "postgresql://postgres@localhost:5432")
|
|
SECRET_KEY = environ.get('MASTER_KEY', '')
|
|
SERVER_NAME = environ.get("DOMAIN").strip()
|
|
SESSION_COOKIE_SECURE = "localhost" not in SERVER_NAME
|
|
DEFAULT_COLOR = environ.get("DEFAULT_COLOR", "fff").strip()
|
|
DEFAULT_TIME_FILTER = environ.get("DEFAULT_TIME_FILTER", "all").strip()
|
|
HCAPTCHA_SITEKEY = environ.get("HCAPTCHA_SITEKEY","").strip()
|
|
HCAPTCHA_SECRET = environ.get("HCAPTCHA_SECRET","").strip()
|
|
|
|
if not SECRET_KEY:
|
|
raise Exception("Secret key not set!")
|
|
|
|
# spam filter
|
|
|
|
SPAM_SIMILARITY_THRESHOLD = float(environ.get("SPAM_SIMILARITY_THRESHOLD", 0.5))
|
|
''' Spam filter similarity threshold (posts) '''
|
|
SPAM_URL_SIMILARITY_THRESHOLD = float(environ.get("SPAM_URL_SIMILARITY_THRESHOLD", 0.1))
|
|
''' Spam filter similarity threshold for URLs (posts) '''
|
|
SPAM_SIMILAR_COUNT_THRESHOLD = int(environ.get("SPAM_SIMILAR_COUNT_THRESHOLD", 10))
|
|
''' Spam filter similarity count (posts) '''
|
|
COMMENT_SPAM_SIMILAR_THRESHOLD = float(environ.get("COMMENT_SPAM_SIMILAR_THRESHOLD", 0.5))
|
|
''' Spam filter similarity threshold (comments)'''
|
|
COMMENT_SPAM_COUNT_THRESHOLD = int(environ.get("COMMENT_SPAM_COUNT_THRESHOLD", 10))
|
|
''' Spam filter similarity count (comments) '''
|
|
|
|
|
|
CACHE_REDIS_URL = environ.get("REDIS_URL", "redis://localhost")
|
|
MAIL_SERVER = environ.get("MAIL_SERVER", "").strip()
|
|
MAIL_PORT = 587
|
|
MAIL_USE_TLS = True
|
|
MAIL_USERNAME = environ.get("MAIL_USERNAME", "").strip()
|
|
MAIL_PASSWORD = environ.get("MAIL_PASSWORD", "").strip()
|
|
DESCRIPTION = environ.get("DESCRIPTION", "DESCRIPTION GOES HERE").strip()
|
|
SQLALCHEMY_DATABASE_URI = DATABASE_URL
|
|
|
|
MENTION_LIMIT = int(environ.get('MENTION_LIMIT', 100))
|
|
''' Maximum amount of username mentions '''
|
|
|
|
MULTIMEDIA_EMBEDDING_ENABLED = bool_from_string(environ.get('MULTIMEDIA_EMBEDDING_ENABLED', False))
|
|
'''
|
|
Whether multimedia will be embedded into a page. Note that this does not
|
|
affect posts or comments retroactively.
|
|
'''
|
|
|
|
RESULTS_PER_PAGE_COMMENTS = int(environ.get('RESULTS_PER_PAGE_COMMENTS', 50))
|
|
SCORE_HIDING_TIME_HOURS = int(environ.get('SCORE_HIDING_TIME_HOURS', 0))
|
|
|
|
|
|
ENABLE_SERVICES = bool_from_string(environ.get('ENABLE_SERVICES', False))
|
|
'''
|
|
Whether to start up deferred tasks. Usually `True` when running as an app and
|
|
`False` when running as a script (for example to perform migrations).
|
|
|
|
See https://github.com/themotte/rDrama/pull/427 for more info.
|
|
'''
|
|
|
|
DBG_VOLUNTEER_PERMISSIVE = bool_from_string(environ.get('DBG_VOLUNTEER_PERMISSIVE', False))
|
|
VOLUNTEER_JANITOR_ENABLE = bool_from_string(environ.get('VOLUNTEER_JANITOR_ENABLE', True))
|
|
|
|
RATE_LIMITER_ENABLED = not bool_from_string(environ.get('DBG_LIMITER_DISABLED', False))
|
|
|
|
ENABLE_DOWNVOTES = not bool_from_string(environ.get('DISABLE_DOWNVOTES', False))
|
|
CARD_VIEW = bool_from_string(environ.get("CARD_VIEW", True))
|
|
FINGERPRINT_TOKEN = environ.get("FP", None)
|
|
|
|
# other stuff from const.py that aren't constants
|
|
IMGUR_KEY = environ.get("IMGUR_KEY", "").strip()
|
|
PUSHER_ID = environ.get("PUSHER_ID", "").strip()
|
|
PUSHER_KEY = environ.get("PUSHER_KEY", "").strip()
|
|
|
|
YOUTUBE_KEY = environ.get("YOUTUBE_KEY", "").strip()
|
|
|
|
CF_KEY = environ.get("CF_KEY", "").strip()
|
|
CF_ZONE = environ.get("CF_ZONE", "").strip()
|
|
CF_HEADERS = {
|
|
"Authorization": f"Bearer {CF_KEY}",
|
|
"Content-Type": "application/json"
|
|
}
|